Exemplo n.º 1
0
 void OnDestroy()
 {
     if (primitiveIndex >= 0)
     {
         if (!EditorUtility.DisplayDialog("Keep changes?", "Do you want to apply the primitive to the spline ?", "Apply", "Revert"))
         {
             primitives[primitiveIndex].Close();
         }
     }
     if (presetIndex >= 0)
     {
         if (!EditorUtility.DisplayDialog("Keep changes?", "Do you want to apply the preset to the spline ?", "Apply", "Revert"))
         {
             presets[presetIndex].Cancel();
         }
     }
     presetIndex    = -1;
     primitiveIndex = -1;
     SplineUser[] users = computer.GetComponents <SplineUser>();
     foreach (SplineUser user in users)
     {
         user.Rebuild(true);
     }
     computer.Rebuild();
     ((SplineEditor)editor).Refresh();
     SceneView.RepaintAll();
     primitives = null;
     presets    = null;
     newPreset  = null;
 }
Exemplo n.º 2
0
 void GetPresets()
 {
     presets = SplinePreset.LoadAll();
     for (int i = 0; i < presets.Length; i++)
     {
         presets[i].Init(computer);
     }
 }
Exemplo n.º 3
0
 public static SplinePreset[] LoadAll()
 {
     path = ResourceUtility.FindFolder(Application.dataPath, "Dreamteck/Splines/Presets");
     if (!Directory.Exists(path))
     {
         Debug.LogError("Directory " + path + " does not exist");
         return(null);
     }
     string[]       files   = System.IO.Directory.GetFiles(path, "*.dsp");
     SplinePreset[] presets = new SplinePreset[files.Length];
     for (int i = 0; i < files.Length; i++)
     {
         BinaryFormatter bf   = new BinaryFormatter();
         FileStream      file = File.Open(files[i], FileMode.Open);
         presets[i]          = (SplinePreset)bf.Deserialize(file);
         presets[i].filename = new FileInfo(files[i]).Name;
         file.Close();
     }
     return(presets);
 }
Exemplo n.º 4
0
 void SavePresetDialog()
 {
     newPreset.name = EditorGUILayout.TextField("Preset name", newPreset.name);
     EditorGUILayout.LabelField("Description");
     newPreset.description = EditorGUILayout.TextArea(newPreset.description);
     EditorGUILayout.BeginHorizontal();
     if (GUILayout.Button("Save"))
     {
         string lower     = newPreset.name.ToLower();
         string noSlashes = lower.Replace('/', '_');
         noSlashes = noSlashes.Replace('\\', '_');
         string noSpaces = noSlashes.Replace(' ', '_');
         newPreset.Save(noSpaces);
         newPreset = null;
         GetPresets();
     }
     if (GUILayout.Button("Cancel"))
     {
         newPreset = null;
     }
     EditorGUILayout.EndHorizontal();
 }
Exemplo n.º 5
0
        void Presets()
        {
            if (presets == null)
            {
                return;
            }
            EditorGUILayout.BeginHorizontal();

            EditorGUILayout.BeginScrollView(scroll, GUILayout.Width(position.width * 0.35f), GUILayout.MaxHeight(10 * 22));
            if (presets.Length == 0)
            {
                EditorGUILayout.HelpBox("No saved presets available", MessageType.Info);
            }
            for (int i = 0; i < presets.Length; i++)
            {
                EditorGUILayout.BeginHorizontal();
                if (SplineEditorGUI.EditorLayoutSelectableButton(new GUIContent(presets[i].name), true, presetIndex == i))
                {
                    Undo.RecordObject(this, "PresetsWindow state");
                    Undo.RecordObject(computer, "Spline state");
                    presetIndex    = i;
                    primitiveIndex = -1;
                    computer.SetPoints(presets[i].points);
                    ((SplineEditor)editor).Refresh();
                    computer.type = presets[i].type;
                    if (presets[i].isClosed)
                    {
                        computer.Close();
                    }
                    else
                    {
                        computer.Break();
                    }
                    SplineUser[] users = computer.GetComponents <SplineUser>();
                    foreach (SplineUser user in users)
                    {
                        user.Rebuild(true);
                    }
                    computer.Rebuild();
                    ((SplineEditor)editor).Refresh();
                    SceneView.RepaintAll();
                }
                if (GUILayout.Button("X", GUILayout.MaxWidth(30)))
                {
                    if (EditorUtility.DisplayDialog("Delete preset ?", "Do you want to delete this preset ? This action cannot be undone.", "Yes", "No"))
                    {
                        SplinePreset.Delete(presets[i].filename);
                        GetPresets();
                        if (presetIndex >= presets.Length)
                        {
                            presetIndex = -1;
                        }
                        break;
                    }
                }
                EditorGUILayout.EndHorizontal();
            }
            EditorGUILayout.Space();
            EditorGUILayout.Space();
            if (GUILayout.Button("Create Preset"))
            {
                presetIndex = -1;
                newPreset   = new SplinePreset(computer.GetPoints(), computer.isClosed, computer.type);
                GetPresets();
            }
            EditorGUILayout.EndScrollView();

            if (presetIndex >= 0 && presetIndex < presets.Length)
            {
                EditorGUILayout.BeginVertical();
                EditorGUILayout.LabelField(presets[presetIndex].name);
                EditorGUILayout.LabelField(presets[presetIndex].description);
                EditorGUILayout.BeginHorizontal();
                if (GUILayout.Button("Save"))
                {
                    computer.Rebuild();
                    ((SplineEditor)editor).Refresh();
                    SceneView.RepaintAll();
                    presetIndex = -1;
                    this.Close();
                }
                if (GUILayout.Button("Cancel"))
                {
                    presets[presetIndex].Cancel();
                    presetIndex = -1;
                    SplineUser[] users = computer.GetComponents <SplineUser>();
                    foreach (SplineUser user in users)
                    {
                        user.Rebuild(true);
                    }
                    computer.Rebuild();
                    ((SplineEditor)editor).Refresh();
                    SceneView.RepaintAll();
                }
                EditorGUILayout.EndHorizontal();
                EditorGUILayout.EndVertical();
            }
            else if (computer.pointCount > 0)
            {
                EditorGUILayout.BeginVertical();
                if (newPreset != null)
                {
                    SavePresetDialog();
                }
                EditorGUILayout.EndVertical();
            }
            EditorGUILayout.EndHorizontal();
        }