BsScriptEnginePlugin.cpp 2.1 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. using namespace CamelotFramework;
  11. namespace BansheeEngine
  12. {
  13. void dbgTestComponentClone(MonoObject* instance)
  14. {
  15. ScriptSceneObject* nativeInstance = ScriptSceneObject::toNative(instance);
  16. CM::HSceneObject SO = static_object_cast<CM::SceneObject>(nativeInstance->getNativeHandle());
  17. CM::HSceneObject cloneSO = SO->clone();
  18. cloneSO->setParent(SO);
  19. }
  20. void reportDbgValue(int dbgValue, MonoReflectionType* type)
  21. {
  22. ::MonoClass* monoClass = mono_type_get_class(mono_reflection_type_get_type(type));
  23. String className = mono_class_get_name(monoClass);
  24. int a = dbgValue;
  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 CM::String ENGINE_ASSEMBLY_PATH = "..\\..\\Assemblies\\MBansheeEngine.dll";
  34. const CM::String ENGINE_ASSEMBLY_NAME = BansheeEngineAssemblyName;
  35. const CM::String ASSEMBLY_ENTRY_POINT = "Program::Main";
  36. MonoAssembly& bansheeEngineAssembly = MonoManager::instance().loadAssembly(ENGINE_ASSEMBLY_PATH, ENGINE_ASSEMBLY_NAME);
  37. // DEBUG ONLY
  38. mono_add_internal_call("BansheeEngine.Program::dbgTestComponentClone", &dbgTestComponentClone);
  39. mono_add_internal_call("BansheeEngine.Program::reportDbgValue", &reportDbgValue);
  40. RuntimeScriptObjects::startUp(cm_new<RuntimeScriptObjects>());
  41. ScriptResourceManager::startUp(cm_new<ScriptResourceManager>());
  42. ScriptGameObjectManager::startUp(cm_new<ScriptGameObjectManager>());
  43. RuntimeScriptObjects::instance().refreshScriptObjects(BansheeEngineAssemblyName);
  44. bansheeEngineAssembly.invoke(ASSEMBLY_ENTRY_POINT);
  45. return nullptr;
  46. }
  47. extern "C" BS_SCR_BE_EXPORT void unloadPlugin()
  48. {
  49. ScriptGameObjectManager::shutDown();
  50. ScriptResourceManager::shutDown();
  51. RuntimeScriptObjects::shutDown();
  52. }
  53. }