BsScriptEnginePlugin.cpp 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  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. // DEBUG ONLY
  13. #include "BsScriptSceneObject.h"
  14. #include "BsSceneObject.h"
  15. #include "BsMonoUtil.h"
  16. #include "BsMonoMethod.h"
  17. namespace BansheeEngine
  18. {
  19. void unitTest1_GameObjectClone(MonoObject* instance)
  20. {
  21. ScriptSceneObject* nativeInstance = ScriptSceneObject::toNative(instance);
  22. HSceneObject SO = static_object_cast<SceneObject>(nativeInstance->getNativeHandle());
  23. HSceneObject cloneSO = SO->clone();
  24. cloneSO->setParent(SO);
  25. }
  26. extern "C" BS_SCR_BE_EXPORT const String& getPluginName()
  27. {
  28. static String pluginName = "SBansheeEngine";
  29. return pluginName;
  30. }
  31. extern "C" BS_SCR_BE_EXPORT void* loadPlugin()
  32. {
  33. const String ENGINE_ASSEMBLY_PATH = "..\\..\\Assemblies\\MBansheeEngine.dll";
  34. const String ENGINE_ASSEMBLY_NAME = BansheeEngineAssemblyName;
  35. const String ASSEMBLY_ENTRY_POINT = "Program::Start";
  36. MonoAssembly& bansheeEngineAssembly = MonoManager::instance().loadAssembly(ENGINE_ASSEMBLY_PATH, ENGINE_ASSEMBLY_NAME);
  37. // DEBUG ONLY
  38. mono_add_internal_call("BansheeEngine.Program::UnitTest1_GameObjectClone", &unitTest1_GameObjectClone);
  39. ScriptObjectManager::startUp();
  40. ManagedResourceManager::startUp();
  41. ScriptAssemblyManager::startUp();
  42. ScriptResourceManager::startUp();
  43. ScriptGameObjectManager::startUp();
  44. ScriptInput::startUp();
  45. ScriptVirtualInput::startUp();
  46. ScriptAssemblyManager::instance().loadAssemblyInfo(BansheeEngineAssemblyName);
  47. bansheeEngineAssembly.invoke(ASSEMBLY_ENTRY_POINT);
  48. return nullptr;
  49. }
  50. extern "C" BS_SCR_BE_EXPORT void unloadPlugin()
  51. {
  52. ScriptVirtualInput::shutDown();
  53. ScriptInput::shutDown();
  54. ManagedResourceManager::shutDown();
  55. ScriptManager::instance().destroy();
  56. ScriptGameObjectManager::shutDown();
  57. ScriptResourceManager::shutDown();
  58. ScriptAssemblyManager::shutDown();
  59. ScriptObjectManager::shutDown();
  60. }
  61. }