// Copyright (C) 2021 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_GRAPHICSCOMPONENT_HPP #define NAZARA_GRAPHICSCOMPONENT_HPP #include #include #include #include #include #include namespace Nz { class NAZARA_GRAPHICS_API GraphicsComponent { public: GraphicsComponent(); GraphicsComponent(const GraphicsComponent&) = default; GraphicsComponent(GraphicsComponent&&) = default; ~GraphicsComponent() = default; inline void AttachRenderable(std::shared_ptr renderable); inline void DetachRenderable(const std::shared_ptr& renderable); inline const std::vector>& GetRenderables() const; inline WorldInstance& GetWorldInstance(); inline const WorldInstance& GetWorldInstance() const; GraphicsComponent& operator=(const GraphicsComponent&) = default; GraphicsComponent& operator=(GraphicsComponent&&) = default; NazaraSignal(OnRenderableAttached, GraphicsComponent* /*graphicsComponent*/, const std::shared_ptr& /*renderable*/); NazaraSignal(OnRenderableDetach, GraphicsComponent* /*graphicsComponent*/, const std::shared_ptr& /*renderable*/); private: std::vector> m_renderables; std::unique_ptr m_worldInstance; }; } #include #endif