// Copyright (c) 2022 Dominic Masters // // This software is released under the MIT License. // https://opensource.org/licenses/MIT #pragma once #include "SceneItem.hpp" namespace Dawn { class DawnGame; class Scene : public std::enable_shared_from_this { private: sceneitemid_t nextId; std::map> items; std::map> itemsNotInitialized; public: std::weak_ptr game; Scene(std::weak_ptr game); void update(); std::shared_ptr createSceneItem(); void removeSceneItem(SceneItem *item); template std::shared_ptr findComponent() { auto it = this->items.begin(); while(it != this->items.end()) { auto component = it->second->getComponent(); if(component != nullptr) return component; ++it; } return nullptr; } ~Scene(); }; }