diff options
Diffstat (limited to 'src/engine/World.cpp')
| -rw-r--r-- | src/engine/World.cpp | 37 |
1 files changed, 31 insertions, 6 deletions
diff --git a/src/engine/World.cpp b/src/engine/World.cpp index a27ee2540..346446bf2 100644 --- a/src/engine/World.cpp +++ b/src/engine/World.cpp @@ -172,21 +172,46 @@ void World::PreviousCourse() { gWorldInstance.CurrentCourse = Courses[CourseIndex]; } -Object* World::SpawnObject(std::unique_ptr<GameObject> object) { +Object* World::AddObject(std::unique_ptr<GameObject> object) { GameObject* rawPtr = object.get(); - this->GameObjects.push_back(std::move(object)); + GameObjects.push_back(std::move(object)); return &rawPtr->o; } -void World::UpdateObjects() { +AActor* World::AddActor(std::unique_ptr<AActor> actor) { + AActor* rawPtr = actor.get(); + Actors.push_back(std::move(actor)); + return rawPtr; +} + +void World::TickActors() { + for (auto& actor : Actors) { + actor->Tick(); + } +} + +void World::DrawActors(Camera* camera) { + for (auto& actor : Actors) { + actor->Draw(camera); + } +} + +void RemoveExpiredActors() { + //Actors.erase( + // std::remove_if(Actors.begin(), Actors.end(), + // [](const std::unique_ptr<AActor>& actor) { return actor->uuid == 0; }), // Example condition + // Actors.end()); +} + +void World::TickObjects() { for (const auto& object : this->GameObjects) { - object->Update(); + object->Tick(); } } -void World::RenderObjects(Camera *camera) { +void World::DrawObjects(Camera *camera) { for (const auto& object : this->GameObjects) { - object->Render(camera); + object->Draw(camera); } } |
