diff --git a/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHGraphicsSystem.cpp b/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHGraphicsSystem.cpp index 48e71f57..21b08829 100644 --- a/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHGraphicsSystem.cpp +++ b/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHGraphicsSystem.cpp @@ -147,7 +147,7 @@ namespace SHADE //SHAssetManager::CompileAsset("../../Assets/Shaders/Anim_VS.glsl", false); //SHAssetManager::CompileAsset("../../Assets/Shaders/Particle_VS.glsl", false); //SHAssetManager::CompileAsset("../../Assets/Shaders/Particle_FS.glsl", false); - SHAssetManager::CompileAsset("../../Assets/Shaders/ParticleEmit_CS.glsl", false); + //SHAssetManager::CompileAsset("../../Assets/Shaders/ParticleEmit_CS.glsl", false); //SHAssetManager::CompileAsset("../../Assets/Shaders/ParticleUpdate_CS.glsl", false); // Load Built In Shaders @@ -574,6 +574,13 @@ namespace SHADE ReceiverPtr compileAssetReceivePtr = std::dynamic_pointer_cast(compileAssetReceiever); SHEventManager::SubscribeTo(SH_ASSET_COMPILE_EVENT, compileAssetReceivePtr); + std::shared_ptr> sceneExitPreEvent + { + std::make_shared>(this, &SHGraphicsSystem::ReceivePreSceneExitEvent) + }; + ReceiverPtr sceneExitPreEventPtr = std::dynamic_pointer_cast(sceneExitPreEvent); + SHEventManager::SubscribeTo(SH_SCENE_EXIT_PRE, sceneExitPreEventPtr); + } void SHGraphicsSystem::InitGenericDataAndTexturesDescSet(void) noexcept @@ -984,6 +991,14 @@ namespace SHADE return eventPtr->handle; } + SHEventHandle SHGraphicsSystem::ReceivePreSceneExitEvent(SHEventPtr eventPtr) noexcept + { + device->WaitIdle(); + + return eventPtr->handle; + } + + SHEventHandle SHGraphicsSystem::ReceiveLightDeleteEvent(SHEventPtr eventPtr) noexcept { // we need to wait for the device to finish using the graph first diff --git a/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHGraphicsSystem.h b/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHGraphicsSystem.h index 2627415c..3d0b3cc6 100644 --- a/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHGraphicsSystem.h +++ b/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHGraphicsSystem.h @@ -183,6 +183,7 @@ namespace SHADE /* Light functions */ /*-----------------------------------------------------------------------*/ SHEventHandle ReceiveLightEnableShadowEvent (SHEventPtr eventPtr) noexcept; + SHEventHandle ReceivePreSceneExitEvent (SHEventPtr eventPtr) noexcept; SHEventHandle ReceiveLightDeleteEvent (SHEventPtr eventPtr) noexcept; /*-----------------------------------------------------------------------*/ diff --git a/SHADE_Engine/src/Graphics/MiddleEnd/Particles/SHParticleEmitterComponent.cpp b/SHADE_Engine/src/Graphics/MiddleEnd/Particles/SHParticleEmitterComponent.cpp index d6f1e115..8aa28e58 100644 --- a/SHADE_Engine/src/Graphics/MiddleEnd/Particles/SHParticleEmitterComponent.cpp +++ b/SHADE_Engine/src/Graphics/MiddleEnd/Particles/SHParticleEmitterComponent.cpp @@ -1,5 +1,7 @@ #include "SHpch.h" #include "SHParticleEmitterComponent.h" +#include "Graphics/Buffers/SHVkBuffer.h" +#include "Graphics/Descriptors/SHVkDescriptorSetGroup.h" namespace SHADE { @@ -12,7 +14,12 @@ namespace SHADE void SHParticleEmitterComponent::OnDestroy(void) { - + emitterData.Free(); + particleData.Free(); + freelistData.Free(); + indicesData.Free(); + drawCallData.Free(); + particleDescriptorSet.Free(); } void SHParticleEmitterComponent::Emit(void) noexcept