7 static GameObjectFactory instance;
12 creators[name] = [ctor, name](
Engine& e,
const std::string& instanceName) ->
GameObject* {
18 allTypes.push_back(name);
21 dynamicTypes.push_back(name);
23 nonDynamicTypes.push_back(name);
28 auto it = creators.find(type);
29 if (it != creators.end()) {
30 return it->second(engine, name);
32 log(
"Error: Type '%s' not registered", type.c_str());
41 return nonDynamicTypes;
49 if(dynamicTypes.empty())
return;
51 log(
"Hot Reload: Clearing %zu dynamic GameObjects...", dynamicTypes.size());
52 for(
const auto& name : dynamicTypes) {
56 allTypes = nonDynamicTypes;
62 nonDynamicTypes.clear();
This file defines GameObjectFactory class used to auto register GameObjects.
Class for interaction with engine systems.
void registerCreator(const std::string &name, ObjectConstructor ctor, bool isDynamic)
Registers a creator function for a specific GameObject type string.
GameObject * create(const std::string &type, Engine &engine, const std::string &name)
Create a GameObject instance of the specified type string.
static GameObjectFactory & getInstance()
Get the singleton instance of the GameObjectFactory.
std::vector< std::string > GetDynamicRegisteredObjectTypes()
Get all dynamic registered object types.
std::vector< std::string > GetNonDynamicRegisteredObjectTypes()
Get all non-dynamic registered object types.
void UnregisterGameObjects()
Unregisters all GameObjects and clears internal lists.
void clearDynamicGameObjects()
Clears all GameObjects registered as dynamic.
std::vector< std::string > GetAllRegisteredObjectTypes()
Get all registered object types.
Its base class for all game objects, eg. Player, Enemy, Weapon. Your Class needs to inherit from it.
void setObjectType(const std::string &type)
Function that sets the type of the GameObject.
void VEX_EXPORT log(const char *fmt,...)
Logs a formatted message.