#pragma once #include #include #include #include namespace Engine { class Scene; } class Engine::Scene { protected: std::string name; Hud* HeadsUpDisplay = nullptr; std::vector FixedList{}; std::vector EntityList{}; public: [[nodiscard]] bool EntityListContains(const Entity* entity) const; [[nodiscard]] bool FixedListContains(const Fixed* fixed) const; [[nodiscard]] size_t FixedCount() const; [[nodiscard]] size_t EntityCount() const; [[nodiscard]] std::string GetName() const; public: void AppendEntity(Entity* entity); void AppendFixed(Fixed* fixed); // Removes and deallocates. void DestroyEntity(Entity* entity); void DestroyFixed(Fixed* fixed); // Only removes from the list. void RemoveEntity(Entity* entity); void RemoveFixed(Fixed* fixed); virtual void Unload(); virtual void Init() {} virtual void Update(); virtual void Render(); public: explicit Scene(const std::string& name) : name(name) {} virtual ~Scene(); };