diff --git a/Source/Engine/Core/Types/Variant.cpp b/Source/Engine/Core/Types/Variant.cpp index 95e815b81..49c72bfad 100644 --- a/Source/Engine/Core/Types/Variant.cpp +++ b/Source/Engine/Core/Types/Variant.cpp @@ -1824,6 +1824,7 @@ Variant::operator Float4() const return Float4(*(Float3*)AsData, 0.0f); case VariantType::Float4: case VariantType::Color: + case VariantType::Quaternion: return *(Float4*)AsData; case VariantType::Double2: return Float4(AsDouble2(), 0.0f, 0.0f); diff --git a/Source/Engine/Particles/Graph/GPU/ParticleEmitterGraph.GPU.cpp b/Source/Engine/Particles/Graph/GPU/ParticleEmitterGraph.GPU.cpp index 5a6b28be9..83d9eee68 100644 --- a/Source/Engine/Particles/Graph/GPU/ParticleEmitterGraph.GPU.cpp +++ b/Source/Engine/Particles/Graph/GPU/ParticleEmitterGraph.GPU.cpp @@ -456,6 +456,7 @@ void ParticleEmitterGPUGenerator::PrepareGraph(ParticleEmitterGraphGPU* graph) mp.AsFloat3 = param->Value.AsFloat3(); break; case VariantType::Float4: + case VariantType::Quaternion: mp.Type = MaterialParameterType::Vector4; *(Float4*)&mp.AsData = param->Value.AsFloat4(); break; diff --git a/Source/Engine/Visject/ShaderGraph.cpp b/Source/Engine/Visject/ShaderGraph.cpp index 718e9cba9..9bdc5709d 100644 --- a/Source/Engine/Visject/ShaderGraph.cpp +++ b/Source/Engine/Visject/ShaderGraph.cpp @@ -92,9 +92,13 @@ void ShaderGenerator::ProcessGroupConstants(Box* box, Node* node, Value& value) value = Value(cv.W); break; } + // Rotation case 8: { - value = Value::Zero; + const float pitch = (float)node->Values[0]; + const float yaw = (float)node->Values[1]; + const float roll = (float)node->Values[2]; + value = Value(Quaternion::Euler(pitch, yaw, roll)); break; } // PI diff --git a/Source/Engine/Visject/ShaderGraphValue.cpp b/Source/Engine/Visject/ShaderGraphValue.cpp index 2aeebbd2b..cdff3d1e6 100644 --- a/Source/Engine/Visject/ShaderGraphValue.cpp +++ b/Source/Engine/Visject/ShaderGraphValue.cpp @@ -460,6 +460,7 @@ ShaderGraphValue ShaderGraphValue::Cast(const ShaderGraphValue& v, VariantType:: case VariantType::Types::Float4: case VariantType::Types::Double4: case VariantType::Types::Color: + case VariantType::Types::Quaternion: switch (v.Type) { case VariantType::Types::Bool: @@ -485,16 +486,6 @@ ShaderGraphValue ShaderGraphValue::Cast(const ShaderGraphValue& v, VariantType:: break; } break; - case VariantType::Types::Quaternion: - switch (v.Type) - { - case VariantType::Types::Color: - case VariantType::Types::Float4: - case VariantType::Types::Double4: - format = TEXT("{}"); - break; - } - break; } if (format == nullptr) { diff --git a/Source/Engine/Visject/VisjectGraph.cpp b/Source/Engine/Visject/VisjectGraph.cpp index 199747b67..7e02f0aa5 100644 --- a/Source/Engine/Visject/VisjectGraph.cpp +++ b/Source/Engine/Visject/VisjectGraph.cpp @@ -79,6 +79,7 @@ void VisjectExecutor::ProcessGroupConstants(Box* box, Node* node, Value& value) value = cv.W; break; } + // Rotation case 8: { const float pitch = (float)node->Values[0];