#ifndef CHARACTER_MANAGER_CLASS #define CHARACTER_MANAGER_CLASS #include #include #include #include class Character; class Rig; class Animation; class CharacterManager { public: CharacterManager(); ~CharacterManager(); Rig* LoadRig(const std::string& name, const std::string& path); Animation* LoadAnimation(const std::string& name, const std::string& path, const std::string& rigName = ""); Character* CreateCharacter(const std::string& name, const std::string& rigName = "", const std::string& animationName = ""); Rig* GetRig(const std::string& name) const; Animation* GetAnimation(const std::string& name) const; Character* GetCharacter(const std::string& name) const; // Every character's mind decides its actions for this frame void Think(); void Step(float dt); const std::vector& GetCharacters() const { return characterOrder; } private: std::unordered_map> rigs; std::unordered_map> animations; std::unordered_map> characters; std::vector characterOrder; }; #endif