#ifndef __MLX_SCENE__ #define __MLX_SCENE__ #include #include namespace mlx { struct SceneDescriptor { NonOwningPtr renderer; // More description may come in future }; class Scene { public: Scene(SceneDescriptor desc); Sprite& CreateSprite(std::shared_ptr texture) noexcept; inline void ResetSprites() { m_sprites.clear(); } [[nodiscard]] MLX_FORCEINLINE const std::vector>& GetSprites() const noexcept { return m_sprites; } [[nodiscard]] MLX_FORCEINLINE const SceneDescriptor& GetDescription() const noexcept { return m_descriptor; } [[nodiscard]] MLX_FORCEINLINE DepthImage& GetDepth() noexcept { return m_depth; } [[nodiscard]] MLX_FORCEINLINE ViewerData& GetViewerData() noexcept { return m_viewer_data; } ~Scene() = default; private: SceneDescriptor m_descriptor; std::vector> m_sprites; DepthImage m_depth; ViewerData m_viewer_data; }; } #endif