// Copyright (c) 2022 Dominic Masters // // This software is released under the MIT License. // https://opensource.org/licenses/MIT #include "Scene.hpp" #include "game/DawnGame.hpp" using namespace Dawn; Scene::Scene(DawnGame *game) { assertNotNull(game); this->game = game; this->nextId = 0; } void Scene::update() { // Finsh adding scene items that were trying to add from the last frame. auto it = this->itemsNotInitialized.begin(); while(it != this->itemsNotInitialized.end()) { this->items[it->first] = it->second; it->second->init(); ++it; } this->itemsNotInitialized.clear(); // TODO: Cleanup old scene items // TODO: Tick scene items(?) this->eventSceneUpdate.invoke(); if(!this->game->timeManager.isPaused) this->eventSceneUnpausedUpdate.invoke(); } SceneItem * Scene::createSceneItem() { sceneitemid_t id = this->nextId++; auto item = new SceneItem(this, id); this->itemsNotInitialized[id] = item; return item; } Scene::~Scene() { auto it = this->items.begin(); while(it != this->items.end()) { delete it->second; ++it; } auto it2 = this->itemsNotInitialized.begin(); while(it2 != this->itemsNotInitialized.end()) { delete it2->second; ++it2; } }