From 7216c1c3dd102a4d9bbed1415f9ca90023b16f47 Mon Sep 17 00:00:00 2001 From: Brandon Mak Date: Tue, 21 Mar 2023 15:27:42 +0800 Subject: [PATCH] Particles test on level 1 food --- Assets/Scenes/Level1.shade | 75 +++++++++++++++++- Assets/Scenes/Scene2.shade.shmeta | 3 + Assets/Scripts/Gameplay/Item/SC_Item.cs | 9 +++ Assets/Shaders/ParticleEmit_CS.glsl | 3 +- Assets/Shaders/ParticleEmit_CS.shshaderb | Bin 12309 -> 12373 bytes .../Inspector/SHEditorComponentView.hpp | 17 ++++ .../Particles/SHParticleEmitterComponent.cpp | 12 +++ .../Particles/SHParticleEmitterComponent.h | 5 ++ .../src/Serialization/SHYAMLConverters.h | 5 ++ SHADE_Managed/src/Engine/ECS.cxx | 3 + 10 files changed, 129 insertions(+), 3 deletions(-) create mode 100644 Assets/Scenes/Scene2.shade.shmeta diff --git a/Assets/Scenes/Level1.shade b/Assets/Scenes/Level1.shade index af4c20e3..fbb6ba1c 100644 --- a/Assets/Scenes/Level1.shade +++ b/Assets/Scenes/Level1.shade @@ -7124,7 +7124,7 @@ NumberOfChildren: 0 Components: Transform Component: - Translate: {x: -2.50000072, y: 0.799999893, z: -4.28408909} + Translate: {x: -2.51287055, y: 0.799999893, z: -4.28408909} Rotate: {x: -5.83341553e-08, y: 7.48974247e-14, z: 1.10461471e-08} Scale: {x: 1, y: 1, z: 1} IsActive: true @@ -8178,4 +8178,75 @@ Hovered: false Clicked: false IsActive: true - Scripts: ~ \ No newline at end of file + Scripts: ~ +- EID: 523 + Name: Mesh_Apple + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -7.29431438, y: 1.17736602, z: -4.53253984} + Rotate: {x: -5.83341553e-08, y: 7.48974247e-14, z: 1.10461471e-08} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 144128170 + Material: 122370915 + IsActive: true + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Gravity Scale: 1 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 2 + Type: Box + Half Extents: {x: 0.200000003, y: 0.200000003, z: 0.200000003} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + classSHADE::SHParticleEmitterComponent: + Emission Count: 4 + Is Passive: false + Emission Interval: 0 + Min Life: 1 + Max Life: 2 + Minimum Speed: 1 + Maximum Speed: 1.5 + Minimum Size: 0 + Maximum Size: 0.075000003 + Size Decay: 0.907999992 + Angular Ranges And Offset: {x: 6.19999981, y: 3.1400001, z: 0, w: 1.70000005} + Rotation Speed: 0.805999994 + Rotation Decay: 0 + Texture Asset ID: 0 + Custom Update Shader Asset ID: 0 + Color Tint: {x: 0.470701218, y: 0.559471369, z: 0.283432603, w: 1} + Acceleration: {x: 0, y: -0.0390000008, z: 0} + IsActive: true + Scripts: + - Type: Item + Enabled: true + Score: 10 + currCategory: 0 + density: 1 + dontReturn: false + soundDistance: 10 + highlightSpeed: 200 + highlightThickness: 60 + highlightLowerClamp: 0.25 \ No newline at end of file diff --git a/Assets/Scenes/Scene2.shade.shmeta b/Assets/Scenes/Scene2.shade.shmeta new file mode 100644 index 00000000..9ec289c8 --- /dev/null +++ b/Assets/Scenes/Scene2.shade.shmeta @@ -0,0 +1,3 @@ +Name: Scene2 +ID: 89281126 +Type: 5 diff --git a/Assets/Scripts/Gameplay/Item/SC_Item.cs b/Assets/Scripts/Gameplay/Item/SC_Item.cs index be28bb5a..3fdeee6e 100644 --- a/Assets/Scripts/Gameplay/Item/SC_Item.cs +++ b/Assets/Scripts/Gameplay/Item/SC_Item.cs @@ -33,6 +33,8 @@ public class Item : Script public float highlightThickness = 600.0f; public float highlightLowerClamp = 0.25f; + private ParticleEmitter emitter; + protected override void awake() { @@ -50,6 +52,8 @@ public class Item : Script AudioHandler.audioClipHandlers["SFXImpactElastic"] = Audio.CreateAudioClip("event:/Props/impact_elastic"); AudioHandler.audioClipHandlers["SFXImpactHard"] = Audio.CreateAudioClip("event:/Props/impact_hard"); + + emitter = GetComponent(); } protected override void start() @@ -135,6 +139,11 @@ public class Item : Script playSound = false; Audio.DetachAudioClipFromObject(AudioHandler.audioClipHandlers["SFXImpactElastic"]); Audio.DetachAudioClipFromObject(AudioHandler.audioClipHandlers["SFXImpactHard"]); + + if(emitter) + emitter.Emit(); + + Debug.Log("EMIT"); } if (info.GameObject.GetScript() && !returnBack) diff --git a/Assets/Shaders/ParticleEmit_CS.glsl b/Assets/Shaders/ParticleEmit_CS.glsl index 43ed335d..b2f81a05 100644 --- a/Assets/Shaders/ParticleEmit_CS.glsl +++ b/Assets/Shaders/ParticleEmit_CS.glsl @@ -7,6 +7,7 @@ layout(local_size_x = 128) in; struct EmitterParameters { vec4 angularRangesAndOffsets; + vec4 acceleration; float minSpeed; float maxSpeed; float rotationSpeed; @@ -187,7 +188,7 @@ void main() particle.orientationSpeedDecay = vec4 (0.0f); - particle.acceleration = vec4 (0.0f, -0.058f, 0.0f, 0.0f); + particle.acceleration = emitterParams.data.acceleration; inputParticles.data[index] = particle; diff --git a/Assets/Shaders/ParticleEmit_CS.shshaderb b/Assets/Shaders/ParticleEmit_CS.shshaderb index dea78edc165b6f1b6d1e6e338494926f08f3372d..08972d9d58d1df32985ed1f5e2f34e3e4cab437d 100644 GIT binary patch literal 12373 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 }); + SHEditorWidgets::DragVec3("Acceleration", {"x", "y", "z"}, + [comp = component]() + { + return comp->GetAcceleration(); + }, + [comp = component](SHVec3 const& val) + { + comp->SetAcceleration(val); + }); + SHEditorWidgets::ColorPicker("Color Tint", [comp = component]() { @@ -903,6 +913,13 @@ namespace SHADE { comp->SetTextureAssetID(val); }); + ImGui::SameLine(); + if (ImGui::Button("Reset")) + { + component->SetTextureAssetID(0); + component->SetTextureIndex(0); + } + if (SHDragDrop::BeginTarget()) { if (AssetID* payload = SHDragDrop::AcceptPayload(SHDragDrop::DRAG_RESOURCE)) diff --git a/SHADE_Engine/src/Graphics/MiddleEnd/Particles/SHParticleEmitterComponent.cpp b/SHADE_Engine/src/Graphics/MiddleEnd/Particles/SHParticleEmitterComponent.cpp index fcdb20da..d6f1e115 100644 --- a/SHADE_Engine/src/Graphics/MiddleEnd/Particles/SHParticleEmitterComponent.cpp +++ b/SHADE_Engine/src/Graphics/MiddleEnd/Particles/SHParticleEmitterComponent.cpp @@ -52,6 +52,13 @@ namespace SHADE } + void SHParticleEmitterComponent::SetAcceleration(SHVec3 const& accel) noexcept + { + cpuEmitterData.accleration.x = accel.x; + cpuEmitterData.accleration.y = accel.y; + cpuEmitterData.accleration.z = accel.z; + } + void SHParticleEmitterComponent::SetAngularRanges(SHVec2 const& ranges) noexcept { cpuEmitterData.angularRangesAndOffsets.x = ranges.x; @@ -177,6 +184,11 @@ namespace SHADE return {cpuEmitterData.angularRangesAndOffsets.z, cpuEmitterData.angularRangesAndOffsets.w }; } + SHVec3 SHParticleEmitterComponent::GetAcceleration(void) const noexcept + { + return SHVec3{cpuEmitterData.accleration.x, cpuEmitterData.accleration.y, cpuEmitterData.accleration.z }; + } + float SHParticleEmitterComponent::GetMinSpeed(void) const noexcept { return cpuEmitterData.minSpeed; diff --git a/SHADE_Engine/src/Graphics/MiddleEnd/Particles/SHParticleEmitterComponent.h b/SHADE_Engine/src/Graphics/MiddleEnd/Particles/SHParticleEmitterComponent.h index e5360e85..47791c44 100644 --- a/SHADE_Engine/src/Graphics/MiddleEnd/Particles/SHParticleEmitterComponent.h +++ b/SHADE_Engine/src/Graphics/MiddleEnd/Particles/SHParticleEmitterComponent.h @@ -25,6 +25,9 @@ namespace SHADE //! Angular ranges of emission SHVec4 angularRangesAndOffsets; + //! Acceleration + SHVec4 accleration; + //! minimum starting velocity float minSpeed; @@ -154,6 +157,7 @@ namespace SHADE void SetMinLife (float val) noexcept; void SetMaxLife (float val) noexcept; void SetAngularRangesAndOffsets (SHVec4 const& ranges) noexcept; + void SetAcceleration (SHVec3 const& accel) noexcept; void SetAngularRanges (SHVec2 const& ranges) noexcept; void SetAngularOffsets (SHVec2 const& offsets) noexcept; void SetMinSpeed (float speed) noexcept; @@ -177,6 +181,7 @@ namespace SHADE SHVec4 const& GetAngularRangesAndOffsets (void) const noexcept; SHVec2 GetAngularRanges (void) const noexcept; SHVec2 GetAngularOffsets (void) const noexcept; + SHVec3 GetAcceleration (void) const noexcept; float GetMinSpeed (void) const noexcept; float GetMaxSpeed (void) const noexcept; float GetRotationSpeed (void) const noexcept; diff --git a/SHADE_Engine/src/Serialization/SHYAMLConverters.h b/SHADE_Engine/src/Serialization/SHYAMLConverters.h index 923037d1..8805ed41 100644 --- a/SHADE_Engine/src/Serialization/SHYAMLConverters.h +++ b/SHADE_Engine/src/Serialization/SHYAMLConverters.h @@ -520,6 +520,7 @@ namespace YAML static constexpr std::string_view TEXTURE_ASSET_ID_TAG = "Texture Asset ID"; static constexpr std::string_view CUSTOM_UPDATE_SHADER_ASSET_ID_TAG = "Custom Update Shader Asset ID"; static constexpr std::string_view COLOR_TINT_TAG = "Color Tint"; + static constexpr std::string_view ACCELERATION_TAG = "Acceleration"; static YAML::Node encode(SHParticleEmitterComponent const& rhs) { @@ -540,6 +541,7 @@ namespace YAML node[TEXTURE_ASSET_ID_TAG.data()] = rhs.GetTextureAssetID(); node[CUSTOM_UPDATE_SHADER_ASSET_ID_TAG.data()] = rhs.GetCustomUpdateShaderAssetID(); node[COLOR_TINT_TAG.data()] = rhs.GetColorTint(); + node[ACCELERATION_TAG.data()] = rhs.GetAcceleration(); return node; } @@ -586,6 +588,9 @@ namespace YAML if (node[COLOR_TINT_TAG.data()].IsDefined()) rhs.SetColorTint(node[COLOR_TINT_TAG.data()].as()); + if (node[ACCELERATION_TAG.data()].IsDefined()) + rhs.SetAcceleration(node[ACCELERATION_TAG.data()].as()); + if (node[TEXTURE_ASSET_ID_TAG.data()].IsDefined()) { AssetID id = node[TEXTURE_ASSET_ID_TAG.data()].as(); diff --git a/SHADE_Managed/src/Engine/ECS.cxx b/SHADE_Managed/src/Engine/ECS.cxx index c79175bf..38138be6 100644 --- a/SHADE_Managed/src/Engine/ECS.cxx +++ b/SHADE_Managed/src/Engine/ECS.cxx @@ -34,6 +34,7 @@ of DigiPen Institute of Technology is prohibited. #include "UI\SHCanvasComponent.h" #include "Animation\SHAnimatorComponent.h" #include "Graphics\MiddleEnd\TrajectoryRendering\SHTrajectoryRenderableComponent.h" +#include "Graphics\MiddleEnd/Particles/SHParticleEmitterComponent.h" // Project Headers #include "Utility/Convert.hxx" #include "Utility/Debug.hxx" @@ -50,6 +51,7 @@ of DigiPen Institute of Technology is prohibited. #include "Components\Slider.hxx" #include "Components\TrajectoryRenderable.hxx" #include "Components\Animator.hxx" +#include "Components\ParticleEmitter.hxx" @@ -341,6 +343,7 @@ namespace SHADE componentMap.Add(createComponentSet()); componentMap.Add(createComponentSet()); componentMap.Add(createComponentSet()); + componentMap.Add(createComponentSet()); } /*---------------------------------------------------------------------------------*/