void CheckForEditNode() { if (!EditNodeFolder) { return; } for (int cIndex = 0; cIndex < EditNodeFolder.childCount; cIndex++) { if (EditNodeFolder.GetChild(cIndex).GetComponent <PedestrianNode>()) { SetPedestrianNode(PedestrianSystem.Tooltip.EDIT, EditNodeFolder.GetChild(cIndex).GetComponent <PedestrianNode>()); } } }
public override void OnInspectorGUI() { DrawDefaultInspector(); if (!PedestrianSystem || !PedestrianSystem.Instance) { return; } GUILayout.Space(10.0f); GUILayout.BeginVertical("box"); if (GUILayout.Button("Generate Node", GUILayout.Height(49))) { if (!PedestrianSystem.Instance.m_nodePrefab) { Debug.LogError("Node Prefab not set. You can find one in \"Assets\\Pedestrian System\\Prefabs\\Pathing\". Node Generation Cancelled."); return; } PedestrianNode node = PrefabUtility.InstantiatePrefab(PedestrianSystem.Instance.m_nodePrefab) as PedestrianNode; Selection.activeGameObject = node.gameObject; node.transform.parent = PedestrianSystem.Instance.transform; if (PedestrianSystem.Instance.m_autoLink) { if (PedestrianSystem.Instance.m_linkBothDir) { if (EditNode) { EditNode.AddNode(node); EditorUtility.SetDirty(EditNode); node.AddNode(EditNode); EditorUtility.SetDirty(node); Vector3 pos = EditNode.transform.position; pos.x += 4.0f; node.transform.position = pos; } else if (AnchorNode) { AnchorNode.AddNode(node); EditorUtility.SetDirty(AnchorNode); node.AddNode(AnchorNode); EditorUtility.SetDirty(node); Vector3 pos = AnchorNode.transform.position; pos.x += 4.0f; node.transform.position = pos; } } else if (EditNode) { EditNode.AddNode(node); EditorUtility.SetDirty(EditNode); Vector3 pos = EditNode.transform.position; pos.x += 4.0f; node.transform.position = pos; } else if (AnchorNode) { AnchorNode.AddNode(node); EditorUtility.SetDirty(AnchorNode); Vector3 pos = AnchorNode.transform.position; pos.x += 4.0f; node.transform.position = pos; } } if (EditNode) { if (AnchorNode) { AnchorNode.transform.parent = PedestrianSystem.transform; } AnchorNode = EditNode; AnchorNode.transform.parent = AnchorNodeFolder.transform; EditNode = node; EditNode.transform.parent = EditNodeFolder.transform; PedestrianSystem.Instance.SetPedestrianNode(PedestrianSystem.Tooltip.ANCHOR, AnchorNode); } else { EditNode = node; EditNode.transform.parent = EditNodeFolder.transform; } PedestrianSystem.Instance.SetPedestrianNode(PedestrianSystem.Tooltip.EDIT, node); } GUILayout.EndVertical(); bool guiChanged = false; if (EditNode && AnchorNode) { GUILayout.BeginHorizontal("box"); if (GUILayout.Button("Go to 'Edit' Piece", GUILayout.Height(49))) { Selection.activeObject = EditNode.transform; } if (GUILayout.Button("Go to 'Anchor' Piece", GUILayout.Height(49))) { Selection.activeObject = AnchorNode.transform; } GUILayout.EndHorizontal(); GUILayout.Space(10.0f); } PedestrianNode useAnchorNode = null; PedestrianNode useEditNode = null; if (PedestrianSystem.Instance.EditNode) { useEditNode = PedestrianSystem.Instance.EditNode; } else if (PedestrianSystem.Instance.PreviousEditNode) { useEditNode = PedestrianSystem.Instance.PreviousEditNode; } if (PedestrianSystem.Instance.AnchorNode) { useAnchorNode = PedestrianSystem.Instance.AnchorNode; } else if (PedestrianSystem.Instance.PreviousAnchorNode) { useAnchorNode = PedestrianSystem.Instance.PreviousAnchorNode; } if (useAnchorNode && useEditNode) { GUILayout.BeginHorizontal("box"); if (PedestrianSystem && PedestrianSystem.TextureIconAnchorToEdit) { if (GUILayout.Button(PedestrianSystem.TextureIconAnchorToEdit)) { // link Anchor To Edit PedestrianSystem.Instance.LinkNode(); guiChanged = true; } } else { if (GUILayout.Button("Link Anchor To Edit", GUILayout.Height(49))) { // link Anchor To Edit PedestrianSystem.Instance.LinkNode(); guiChanged = true; } } if (PedestrianSystem.TextureIconEditToAnchor) { if (GUILayout.Button(PedestrianSystem.TextureIconEditToAnchor)) { // link Edit to Anchor PedestrianSystem.Instance.LinkNode(false); guiChanged = true; } } else { if (GUILayout.Button("Link Edit to Anchor", GUILayout.Height(49))) { // link Edit to Anchor PedestrianSystem.Instance.LinkNode(false); guiChanged = true; } } GUILayout.EndHorizontal(); } // if(PedestrianSystem.Instance.EditNode) // { // SetPedestrianNode( PedestrianSystem.Tooltip.EDIT, PedestrianSystem.Instance.EditNode ); // PedestrianSystem.Instance.SetPedestrianNode( PedestrianSystem.Tooltip.EDIT, null ); // } // // if(PedestrianSystem.Instance.AnchorNode) // { // SetPedestrianNode( PedestrianSystem.Tooltip.ANCHOR, PedestrianSystem.Instance.AnchorNode ); // PedestrianSystem.Instance.SetPedestrianNode( PedestrianSystem.Tooltip.ANCHOR, null ); // } if (guiChanged) { EditorUtility.SetDirty(useAnchorNode); EditorUtility.SetDirty(useEditNode); } if (EditNodeFolder) { for (int cIndex = 0; cIndex < EditNodeFolder.childCount; cIndex++) { EditNodeFolder.GetChild(cIndex).transform.parent = PedestrianSystem.transform; } if (EditNode) { EditNode.transform.parent = EditNodeFolder; } } if (AnchorNodeFolder) { for (int cIndex = 0; cIndex < AnchorNodeFolder.childCount; cIndex++) { AnchorNodeFolder.GetChild(cIndex).transform.parent = PedestrianSystem.transform; } if (AnchorNode) { AnchorNode.transform.parent = AnchorNodeFolder; } } if (AnchorNode) { SetPedestrianNode(PedestrianSystem.Tooltip.ANCHOR, AnchorNode); } if (EditNode) { SetPedestrianNode(PedestrianSystem.Tooltip.EDIT, EditNode); } if (GUI.changed) { EditorUtility.SetDirty(PedestrianSystem); } }