54 lines
1.3 KiB
C++
54 lines
1.3 KiB
C++
// 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;
|
|
}
|
|
} |