From f10af9d8fbc5928640517f35da7728a6e97f39a3 Mon Sep 17 00:00:00 2001 From: Wojciech Figat Date: Mon, 28 Mar 2022 19:48:08 +0200 Subject: [PATCH] Fix `Multiply` (and similar) nodes result value in Visject if the first input is disconnected --- Source/Engine/Visject/ShaderGraph.cpp | 4 ++++ Source/Engine/Visject/VisjectGraph.cpp | 9 +++++++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/Source/Engine/Visject/ShaderGraph.cpp b/Source/Engine/Visject/ShaderGraph.cpp index 7cf2f01b5..bed49a901 100644 --- a/Source/Engine/Visject/ShaderGraph.cpp +++ b/Source/Engine/Visject/ShaderGraph.cpp @@ -156,6 +156,10 @@ void ShaderGenerator::ProcessGroupMath(Box* box, Node* node, Value& value) Box* b2 = node->GetBox(1); Value v1 = tryGetValue(b1, 0, Value::Zero); Value v2 = tryGetValue(b2, 1, Value::Zero); + if (b1->HasConnection()) + v2 = v2.Cast(v1.Type); + else + v1 = v1.Cast(v2.Type); Char op = '?'; switch (node->TypeID) { diff --git a/Source/Engine/Visject/VisjectGraph.cpp b/Source/Engine/Visject/VisjectGraph.cpp index e2091e749..df5d56fec 100644 --- a/Source/Engine/Visject/VisjectGraph.cpp +++ b/Source/Engine/Visject/VisjectGraph.cpp @@ -154,8 +154,13 @@ void VisjectExecutor::ProcessGroupMath(Box* box, Node* node, Value& value) case 40: case 41: { - Value v1 = tryGetValue(node->GetBox(0), 0, Value::Zero); - Value v2 = tryGetValue(node->GetBox(1), 1, Value::Zero).Cast(v1.Type); + auto b1 = node->GetBox(0); + Value v1 = tryGetValue(b1, 0, Value::Zero); + Value v2 = tryGetValue(node->GetBox(1), 1, Value::Zero); + if (b1->HasConnection()) + v2 = v2.Cast(v1.Type); + else + v1 = v1.Cast(v2.Type); GraphUtilities::ApplySomeMathHere(node->TypeID, value, v1, v2); break; }