#pragma once class GameObject; class GameWorld { private: class RenderData; RenderData* mRender; GameObject* mRoot; bool mAwakened = false; public: GameWorld(); ~GameWorld(); GameWorld(const GameWorld&) = delete; GameWorld& operator=(const GameWorld&) = delete; GameWorld(GameWorld&&) = default; GameWorld& operator=(GameWorld&&) = default; bool IsAwake() const; void Awaken(); void Resleep(); void Update(); void Draw(); const GameObject& GetRoot() const; GameObject& GetRoot(); };