#ifndef SCENE_HPP #define SCENE_HPP #include "open_engine/renderer/editor_camera.hpp" #include #include #include namespace OpenEngine { class Entity; class Scene { public: Scene() = default; ~Scene() = default; Entity CreateEntity(const std::string& name = std::string()); void DeleteEntity(entt::entity entity); void MarkEntityForDeletion(Entity entity); void UpdateEntities(); void OnUpdateRuntime(); void OnUpdateEditor(EditorCamera& camera); void OnViewportResize(uint32_t width, uint32_t height); entt::registry& GetRegistry() { return registry; }; Entity GetPrimaryCamera(); private: template void OnComponentAdded(Entity entity, T& component); private: entt::registry registry; uint32_t viewport_width = 0, viewport_height = 0; std::vector entities_to_be_deleted; friend class SceneSerializer; friend class Entity; }; } #endif // SCENE_HPP