// Copyright (C) 2020 Jérôme Leclercq // This file is part of the "Nazara Engine - Graphics module" // For conditions of distribution and use, see copyright notice in Config.hpp #pragma once #ifndef NAZARA_PARTICLEFUNCTIONCONTROLLER_HPP #define NAZARA_PARTICLEFUNCTIONCONTROLLER_HPP #include #include #include namespace Nz { class ParticleFunctionController; using ParticleFunctionControllerConstRef = ObjectRef; using ParticleFunctionControllerRef = ObjectRef; class NAZARA_GRAPHICS_API ParticleFunctionController : public ParticleController { public: using Controller = std::function; inline ParticleFunctionController(Controller controller); ParticleFunctionController(const ParticleFunctionController&) = default; ~ParticleFunctionController() = default; void Apply(ParticleGroup& group, ParticleMapper& mapper, unsigned int startId, unsigned int endId, float elapsedTime) override final; inline const Controller& GetController() const; inline void SetController(Controller controller); template static ParticleFunctionControllerRef New(Args&&... args); private: Controller m_controller; }; } #include #endif // NAZARA_PARTICLEFUNCTIONCONTROLLER_HPP