BsScriptScene.cpp 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. #include "BsScriptScene.h"
  2. #include "BsMonoManager.h"
  3. #include "BsMonoClass.h"
  4. #include "BsMonoMethod.h"
  5. #include "BsMonoUtil.h"
  6. #include "BsSceneManager.h"
  7. #include "BsResources.h"
  8. #include "BsPrefab.h"
  9. #include "BsSceneObject.h"
  10. namespace BansheeEngine
  11. {
  12. ScriptScene::ScriptScene(MonoObject* instance)
  13. :ScriptObject(instance)
  14. { }
  15. void ScriptScene::initRuntimeData()
  16. {
  17. metaData.scriptClass->addInternalCall("Internal_LoadScene", &ScriptScene::internal_LoadScene);
  18. metaData.scriptClass->addInternalCall("Internal_ClearScene", &ScriptScene::internal_ClearScene);
  19. }
  20. MonoString* ScriptScene::internal_LoadScene(MonoString* path)
  21. {
  22. Path nativePath = MonoUtil::monoToWString(path);
  23. HPrefab prefab = gResources().load<Prefab>(nativePath);
  24. HSceneObject root = prefab->instantiate();
  25. MonoString* uuid = MonoUtil::stringToMono(MonoManager::instance().getDomain(), prefab.getUUID());
  26. // TODO - Return actual prefab
  27. return uuid;
  28. }
  29. void ScriptScene::internal_ClearScene()
  30. {
  31. gSceneManager().clearScene();
  32. }
  33. }