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; }
void GetPresets() { presets = SplinePreset.LoadAll(); for (int i = 0; i < presets.Length; i++) { presets[i].Init(computer); } }
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); }
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(); }
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(); }