Fix regression in using per-component input fields in Visject nodes values editing

This commit is contained in:
Wojtek Figat
2025-03-30 20:54:32 +02:00
parent 4c133fb6ff
commit 0046cbe0ef
2 changed files with 36 additions and 34 deletions

View File

@@ -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

View File

@@ -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;