33#ifndef DVD_PARTICLE_EMITTER_H_
34#define DVD_PARTICLE_EMITTER_H_
52 ~ParticleEmitter()
override;
60 bool refreshData)
override;
64 void enableEmitter(
const bool state)
noexcept { _enabled = state; }
66 void setDrawImpostor(
const bool state)
noexcept { _drawImpostor = state; }
68 [[nodiscard]]
bool initData(
const std::shared_ptr<ParticleData>& particleData);
74 void addUpdater(
const std::shared_ptr<ParticleUpdater>& updater) {
75 _updaters.push_back(updater);
78 void addSource(
const std::shared_ptr<ParticleSource>& source) {
79 _sources.push_back(source);
82 [[nodiscard]]
U32 getAliveParticleCount()
const noexcept;
87 void sceneUpdate(
U64 deltaTimeUS,
96 static constexpr U8 s_MaxPlayerBuffers = 4;
98 std::shared_ptr<ParticleData> _particles;
104 bool _enabled =
false;
106 bool _drawImpostor =
false;
109 using BuffersPerPlayer = std::array<BuffersPerStage, s_MaxPlayerBuffers>;
110 BuffersPerPlayer _particleGPUBuffers{};
113 Task* _bufferUpdate =
nullptr;
114 Task* _bbUpdate =
nullptr;
#define DEFINE_NODE_TYPE(Name, Enum)
Handle console commands that start with a forward slash.
eastl::vector< Type > vector
eastl::fixed_vector< GenericDrawCommand, 1, true > GenericDrawCommandContainer
constexpr auto to_base(const Type value) -> Type