summaryrefslogtreecommitdiff
path: root/src/engine/World.cpp
diff options
context:
space:
mode:
authorMegaMech <MegaMech@users.noreply.github.com>2024-10-15 18:54:38 -0600
committerGitHub <noreply@github.com>2024-10-15 18:54:38 -0600
commitaf81bad1f34ee6af52a70ff8bf7ad4e1ee624a93 (patch)
tree222f8bec40a9166b274129611ba0c80db2b753b3 /src/engine/World.cpp
parenta0862b6a159373f2e1554e489ecb5bb08d89654e (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.cpp37
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);
}
}