16
0
mirror of https://github.com/MaSzyna-EU07/maszyna.git synced 2026-07-18 11:09:18 +02:00
Files
maszyna/entitysystem/systems/ParticlesSystem.h
2026-05-24 21:48:05 +02:00

36 lines
867 B
C++

//
// Created by Daniu
//
#ifndef EU07_PARTICLESSYSTEM_H
#define EU07_PARTICLESSYSTEM_H
#include "BaseSystem.h"
#include "entitysystem/ECWorld.h"
#include "entitysystem/components/RenderComponents.h"
class ParticlesSystem : public BaseSystem
{
public:
ParticlesSystem();
~ParticlesSystem();
void Update(ECWorld& world, float dt) override;
void Render(ECWorld& world) override;
private:
void SpawnParticle(ECSComponent::ParticleEmitter& emitter);
// Per-instance data uploaded to GPU (one entry per live particle)
struct GPUInstanceData {
glm::vec3 position; // camera-relative world position
float size;
glm::vec4 color;
};
// OpenGL resources — allocated lazily on first Render() call
struct RenderState;
std::unique_ptr<RenderState> m_renderState;
};
#endif // EU07_PARTICLESSYSTEM_H