private void SendDataToScene(SingleLevelData levelData, bool restoringSaveFile, SubScene subScene = null) { SceneSettings sceneSettings = (subScene == null) ? KickStarter.sceneSettings : subScene.SceneSettings; LocalVariables localVariables = (subScene == null) ? KickStarter.localVariables : subScene.LocalVariables; KickStarter.actionListManager.LoadData(levelData.activeLists, subScene); UnloadCutsceneOnLoad(levelData.onLoadCutscene, sceneSettings); UnloadCutsceneOnStart(levelData.onStartCutscene, sceneSettings); UnloadNavMesh(levelData.navMesh, sceneSettings); UnloadPlayerStart(levelData.playerStart, sceneSettings); UnloadSortingMap(levelData.sortingMap, sceneSettings); UnloadTintMap(levelData.tintMap, sceneSettings); UnloadTransformData(levelData.allTransformData, subScene); foreach (ScriptData _scriptData in levelData.allScriptData) { if (_scriptData.data != null && _scriptData.data.Length > 0) { // Get objects in active scene, and "DontDestroyOnLoad" scene Remember[] saveObjects = Serializer.returnComponents <Remember> (_scriptData.objectID); foreach (Remember saveObject in saveObjects) { if (saveObject != null && UnityVersionHandler.ObjectIsInActiveScene(saveObject.gameObject)) { // May have more than one Remember script on the same object, so check all Remember[] saveScripts = saveObject.gameObject.GetComponents <Remember>(); foreach (Remember saveScript in saveScripts) { saveScript.LoadData(_scriptData.data, restoringSaveFile); } } } } /*Remember saveObject = Serializer.returnComponent <Remember> (_scriptData.objectID, sceneSettings.gameObject); * if (saveObject != null && _scriptData.data != null && _scriptData.data.Length > 0) * { * // May have more than one Remember script on the same object, so check all * Remember[] saveScripts = saveObject.gameObject.GetComponents <Remember>(); * foreach (Remember saveScript in saveScripts) * { * saveScript.LoadData (_scriptData.data, restoringSaveFile); * } * }*/ } UnloadVariablesData(levelData.localVariablesData, localVariables); KickStarter.sceneSettings.UpdateAllSortingMaps(); }
/** * <summary>Returns the currently-loaded scene's save data to the appropriate Remember components, provided they are on the Player.</summary> */ public void ReturnCurrentLevelPlayerData() { SingleLevelData levelData = GetLevelData(); if (levelData == null) { return; } foreach (ScriptData _scriptData in levelData.allScriptData) { if (_scriptData.data != null && _scriptData.data.Length > 0) { // Get objects in active scene, and "DontDestroyOnLoad" scene Remember[] saveObjects = Serializer.returnComponents <Remember> (_scriptData.objectID); foreach (Remember saveObject in saveObjects) { if (saveObject != null) { if ((saveObject.transform.parent == null && saveObject.tag == Tags.player) || (saveObject.transform.parent != null && saveObject.transform.root != null && saveObject.transform.root.tag == Tags.player)) { // May have more than one Remember script on the same object, so check all Remember[] saveScripts = saveObject.gameObject.GetComponents <Remember>(); foreach (Remember saveScript in saveScripts) { saveScript.LoadData(_scriptData.data, true); } } } } } } AssetLoader.UnloadAssets(); }