// Copyright (C) 2017 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_PARTICLEFUNCTIONGENERATOR_HPP #define NAZARA_PARTICLEFUNCTIONGENERATOR_HPP #include #include #include namespace Nz { class ParticleFunctionGenerator; using ParticleFunctionGeneratorConstRef = ObjectRef; using ParticleFunctionGeneratorRef = ObjectRef; class NAZARA_GRAPHICS_API ParticleFunctionGenerator : public ParticleGenerator { public: using Generator = std::function; inline ParticleFunctionGenerator(Generator controller); ParticleFunctionGenerator(const ParticleFunctionGenerator&) = default; ~ParticleFunctionGenerator() = default; void Generate(ParticleGroup& group, ParticleMapper& mapper, unsigned int startId, unsigned int endId) override final; inline const Generator& GetGenerator() const; inline void SetGenerator(Generator generator); template static ParticleFunctionGeneratorRef New(Args&&... args); private: Generator m_generator; }; } #include #endif // NAZARA_PARTICLEFUNCTIONGENERATOR_HPP