BsScriptGameObjectManager.h 1.4 KB

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