public void SaveSceneData() { SaveableSceneData newSceneData = new SaveableSceneData(); List <SceneObject> sceneObjectsToSave = new List <SceneObject>(); if (SaveLoadScene.SceneSaveExists(sceneName)) { sceneObjectsToSave = SaveLoadScene.loadedScene.sceneObjects; } object[] allObjects = GameObject.FindObjectsOfType(typeof(GameObject)); // Debug.Log("All Scene GOs: " + allObjects.Length); for (int i = 0; i < allObjects.Length; i++) { GameObject currentObj = (GameObject)allObjects[i]; ObjectIdentity idScript = currentObj.GetComponent <ObjectIdentity>(); if (idScript != null) { // Debug.Log("Found Object With ID: " + idScript.id); SceneObject newSceneObject = new SceneObject(); newSceneObject.name = currentObj.name; newSceneObject.id = idScript.id; newSceneObject.dontLoad = idScript.dontLoad; newSceneObject.posX = currentObj.transform.position.x; newSceneObject.posY = currentObj.transform.position.y; newSceneObject.posZ = currentObj.transform.position.z; newSceneObject.rotX = currentObj.transform.rotation.x; newSceneObject.rotY = currentObj.transform.rotation.y; newSceneObject.rotZ = currentObj.transform.rotation.z; newSceneObject.rotW = currentObj.transform.rotation.w; SceneObject matchingObj = sceneObjectsToSave.Where(obj => obj.id == newSceneObject.id).SingleOrDefault(); if (matchingObj == null) { sceneObjectsToSave.Add(newSceneObject); } else { sceneObjectsToSave.Remove(matchingObj); sceneObjectsToSave.Add(newSceneObject); } } } // Debug.Log("Scene Objects to Save: " + sceneObjectsToSave.Count); newSceneData.sceneName = sceneName; newSceneData.sceneObjects = sceneObjectsToSave; SaveLoadScene.Save(newSceneData); // Debug.Log("Finished Scene Save (Save Handler)"); hasFinishedSaving = true; }
public static void Load(string sceneToLoad) { string path = SaveLoad.GetCurrentSaveDirectory() + folderPath + "/" + sceneToLoad + ".sd"; if (File.Exists(path)) { BinaryFormatter bf = new BinaryFormatter(); FileStream file = File.Open(path, FileMode.Open); loadedScene = (SaveableSceneData)bf.Deserialize(file); file.Close(); // Debug.Log("Loaded Scene: " + loadedScene.sceneName); } }
public static void Save(SaveableSceneData sceneData) { BinaryFormatter bf = new BinaryFormatter(); if (!Directory.Exists(SaveLoad.GetCurrentSaveDirectory() + folderPath)) { Directory.CreateDirectory(SaveLoad.GetCurrentSaveDirectory() + folderPath); } string path = SaveLoad.GetCurrentSaveDirectory() + folderPath + "/" + sceneData.sceneName + ".sd"; FileStream file = File.Create(path); bf.Serialize(file, sceneData); file.Close(); // Debug.Log("Saved Scene: " + sceneData.sceneName); }
//TODO: public List<DestructibleData> Destructibles; public SaveableSceneData GetSaveSceneData() { var saveableSceneData = new SaveableSceneData(); saveableSceneData.IsCurrentScene = SceneName == SceneManager.GetActiveScene().name; saveableSceneData.SceneName = SceneName; foreach (var enemy in Enemies) { saveableSceneData.Enemies.Add(enemy.GetEnemySaveData()); } foreach (var interactable in Interactables) { saveableSceneData.Interactables.Add(interactable.GetInteractableSaveData()); } foreach (var trigger in Triggers) { saveableSceneData.Triggers.Add(trigger.GetTriggerSaveData()); } return(saveableSceneData); }
public void LoadSceneData(SaveableSceneData data) { foreach (var enemyData in data.Enemies) { var enemy = Enemies.FirstOrDefault(c => c.EnemyId == enemyData.EnemyId); if (enemy) { enemy.LoadEnemyData(enemyData); } else { Debug.LogError("Couldn't load enemy with id " + enemyData.EnemyId); } } foreach (var interactableData in data.Interactables) { var interactable = Interactables.FirstOrDefault(c => c.InteractableId == interactableData.InteractableId); if (interactable) { interactable.LoadInteractableData(interactableData); } else { Debug.LogError("Couldn't load interactable with id " + interactableData.InteractableId); } } foreach (var triggerData in data.Triggers) { var trigger = Triggers.FirstOrDefault(c => c.TriggerId == triggerData.TriggerId); if (trigger) { trigger.LoadTriggerData(triggerData); } else { Debug.LogError("Couldn't load trigger with id " + triggerData.TriggerId); } } }
public void LoadSceneData() { SaveLoadScene.Load(sceneName); SaveableSceneData loadedScene = SaveLoadScene.loadedScene; // Debug.Log("Load Scene Objects: " + loadedScene.sceneObjects.Count); // Debug.Log("Existing Scene Objects: " + existingSceneObjects.Length); for (int i = 0; i < loadedScene.sceneObjects.Count; i++) { for (int j = 0; j < existingSceneObjects.Length; j++) { if (loadedScene.sceneObjects[i].id == existingSceneObjects[j].id) { // Debug.Log("Id Loaded: " + loadedScene.sceneObjects[i].id); // Debug.Log("Id Loaded (Don't Load?): " + loadedScene.sceneObjects[i].dontLoad); if (!loadedScene.sceneObjects[i].dontLoad) { existingSceneObjects[j].dontLoad = loadedScene.sceneObjects[i].dontLoad; existingSceneObjects[j].transform.position = new Vector3(loadedScene.sceneObjects[i].posX, loadedScene.sceneObjects[i].posY, loadedScene.sceneObjects[i].posZ); existingSceneObjects[j].transform.rotation = new Quaternion(loadedScene.sceneObjects[i].rotX, loadedScene.sceneObjects[i].rotY, loadedScene.sceneObjects[i].rotZ, loadedScene.sceneObjects[i].rotW); existingSceneObjects[j].gameObject.SetActive(true); // Debug.Log("Activating: " + existingSceneObjects[j].name + "(" + existingSceneObjects[j].id + ")"); } else { existingSceneObjects[j].gameObject.SetActive(false); } } } } // Debug.Log("Finished Scene Load (Save Handler)"); hasFinishedLoading = true; }