diff options
| author | MegaMech <MegaMech@users.noreply.github.com> | 2024-10-15 18:54:38 -0600 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-10-15 18:54:38 -0600 |
| commit | af81bad1f34ee6af52a70ff8bf7ad4e1ee624a93 (patch) | |
| tree | 222f8bec40a9166b274129611ba0c80db2b753b3 /src/engine/World.cpp | |
| parent | a0862b6a159373f2e1554e489ecb5bb08d89654e (diff) | |
[modding] Add Actors (#113)
* fix
* Add Actors
* Refactor
* Update Game.cpp
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); } } |
