From fb27606541f05333d6fb186458cd2946e120a52d Mon Sep 17 00:00:00 2001 From: Wojtek Figat Date: Mon, 11 Sep 2023 13:54:44 +0200 Subject: [PATCH] Add missing `Particle Scale` getter node to Particle Emitter graph #1343 --- Source/Editor/Surface/Archetypes/Particles.cs | 12 ++++++++++++ .../Graph/CPU/ParticleEmitterGraph.CPU.Particles.cpp | 6 ++++++ .../Graph/GPU/ParticleEmitterGraph.GPU.Particles.cpp | 4 ++++ Source/Engine/Particles/Graph/ParticleEmitterGraph.h | 9 ++++++++- 4 files changed, 30 insertions(+), 1 deletion(-) diff --git a/Source/Editor/Surface/Archetypes/Particles.cs b/Source/Editor/Surface/Archetypes/Particles.cs index dd861d4af..1389a6904 100644 --- a/Source/Editor/Surface/Archetypes/Particles.cs +++ b/Source/Editor/Surface/Archetypes/Particles.cs @@ -553,6 +553,18 @@ namespace FlaxEditor.Surface.Archetypes NodeElementArchetype.Factory.Output(0, string.Empty, typeof(float), 0), } }, + new NodeArchetype + { + TypeID = 112, + Title = "Particle Scale", + Description = "Particle scale.", + Flags = NodeFlags.ParticleEmitterGraph, + Size = new Float2(200, 30), + Elements = new[] + { + NodeElementArchetype.Factory.Output(0, string.Empty, typeof(Float3), 0), + } + }, // Simulation data access nodes new NodeArchetype diff --git a/Source/Engine/Particles/Graph/CPU/ParticleEmitterGraph.CPU.Particles.cpp b/Source/Engine/Particles/Graph/CPU/ParticleEmitterGraph.CPU.Particles.cpp index 9ef996869..9d91d0013 100644 --- a/Source/Engine/Particles/Graph/CPU/ParticleEmitterGraph.CPU.Particles.cpp +++ b/Source/Engine/Particles/Graph/CPU/ParticleEmitterGraph.CPU.Particles.cpp @@ -331,6 +331,12 @@ void ParticleEmitterGraphCPUExecutor::ProcessGroupParticles(Box* box, Node* node value = GET_PARTICLE_ATTRIBUTE(0, float); break; } + // Particle Scale + case 112: + { + value = GET_PARTICLE_ATTRIBUTE(0, Float3); + break; + } // Effect Position case 200: { diff --git a/Source/Engine/Particles/Graph/GPU/ParticleEmitterGraph.GPU.Particles.cpp b/Source/Engine/Particles/Graph/GPU/ParticleEmitterGraph.GPU.Particles.cpp index 905d1a11c..de142827c 100644 --- a/Source/Engine/Particles/Graph/GPU/ParticleEmitterGraph.GPU.Particles.cpp +++ b/Source/Engine/Particles/Graph/GPU/ParticleEmitterGraph.GPU.Particles.cpp @@ -331,6 +331,10 @@ void ParticleEmitterGPUGenerator::ProcessGroupParticles(Box* box, Node* node, Va case 111: value = AccessParticleAttribute(node, TEXT("Radius"), ParticleAttribute::ValueTypes::Float, AccessMode::Read); break; + // Particle Scale + case 112: + value = AccessParticleAttribute(node, TEXT("Scale"), ParticleAttribute::ValueTypes::Float3, AccessMode::Read); + break; // Effect Position case 200: value = Value(VariantType::Float3, TEXT("EffectPosition")); diff --git a/Source/Engine/Particles/Graph/ParticleEmitterGraph.h b/Source/Engine/Particles/Graph/ParticleEmitterGraph.h index cfe259a72..f5946c226 100644 --- a/Source/Engine/Particles/Graph/ParticleEmitterGraph.h +++ b/Source/Engine/Particles/Graph/ParticleEmitterGraph.h @@ -269,13 +269,20 @@ public: USE_ATTRIBUTE(Lifetime, Float, 1); break; } - // Particle Mass + // Particle Radius case GRAPH_NODE_MAKE_TYPE(14, 111): { node->UsesParticleData = true; USE_ATTRIBUTE(Radius, Float, 0); break; } + // Particle Scale + case GRAPH_NODE_MAKE_TYPE(14, 112): + { + node->UsesParticleData = true; + USE_ATTRIBUTE(Scale, Float3, 0); + break; + } // Random case GRAPH_NODE_MAKE_TYPE(14, 208): case GRAPH_NODE_MAKE_TYPE(14, 209):