BsScriptGameObjectManager.h 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  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. ScriptSceneObject* createScriptSceneObject(const HSceneObject& sceneObject);
  20. ScriptSceneObject* createScriptSceneObject(MonoObject* existingInstance, const HSceneObject& sceneObject);
  21. ScriptComponent* createScriptComponent(MonoObject* existingInstance, const GameObjectHandle<ManagedComponent>& component);
  22. ScriptComponent* getScriptComponent(const GameObjectHandle<ManagedComponent>& component) const;
  23. ScriptComponent* getScriptComponent(UINT64 instanceId) const;
  24. ScriptSceneObject* getScriptSceneObject(const HSceneObject& sceneObject) const;
  25. ScriptGameObjectBase* getScriptGameObject(UINT64 instanceId) const;
  26. void destroyScriptGameObject(ScriptGameObjectBase* gameObject);
  27. private:
  28. void sendComponentResetEvents();
  29. UnorderedMap<UINT64, ScriptGameObjectEntry> mScriptGameObjects;
  30. HEvent mOnAssemblyReloadDoneConn;
  31. };
  32. }