|
@@ -24,6 +24,7 @@ namespace BansheeEngine
|
|
|
|
|
|
|
|
String ScriptScene::ActiveSceneUUID;
|
|
String ScriptScene::ActiveSceneUUID;
|
|
|
WString ScriptScene::ActiveSceneName;
|
|
WString ScriptScene::ActiveSceneName;
|
|
|
|
|
+ bool ScriptScene::IsGenericPrefab;
|
|
|
|
|
|
|
|
ScriptScene::ScriptScene(MonoObject* instance)
|
|
ScriptScene::ScriptScene(MonoObject* instance)
|
|
|
:ScriptObject(instance)
|
|
:ScriptObject(instance)
|
|
@@ -57,7 +58,12 @@ namespace BansheeEngine
|
|
|
if (prefab.isLoaded(false))
|
|
if (prefab.isLoaded(false))
|
|
|
{
|
|
{
|
|
|
HSceneObject root = prefab->instantiate();
|
|
HSceneObject root = prefab->instantiate();
|
|
|
- gSceneManager()._setRootNode(root);
|
|
|
|
|
|
|
+
|
|
|
|
|
+ // If scene replace current root node, otherwise just append to the current root node
|
|
|
|
|
+ if (prefab->isScene())
|
|
|
|
|
+ gSceneManager()._setRootNode(root);
|
|
|
|
|
+ else
|
|
|
|
|
+ gSceneManager().clearScene();
|
|
|
|
|
|
|
|
ScriptPrefab* scriptPrefab;
|
|
ScriptPrefab* scriptPrefab;
|
|
|
ScriptResourceManager::instance().getScriptResource(prefab, &scriptPrefab, true);
|
|
ScriptResourceManager::instance().getScriptResource(prefab, &scriptPrefab, true);
|
|
@@ -80,6 +86,10 @@ namespace BansheeEngine
|
|
|
MonoMethod* nameMethod = metaData.scriptClass->getMethod("GetSceneName");
|
|
MonoMethod* nameMethod = metaData.scriptClass->getMethod("GetSceneName");
|
|
|
if (nameMethod != nullptr)
|
|
if (nameMethod != nullptr)
|
|
|
ActiveSceneName = MonoUtil::monoToWString((MonoString*)nameMethod->invoke(nullptr, nullptr));
|
|
ActiveSceneName = MonoUtil::monoToWString((MonoString*)nameMethod->invoke(nullptr, nullptr));
|
|
|
|
|
+
|
|
|
|
|
+ MonoMethod* genericPrefabMethod = metaData.scriptClass->getMethod("GetIsGenericPrefab");
|
|
|
|
|
+ if (genericPrefabMethod != nullptr)
|
|
|
|
|
+ IsGenericPrefab = *(bool*)MonoUtil::unbox(genericPrefabMethod->invoke(nullptr, nullptr));
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
void ScriptScene::onRefreshDomainLoaded()
|
|
void ScriptScene::onRefreshDomainLoaded()
|
|
@@ -101,6 +111,13 @@ namespace BansheeEngine
|
|
|
|
|
|
|
|
nameMethod->invoke(nullptr, params);
|
|
nameMethod->invoke(nullptr, params);
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+ MonoMethod* genericPrefabMethod = metaData.scriptClass->getMethod("SetIsGenericPrefab", 1);
|
|
|
|
|
+ if (genericPrefabMethod != nullptr)
|
|
|
|
|
+ {
|
|
|
|
|
+ void* params[1] = { &IsGenericPrefab };
|
|
|
|
|
+ genericPrefabMethod->invoke(nullptr, params);
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
MonoObject* ScriptScene::internal_GetRoot()
|
|
MonoObject* ScriptScene::internal_GetRoot()
|