protected virtual void HeaderGUI() { SplineUser user = (SplineUser)target; bool isTargetComputer = (user.user == null || sampleTarget == SampleTarget.Computer); if (user.computer != null && !user.computer.IsSubscribed(user)) { user.computer.Subscribe(user); } Undo.RecordObject(user, "Inspector Change"); EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("Spline User", EditorStyles.boldLabel, GUILayout.Width(85)); GUI.color = new Color(1f, 1f, 1f, 0.75f); sampleTarget = (SampleTarget)EditorGUILayout.EnumPopup(sampleTarget, GUILayout.Width(75)); GUI.color = Color.white; EditorGUILayout.EndHorizontal(); if (sampleTarget == SampleTarget.Computer) { user.computer = (SplineComputer)EditorGUILayout.ObjectField("Computer", user.computer, typeof(SplineComputer), true); } else { SplineUser lastUser = user.user; user.user = (SplineUser)EditorGUILayout.ObjectField("User", user.user, typeof(SplineUser), true); if (lastUser != user.user && user.rootUser == user) { user.user = null; EditorUtility.DisplayDialog("Cannot assign user.", "A SplineUser component cannot sample itself, please select another user to sample.", "OK"); } } if (user.computer == null && isTargetComputer) { EditorGUILayout.HelpBox("No SplineComputer or SplineUser is referenced. Reference a SplineComputer or another SplineUser component to make this SplineUser work.", MessageType.Error); } if (showResolution && isTargetComputer) { user.resolution = (double)EditorGUILayout.Slider("Resolution", (float)user.resolution, 0f, 1f); } if (showClip) { float clipFrom = (float)user.clipFrom; float clipTo = (float)user.clipTo; if (user.rootUser.computer != null && user.rootUser.computer.isClosed && user.loopSamples) { EditorGUILayout.BeginHorizontal(); if (EditButton(_editIndex == 0)) { if (_editIndex == 0) { _editIndex = -1; } else { _editIndex = 0; } } EditorGUILayout.BeginVertical(); user.clipFrom = EditorGUILayout.Slider("Clip From", (float)user.clipFrom, 0f, 1f); user.clipTo = EditorGUILayout.Slider("Clip To", (float)user.clipTo, 0f, 1f); EditorGUILayout.EndVertical(); EditorGUILayout.EndHorizontal(); } else { EditorGUILayout.BeginHorizontal(); EditorGUILayout.BeginHorizontal(); if (EditButton(_editIndex == 0)) { if (_editIndex == 0) { _editIndex = -1; } else { _editIndex = 0; } } EditorGUIUtility.labelWidth = 80f; EditorGUILayout.MinMaxSlider(new GUIContent("Clip Range:"), ref clipFrom, ref clipTo, 0f, 1f); EditorGUIUtility.labelWidth = 0f; EditorGUILayout.EndHorizontal(); user.clipFrom = clipFrom; user.clipTo = clipTo; EditorGUILayout.BeginHorizontal(GUILayout.MaxWidth(30)); user.clipFrom = EditorGUILayout.FloatField((float)user.clipFrom); user.clipTo = EditorGUILayout.FloatField((float)user.clipTo); EditorGUILayout.EndHorizontal(); EditorGUILayout.EndHorizontal(); } SplineEditor.hold = _editIndex >= 0; if (user.rootUser.computer != null && user.rootUser.computer.isClosed) { user.loopSamples = EditorGUILayout.Toggle("Loop Samples", user.loopSamples); } } settings = EditorGUILayout.Foldout(settings, "Settings"); if (settings) { EditorGUI.indentLevel++; if (showUpdateMethod && isTargetComputer) { user.updateMethod = (SplineUser.UpdateMethod)EditorGUILayout.EnumPopup("Update Method", user.updateMethod); } if (showUniform && (user.user == null || sampleTarget == SampleTarget.Computer)) { user.uniformSample = EditorGUILayout.Toggle("Unform samples", user.uniformSample); if (user.uniformSample) { user.uniformPreserveClipRange = EditorGUILayout.Toggle("Preserve clip range", user.uniformPreserveClipRange); } } user.autoUpdate = EditorGUILayout.Toggle("Runtime Auto Update", user.autoUpdate); if (showMultithreading) { user.multithreaded = EditorGUILayout.Toggle("Multithreading", user.multithreaded); } user.buildOnAwake = EditorGUILayout.Toggle("Build on Awake", user.buildOnAwake); user.buildOnEnable = EditorGUILayout.Toggle("Build on Enable", user.buildOnEnable); EditorGUI.indentLevel--; } if (user.computer != null && user.computer.nodeLinks.Length > 0 && isTargetComputer) { if (GUILayout.Button("Edit junction path")) { pathWindow = EditorWindow.GetWindow <PathWindow>(); pathWindow.Init(this); } } }
public virtual void BaseGUI() { if (initGUI) { SplineEditorGUI.Initialize(); initGUI = false; } base.OnInspectorGUI(); SplineUser user = (SplineUser)target; bool isTargetComputer = (user.user == null || sampleTarget == SampleTarget.Computer); if (user.computer != null && !user.computer.IsSubscribed(user)) { user.computer.Subscribe(user); } Undo.RecordObject(user, "Inspector Change"); EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("Spline User", EditorStyles.boldLabel, GUILayout.Width(85)); GUI.color = new Color(1f, 1f, 1f, 0.75f); sampleTarget = (SampleTarget)EditorGUILayout.EnumPopup(sampleTarget, GUILayout.Width(75)); GUI.color = Color.white; EditorGUILayout.EndHorizontal(); if (sampleTarget == SampleTarget.Computer) { user.computer = (SplineComputer)EditorGUILayout.ObjectField("Computer", user.computer, typeof(SplineComputer), true); } else { SplineUser lastUser = user.user; user.user = (SplineUser)EditorGUILayout.ObjectField("User", user.user, typeof(SplineUser), true); if (lastUser != user.user && user.rootUser == user) { user.user = null; EditorUtility.DisplayDialog("Cannot assign user.", "A SplineUser component cannot sample itself, please select another user to sample.", "OK"); } } if (showUpdateMethod && isTargetComputer) { user.updateMethod = (SplineUser.UpdateMethod)EditorGUILayout.EnumPopup("Update Method", user.updateMethod); } if (user.computer == null && isTargetComputer) { EditorGUILayout.HelpBox("No SplineComputer or SplineUser is referenced. Reference a SplineComputer or another SplineUser component to make this SplineUser work.", MessageType.Error); } if (showResolution && isTargetComputer) { user.resolution = (double)EditorGUILayout.Slider("Resolution", (float)user.resolution, 0f, 1f); } if (showClip) { EditorGUILayout.BeginHorizontal(); float clipFrom = (float)user.clipFrom; float clipTo = (float)user.clipTo; EditorGUILayout.MinMaxSlider(new GUIContent("Clip Range:"), ref clipFrom, ref clipTo, 0f, 1f); user.clipFrom = clipFrom; user.clipTo = clipTo; EditorGUILayout.BeginHorizontal(GUILayout.MaxWidth(30)); user.clipFrom = EditorGUILayout.FloatField((float)user.clipFrom); user.clipTo = EditorGUILayout.FloatField((float)user.clipTo); EditorGUILayout.EndHorizontal(); EditorGUILayout.EndHorizontal(); } if (showAveraging && (user.user == null || sampleTarget == SampleTarget.Computer)) { user.averageResultVectors = EditorGUILayout.Toggle("Average Result Vectors", user.averageResultVectors); } if (showMultithreading) { user.multithreaded = EditorGUILayout.Toggle("Multithreading", user.multithreaded); } user.buildOnAwake = EditorGUILayout.Toggle("Build on Awake", user.buildOnAwake); if (user.computer != null && user.computer.nodeLinks.Length > 0 && isTargetComputer) { if (GUILayout.Button("Edit junction path")) { pathWindow = EditorWindow.GetWindow <PathWindow>(); pathWindow.init(this, "Junction Path", new Vector2(300, 150)); } } }