From 0046cbe0ef9923d10098823efe25ff702ee6e913 Mon Sep 17 00:00:00 2001 From: Wojtek Figat Date: Sun, 30 Mar 2025 20:54:32 +0200 Subject: [PATCH] Fix regression in using per-component input fields in Visject nodes values editing --- Source/Editor/Surface/Archetypes/Animation.cs | 12 ++-- Source/Editor/Surface/Elements/FloatValue.cs | 58 ++++++++++--------- 2 files changed, 36 insertions(+), 34 deletions(-) diff --git a/Source/Editor/Surface/Archetypes/Animation.cs b/Source/Editor/Surface/Archetypes/Animation.cs index 1d897c395..224ea7ceb 100644 --- a/Source/Editor/Surface/Archetypes/Animation.cs +++ b/Source/Editor/Surface/Archetypes/Animation.cs @@ -647,8 +647,8 @@ namespace FlaxEditor.Surface.Archetypes // Axis X NodeElementArchetype.Factory.Input(3, "X", true, typeof(float), 4), NodeElementArchetype.Factory.Text(30, 3 * Surface.Constants.LayoutOffsetY + 2, "(min: max: )"), - NodeElementArchetype.Factory.Float(60, 3 * Surface.Constants.LayoutOffsetY + 2, 0, 0), - NodeElementArchetype.Factory.Float(145, 3 * Surface.Constants.LayoutOffsetY + 2, 0, 1), + NodeElementArchetype.Factory.Vector_X(60, 3 * Surface.Constants.LayoutOffsetY + 2, 0), + NodeElementArchetype.Factory.Vector_Y(145, 3 * Surface.Constants.LayoutOffsetY + 2, 0), } }, new NodeArchetype @@ -683,14 +683,14 @@ namespace FlaxEditor.Surface.Archetypes // Axis X NodeElementArchetype.Factory.Input(3, "X", true, typeof(float), 4), NodeElementArchetype.Factory.Text(30, 3 * Surface.Constants.LayoutOffsetY + 2, "(min: max: )"), - NodeElementArchetype.Factory.Float(60, 3 * Surface.Constants.LayoutOffsetY + 2, 0, 0), - NodeElementArchetype.Factory.Float(145, 3 * Surface.Constants.LayoutOffsetY + 2, 0, 1), + NodeElementArchetype.Factory.Vector_X(60, 3 * Surface.Constants.LayoutOffsetY + 2, 0), + NodeElementArchetype.Factory.Vector_Y(145, 3 * Surface.Constants.LayoutOffsetY + 2, 0), // Axis Y NodeElementArchetype.Factory.Input(4, "Y", true, typeof(float), 5), NodeElementArchetype.Factory.Text(30, 4 * Surface.Constants.LayoutOffsetY + 2, "(min: max: )"), - NodeElementArchetype.Factory.Float(60, 4 * Surface.Constants.LayoutOffsetY + 2, 0, 2), - NodeElementArchetype.Factory.Float(145, 4 * Surface.Constants.LayoutOffsetY + 2, 0, 3), + NodeElementArchetype.Factory.Vector_Z(60, 4 * Surface.Constants.LayoutOffsetY + 2, 0), + NodeElementArchetype.Factory.Vector_W(145, 4 * Surface.Constants.LayoutOffsetY + 2, 0), } }, new NodeArchetype diff --git a/Source/Editor/Surface/Elements/FloatValue.cs b/Source/Editor/Surface/Elements/FloatValue.cs index d7766426c..2dd66c490 100644 --- a/Source/Editor/Surface/Elements/FloatValue.cs +++ b/Source/Editor/Surface/Elements/FloatValue.cs @@ -75,6 +75,7 @@ namespace FlaxEditor.Surface.Elements float result; var value = customValue ?? parentNode.Values[arch.ValueIndex]; + var component = arch.BoxID; // Reuse existing field // Note: this value box may edit on component of the vector like Vector3.Y, BoxID from Archetype tells which component pick @@ -92,39 +93,39 @@ namespace FlaxEditor.Surface.Elements } else if (value is Vector2 asVector2) { - result = (float)(arch.BoxID == 0 ? asVector2.X : asVector2.Y); + result = (float)(component == 0 ? asVector2.X : asVector2.Y); } else if (value is Vector3 asVector3) { - result = (float)(arch.BoxID == 0 ? asVector3.X : arch.BoxID == 1 ? asVector3.Y : asVector3.Z); + result = (float)(component == 0 ? asVector3.X : component == 1 ? asVector3.Y : asVector3.Z); } else if (value is Vector4 asVector4) { - result = (float)(arch.BoxID == 0 ? asVector4.X : arch.BoxID == 1 ? asVector4.Y : arch.BoxID == 2 ? asVector4.Z : asVector4.W); + result = (float)(component == 0 ? asVector4.X : component == 1 ? asVector4.Y : component == 2 ? asVector4.Z : asVector4.W); } else if (value is Float2 asFloat2) { - result = (arch.BoxID == 0 ? asFloat2.X : asFloat2.Y); + result = (component == 0 ? asFloat2.X : asFloat2.Y); } else if (value is Float3 asFloat3) { - result = (arch.BoxID == 0 ? asFloat3.X : arch.BoxID == 1 ? asFloat3.Y : asFloat3.Z); + result = (component == 0 ? asFloat3.X : component == 1 ? asFloat3.Y : asFloat3.Z); } else if (value is Float4 asFloat4) { - result = (arch.BoxID == 0 ? asFloat4.X : arch.BoxID == 1 ? asFloat4.Y : arch.BoxID == 2 ? asFloat4.Z : asFloat4.W); + result = (component == 0 ? asFloat4.X : component == 1 ? asFloat4.Y : component == 2 ? asFloat4.Z : asFloat4.W); } else if (value is Double2 asDouble2) { - result = (float)(arch.BoxID == 0 ? asDouble2.X : asDouble2.Y); + result = (float)(component == 0 ? asDouble2.X : asDouble2.Y); } else if (value is Double3 asDouble3) { - result = (float)(arch.BoxID == 0 ? asDouble3.X : arch.BoxID == 1 ? asDouble3.Y : asDouble3.Z); + result = (float)(component == 0 ? asDouble3.X : component == 1 ? asDouble3.Y : asDouble3.Z); } else if (value is Double4 asDouble4) { - result = (float)(arch.BoxID == 0 ? asDouble4.X : arch.BoxID == 1 ? asDouble4.Y : arch.BoxID == 2 ? asDouble4.Z : asDouble4.W); + result = (float)(component == 0 ? asDouble4.X : component == 1 ? asDouble4.Y : component == 2 ? asDouble4.Z : asDouble4.W); } else { @@ -146,6 +147,7 @@ namespace FlaxEditor.Surface.Elements return; var value = parentNode.Values[arch.ValueIndex]; + var component = arch.BoxID; // Reuse existing field if (value is int) { @@ -159,14 +161,14 @@ namespace FlaxEditor.Surface.Elements { value = (double)toSet; } - else if (parentNode.GroupArchetype.GroupID != 2) + else if (component == -1) { // Per-component editing is used only by nodes from Constant group, otherwise use float value = toSet; } else if (value is Vector2 asVector2) { - if (arch.BoxID == 0) + if (component == 0) asVector2.X = toSet; else asVector2.Y = toSet; @@ -174,9 +176,9 @@ namespace FlaxEditor.Surface.Elements } else if (value is Vector3 asVector3) { - if (arch.BoxID == 0) + if (component == 0) asVector3.X = toSet; - else if (arch.BoxID == 1) + else if (component == 1) asVector3.Y = toSet; else asVector3.Z = toSet; @@ -184,11 +186,11 @@ namespace FlaxEditor.Surface.Elements } else if (value is Vector4 asVector4) { - if (arch.BoxID == 0) + if (component == 0) asVector4.X = toSet; - else if (arch.BoxID == 1) + else if (component == 1) asVector4.Y = toSet; - else if (arch.BoxID == 2) + else if (component == 2) asVector4.Z = toSet; else asVector4.W = toSet; @@ -196,7 +198,7 @@ namespace FlaxEditor.Surface.Elements } else if (value is Float2 asFloat2) { - if (arch.BoxID == 0) + if (component == 0) asFloat2.X = toSet; else asFloat2.Y = toSet; @@ -204,9 +206,9 @@ namespace FlaxEditor.Surface.Elements } else if (value is Float3 asFloat3) { - if (arch.BoxID == 0) + if (component == 0) asFloat3.X = toSet; - else if (arch.BoxID == 1) + else if (component == 1) asFloat3.Y = toSet; else asFloat3.Z = toSet; @@ -214,11 +216,11 @@ namespace FlaxEditor.Surface.Elements } else if (value is Float4 asFloat4) { - if (arch.BoxID == 0) + if (component == 0) asFloat4.X = toSet; - else if (arch.BoxID == 1) + else if (component == 1) asFloat4.Y = toSet; - else if (arch.BoxID == 2) + else if (component == 2) asFloat4.Z = toSet; else asFloat4.W = toSet; @@ -226,7 +228,7 @@ namespace FlaxEditor.Surface.Elements } else if (value is Double2 asDouble2) { - if (arch.BoxID == 0) + if (component == 0) asDouble2.X = toSet; else asDouble2.Y = toSet; @@ -234,9 +236,9 @@ namespace FlaxEditor.Surface.Elements } else if (value is Double3 asDouble3) { - if (arch.BoxID == 0) + if (component == 0) asDouble3.X = toSet; - else if (arch.BoxID == 1) + else if (component == 1) asDouble3.Y = toSet; else asDouble3.Z = toSet; @@ -244,11 +246,11 @@ namespace FlaxEditor.Surface.Elements } else if (value is Double4 asDouble4) { - if (arch.BoxID == 0) + if (component == 0) asDouble4.X = toSet; - else if (arch.BoxID == 1) + else if (component == 1) asDouble4.Y = toSet; - else if (arch.BoxID == 2) + else if (component == 2) asDouble4.Z = toSet; else asDouble4.W = toSet;