#ifndef ParticleSystem_h__ #define ParticleSystem_h__ #include "System.h" #include "Components/Transform.h" #include "Components/ParticleEmitter.h" #include "Components/Particle.h" #include "Components/Model.h" #include "Components/Physics.h" #include "Components/Box.h" #include "Components/PointLight.h" #include "Color.h" #include namespace Systems { struct ParticleData { EntityID ParticleID; double SpawnTime; float AngularVelocity; glm::vec3 Orientation; Color color; }; class ParticleSystem : public System { public: ParticleSystem(World* world); void RegisterComponents(ComponentFactory* cf) override; void Update(double dt) override; void UpdateEntity(double dt, EntityID entity, EntityID parent) override; private: void SpawnParticles(EntityID emitterID); float RandomizeAngle(float spreadAngle); //void ScaleInterpolation(double timeProgress, std::vector spectrum, glm::vec3 &scale); void VectorInterpolation(double timeProgress, std::vector spectrum, glm::vec3 &velocity); //void ColorInterpolation(double timeProgress, std::vector spectrum, Color &color); void ScalarInterpolation(double timeProgress, std::vector spectrum, float &alpha); void Billboard(); std::map> m_ParticleEmitter; std::map m_TimeSinceLastSpawn; }; } #endif // !ParticleSystem_h__