Fix crash when using different values in various math nodes in Visject
#3315
This commit is contained in:
@@ -230,7 +230,8 @@ void VisjectExecutor::ProcessGroupMath(Box* box, Node* node, Value& value)
|
|||||||
case VariantType::Double4:
|
case VariantType::Double4:
|
||||||
value = Double3(v1.AsDouble4()).Length();
|
value = Double3(v1.AsDouble4()).Length();
|
||||||
break;
|
break;
|
||||||
default: CRASH;
|
default:
|
||||||
|
value = 0.0f;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -265,7 +266,8 @@ void VisjectExecutor::ProcessGroupMath(Box* box, Node* node, Value& value)
|
|||||||
case VariantType::Double4:
|
case VariantType::Double4:
|
||||||
value = Double4(Double3::Normalize(Double3(v1.AsDouble3())), 0.0f);
|
value = Double4(Double3::Normalize(Double3(v1.AsDouble3())), 0.0f);
|
||||||
break;
|
break;
|
||||||
default: CRASH;
|
default:
|
||||||
|
value = 0.0f;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -290,13 +292,25 @@ void VisjectExecutor::ProcessGroupMath(Box* box, Node* node, Value& value)
|
|||||||
case VariantType::Double3:
|
case VariantType::Double3:
|
||||||
value = Double3::Cross(v1.AsDouble3(), v2.AsDouble3());
|
value = Double3::Cross(v1.AsDouble3(), v2.AsDouble3());
|
||||||
break;
|
break;
|
||||||
default: CRASH;
|
default:
|
||||||
|
value = 0.0f;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 19:
|
case 19:
|
||||||
switch (v1.Type.Type)
|
switch (v1.Type.Type)
|
||||||
{
|
{
|
||||||
|
case VariantType::Bool:
|
||||||
|
case VariantType::Int16:
|
||||||
|
case VariantType::Uint16:
|
||||||
|
case VariantType::Int:
|
||||||
|
case VariantType::Uint:
|
||||||
|
case VariantType::Int64:
|
||||||
|
case VariantType::Uint64:
|
||||||
|
case VariantType::Float:
|
||||||
|
case VariantType::Double:
|
||||||
|
value = Math::Abs((float)v1 - (float)v2);
|
||||||
|
break;
|
||||||
case VariantType::Float2:
|
case VariantType::Float2:
|
||||||
value = Float2::Distance(v1.AsFloat2(), v2.AsFloat2());
|
value = Float2::Distance(v1.AsFloat2(), v2.AsFloat2());
|
||||||
break;
|
break;
|
||||||
@@ -316,7 +330,8 @@ void VisjectExecutor::ProcessGroupMath(Box* box, Node* node, Value& value)
|
|||||||
case VariantType::Double4:
|
case VariantType::Double4:
|
||||||
value = Double3::Distance((Double3)v1, (Double3)v2);
|
value = Double3::Distance((Double3)v1, (Double3)v2);
|
||||||
break;
|
break;
|
||||||
default: CRASH;
|
default:
|
||||||
|
value = 0.0f;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -342,7 +357,8 @@ void VisjectExecutor::ProcessGroupMath(Box* box, Node* node, Value& value)
|
|||||||
case VariantType::Double4:
|
case VariantType::Double4:
|
||||||
value = Double3::Dot((Double3)v1, (Double3)v2);
|
value = Double3::Dot((Double3)v1, (Double3)v2);
|
||||||
break;
|
break;
|
||||||
default: CRASH;
|
default:
|
||||||
|
value = 0.0f;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -386,7 +402,8 @@ void VisjectExecutor::ProcessGroupMath(Box* box, Node* node, Value& value)
|
|||||||
case VariantType::Float4:
|
case VariantType::Float4:
|
||||||
value = Float4(v1.AsFloat4() - 2.0f * v2.AsFloat4() * Float3::Dot((Float3)v1, (Float3)v2));
|
value = Float4(v1.AsFloat4() - 2.0f * v2.AsFloat4() * Float3::Dot((Float3)v1, (Float3)v2));
|
||||||
break;
|
break;
|
||||||
default: CRASH;
|
default:
|
||||||
|
value = 0.0f;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|||||||
Reference in New Issue
Block a user