2
0

BsScriptGameObjectManager.h 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. #pragma once
  2. #include "BsScriptEnginePrerequisites.h"
  3. #include "BsModule.h"
  4. #include <mono/jit/jit.h>
  5. namespace BansheeEngine
  6. {
  7. class BS_SCR_BE_EXPORT ScriptGameObjectManager : public Module<ScriptGameObjectManager>
  8. {
  9. struct ScriptGameObjectEntry
  10. {
  11. ScriptGameObjectEntry();
  12. ScriptGameObjectEntry(ScriptGameObjectBase* instance, bool isComponent);
  13. ScriptGameObjectBase* instance;
  14. bool isComponent;
  15. };
  16. public:
  17. ScriptGameObjectManager();
  18. ~ScriptGameObjectManager();
  19. void registerScriptComponent(ScriptComponent* nativeInstance, const GameObjectHandle<ManagedComponent>& component);
  20. ScriptSceneObject* createScriptSceneObject(const HSceneObject& sceneObject);
  21. ScriptSceneObject* createScriptSceneObject(MonoObject* existingInstance, const HSceneObject& sceneObject);
  22. ScriptComponent* getScriptComponent(const GameObjectHandle<ManagedComponent>& component) const;
  23. ScriptSceneObject* getScriptSceneObject(const HSceneObject& sceneObject) const;
  24. ScriptGameObjectBase* getScriptGameObject(UINT64 instanceId) const;
  25. void destroyScriptGameObject(ScriptGameObjectBase* gameObject);
  26. private:
  27. void sendComponentResetEvents();
  28. UnorderedMap<UINT64, ScriptGameObjectEntry> mScriptGameObjects;
  29. HEvent mOnAssemblyReloadDoneConn;
  30. };
  31. }