/
redgpu
/
ezEngine
Обзор
Документация
Войти
/
redgpu
/
ezEngine
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
dev
Code/EnginePlugins/ParticlePlugin/Module/ParticleModule.h
67 строк
2 KB
Jan Krassnigg
Various small improvements (particles, curves) (#1739)
11 дек 2025, 09:27
Не верифицирован
11 дек 2025, 09:27
1f50f82
Код
Авторство
О чём код?
#pragma once #include <Foundation/DataProcessing/Stream/ProcessingStream.h> #include <Foundation/DataProcessing/Stream/ProcessingStreamProcessor.h> #include <ParticlePlugin/Declarations.h> #include <ParticlePlugin/Effect/ParticleEffectInstance.h> #include <ParticlePlugin/ParticlePluginDLL.h> class ezProcessingStream; /// Base class for all particle system modules /// /// Modules process particle data through streams. /// Derived types include emitters, initializers, behaviors, and finalizers. class EZ_PARTICLEPLUGIN_DLL ezParticleModule : public ezProcessingStreamProcessor { EZ_ADD_DYNAMIC_REFLECTION(ezParticleModule, ezProcessingStreamProcessor); friend class ezParticleSystemInstance; public: virtual void CreateRequiredStreams() = 0; virtual void QueryOptionalStreams() {} void Reset(ezParticleSystemInstance* pOwner) { m_pOwnerSystem = pOwner; m_StreamBinding.Clear(); OnReset(); } /// Called after everything is set up. virtual void OnFinalize() {} ezParticleSystemInstance* GetOwnerSystem() { return m_pOwnerSystem; } const ezParticleSystemInstance* GetOwnerSystem() const { return m_pOwnerSystem; } ezParticleEffectInstance* GetOwnerEffect() const { return m_pOwnerSystem->GetOwnerEffect(); } /// Override this to cache world module pointers for later access. /// /// Cached modules can be retrieved via ezParticleWorldModule::GetCachedWorldModule(). virtual void RequestRequiredWorldModulesForCache(ezParticleWorldModule* pParticleModule) {} protected: /// Called by Reset() to perform custom cleanup virtual void OnReset() {} void CreateStream(const char* szName, ezProcessingStream::DataType Type, ezProcessingStream** ppStream, bool bWillInitializeStream) { m_pOwnerSystem->CreateStream(szName, Type, ppStream, m_StreamBinding, bWillInitializeStream); } virtual ezResult UpdateStreamBindings() final override { m_StreamBinding.UpdateBindings(m_pStreamGroup); return EZ_SUCCESS; } ezRandom& GetRNG() const { return GetOwnerEffect()->GetRNG(); } private: ezParticleSystemInstance* m_pOwnerSystem; ezParticleStreamBinding m_StreamBinding; };