private void PaintControls() { EditorGUILayout.BeginHorizontal(); GUILayout.FlexibleSpace(); EditorGUI.BeginDisabledGroup(Mathf.Approximately(this.animPagesIndex.target, 0.0f)); if (GUILayout.Button("Previous", CoreGUIStyles.GetButtonLeft())) { float targ = this.animPagesIndex.target - 1.0f; if (targ < 0.0f) { targ = 0.0f; } this.animPagesIndex.target = targ; } EditorGUI.EndDisabledGroup(); for (int i = 0; i < this.pages.Length; ++i) { GUIStyle dotStyle = (Mathf.Approximately(this.animPagesIndex.target, (float)i) ? CoreGUIStyles.GetToggleButtonMidOn() : CoreGUIStyles.GetToggleButtonMidOff() ); if (GUILayout.Button((i + 1).ToString(), dotStyle)) { this.animPagesIndex.target = (float)i; } } EditorGUI.BeginDisabledGroup(Mathf.Approximately(this.animPagesIndex.target, this.pages.Length - 1.0f)); if (GUILayout.Button("Next", CoreGUIStyles.GetButtonRight())) { float targ = this.animPagesIndex.target + 1.0f; if (targ > this.pages.Length - 1.0f) { targ = this.pages.Length - 1.0f; } this.animPagesIndex.target = targ; } EditorGUI.EndDisabledGroup(); GUILayout.FlexibleSpace(); EditorGUILayout.EndHorizontal(); EditorGUILayout.Space(); }
private ItemReturnOperation PaintConditionsHeader(int i) { ItemReturnOperation returnOperation = new ItemReturnOperation(); Rect rectHeader = GUILayoutUtility.GetRect(GUIContent.none, CoreGUIStyles.GetToggleButtonNormalOn()); this.PaintDragHandle(i, rectHeader); Texture2D conditionIcon = (i < this.subEditors.Length && this.subEditors[i] != null ? this.subEditors[i].GetIcon() : null ); string conditionName = (this.isExpanded[i].target ? " ▾ " : " ▸ "); conditionName += (this.instance.conditions[i] != null ? this.instance.conditions[i].GetNodeTitle() : "<i>Undefined Condition</i>" ); GUIStyle style = (this.isExpanded[i].target ? CoreGUIStyles.GetToggleButtonMidOn() : CoreGUIStyles.GetToggleButtonMidOff() ); Rect rectDelete = new Rect( rectHeader.x + rectHeader.width - 25f, rectHeader.y, 25f, rectHeader.height ); Rect rectDuplicate = new Rect( rectDelete.x - 25f, rectHeader.y, 25f, rectHeader.height ); Rect rectCopy = new Rect( rectDuplicate.x - 25f, rectHeader.y, 25f, rectHeader.height ); Rect rectMain = new Rect( rectHeader.x + 25f, rectHeader.y, rectHeader.width - (25f * 4f), rectHeader.height ); if (GUI.Button(rectMain, new GUIContent(conditionName, conditionIcon), style)) { this.ToggleExpand(i); } GUIContent gcCopy = ClausesUtilities.Get(ClausesUtilities.Icon.Copy); GUIContent gcDuplicate = ClausesUtilities.Get(ClausesUtilities.Icon.Duplicate); GUIContent gcDelete = ClausesUtilities.Get(ClausesUtilities.Icon.Delete); if (this.instance.conditions[i] != null && GUI.Button(rectCopy, gcCopy, CoreGUIStyles.GetButtonMid())) { returnOperation.copyIndex = true; } if (this.instance.conditions[i] != null && GUI.Button(rectDuplicate, gcDuplicate, CoreGUIStyles.GetButtonMid())) { returnOperation.duplicateIndex = true; } if (GUI.Button(rectDelete, gcDelete, CoreGUIStyles.GetButtonRight())) { returnOperation.removeIndex = true; } return(returnOperation); }
private void PaintInteractions() { int removeInteractionIndex = -1; int duplicateInteractionIndex = -1; int copyInteractionIndex = -1; bool forceRepaint = false; int interactionsSize = this.spInteractions.arraySize; for (int i = 0; i < interactionsSize; ++i) { if (this.subEditors == null || i >= this.subEditors.Length || this.subEditors[i] == null) { continue; } bool repaint = this.editorSortableList.CaptureSortEvents(this.subEditors[i].handleDragRect, i); forceRepaint = repaint || forceRepaint; EditorGUILayout.BeginVertical(); Rect rectHeader = GUILayoutUtility.GetRect(GUIContent.none, CoreGUIStyles.GetToggleButtonNormalOn()); this.PaintDragHandle(i, rectHeader); EditorGUIUtility.AddCursorRect(this.subEditors[i].handleDragRect, MouseCursor.Pan); string name = (this.isExpanded[i].target ? "▾ " : "▸ ") + this.instance.interactions[i].description; GUIStyle style = (this.isExpanded[i].target ? CoreGUIStyles.GetToggleButtonMidOn() : CoreGUIStyles.GetToggleButtonMidOff() ); Rect rectDelete = new Rect( rectHeader.x + rectHeader.width - 25f, rectHeader.y, 25f, rectHeader.height ); Rect rectDuplicate = new Rect( rectDelete.x - 25f, rectHeader.y, 25f, rectHeader.height ); Rect rectCopy = new Rect( rectDuplicate.x - 25f, rectHeader.y, 25f, rectHeader.height ); Rect rectMain = new Rect( rectHeader.x + 25f, rectHeader.y, rectHeader.width - (25f * 4f), rectHeader.height ); if (GUI.Button(rectMain, name, style)) { this.ToggleExpand(i); } GUIContent gcCopy = InteractionUtilities.Get(InteractionUtilities.Icon.Copy); GUIContent gcDuplicate = InteractionUtilities.Get(InteractionUtilities.Icon.Duplicate); GUIContent gcDelete = InteractionUtilities.Get(InteractionUtilities.Icon.Delete); if (GUI.Button(rectCopy, gcCopy, CoreGUIStyles.GetButtonMid())) { copyInteractionIndex = i; } if (GUI.Button(rectDuplicate, gcDuplicate, CoreGUIStyles.GetButtonMid())) { duplicateInteractionIndex = i; } if (GUI.Button(rectDelete, gcDelete, CoreGUIStyles.GetButtonRight())) { if (EditorUtility.DisplayDialog(MSG_REMOVE_TITLE, MSG_REMOVE_DESCR, "Yes", "Cancel")) { removeInteractionIndex = i; } } using (var group = new EditorGUILayout.FadeGroupScope(this.isExpanded[i].faded)) { if (group.visible) { EditorGUILayout.BeginVertical(CoreGUIStyles.GetBoxExpanded()); this.subEditors[i].OnInteractionGUI(); EditorGUILayout.EndVertical(); } } EditorGUILayout.EndVertical(); if (UnityEngine.Event.current.type == EventType.Repaint) { this.subEditors[i].interactionRect = GUILayoutUtility.GetLastRect(); } this.editorSortableList.PaintDropPoints(this.subEditors[i].interactionRect, i, interactionsSize); } if (copyInteractionIndex >= 0) { Interaction source = (Interaction)this.subEditors[copyInteractionIndex].target; GameObject copyInstance = EditorUtility.CreateGameObjectWithHideFlags( "Interaction (Copy)", HideFlags.HideAndDontSave ); CLIPBOARD_INTERACTION = (Interaction)copyInstance.AddComponent(source.GetType()); EditorUtility.CopySerialized(source, CLIPBOARD_INTERACTION); if (CLIPBOARD_INTERACTION.conditionsList != null) { IConditionsList conditionsListSource = CLIPBOARD_INTERACTION.conditionsList; IConditionsList conditionsListCopy = this.instance.gameObject.AddComponent <IConditionsList>(); EditorUtility.CopySerialized(conditionsListSource, conditionsListCopy); EventEditor.DuplicateIConditionList(conditionsListSource, conditionsListCopy); SerializedObject soCopy = new SerializedObject(CLIPBOARD_INTERACTION); soCopy.FindProperty(InteractionEditor.PROP_CONDITIONSLIST).objectReferenceValue = conditionsListCopy; soCopy.ApplyModifiedProperties(); soCopy.Update(); } } if (duplicateInteractionIndex >= 0) { int srcIndex = duplicateInteractionIndex; int dstIndex = duplicateInteractionIndex + 1; Interaction source = (Interaction)this.subEditors[srcIndex].target; Interaction copy = (Interaction)this.instance.gameObject.AddComponent(source.GetType()); EditorUtility.CopySerialized(source, copy); if (copy.conditionsList != null) { IConditionsList conditionsListSource = copy.conditionsList; IConditionsList conditionsListCopy = this.instance.gameObject.AddComponent <IConditionsList>(); EditorUtility.CopySerialized(conditionsListSource, conditionsListCopy); EventEditor.DuplicateIConditionList(conditionsListSource, conditionsListCopy); SerializedObject soCopy = new SerializedObject(copy); soCopy.FindProperty(InteractionEditor.PROP_CONDITIONSLIST).objectReferenceValue = conditionsListCopy; soCopy.ApplyModifiedProperties(); soCopy.Update(); } this.spInteractions.InsertArrayElementAtIndex(dstIndex); this.spInteractions.GetArrayElementAtIndex(dstIndex).objectReferenceValue = copy; this.spInteractions.serializedObject.ApplyModifiedProperties(); this.spInteractions.serializedObject.Update(); this.AddSubEditorElement(copy, dstIndex, true); } if (removeInteractionIndex >= 0) { this.subEditors[removeInteractionIndex].OnDestroyInteraction(); Interaction rmInteraction = (Interaction)this.spInteractions .GetArrayElementAtIndex(removeInteractionIndex).objectReferenceValue; this.spInteractions.DeleteArrayElementAtIndex(removeInteractionIndex); this.spInteractions.RemoveFromObjectArrayAt(removeInteractionIndex); DestroyImmediate(rmInteraction, true); } EditorSortableList.SwapIndexes swapIndexes = this.editorSortableList.GetSortIndexes(); if (swapIndexes != null) { this.spInteractions.MoveArrayElement(swapIndexes.src, swapIndexes.dst); this.MoveSubEditorsElement(swapIndexes.src, swapIndexes.dst); } if (forceRepaint) { this.Repaint(); } }
private ItemReturnOperation PaintActionHeader(int i) { ItemReturnOperation returnOperation = new ItemReturnOperation(); Color defaultBackgroundColor = GUI.backgroundColor; if (this.spExecutingIndex.intValue == i) { GUI.backgroundColor = COLOR_EXECUTING_ACTION; } Rect rectHeader = GUILayoutUtility.GetRect(GUIContent.none, CoreGUIStyles.GetToggleButtonNormalOn()); this.PaintDragHandle(i, rectHeader); Texture2D icon = this.subEditors[i].GetIcon(); string name = (this.isExpanded[i].target ? " ▾ " : " ▸ "); name += (this.instance.actions[i] != null ? this.instance.actions[i].GetNodeTitle() : "<i>Undefined Action</i>" ); GUIStyle style = (this.isExpanded[i].target ? CoreGUIStyles.GetToggleButtonMidOn() : CoreGUIStyles.GetToggleButtonMidOff() ); float opacity = 1.0f; if (this.subEditors[i] != null && this.subEditors[i].action != null) { opacity = this.subEditors[i].action.GetOpacity(); } Color tempColor = style.normal.textColor; style.normal.textColor = new Color( style.normal.textColor.r, style.normal.textColor.g, style.normal.textColor.b, opacity ); Rect rectDelete = new Rect( rectHeader.x + rectHeader.width - 25f, rectHeader.y, 25f, rectHeader.height ); Rect rectDuplicate = new Rect( rectDelete.x - 25f, rectHeader.y, 25f, rectHeader.height ); Rect rectCopy = new Rect( rectDuplicate.x - 25f, rectHeader.y, 25f, rectHeader.height ); Rect rectMain = new Rect( rectHeader.x + 25f, rectHeader.y, rectHeader.width - (25f * 4f), rectHeader.height ); if (GUI.Button(rectMain, new GUIContent(name, icon), style)) { this.ToggleExpand(i); } style.normal.textColor = tempColor; GUIContent gcCopy = InteractionUtilities.Get(InteractionUtilities.Icon.Copy); GUIContent gcDuplicate = InteractionUtilities.Get(InteractionUtilities.Icon.Duplicate); GUIContent gcDelete = InteractionUtilities.Get(InteractionUtilities.Icon.Delete); if (this.instance.actions[i] != null && GUI.Button(rectCopy, gcCopy, CoreGUIStyles.GetButtonMid())) { returnOperation.copyIndex = true; } if (this.instance.actions[i] != null && GUI.Button(rectDuplicate, gcDuplicate, CoreGUIStyles.GetButtonMid())) { returnOperation.duplicateIndex = true; } if (GUI.Button(rectDelete, gcDelete, CoreGUIStyles.GetButtonRight())) { returnOperation.removeIndex = true; } GUI.backgroundColor = defaultBackgroundColor; return(returnOperation); }