#pragma once #include "BsScriptEnginePrerequisites.h" #include "BsModule.h" #include namespace BansheeEngine { class BS_SCR_BE_EXPORT ScriptGameObjectManager : public Module { struct ScriptGameObjectEntry { ScriptGameObjectEntry(); ScriptGameObjectEntry(ScriptGameObjectBase* instance, bool isComponent); ScriptGameObjectBase* instance; bool isComponent; }; public: ScriptGameObjectManager(); ~ScriptGameObjectManager(); void registerScriptComponent(ScriptComponent* nativeInstance, const GameObjectHandle& component); ScriptSceneObject* createScriptSceneObject(const HSceneObject& sceneObject); ScriptSceneObject* createScriptSceneObject(MonoObject* existingInstance, const HSceneObject& sceneObject); ScriptComponent* getScriptComponent(const GameObjectHandle& component) const; ScriptSceneObject* getScriptSceneObject(const HSceneObject& sceneObject) const; ScriptGameObjectBase* getScriptGameObject(UINT64 instanceId) const; void destroyScriptGameObject(ScriptGameObjectBase* gameObject); private: void sendComponentResetEvents(); UnorderedMap mScriptGameObjects; HEvent mOnAssemblyReloadDoneConn; }; }