2
0

BsScriptEnginePlugin.cpp 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. #include "BsScriptEnginePrerequisites.h"
  2. #include "BsMonoManager.h"
  3. #include "BsMonoAssembly.h"
  4. #include "BsScriptAssemblyManager.h"
  5. #include "BsScriptResourceManager.h"
  6. #include "BsScriptGameObjectManager.h"
  7. #include "BsManagedResourceManager.h"
  8. #include "BsScriptManager.h"
  9. #include "BsScriptInput.h"
  10. #include "BsScriptVirtualInput.h"
  11. #include "BsScriptObjectManager.h"
  12. #include "BsApplication.h"
  13. // DEBUG ONLY
  14. #include "BsScriptSceneObject.h"
  15. #include "BsSceneObject.h"
  16. #include "BsMonoUtil.h"
  17. #include "BsMonoMethod.h"
  18. namespace BansheeEngine
  19. {
  20. void unitTest1_GameObjectClone(MonoObject* instance)
  21. {
  22. ScriptSceneObject* nativeInstance = ScriptSceneObject::toNative(instance);
  23. HSceneObject SO = static_object_cast<SceneObject>(nativeInstance->getNativeHandle());
  24. HSceneObject cloneSO = SO->clone();
  25. cloneSO->setParent(SO);
  26. }
  27. extern "C" BS_SCR_BE_EXPORT const String& getPluginName()
  28. {
  29. static String pluginName = "SBansheeEngine";
  30. return pluginName;
  31. }
  32. extern "C" BS_SCR_BE_EXPORT void* loadPlugin()
  33. {
  34. Path engineAssemblyPath = gApplication().getEngineAssemblyPath();
  35. const String ASSEMBLY_ENTRY_POINT = "Program::Start";
  36. MonoAssembly& bansheeEngineAssembly = MonoManager::instance().loadAssembly(engineAssemblyPath.toString(), ENGINE_ASSEMBLY);
  37. // TODO - Load Game assembly (gApplication().getGameAssemblyPath())
  38. // DEBUG ONLY
  39. mono_add_internal_call("BansheeEngine.Program::UnitTest1_GameObjectClone", &unitTest1_GameObjectClone);
  40. ScriptObjectManager::startUp();
  41. ManagedResourceManager::startUp();
  42. ScriptAssemblyManager::startUp();
  43. ScriptResourceManager::startUp();
  44. ScriptGameObjectManager::startUp();
  45. ScriptInput::startUp();
  46. ScriptVirtualInput::startUp();
  47. ScriptAssemblyManager::instance().loadAssemblyInfo(ENGINE_ASSEMBLY);
  48. bansheeEngineAssembly.invoke(ASSEMBLY_ENTRY_POINT);
  49. return nullptr;
  50. }
  51. extern "C" BS_SCR_BE_EXPORT void unloadPlugin()
  52. {
  53. ScriptVirtualInput::shutDown();
  54. ScriptInput::shutDown();
  55. ManagedResourceManager::shutDown();
  56. ScriptManager::instance().destroy();
  57. ScriptGameObjectManager::shutDown();
  58. ScriptResourceManager::shutDown();
  59. ScriptAssemblyManager::shutDown();
  60. ScriptObjectManager::shutDown();
  61. }
  62. }