// 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_PARTICLERENDERER_HPP #define NAZARA_PARTICLERENDERER_HPP #include #include #include #include #include #include namespace Nz { class AbstractRenderQueue; class ParticleMapper; class ParticleRenderer; class ParticleGroup; using ParticleRendererConstRef = ObjectRef; using ParticleRendererLibrary = ObjectLibrary; using ParticleRendererRef = ObjectRef; class NAZARA_GRAPHICS_API ParticleRenderer : public RefCounted { friend ParticleRendererLibrary; friend class Graphics; public: ParticleRenderer() = default; ParticleRenderer(const ParticleRenderer& renderer); virtual ~ParticleRenderer(); virtual void Render(const ParticleGroup& system, const ParticleMapper& mapper, unsigned int startId, unsigned int endId, AbstractRenderQueue* renderQueue) = 0; // Signals: NazaraSignal(OnParticleRendererRelease, const ParticleRenderer* /*particleRenderer*/); private: static bool Initialize(); static void Uninitialize(); static ParticleRendererLibrary::LibraryMap s_library; }; } #endif // NAZARA_PARTICLERENDERER_HPP