public override void OnInspectorGUI() { DrawDefaultInspector(); if (!PedestrianNode) { return; } if (!PedestrianSystem) { GameObject obj = GameObject.Find("PedestrianSystem"); if (obj && obj.GetComponent <PedestrianSystem>()) { PedestrianSystem = obj.GetComponent <PedestrianSystem>(); } } if (!PedestrianSystem || !PedestrianSystem.Instance) { return; } GUILayout.Space(20.0f); GUILayout.BeginHorizontal("box"); if (GUILayout.Button("Return to Pedestrian System")) { if (PedestrianSystem && PedestrianSystem.Instance) { Selection.activeObject = PedestrianSystem; } } GUILayout.EndHorizontal(); GUILayout.BeginHorizontal("box"); if (PedestrianSystem.TextureIconAnchor) { if (GUILayout.Button(PedestrianSystem.TextureIconAnchor)) { PedestrianSystem.Instance.SetPedestrianNode(PedestrianSystem.Tooltip.ANCHOR, PedestrianNode); //Selection.activeObject = PedestrianSystem.Instance; } } else { if (GUILayout.Button("Select as Anchor", GUILayout.Height(49))) { PedestrianSystem.Instance.SetPedestrianNode(PedestrianSystem.Tooltip.ANCHOR, PedestrianNode); //Selection.activeObject = PedestrianSystem.Instance; } } if (PedestrianSystem.TextureIconEdit) { if (GUILayout.Button(PedestrianSystem.TextureIconEdit)) { PedestrianSystem.Instance.SetPedestrianNode(PedestrianSystem.Tooltip.EDIT, PedestrianNode); //Selection.activeObject = PedestrianSystem.Instance; } } else { if (GUILayout.Button("Select as Edit", GUILayout.Height(49))) { PedestrianSystem.Instance.SetPedestrianNode(PedestrianSystem.Tooltip.EDIT, PedestrianNode); //Selection.activeObject = PedestrianSystem.Instance; } } GUILayout.EndHorizontal(); bool guiChanged = false; 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 && (useAnchorNode == PedestrianNode || useEditNode == PedestrianNode)) { 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(); } GUILayout.BeginHorizontal("box"); if (!PedestrianNode.GetComponent <PedestrianVehicleCheckTrigger>()) { if (GUILayout.Button("Enable Pedestrian Crossing")) { PedestrianNode.gameObject.AddComponent <PedestrianVehicleCheckTrigger>(); return; } } else { if (GUILayout.Button("Disable Pedestrian Crossing")) { if (PedestrianNode.GetComponent <PedestrianVehicleCheckTrigger>()) { DestroyImmediate(PedestrianNode.GetComponent <PedestrianVehicleCheckTrigger>()); } if (PedestrianNode.GetComponent <Rigidbody>()) { DestroyImmediate(PedestrianNode.GetComponent <Rigidbody>()); } if (PedestrianNode.GetComponent <Collider>()) { DestroyImmediate(PedestrianNode.GetComponent <Collider>()); } Debug.LogError("PEDESTRIAN SYSTEM -> The 'Missing Reference Exception' error below can be ignored"); return; } } GUILayout.EndHorizontal(); GUILayout.BeginHorizontal("box"); if (GUILayout.Button("Delete Node")) { DestroyImmediate(PedestrianNode.gameObject); return; } GUILayout.EndHorizontal(); if (PedestrianNode.m_nodes.Count > 0) { GUILayout.BeginHorizontal("box"); if (GUILayout.Button("Remove All Links")) { PedestrianNode.RemoveAllNodes(); EditorUtility.SetDirty(PedestrianNode); } GUILayout.EndHorizontal(); for (int pIndex = 0; pIndex < PedestrianNode.m_nodes.Count; pIndex++) { GUILayout.BeginHorizontal("box"); if (GUILayout.Button("Reveal ->", GUILayout.Height(49))) { PedestrianSystem.ClearCLRevealObjsFrom(); PedestrianSystem.ClearCLRevealObjsTo(); PedestrianSystem.AddToCLRevealObjsFrom(PedestrianNode.transform); PedestrianSystem.AddToCLRevealObjsTo(PedestrianNode.m_nodes[pIndex].transform); } if (PedestrianSystem.TextureIconRemoveAll) { if (GUILayout.Button(PedestrianSystem.TextureIconRemoveAll)) { PedestrianNode.RemoveNode(PedestrianNode.m_nodes[pIndex]); EditorUtility.SetDirty(PedestrianNode); PedestrianSystem.ClearCLRevealObjsFrom(); PedestrianSystem.ClearCLRevealObjsTo(); } } GUILayout.EndHorizontal(); } } /* * if(PedestrianSystem.Instance.EditNode && PedestrianNode.NodeExists(PedestrianSystem.Instance.EditNode)) * { * if(PedestrianSystem.TextureIconRemoveEdit) * { * if(GUILayout.Button(PedestrianSystem.TextureIconRemoveEdit)) * PedestrianNode.RemoveNode(PedestrianSystem.Instance.EditNode); * } * else * { * if(GUILayout.Button("Remove Edit Link")) * PedestrianNode.RemoveNode(PedestrianSystem.Instance.EditNode); * } * } * * if(PedestrianSystem.Instance.AnchorNode && PedestrianNode.NodeExists(PedestrianSystem.Instance.AnchorNode)) * { * if(PedestrianSystem.TextureIconRemoveAnchor) * { * if(GUILayout.Button(PedestrianSystem.TextureIconRemoveAnchor)) * PedestrianNode.RemoveNode(PedestrianSystem.Instance.AnchorNode); * } * else * { * if(GUILayout.Button("Remove Anchor Link")) * PedestrianNode.RemoveNode(PedestrianSystem.Instance.AnchorNode); * } * } */ if (PedestrianSystem.Instance.PreviousAnchorNode == PedestrianNode) { PedestrianSystem.Instance.PositionTooltip(PedestrianSystem.Tooltip.ANCHOR, PedestrianNode.gameObject); } else if (PedestrianSystem.Instance.PreviousEditNode == PedestrianNode) { PedestrianSystem.Instance.PositionTooltip(PedestrianSystem.Tooltip.EDIT, PedestrianNode.gameObject); } if (guiChanged) { EditorUtility.SetDirty(useAnchorNode); EditorUtility.SetDirty(useEditNode); } if (GUI.changed) { EditorUtility.SetDirty(PedestrianNode); } }