BsScriptEnginePlugin.cpp 1.7 KB

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