Exemplo n.º 1
0
    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;
    }
Exemplo n.º 2
0
    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);
        }
    }
Exemplo n.º 3
0
    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);
    }
Exemplo n.º 4
0
    //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);
    }
Exemplo n.º 5
0
    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);
            }
        }
    }
Exemplo n.º 6
0
    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;
    }