BsScriptEnginePlugin.cpp 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  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 "CmSceneObject.h"
  10. #include "BsMonoUtil.h"
  11. using namespace CamelotFramework;
  12. namespace BansheeEngine
  13. {
  14. void dbgTestComponentClone(MonoObject* instance)
  15. {
  16. ScriptSceneObject* nativeInstance = ScriptSceneObject::toNative(instance);
  17. CM::HSceneObject SO = static_object_cast<CM::SceneObject>(nativeInstance->getNativeHandle());
  18. CM::HSceneObject cloneSO = SO->clone();
  19. cloneSO->setParent(SO);
  20. }
  21. void reportDbgValue(int a, MonoString* b, int a2, MonoString* b2)
  22. {
  23. WString bStr = MonoUtil::monoToWString(b);
  24. WString b2Str = MonoUtil::monoToWString(b2);
  25. int end = 5;
  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. const CM::String ENGINE_ASSEMBLY_PATH = "..\\..\\Assemblies\\MBansheeEngine.dll";
  35. const CM::String ENGINE_ASSEMBLY_NAME = BansheeEngineAssemblyName;
  36. const CM::String ASSEMBLY_ENTRY_POINT = "Program::Main";
  37. MonoAssembly& bansheeEngineAssembly = MonoManager::instance().loadAssembly(ENGINE_ASSEMBLY_PATH, ENGINE_ASSEMBLY_NAME);
  38. // DEBUG ONLY
  39. mono_add_internal_call("BansheeEngine.Program::dbgTestComponentClone", &dbgTestComponentClone);
  40. mono_add_internal_call("BansheeEngine.Program::reportDbgValue", &reportDbgValue);
  41. RuntimeScriptObjects::startUp();
  42. ScriptResourceManager::startUp();
  43. ScriptGameObjectManager::startUp();
  44. RuntimeScriptObjects::instance().refreshScriptObjects(BansheeEngineAssemblyName);
  45. bansheeEngineAssembly.invoke(ASSEMBLY_ENTRY_POINT);
  46. return nullptr;
  47. }
  48. extern "C" BS_SCR_BE_EXPORT void unloadPlugin()
  49. {
  50. ScriptGameObjectManager::shutDown();
  51. ScriptResourceManager::shutDown();
  52. RuntimeScriptObjects::shutDown();
  53. }
  54. }