private static void DeleteNodeRec(InAudioNode node) { AudioBankWorker.RemoveNodeFromBank(node); /*TreeWalker.ForEach(InAudioInstanceFinder.DataManager.EventTree, @event => * { * for (int i = 0; i < @event.ActionList.Count; i++) * { * var action = @event.ActionList[i]; * if (action.Target == node) * { * UndoHelper.RegisterFullObjectHierarchyUndo(action); * } * } * });*/ for (int i = 0; i < node._children.Count; i++) { DeleteNodeRec(node._children[i]); } InUndoHelper.Destroy(node._nodeData); InUndoHelper.Destroy(node); }
private void DeleteNodeRec(InMusicNode toDelete) { for (int i = 0; i < toDelete._children.Count; i++) { DeleteNodeRec(toDelete._children[i]); } InUndoHelper.Destroy(toDelete); }
public static void DeleteFolder(InAudioBankLink toDelete) { InUndoHelper.DoInGroup(() => { InUndoHelper.RecordObjectFull(toDelete._parent, "Delete Bank Folder"); toDelete._parent._getChildren.Remove(toDelete); InUndoHelper.Destroy(toDelete); }); }
public static void DeleteBank(InAudioBankLink toDelete) { InUndoHelper.DoInGroup(() => { InUndoHelper.RecordObject(InAudioInstanceFinder.DataManager.AudioTree.gameObject.GetComponents <MonoBehaviour>().Add(toDelete).Add(InAudioInstanceFinder.DataManager.MusicTree.gameObject.GetComponents <MonoBehaviour>()), "Bank detele"); toDelete._parent._getChildren.Remove(toDelete); InUndoHelper.Destroy(toDelete); }); }
private static void DeleteNodeRec(InAudioNode node) { for (int i = 0; i < node._children.Count; i++) { DeleteNodeRec(node._children[i]); } InUndoHelper.Destroy(node._nodeData); InUndoHelper.Destroy(node); }
public static InAudioEventNode DeleteActionAtIndex(InAudioEventNode audioevent, int index) { InUndoHelper.RecordObject(audioevent, "Event Action Creation"); InUndoHelper.Destroy(audioevent._actionList[index]); audioevent._actionList.RemoveAt(index); return(audioevent); }
private static void DeleteNodeRec(InAudioEventNode node) { for (int i = 0; i < node._actionList.Count; i++) { InUndoHelper.Destroy(node._actionList[i]); } for (int i = 0; i < node._children.Count; ++i) { DeleteNodeRec(node._children[i]); } InUndoHelper.Destroy(node); }
public static void ConvertNodeType(InAudioNode node, AudioNodeType newType) { if (newType == node._type) { return; } InUndoHelper.DoInGroup(() => { InUndoHelper.RecordObjectFull(new Object[] { node, node._nodeData }, "Change Node Type"); node._type = newType; InUndoHelper.Destroy(node._nodeData); AddDataClass(node); }); }
private void CombineNodes(InSplineNode splineNode, InSplineNode[] conditioned) { InUndoHelper.DoInGroup(() => { #if UNITY_4_1 || UNITY_4_2 Undo.RegisterSceneUndo("Combine nodes"); #else UndoAll("Combine nodes"); #endif HashSet <InSplineNode> periphery = new HashSet <InSplineNode>(); foreach (var node in conditioned) { var connected = node.SplineController.FindConnectedNodes(node); for (int i = 0; i < connected.Length; i++) { var connectedTo = connected[i]; periphery.Add(connectedTo); } node.UnconnectAll(); } foreach (var node in conditioned) { if (node != null) { InUndoHelper.Destroy(node.gameObject); } } foreach (var node in periphery) { splineNode.ConnectTo(node); } var connections = splineNode.SplineController.Connections; for (int i = 0; i < connections.Count; i++) { if (!connections[i].IsValid()) { connections.SafeRemoveAt(ref i); } } }); //Selection.activeGameObject = null; Repaint(); }
public static void ReplaceActionDestructiveAt(InAudioEventNode audioEvent, EventActionTypes enumType, int toRemoveAndInsertAt) { //A reel mess this function. //It adds a new component of the specied type, replaces the current at the toRemoveAndInsertAt index, and then deletes the old one float delay = audioEvent._actionList[toRemoveAndInsertAt].Delay; Object target = audioEvent._actionList[toRemoveAndInsertAt].Target; var newActionType = AudioEventAction.ActionEnumToType(enumType); InUndoHelper.Destroy(audioEvent._actionList[toRemoveAndInsertAt]); //UndoHelper.RecordObject(audioEvent, "Event Action Creation"); audioEvent._actionList.RemoveAt(toRemoveAndInsertAt); var added = AddEventAction(audioEvent, newActionType, enumType); added.Delay = delay; added.Target = target; //Attempt to set the new value, will only work if it is the same type audioEvent._actionList.Insert(toRemoveAndInsertAt, added); audioEvent._actionList.RemoveLast(); }
public override void OnInspectorGUI() { if (!InAudioInstanceFinder.IsValid) { EditorGUILayout.HelpBox("Please add the InAudio Manager to the scene", MessageType.Info); if (GUILayout.Button("Add manager to scene")) { ErrorDrawer.AddManagerToScene(); } } serializedObject.Update(); EditorGUI.BeginChangeCheck(); EditorGUILayout.PropertyField(serializedObject.FindProperty("SplineAudioEvent")); EditorGUILayout.Separator(); bool add = GUILayout.Button("Add Node"); bool selectNew = false; if (GUILayout.Button("Add and Select")) { add = true; selectNew = true; } var nodeArray = serializedObject.FindProperty("Nodes"); var nodeArraySize = nodeArray.FindPropertyRelative("Array.size"); var connectionArray = serializedObject.FindProperty("Connections"); var connectionArraySize = connectionArray.FindPropertyRelative("Array.size"); nodeArray.isExpanded = EditorGUILayout.Foldout(nodeArray.isExpanded, "Nodes"); DrawList(nodeArray, nodeArraySize, i => { var node = nodeArray.GetArrayElementAtIndex(i).objectReferenceValue as InSplineNode; nodeArray.DeleteArrayElementAtIndex(i); nodeArray.DeleteArrayElementAtIndex(i); for (int j = 0; j < connectionArray.arraySize; j++) { var prop = connectionArray.GetArrayElementAtIndex(j); if (prop.FindPropertyRelative("NodeA").objectReferenceValue == node || prop.FindPropertyRelative("NodeB").objectReferenceValue == node) { connectionArray.DeleteArrayElementAtIndex(j); --j; } } if (node != null) { InUndoHelper.Destroy(node.gameObject); } }); connectionArray.isExpanded = EditorGUILayout.Foldout(connectionArray.isExpanded, "Connections"); DrawList(connectionArray, connectionArraySize, connectionArray.DeleteArrayElementAtIndex); if (add) { InUndoHelper.DoInGroup(() => { UndoAll("Add new spline node"); GameObject newNodeGO = InUndoHelper.CreateGO(SplineController.gameObject.name + " Node"); var newNode = newNodeGO.AddComponent <InSplineNode>(); newNodeGO.transform.position = SplineController.transform.position; newNode.SplineController = SplineController; newNodeGO.transform.parent = SplineController.transform; newNodeGO.transform.position = SplineController.transform.position + SplineController.transform.forward; int count = SplineController.Nodes.Count; if (count > 0) { SplineController.Nodes[0].ConnectTo(newNode); } SplineController.Nodes.Add(newNode); if (selectNew) { Selection.activeGameObject = newNodeGO; } }); } if (EditorGUI.EndChangeCheck()) { serializedObject.ApplyModifiedProperties(); } }
public override void OnInspectorGUI() { if (!InAudioInstanceFinder.IsValid) { EditorGUILayout.HelpBox("Please add the InAudio Manager to the scene", MessageType.Info); if (GUILayout.Button("Add manager to scene")) { ErrorDrawer.AddManagerToScene(); } } serializedObject.Update(); EditorGUI.BeginChangeCheck(); if (serializedObject.FindProperty("SplineController").hasMultipleDifferentValues) { EditorGUILayout.HelpBox("Different spline controllers", MessageType.Warning); return; } if (SplineNode.SplineController == null) { EditorGUILayout.HelpBox("Missing spline controller, please assign one", MessageType.Warning); } if (InAudioInstanceFinder.IsValid) { InAudioInstanceFinder.InAudioGuiUserPrefs.SelectedSplineController = SplineNode.SplineController; } bool add = GUILayout.Button("Add Node"); bool selectNew = false; if (GUILayout.Button("Add and Select")) { add = true; selectNew = true; } EditorGUILayout.Separator(); var objectField = EditorGUILayout.ObjectField("Controlling Spline", serializedObject.FindProperty("SplineController").objectReferenceValue, typeof(InSpline), true); if (serializedObject.FindProperty("SplineController").objectReferenceValue == null) { serializedObject.FindProperty("SplineController").objectReferenceValue = objectField; } if (Selection.objects.Length == 1) { GUILayout.Button("Drag node here to connect"); OnDragging.DraggingObject <Object>(GUILayoutUtility.GetLastRect(), o => { GameObject go = o as GameObject; if (go != null) { var node = go.GetComponent <InSplineNode>(); if (node != SplineNode && !SplineNode.SplineController.ContainsConnection(SplineNode, node)) { return(true); } } return(false); }, o => { InUndoHelper.RecordObject(SplineNode.SplineController, "Connect nodes"); (o as GameObject).GetComponent <InSplineNode>().ConnectTo(SplineNode); }); //var a = new SerializedObject(SplineNode.SplineController) if (SplineNode.SplineController != null) { expandedConnections = EditorGUILayout.Foldout(expandedConnections, "Connected to"); for (int i = 0; i < SplineNode.SplineController.Connections.Count; i++) { EditorGUILayout.BeginHorizontal(); GUI.enabled = false; var conc = SplineNode.SplineController.Connections[i]; if (conc.NodeA == SplineNode) { EditorGUILayout.ObjectField(conc.NodeB, typeof(InSplineNode), true); GUI.enabled = true; if (GUILayout.Button("X", GUILayout.Width(20))) { InUndoHelper.RecordObject(SplineNode.SplineController, "Remove spline connection"); SplineNode.SplineController.RemoveConnections(conc); } EditorUtility.SetDirty(SplineNode.SplineController); } else if (conc.NodeB == SplineNode) { EditorGUILayout.ObjectField(conc.NodeA, typeof(InSplineNode), true); GUI.enabled = true; if (GUILayout.Button("X", GUILayout.Width(20))) { InUndoHelper.RecordObject(SplineNode.SplineController, "Remove spline connection"); SplineNode.SplineController.RemoveConnections(conc); } EditorUtility.SetDirty(SplineNode.SplineController); } EditorGUILayout.EndHorizontal(); } } } EditorGUILayout.Separator(); bool delete = true; if (GUILayout.Button("Delete")) { InUndoHelper.DoInGroup(() => { #if UNITY_4_1 || UNITY_4_2 Undo.RegisterSceneUndo("Combine nodes"); #else UndoAll("Delete node"); #endif foreach (var gameObject in Selection.gameObjects) { InUndoHelper.Destroy(gameObject); } delete = true; }); } if (add) { InUndoHelper.DoInGroup(() => { #if UNITY_4_1 || UNITY_4_2 Undo.RegisterSceneUndo("Delete element in spline"); #else UndoAll("Add new spline node"); #endif GameObject go = InUndoHelper.CreateGO(SplineNode.SplineController.gameObject.name + " Node"); go.transform.parent = SplineNode.SplineController.transform; go.transform.position = SplineNode.transform.position + SplineNode.transform.forward; go.transform.position = SplineNode.transform.position; var newNode = go.AddComponent <InSplineNode>(); newNode.SplineController = SplineNode.SplineController; newNode.ConnectTo(SplineNode); SplineNode.SplineController.Nodes.Add(newNode); if (selectNew) { Selection.activeGameObject = go; } }); } if (EditorGUI.EndChangeCheck() && delete == false) { serializedObject.ApplyModifiedProperties(); } }