40 lines
995 B
C++
40 lines
995 B
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) : 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();
|
|
}
|
|
|
|
std::shared_ptr<SceneItem> Scene::createSceneItem() {
|
|
sceneitemid_t id = this->nextId++;
|
|
auto item = std::make_shared<SceneItem>(*this, id);
|
|
this->itemsNotInitialized[id] = item;
|
|
return item;
|
|
}
|
|
|
|
Scene::~Scene() {
|
|
} |