예제 #1
0
        public void OnEnable()
        {
            NodeManager.Instance.nodesToRemove = NodeManager.Instance.nodes;

            if (Manager.Instance.asset != null)
            {
                Manager.Instance.Load(Manager.Instance.asset);
            }
            else
            {
                string     lastAssetPath = EditorPrefs.GetString("LastNoiseAsset");
                NoiseAsset lastAsset     = (NoiseAsset)AssetDatabase.LoadAssetAtPath(lastAssetPath, typeof(NoiseAsset));
                if (lastAsset != null)
                {
                    Manager.Instance.Load(lastAsset);
                }
                else
                {
                    Manager.Instance.Save();
                }
            }

            Manager.Instance.CreateScene();
            ConnectionManager.Instance.Initialize();
        }
예제 #2
0
        public void Save()
        {
            string path;

            if (asset == null)
            {
                asset = (NoiseAsset)ScriptableObject.CreateInstance(typeof(NoiseAsset));
                path  = EditorUtility.SaveFilePanelInProject("Save Asset", "New NoisePerspective Asset", "asset", "Select Location");

                try
                {
                    AssetDatabase.CreateAsset(asset, path);
                }
                catch
                {
                    Debug.LogWarning("Asset Not Saved");
                    return;
                }
            }

            if (NodeManager.Instance.nodes != null && NodeManager.Instance.nodes.Count > 0)
            {
                Node[]       nodeArray = NodeManager.Instance.nodes.ToArray();
                Connection[] connectionArray;

                if (ConnectionManager.Instance.connections != null)
                {
                    connectionArray = ConnectionManager.Instance.connections.ToArray();
                }
                else
                {
                    connectionArray = new Connection[0];
                }

                asset.saveData = Data.DataProcessor.WriteToString(nodeArray, connectionArray);

                if (ConnectionManager.Instance.connections != null)
                {
                    asset.connections = Data.DataProcessor.WriteConnections(ConnectionManager.Instance.connections.ToArray());
                }
            }

            asset.useBezier            = ConnectionManager.Instance.useBezierConnections;
            asset.globalHeightStrength = NodeManager.Instance.globalHeightStrength;

            EditorUtility.SetDirty(asset);
            AssetDatabase.SaveAssets();
            EditorUtility.ClearDirty(asset);
        }
예제 #3
0
        public void Load(NoiseAsset openedAsset)
        {
            //Allows loading while window already open
            if (NodeManager.Instance.nodes != null)
            {
                Save();
            }
            NodeManager.Instance.Dispose();
            ConnectionManager.Instance.Dispose();

            //Load asset
            asset = openedAsset;
            CreateScene();

            Data.DataProcessor.Read(asset.saveData); //Reads save data and loads data into proper manager lists
            ConnectionManager.Instance.useBezierConnections = asset.useBezier;
            NodeManager.Instance.globalHeightStrength       = asset.globalHeightStrength;
        }