#pragma once #include "framework/Core.h" class Application; class Actor; namespace ly { class World { public: World(Application *owningApp); void BeginPlayInternal(); void TickInternal(float deltaTime); virtual ~World(); template weak SpawnActor() { shared newActor{new ActorType{this}}; mPendingActors.push_back(newActor); return newActor; } private: void BeginPlay(); void Tick(float deltaTime); Application *mOwningApp; bool mBeganPlay; List> mActors; List> mPendingActors; }; } // namespace ly