BsScriptEnginePlugin.cpp 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. #include "BsScriptEnginePrerequisites.h"
  2. #include "BsMonoManager.h"
  3. #include "BsMonoAssembly.h"
  4. #include "BsRuntimeScriptObjects.h"
  5. #include "BsScriptResourceManager.h"
  6. #include "BsScriptGameObjectManager.h"
  7. #include "BsManagedResourceManager.h"
  8. #include "BsScriptManager.h"
  9. // DEBUG ONLY
  10. #include "BsScriptSceneObject.h"
  11. #include "BsSceneObject.h"
  12. #include "BsMonoUtil.h"
  13. namespace BansheeEngine
  14. {
  15. void unitTest1_GameObjectClone(MonoObject* instance)
  16. {
  17. ScriptSceneObject* nativeInstance = ScriptSceneObject::toNative(instance);
  18. HSceneObject SO = static_object_cast<SceneObject>(nativeInstance->getNativeHandle());
  19. HSceneObject cloneSO = SO->clone();
  20. cloneSO->setParent(SO);
  21. }
  22. extern "C" BS_SCR_BE_EXPORT const String& getPluginName()
  23. {
  24. static String pluginName = "SBansheeEngine";
  25. return pluginName;
  26. }
  27. extern "C" BS_SCR_BE_EXPORT void* loadPlugin()
  28. {
  29. const String ENGINE_ASSEMBLY_PATH = "..\\..\\Assemblies\\MBansheeEngine.dll";
  30. const String ENGINE_ASSEMBLY_NAME = BansheeEngineAssemblyName;
  31. const String ASSEMBLY_ENTRY_POINT = "Program::Main";
  32. MonoAssembly& bansheeEngineAssembly = MonoManager::instance().loadAssembly(ENGINE_ASSEMBLY_PATH, ENGINE_ASSEMBLY_NAME);
  33. // DEBUG ONLY
  34. mono_add_internal_call("BansheeEngine.Program::UnitTest1_GameObjectClone", &unitTest1_GameObjectClone);
  35. ManagedResourceManager::startUp();
  36. RuntimeScriptObjects::startUp();
  37. ScriptResourceManager::startUp();
  38. ScriptGameObjectManager::startUp();
  39. RuntimeScriptObjects::instance().refreshScriptObjects(BansheeEngineAssemblyName);
  40. bansheeEngineAssembly.invoke(ASSEMBLY_ENTRY_POINT);
  41. return nullptr;
  42. }
  43. extern "C" BS_SCR_BE_EXPORT void unloadPlugin()
  44. {
  45. ManagedResourceManager::shutDown();
  46. ScriptManager::instance().destroy();
  47. ScriptGameObjectManager::shutDown();
  48. ScriptResourceManager::shutDown();
  49. RuntimeScriptObjects::shutDown();
  50. }
  51. }