void OnSceneGUI() { if (!TrafficSystem) { GameObject obj = GameObject.Find("Traffic System"); if (obj && obj.GetComponent <TrafficSystem>()) { TrafficSystem = obj.GetComponent <TrafficSystem>(); } } if (TrafficSystem && TrafficSystem.Instance) { if (TrafficSystem.Instance.TooltipAnchor) { TrafficSystem.Instance.TooltipAnchor.transform.Rotate(Vector3.up, 1.0f); } } // if(!TrafficSystemNode.m_connectedLocalNode) // { // for(int nIndex = 0; nIndex < TrafficSystemNode.m_connectedNodes.Count; nIndex++) // { // TrafficSystemNode connectedNode = TrafficSystemNode.m_connectedNodes[nIndex]; // if(connectedNode) // { // Handles.color = Color.red; // Handles.ArrowCap(0, // connectedNode.transform.position + new Vector3(5,0,0), // connectedNode.transform.rotation, // 10.0f); // } // } // } }
private void Update() { if (Instance == null) { Instance = this; } }
public static void SpawnTrafficSystemPrefab() { if (TrafficSystem.Instance) { Debug.LogError("Traffic System already exists"); return; } TrafficSystem[] trafficSystems = GameObject.FindObjectsOfType <TrafficSystem>(); if (trafficSystems.Length > 0) { Debug.LogError("Traffic System already exists"); return; } string trafficSystemPrefabPath = "Assets/Traffic System/Prefabs/Traffic System.prefab"; TrafficSystem trafficSystem = AssetDatabase.LoadAssetAtPath(trafficSystemPrefabPath, typeof(TrafficSystem)) as TrafficSystem; if (trafficSystem) { PrefabUtility.InstantiatePrefab(trafficSystem); } else { Debug.LogError("Traffic System Prefab can not be found at location: " + trafficSystemPrefabPath); } }
public override void OnInspectorGUI() { // serializedObject.Update(); DrawDefaultInspector(); if(!TrafficSystemAwarenessTrigger) return; if(!TrafficSystem) { GameObject obj = GameObject.Find ("Traffic System"); if(obj && obj.GetComponent<TrafficSystem>()) TrafficSystem = obj.GetComponent<TrafficSystem>(); } // RefreshEditor( false, true ); // GUILayout.Space(10.0f); // GUILayout.BeginHorizontal("box"); // if(GUILayout.Button("Process Children")) // { // RefreshEditor(); // } // GUILayout.EndHorizontal(); }
public override void OnInspectorGUI() { // serializedObject.Update(); DrawDefaultInspector(); if (!TrafficSystemIntersection) { return; } if (!TrafficSystem) { GameObject obj = GameObject.Find("Traffic System"); if (obj && obj.GetComponent <TrafficSystem>()) { TrafficSystem = obj.GetComponent <TrafficSystem>(); } } GUILayout.BeginHorizontal("box"); if (GUILayout.Button("Process Children")) { TrafficSystemIntersection.Refresh(); } GUILayout.EndHorizontal(); }
public override void OnInspectorGUI() { // serializedObject.Update(); DrawDefaultInspector(); if (!TrafficSystemAwarenessTrigger) { return; } if (!TrafficSystem) { GameObject obj = GameObject.Find("Traffic System"); if (obj && obj.GetComponent <TrafficSystem>()) { TrafficSystem = obj.GetComponent <TrafficSystem>(); } } // RefreshEditor( false, true ); // GUILayout.Space(10.0f); // GUILayout.BeginHorizontal("box"); // if(GUILayout.Button("Process Children")) // { // RefreshEditor(); // } // GUILayout.EndHorizontal(); }
void OnSceneGUI() { if(!TrafficSystem) { GameObject obj = GameObject.Find ("Traffic System"); if(obj && obj.GetComponent<TrafficSystem>()) TrafficSystem = obj.GetComponent<TrafficSystem>(); } if(TrafficSystem && TrafficSystem.Instance) { if(TrafficSystem.Instance.TooltipAnchor) TrafficSystem.Instance.TooltipAnchor.transform.Rotate(Vector3.up, 1.0f); } // if(!TrafficSystemNode.m_connectedLocalNode) // { // for(int nIndex = 0; nIndex < TrafficSystemNode.m_connectedNodes.Count; nIndex++) // { // TrafficSystemNode connectedNode = TrafficSystemNode.m_connectedNodes[nIndex]; // if(connectedNode) // { // Handles.color = Color.red; // Handles.ArrowCap(0, // connectedNode.transform.position + new Vector3(5,0,0), // connectedNode.transform.rotation, // 10.0f); // } // } // } }
private void AddVehicles(bool additionalCars = false) { if (GameObject.Find("RoadMark") && GameObject.Find("RoadMarkRev")) { InverseCarDirection(true); } TrafficSystem trafficSystem = AssetDatabase.LoadAssetAtPath("Assets/Fantastic City Generator/Traffic System/Traffic System.prefab", (typeof(TrafficSystem))) as TrafficSystem; trafficSystem.LoadCars(additionalCars); }
void OnCollisionEnter(Collision collision) { if (collision.gameObject.CompareTag("Car")) { TrafficNode trafficNode = TrafficSystem.GetTrafficNode(trafficNodeId); CarController car = collision.gameObject.GetComponent <CarController>(); if (!trafficNode.HasThreeNodesConnected()) { car.DecideWith3StreetsConnected(); } else if (TrafficSystem.GetTrafficNode(trafficNodeId).HasTwoNodesConnected()) { car.DecideWith2StreetsConnected(trafficNode.left != TrafficNode.NO_ROAD_CONNECTED || trafficNode.front != TrafficNode.NO_ROAD_CONNECTED); } countOfCarsInLane++; } }
public override void OnInspectorGUI() { // serializedObject.Update(); DrawDefaultInspector(); if(!TrafficSystemIntersection) return; if(!TrafficSystem) { GameObject obj = GameObject.Find ("Traffic System"); if(obj && obj.GetComponent<TrafficSystem>()) TrafficSystem = obj.GetComponent<TrafficSystem>(); } GUILayout.BeginHorizontal("box"); if(GUILayout.Button("Process Children")) { TrafficSystemIntersection.Refresh(); } GUILayout.EndHorizontal(); }
void Start() { vehicles = GameObject.FindGameObjectsWithTag("AutonomousVehicle"); ts = GameObject.FindObjectOfType <TrafficSystem>(); }
void ChangeNodeMaterial( TrafficSystemNode a_node, TrafficSystem.DriveSide a_side ) { a_node.m_driveSide = a_side; if(a_node.m_driveSide == TrafficSystem.DriveSide.LEFT) { if(a_node.m_isPrimary) { Material material = AssetDatabase.LoadAssetAtPath(TrafficSystemEditor.PrimaryNodeLeftSideMaterial, typeof(Material)) as Material; a_node.GetComponent<Renderer>().material = material; } else { Material material = AssetDatabase.LoadAssetAtPath(TrafficSystemEditor.SecondaryNodeLeftSideMaterial, typeof(Material)) as Material; a_node.GetComponent<Renderer>().material = material; } } else { if(a_node.m_isPrimary) { Material material = AssetDatabase.LoadAssetAtPath(TrafficSystemEditor.PrimaryNodeRightSideMaterial, typeof(Material)) as Material; a_node.GetComponent<Renderer>().material = material; } else { Material material = AssetDatabase.LoadAssetAtPath(TrafficSystemEditor.SecondaryNodeRightSideMaterial, typeof(Material)) as Material; a_node.GetComponent<Renderer>().material = material; } } }
public override void OnInspectorGUI() { // serializedObject.Update(); DrawDefaultInspector(); if(!TrafficSystemPiece) return; if(!TrafficSystem) { GameObject obj = GameObject.Find ("Traffic System"); if(obj && obj.GetComponent<TrafficSystem>()) TrafficSystem = obj.GetComponent<TrafficSystem>(); } RefreshEditor( false, true ); if(TrafficSystemPiece.m_primaryLeftLaneNodes.Count > 0 || TrafficSystemPiece.m_primaryRightLaneNodes.Count > 0 || TrafficSystemPiece.m_leftLaneChangeNodes.Count > 0 || TrafficSystemPiece.m_rightLaneChangeNodes.Count > 0) { GUILayout.Space(10.0f); GUILayout.Label("Primary Nodes:"); int connections = 0; for(int lNIndex = 0; lNIndex < TrafficSystemPiece.m_primaryLeftLaneNodes.Count; lNIndex++) { TrafficSystemNode lastNode = TrafficSystemPiece.m_primaryLeftLaneNodes[lNIndex]; if(lastNode) { for(int cNIndex = 0; cNIndex < lastNode.m_connectedNodes.Count; cNIndex++) { TrafficSystemNode currentNode = lastNode.m_connectedNodes[cNIndex]; if(currentNode) { string driverSide = "Pink"; if(currentNode.m_driveSide == TrafficSystem.DriveSide.LEFT) driverSide = "Blue"; GUILayout.BeginVertical("box"); GUILayout.Label((lNIndex + 1) + " " + driverSide + " : " + currentNode.Parent); GUILayout.Space(1.0f); GUILayout.BeginHorizontal("box"); if(GUILayout.Button("Reveal ->")) { TrafficSystem.ClearCLRevealObjsFrom(); TrafficSystem.ClearCLRevealObjsTo(); TrafficSystem.AddToCLRevealObjsFrom(lastNode.transform); TrafficSystem.AddToCLRevealObjsTo(currentNode.transform); } if(GUILayout.Button("Remove")) { lastNode.m_connectedNodes.Remove(currentNode); EditorUtility.SetDirty(lastNode); TrafficSystem.ClearCLRevealObjsFrom(); TrafficSystem.ClearCLRevealObjsTo(); } if(GUILayout.Button("Switch Link")) { bool nodeFound = false; for(int cIndex = 0; cIndex < currentNode.m_connectedNodes.Count; cIndex++) { TrafficSystemNode nodeToSwitch = currentNode.m_connectedNodes[cIndex]; if(nodeToSwitch == lastNode) { nodeFound = true; break; } } if(!nodeFound) { if(lastNode) currentNode.m_connectedNodes.Add(lastNode); if(currentNode) lastNode.m_connectedNodes.Remove(currentNode); EditorUtility.SetDirty(currentNode); EditorUtility.SetDirty(lastNode); TrafficSystem.ClearCLRevealObjsFrom(); TrafficSystem.ClearCLRevealObjsTo(); } } GUILayout.EndHorizontal(); connections++; GUILayout.EndVertical(); } } for(int cIndex = 0; cIndex < lastNode.m_connectedChangeLaneNodes.Count; cIndex++) { if(lastNode.m_connectedChangeLaneNodes[cIndex] && lastNode.m_connectedChangeLaneNodes[cIndex].Parent != TrafficSystemPiece ) { string driverSide = "Pink"; if(lastNode.m_connectedChangeLaneNodes[cIndex].m_driveSide == TrafficSystem.DriveSide.LEFT) driverSide = "Blue"; GUILayout.BeginVertical("box"); GUILayout.Label( "ID: " + lastNode.m_connectedChangeLaneNodes[cIndex].m_changeLaneID + " " + driverSide + " CL Inbound : " + lastNode.m_connectedChangeLaneNodes[cIndex].Parent); GUILayout.Space(1.0f); GUILayout.BeginHorizontal("box"); if(GUILayout.Button("Reveal ->")) { TrafficSystem.ClearCLRevealObjsFrom(); TrafficSystem.ClearCLRevealObjsTo(); TrafficSystem.AddToCLRevealObjsFrom(lastNode.transform); TrafficSystem.AddToCLRevealObjsTo(lastNode.m_connectedChangeLaneNodes[cIndex].transform); } if(GUILayout.Button("Remove")) { lastNode.RemoveChangeLangeNode(lastNode.m_connectedChangeLaneNodes[cIndex]); EditorUtility.SetDirty(lastNode); TrafficSystem.ClearCLRevealObjsFrom(); TrafficSystem.ClearCLRevealObjsTo(); } GUILayout.EndHorizontal(); GUILayout.EndVertical(); } } } } for(int lNIndex = 0; lNIndex < TrafficSystemPiece.m_primaryRightLaneNodes.Count; lNIndex++) { TrafficSystemNode lastNode = TrafficSystemPiece.m_primaryRightLaneNodes[lNIndex]; if(lastNode) { for(int cNIndex = 0; cNIndex < lastNode.m_connectedNodes.Count; cNIndex++) { TrafficSystemNode currentNode = lastNode.m_connectedNodes[cNIndex]; if(currentNode) { string driverSide = "Pink"; if(currentNode.m_driveSide == TrafficSystem.DriveSide.LEFT) driverSide = "Blue"; GUILayout.BeginVertical("box"); GUILayout.Label((lNIndex + 1) + " " + driverSide + " : " + currentNode.Parent); GUILayout.Space(1.0f); GUILayout.BeginHorizontal("box"); if(GUILayout.Button("Reveal ->")) { TrafficSystem.ClearCLRevealObjsFrom(); TrafficSystem.ClearCLRevealObjsTo(); TrafficSystem.AddToCLRevealObjsFrom(lastNode.transform); TrafficSystem.AddToCLRevealObjsTo(currentNode.transform); } if(GUILayout.Button("Remove")) { lastNode.m_connectedNodes.Remove(currentNode); EditorUtility.SetDirty(lastNode); TrafficSystem.ClearCLRevealObjsFrom(); TrafficSystem.ClearCLRevealObjsTo(); } if(GUILayout.Button("Switch Link")) { bool nodeFound = false; for(int cIndex = 0; cIndex < currentNode.m_connectedNodes.Count; cIndex++) { TrafficSystemNode nodeToSwitch = currentNode.m_connectedNodes[cIndex]; if(nodeToSwitch == lastNode) { nodeFound = true; break; } } if(!nodeFound) { if(lastNode) currentNode.m_connectedNodes.Add(lastNode); if(currentNode) lastNode.m_connectedNodes.Remove(currentNode); EditorUtility.SetDirty(currentNode); EditorUtility.SetDirty(lastNode); TrafficSystem.ClearCLRevealObjsFrom(); TrafficSystem.ClearCLRevealObjsTo(); } } GUILayout.EndHorizontal(); connections++; GUILayout.EndVertical(); } } for(int cIndex = 0; cIndex < lastNode.m_connectedChangeLaneNodes.Count; cIndex++) { if(lastNode.m_connectedChangeLaneNodes[cIndex] && lastNode.m_connectedChangeLaneNodes[cIndex].Parent != TrafficSystemPiece) { string driverSide = "Pink"; if(lastNode.m_connectedChangeLaneNodes[cIndex].m_driveSide == TrafficSystem.DriveSide.LEFT) driverSide = "Blue"; GUILayout.BeginVertical("box"); GUILayout.Label( "ID: " + lastNode.m_connectedChangeLaneNodes[cIndex].m_changeLaneID + " " + driverSide + " CL Inbound : " + lastNode.m_connectedChangeLaneNodes[cIndex].Parent); GUILayout.Space(1.0f); GUILayout.BeginHorizontal("box"); if(GUILayout.Button("Reveal ->")) { TrafficSystem.ClearCLRevealObjsFrom(); TrafficSystem.ClearCLRevealObjsTo(); TrafficSystem.AddToCLRevealObjsFrom(lastNode.transform); TrafficSystem.AddToCLRevealObjsTo(lastNode.m_connectedChangeLaneNodes[cIndex].transform); } if(GUILayout.Button("Remove")) { lastNode.RemoveChangeLangeNode(lastNode.m_connectedChangeLaneNodes[cIndex]); EditorUtility.SetDirty(lastNode); TrafficSystem.ClearCLRevealObjsFrom(); TrafficSystem.ClearCLRevealObjsTo(); } GUILayout.EndHorizontal(); GUILayout.EndVertical(); } } } } if(connections <= 0) GUILayout.Label("No Connections ..."); GUILayout.Space(10.0f); GUILayout.Label("Change Lane Nodes:"); connections = 0; for(int lNIndex = 0; lNIndex < TrafficSystemPiece.m_leftLaneChangeNodes.Count; lNIndex++) { TrafficSystemNode lastNode = TrafficSystemPiece.m_leftLaneChangeNodes[lNIndex]; if(lastNode) { for(int cNIndex = 0; cNIndex < lastNode.m_connectedChangeLaneNodes.Count; cNIndex++) { TrafficSystemNode currentNode = lastNode.m_connectedChangeLaneNodes[cNIndex]; if(currentNode) { string driverSide = "Pink"; if(currentNode.m_driveSide == TrafficSystem.DriveSide.LEFT) driverSide = "Blue"; GUILayout.BeginVertical("box"); GUILayout.Label((lNIndex + 1) + " " + driverSide + " CL Outbound : " + currentNode.Parent); GUILayout.Space(1.0f); GUILayout.BeginHorizontal("box"); if(GUILayout.Button("Reveal ->")) { TrafficSystem.ClearCLRevealObjsFrom(); TrafficSystem.ClearCLRevealObjsTo(); TrafficSystem.AddToCLRevealObjsFrom(lastNode.transform); TrafficSystem.AddToCLRevealObjsTo(currentNode.transform); } if(GUILayout.Button("Remove")) { lastNode.m_connectedChangeLaneNodes.Remove(currentNode); EditorUtility.SetDirty(lastNode); TrafficSystem.ClearCLRevealObjsFrom(); TrafficSystem.ClearCLRevealObjsTo(); } GUILayout.EndHorizontal(); connections++; } } /* for(int cIndex = 0; cIndex < lastNode.m_connectedChangeLaneNodes.Count; cIndex++) { if(lastNode.m_connectedChangeLaneNodes[cIndex]) { GUILayout.BeginVertical("box"); GUILayout.Label( "ID: " + lastNode.m_connectedChangeLaneNodes[cIndex].m_changeLaneID + " Blue CL Local Outbound : " + lastNode.m_connectedChangeLaneNodes[cIndex].Parent); GUILayout.Space(1.0f); GUILayout.BeginHorizontal("box"); if(GUILayout.Button("Reveal ->")) { TrafficSystem.ClearCLRevealObjsFrom(); TrafficSystem.ClearCLRevealObjsTo(); TrafficSystem.AddToCLRevealObjsFrom(lastNode.transform); TrafficSystem.AddToCLRevealObjsTo(lastNode.m_connectedChangeLaneNodes[cIndex].transform); } if(GUILayout.Button("Remove")) { lastNode.RemoveChangeLangeNode(lastNode.m_connectedChangeLaneNodes[cIndex]); EditorUtility.SetDirty(lastNode); } GUILayout.EndHorizontal(); GUILayout.EndVertical(); connections++; } } */ } } for(int lNIndex = 0; lNIndex < TrafficSystemPiece.m_rightLaneChangeNodes.Count; lNIndex++) { TrafficSystemNode lastNode = TrafficSystemPiece.m_rightLaneChangeNodes[lNIndex]; if(lastNode) { for(int cNIndex = 0; cNIndex < lastNode.m_connectedChangeLaneNodes.Count; cNIndex++) { TrafficSystemNode currentNode = lastNode.m_connectedChangeLaneNodes[cNIndex]; if(currentNode) { string driverSide = "Pink"; if(currentNode.m_driveSide == TrafficSystem.DriveSide.LEFT) driverSide = "Blue"; GUILayout.BeginVertical("box"); GUILayout.Label((lNIndex + 1) + " " + driverSide + " CL Outbound : " + currentNode.Parent); GUILayout.Space(1.0f); GUILayout.BeginHorizontal("box"); if(GUILayout.Button("Reveal ->")) { TrafficSystem.ClearCLRevealObjsFrom(); TrafficSystem.ClearCLRevealObjsTo(); TrafficSystem.AddToCLRevealObjsFrom(lastNode.transform); TrafficSystem.AddToCLRevealObjsTo(currentNode.transform); } if(GUILayout.Button("Remove")) { lastNode.m_connectedChangeLaneNodes.Remove(currentNode); EditorUtility.SetDirty(lastNode); TrafficSystem.ClearCLRevealObjsFrom(); TrafficSystem.ClearCLRevealObjsTo(); } GUILayout.EndHorizontal(); GUILayout.EndVertical(); connections++; } } /* for(int cIndex = 0; cIndex < lastNode.m_connectedChangeLaneNodes.Count; cIndex++) { if(lastNode.m_connectedChangeLaneNodes[cIndex]) { GUILayout.BeginVertical("box"); GUILayout.Label( "ID: " + lastNode.m_connectedChangeLaneNodes[cIndex].m_changeLaneID + " Pink CL Local Outbound : " + lastNode.m_connectedChangeLaneNodes[cIndex].Parent); GUILayout.Space(1.0f); GUILayout.BeginHorizontal("box"); if(GUILayout.Button("Reveal ->")) { TrafficSystem.ClearCLRevealObjsFrom(); TrafficSystem.ClearCLRevealObjsTo(); TrafficSystem.AddToCLRevealObjsFrom(lastNode.transform); TrafficSystem.AddToCLRevealObjsTo(lastNode.m_connectedChangeLaneNodes[cIndex].transform); } if(GUILayout.Button("Remove")) { lastNode.RemoveChangeLangeNode(lastNode.m_connectedChangeLaneNodes[cIndex]); EditorUtility.SetDirty(lastNode); } GUILayout.EndHorizontal(); GUILayout.EndVertical(); connections++; } } */ } } if(connections <= 0) GUILayout.Label("No Connections ..."); // GUILayout.Space(10.0f); // // GUILayout.Label("Left Lanes:"); // // for(int lIndex = 0; lIndex < TrafficSystemPiece.m_leftLanes.Count; lIndex++) // { // TrafficSystemLane lane = TrafficSystemPiece.m_leftLanes[lIndex]; // for(int pIndex = 0; pIndex < lane.m_path.Count; pIndex++) // { // Vector3 pos = lane.m_path[pIndex]; // GUILayout.Label((lIndex + 1) + " Lane " + lIndex + ", Pos " + pIndex + ": " + pos); // } // } // // GUILayout.Space(10.0f); // // GUILayout.Label("Right Lanes:"); // // for(int lIndex = 0; lIndex < TrafficSystemPiece.m_rightLanes.Count; lIndex++) // { // TrafficSystemLane lane = TrafficSystemPiece.m_rightLanes[lIndex]; // for(int pIndex = 0; pIndex < lane.m_path.Count; pIndex++) // { // Vector3 pos = lane.m_path[pIndex]; // GUILayout.Label((lIndex + 1) + " Lane " + lIndex + ", Pos " + pIndex + ": " + pos); // } // } } GUILayout.Space(20.0f); GUILayout.BeginHorizontal("box"); if(TrafficSystem && TrafficSystem.TextureIconEdit) { if(GUILayout.Button(TrafficSystem.TextureIconEdit)) { if (TrafficSystem && TrafficSystem.Instance) { TrafficSystem.Instance.SetTrafficSystemPiece(TrafficSystem.TrafficSystemTooltip.EDIT, TrafficSystemPiece ); TrafficSystem.Instance.ShowTooltip( TrafficSystem.TrafficSystemTooltip.EDIT, true ); Selection.activeObject = TrafficSystem.Instance; } } } else { if(GUILayout.Button("Select as Edit")) { if (TrafficSystem && TrafficSystem.Instance) { TrafficSystem.Instance.SetTrafficSystemPiece(TrafficSystem.TrafficSystemTooltip.EDIT, TrafficSystemPiece ); TrafficSystem.Instance.ShowTooltip( TrafficSystem.TrafficSystemTooltip.EDIT, true ); Selection.activeObject = TrafficSystem.Instance; } } } if(TrafficSystem && TrafficSystem.TextureIconAnchor) { if(GUILayout.Button(TrafficSystem.TextureIconAnchor)) { if (TrafficSystem && TrafficSystem.Instance) { TrafficSystem.Instance.SetTrafficSystemPiece(TrafficSystem.TrafficSystemTooltip.ANCHOR, TrafficSystemPiece ); TrafficSystem.Instance.ShowTooltip( TrafficSystem.TrafficSystemTooltip.ANCHOR, true ); Selection.activeObject = TrafficSystem.Instance; } } } else { if(GUILayout.Button("Select as Anchor")) { if (TrafficSystem && TrafficSystem.Instance) { TrafficSystem.Instance.SetTrafficSystemPiece(TrafficSystem.TrafficSystemTooltip.ANCHOR, TrafficSystemPiece ); TrafficSystem.Instance.ShowTooltip( TrafficSystem.TrafficSystemTooltip.ANCHOR, true ); Selection.activeObject = TrafficSystem.Instance; } } } GUILayout.EndHorizontal(); if(TrafficSystemPiece.transform.childCount > 0 && TrafficSystem) { GUILayout.BeginHorizontal("box"); for(int cIndex = 0; cIndex < TrafficSystemPiece.transform.childCount; cIndex++) { if(TrafficSystemPiece.transform.GetChild(cIndex).GetComponent<TrafficSystemPiece>() && !TrafficSystemPiece.transform.GetChild(cIndex).GetComponent<TrafficSystemPiece>().m_ignoreTrafficSystemEditor) { if(TrafficSystem && TrafficSystem.TextureIconEditRevealSmall) { if(GUILayout.Button(TrafficSystem.TextureIconEditRevealSmall)) { if (TrafficSystem.Instance) { TrafficSystem.Instance.PositionTooltip(TrafficSystem.TrafficSystemTooltip.EDIT, TrafficSystemPiece.transform.GetChild(cIndex).GetComponent<TrafficSystemPiece>() ); TrafficSystem.Instance.ShowTooltip( TrafficSystem.TrafficSystemTooltip.EDIT, true ); } } } else { if(GUILayout.Button("Reveal E" + cIndex)) { if (TrafficSystem && TrafficSystem.Instance) { //TrafficSystem.Instance.SetTrafficSystemPiece(TrafficSystem.TrafficSystemTooltip.EDIT, TrafficSystemPiece ); TrafficSystem.Instance.PositionTooltip(TrafficSystem.TrafficSystemTooltip.EDIT, TrafficSystemPiece.transform.GetChild(cIndex).GetComponent<TrafficSystemPiece>() ); TrafficSystem.Instance.ShowTooltip( TrafficSystem.TrafficSystemTooltip.EDIT, true ); } } } if(TrafficSystem && TrafficSystem.TextureIconAnchorRevealSmall) { if(GUILayout.Button(TrafficSystem.TextureIconAnchorRevealSmall)) { if (TrafficSystem.Instance) { TrafficSystem.Instance.PositionTooltip(TrafficSystem.TrafficSystemTooltip.ANCHOR, TrafficSystemPiece.transform.GetChild(cIndex).GetComponent<TrafficSystemPiece>() ); TrafficSystem.Instance.ShowTooltip( TrafficSystem.TrafficSystemTooltip.ANCHOR, true ); } } } else { if(GUILayout.Button("Reveal A" + cIndex)) { if (TrafficSystem && TrafficSystem.Instance) { //TrafficSystem.Instance.SetTrafficSystemPiece(TrafficSystem.TrafficSystemTooltip.ANCHOR, TrafficSystemPiece ); TrafficSystem.Instance.PositionTooltip(TrafficSystem.TrafficSystemTooltip.ANCHOR, TrafficSystemPiece.transform.GetChild(cIndex).GetComponent<TrafficSystemPiece>() ); TrafficSystem.Instance.ShowTooltip( TrafficSystem.TrafficSystemTooltip.ANCHOR, true ); } } } } } GUILayout.EndHorizontal(); GUILayout.BeginHorizontal("box"); for(int cIndex = 0; cIndex < TrafficSystemPiece.transform.childCount; cIndex++) { if(TrafficSystemPiece.transform.GetChild(cIndex).GetComponent<TrafficSystemPiece>() && !TrafficSystemPiece.transform.GetChild(cIndex).GetComponent<TrafficSystemPiece>().m_ignoreTrafficSystemEditor) { if(TrafficSystem && TrafficSystem.TextureIconEditSmall) { if(GUILayout.Button(TrafficSystem.TextureIconEditSmall)) { if (TrafficSystem.Instance) { TrafficSystem.Instance.SetTrafficSystemPiece(TrafficSystem.TrafficSystemTooltip.EDIT, TrafficSystemPiece.transform.GetChild(cIndex).GetComponent<TrafficSystemPiece>() ); TrafficSystem.Instance.ShowTooltip( TrafficSystem.TrafficSystemTooltip.EDIT, true ); Selection.activeObject = TrafficSystem.Instance; } } } else { if(GUILayout.Button("Select E" + cIndex)) { if (TrafficSystem && TrafficSystem.Instance) { TrafficSystem.Instance.SetTrafficSystemPiece(TrafficSystem.TrafficSystemTooltip.EDIT, TrafficSystemPiece.transform.GetChild(cIndex).GetComponent<TrafficSystemPiece>() ); TrafficSystem.Instance.ShowTooltip( TrafficSystem.TrafficSystemTooltip.EDIT, true ); Selection.activeObject = TrafficSystem.Instance; } } } if(TrafficSystem && TrafficSystem.TextureIconAnchorSmall) { if(GUILayout.Button(TrafficSystem.TextureIconAnchorSmall)) { if (TrafficSystem.Instance) { TrafficSystem.Instance.SetTrafficSystemPiece(TrafficSystem.TrafficSystemTooltip.ANCHOR, TrafficSystemPiece.transform.GetChild(cIndex).GetComponent<TrafficSystemPiece>() ); TrafficSystem.Instance.ShowTooltip( TrafficSystem.TrafficSystemTooltip.ANCHOR, true ); Selection.activeObject = TrafficSystem.Instance; } } } else { if(GUILayout.Button("Select A" + cIndex)) { if (TrafficSystem && TrafficSystem.Instance) { TrafficSystem.Instance.SetTrafficSystemPiece(TrafficSystem.TrafficSystemTooltip.ANCHOR, TrafficSystemPiece.transform.GetChild(cIndex).GetComponent<TrafficSystemPiece>() ); TrafficSystem.Instance.ShowTooltip( TrafficSystem.TrafficSystemTooltip.ANCHOR, true ); Selection.activeObject = TrafficSystem.Instance; } } } } } GUILayout.EndHorizontal(); } // Selection.activeTransform = GameObject.Find ("GameObject").transform; GUILayout.BeginHorizontal("box"); if(GUILayout.Button("Go to Traffic System")) { if (TrafficSystem && TrafficSystem.Instance) Selection.activeObject = TrafficSystem.Instance; } GUILayout.EndHorizontal(); GUILayout.BeginHorizontal("box"); if(GUILayout.Button("Rot Y (" + m_rotateDegrees + ")")) { TrafficSystemPiece.transform.Rotate(Vector3.up * m_rotateDegrees); } if(GUILayout.Button("Rot Z (" + (m_rotateDegrees * 2) + ")")) { TrafficSystemPiece.transform.Rotate(Vector3.forward * (m_rotateDegrees * 2)); } if(GUILayout.Button("Flip (X)")) { Vector3 scale = TrafficSystemPiece.transform.localScale; scale.x = -scale.x; TrafficSystemPiece.transform.localScale = scale; } if(GUILayout.Button("Flip (Z)")) { Vector3 scale = TrafficSystemPiece.transform.localScale; scale.z = -scale.z; TrafficSystemPiece.transform.localScale = scale; } GUILayout.EndHorizontal(); GUILayout.BeginHorizontal("box"); if(GUILayout.Button("UnLink All")) { for(int lNIndex = 0; lNIndex < TrafficSystemPiece.m_primaryLeftLaneNodes.Count; lNIndex++) { TrafficSystemNode lastNode = TrafficSystemPiece.m_primaryLeftLaneNodes[lNIndex]; lastNode.m_connectedNodes.Clear(); EditorUtility.SetDirty(lastNode); } for(int lNIndex = 0; lNIndex < TrafficSystemPiece.m_secondaryLeftLaneNodes.Count; lNIndex++) { TrafficSystemNode lastNode = TrafficSystemPiece.m_secondaryLeftLaneNodes[lNIndex]; lastNode.m_connectedNodes.Clear(); EditorUtility.SetDirty(lastNode); } for(int lNIndex = 0; lNIndex < TrafficSystemPiece.m_primaryRightLaneNodes.Count; lNIndex++) { TrafficSystemNode lastNode = TrafficSystemPiece.m_primaryRightLaneNodes[lNIndex]; lastNode.m_connectedNodes.Clear(); EditorUtility.SetDirty(lastNode); } for(int lNIndex = 0; lNIndex < TrafficSystemPiece.m_secondaryRightLaneNodes.Count; lNIndex++) { TrafficSystemNode lastNode = TrafficSystemPiece.m_secondaryRightLaneNodes[lNIndex]; lastNode.m_connectedNodes.Clear(); EditorUtility.SetDirty(lastNode); } RefreshEditor( false, true ); } if(GUILayout.Button("UnLink Left (Blue)")) { for(int lNIndex = 0; lNIndex < TrafficSystemPiece.m_primaryLeftLaneNodes.Count; lNIndex++) { TrafficSystemNode lastNode = TrafficSystemPiece.m_primaryLeftLaneNodes[lNIndex]; lastNode.m_connectedNodes.Clear(); EditorUtility.SetDirty(lastNode); } for(int lNIndex = 0; lNIndex < TrafficSystemPiece.m_secondaryLeftLaneNodes.Count; lNIndex++) { TrafficSystemNode lastNode = TrafficSystemPiece.m_secondaryLeftLaneNodes[lNIndex]; lastNode.m_connectedNodes.Clear(); EditorUtility.SetDirty(lastNode); } RefreshEditor( false, true ); } if(GUILayout.Button("UnLink Right (Pink)")) { for(int lNIndex = 0; lNIndex < TrafficSystemPiece.m_primaryRightLaneNodes.Count; lNIndex++) { TrafficSystemNode lastNode = TrafficSystemPiece.m_primaryRightLaneNodes[lNIndex]; lastNode.m_connectedNodes.Clear(); EditorUtility.SetDirty(lastNode); } for(int lNIndex = 0; lNIndex < TrafficSystemPiece.m_secondaryRightLaneNodes.Count; lNIndex++) { TrafficSystemNode lastNode = TrafficSystemPiece.m_secondaryRightLaneNodes[lNIndex]; lastNode.m_connectedNodes.Clear(); EditorUtility.SetDirty(lastNode); } RefreshEditor( false, true ); } GUILayout.EndHorizontal(); GUILayout.BeginHorizontal("box"); if(GUILayout.Button("Link Local Primary (B to P)")) { CreateConnections( TrafficSystemPiece.m_primaryRightLaneNodes, TrafficSystemPiece.m_primaryLeftLaneNodes ); // CreateConnections( TrafficSystemPiece.m_secondaryRightLaneNodes, TrafficSystemPiece.m_primaryLeftLaneNodes ); } if(GUILayout.Button("Link Local Primary (P to B)")) { CreateConnections( TrafficSystemPiece.m_primaryLeftLaneNodes, TrafficSystemPiece.m_primaryRightLaneNodes ); // CreateConnections( TrafficSystemPiece.m_secondaryLeftLaneNodes, TrafficSystemPiece.m_primaryRightLaneNodes ); } GUILayout.EndHorizontal(); for(int cIndex = 0; cIndex < TrafficSystemPiece.m_primaryLeftLaneNodes.Count; cIndex++) { TrafficSystemNode node = TrafficSystemPiece.m_primaryLeftLaneNodes[cIndex]; if(node) { GUILayout.BeginHorizontal("box"); GUILayout.Label("PR Blue - Lane " + node.m_lane + ": "); if(GUILayout.Button("Switch Driver Side")) { if(node.m_driveSide == TrafficSystem.DriveSide.LEFT) { ChangeNodeMaterial( node, TrafficSystem.DriveSide.RIGHT ); } else { ChangeNodeMaterial( node, TrafficSystem.DriveSide.LEFT ); } EditorUtility.SetDirty(node); RefreshEditor(); } GUILayout.EndHorizontal(); } } for(int cIndex = 0; cIndex < TrafficSystemPiece.m_primaryRightLaneNodes.Count; cIndex++) { TrafficSystemNode node = TrafficSystemPiece.m_primaryRightLaneNodes[cIndex]; if(node) { GUILayout.BeginHorizontal("box"); GUILayout.Label("PR Pink - Lane " + node.m_lane + ": "); if(GUILayout.Button("Switch Driver Side")) { if(node.m_driveSide == TrafficSystem.DriveSide.LEFT) { ChangeNodeMaterial( node, TrafficSystem.DriveSide.RIGHT ); } else { ChangeNodeMaterial( node, TrafficSystem.DriveSide.LEFT ); } EditorUtility.SetDirty(node); RefreshEditor(); } GUILayout.EndHorizontal(); } } for(int cIndex = 0; cIndex < TrafficSystemPiece.m_leftLaneChangeNodes.Count; cIndex++) { TrafficSystemNode node = TrafficSystemPiece.m_leftLaneChangeNodes[cIndex]; if(node && node.m_connectedLocalNode) { GUILayout.BeginHorizontal("box"); GUILayout.Label("CL Blue " + node.m_changeLaneID + ": "); if(GUILayout.Button("Switch Dir")) { node.m_connectedLocalNode.m_connectedLocalNode = node; node.m_connectedLocalNode.m_isInbound = true; node.m_isInbound = false; EditorUtility.SetDirty(node.m_connectedLocalNode); node.m_connectedLocalNode = null; //RefreshEditor(); EditorUtility.SetDirty(node); } if(GUILayout.Button("Switch Driver Side (" + node.m_driveSide + ")")) { if(node.m_driveSide == TrafficSystem.DriveSide.LEFT) { ChangeNodeMaterial( node, TrafficSystem.DriveSide.RIGHT ); ChangeNodeMaterial( node.m_connectedLocalNode, TrafficSystem.DriveSide.RIGHT ); } else { ChangeNodeMaterial( node, TrafficSystem.DriveSide.LEFT ); ChangeNodeMaterial( node.m_connectedLocalNode, TrafficSystem.DriveSide.LEFT ); } EditorUtility.SetDirty(node.m_connectedLocalNode); EditorUtility.SetDirty(node); RefreshEditor(); } GUILayout.EndHorizontal(); } } for(int cIndex = 0; cIndex < TrafficSystemPiece.m_rightLaneChangeNodes.Count; cIndex++) { TrafficSystemNode node = TrafficSystemPiece.m_rightLaneChangeNodes[cIndex]; if(node && node.m_connectedLocalNode) { GUILayout.BeginHorizontal("box"); GUILayout.Label("CL Pink " + node.m_changeLaneID + ": "); if(GUILayout.Button("Switch Dir")) { node.m_connectedLocalNode.m_connectedLocalNode = node;; node.m_connectedLocalNode.m_isInbound = true; node.m_isInbound = false; EditorUtility.SetDirty(node.m_connectedLocalNode); node.m_connectedLocalNode = null; //RefreshEditor(); EditorUtility.SetDirty(node); } if(GUILayout.Button("Switch Driver Side (" + node.m_driveSide + ")")) { if(node.m_driveSide == TrafficSystem.DriveSide.LEFT) { ChangeNodeMaterial( node, TrafficSystem.DriveSide.RIGHT ); ChangeNodeMaterial( node.m_connectedLocalNode, TrafficSystem.DriveSide.RIGHT ); } else { ChangeNodeMaterial( node, TrafficSystem.DriveSide.LEFT ); ChangeNodeMaterial( node.m_connectedLocalNode, TrafficSystem.DriveSide.LEFT ); } EditorUtility.SetDirty(node.m_connectedLocalNode); EditorUtility.SetDirty(node); RefreshEditor(); } GUILayout.EndHorizontal(); } } // GUILayout.BeginHorizontal("box"); // if(GUILayout.Button("Connect Lane Change (Blue)")) // { // // } // if(GUILayout.Button("Connect Lane Change (Pink)")) // { // } // GUILayout.EndHorizontal(); GUILayout.BeginHorizontal("box"); if(GUILayout.Button("Process Children")) { RefreshEditor(); } else { // GUILayout.Label("Traffic Node Count: " + TrafficSystemPiece.m_nodes.Count); // // for(int nIndex = 0; nIndex < TrafficSystemPiece.m_nodes.Count; nIndex++) // { // if(TrafficSystemPiece.m_nodes[nIndex]) // GUILayout.Label(TrafficSystemPiece.m_nodes[nIndex].name); // else // { // TrafficSystemPiece.FindAllTrafficNodes(); // break; // } // } } GUILayout.EndHorizontal(); /* if((TrafficSystemPiece.m_roadModelsOriginal != null || TrafficSystemPiece.m_roadModelsVersion2 != null || TrafficSystemPiece.m_roadModelsVersion2Mobile != null )) { GUILayout.BeginHorizontal("box"); if(TrafficSystemPiece.m_roadModelsOriginal != null) { if(GUILayout.Button("Original")) TrafficSystemPiece.ProcessRoadQuality(TrafficSystem.RoadQuality.ORIGINAL); } if(TrafficSystemPiece.m_roadModelsVersion2 != null) { if(GUILayout.Button("V2 HD")) TrafficSystemPiece.ProcessRoadQuality(TrafficSystem.RoadQuality.VERSION_2); } if(TrafficSystemPiece.m_roadModelsVersion2Mobile != null) { if(GUILayout.Button("V2 Mobile")) TrafficSystemPiece.ProcessRoadQuality(TrafficSystem.RoadQuality.VERSION_2_MOBILE); } if(TrafficSystemPiece.m_footpaths != null && TrafficSystemPiece.m_footpaths.Length > 0) if(GUILayout.Button("Footpaths On/Off")) TrafficSystemPiece.ProcessFootpaths(); GUILayout.EndHorizontal(); } */ GUILayout.BeginHorizontal("box"); if(GUILayout.Button("Delete")) DestroyImmediate (TrafficSystemPiece.gameObject); GUILayout.EndHorizontal(); }
void OnSceneGUI() { if(!TrafficSystem) { GameObject obj = GameObject.Find ("Traffic System"); if(obj && obj.GetComponent<TrafficSystem>()) TrafficSystem = obj.GetComponent<TrafficSystem>(); } if(TrafficSystem && TrafficSystem.Instance) { if(TrafficSystem.Instance.TooltipAnchor) TrafficSystem.Instance.TooltipAnchor.transform.Rotate(Vector3.up, 1.0f); if(TrafficSystem.Instance.TooltipEdit) TrafficSystem.Instance.TooltipEdit.transform.Rotate(Vector3.up, 1.0f); } for(int cIndex = 0; cIndex < TrafficSystemPiece.m_leftLaneChangeNodes.Count; cIndex++) { TrafficSystemNode node = TrafficSystemPiece.m_leftLaneChangeNodes[cIndex]; if(node) { string str = "Inbound"; if(!node.m_isInbound) str = "Outbound"; Handles.Label(node.transform.position + (Vector3.up * 0.5f), "CL " + node.m_changeLaneID.ToString() + " ( Blue / " + node.m_driveSide + " - " + str + " )"); } } for(int cIndex = 0; cIndex < TrafficSystemPiece.m_rightLaneChangeNodes.Count; cIndex++) { TrafficSystemNode node = TrafficSystemPiece.m_rightLaneChangeNodes[cIndex]; if(node) { string str = "Inbound"; if(!node.m_isInbound) str = "Outbound"; Handles.Label(node.transform.position + (Vector3.up * 0.5f), "CL " + node.m_changeLaneID.ToString() + " ( Pink / " + node.m_driveSide + " - " + str + " )"); } } Handles.Label(TrafficSystemPiece.transform.position + (Vector3.up * 3.0f), TrafficSystemPiece.name); }
public void ProcessRoadQuality( TrafficSystem.RoadQuality a_roadQuality ) { switch(a_roadQuality) { case TrafficSystem.RoadQuality.ORIGINAL: { if(m_roadModelsOriginal.Length > 0) { ShowOriginalRoadModels(true); ShowVersion2RoadModels(false); ShowVersion2MobileRoadModels(false); } else { ShowVersion2RoadModels(false); ShowVersion2MobileRoadModels(true); } } break; case TrafficSystem.RoadQuality.VERSION_2: { if(m_roadModelsVersion2.Length > 0) { ShowOriginalRoadModels(false); ShowVersion2RoadModels(true); ShowVersion2MobileRoadModels(false); } else { ShowVersion2RoadModels(false); ShowVersion2MobileRoadModels(true); } } break; case TrafficSystem.RoadQuality.VERSION_2_MOBILE: { if(m_roadModelsVersion2Mobile.Length > 0) { ShowOriginalRoadModels(false); ShowVersion2RoadModels(false); ShowVersion2MobileRoadModels(true); } else { ShowVersion2RoadModels(true); ShowVersion2MobileRoadModels(false); } } break; } }
// [MenuItem ("Traffic System/Editor")] // public static void ShowEditor () // { // EditorWindow.GetWindow(typeof(TrafficSystemEditor)); // } void Awake() { TrafficSystem = (TrafficSystem)target; if(!TrafficSystem) Debug.LogError("Traffic System Error -> \"Traffic System\" script must be in the scene. It is missing. Drop in the \"Traffic System\" Prefab to fix this."); string sDataPath = Application.dataPath + "/Traffic System/Prefabs/Road Pieces/"; // get the system file paths of all the files in the asset folder string[] aFilePaths = Directory.GetFiles(sDataPath); // enumerate through the list of files loading the assets they represent and getting their type int count = 0; foreach (string sFilePath in aFilePaths) { if(sFilePath.Length <= 6) continue; string sAssetPath = sFilePath.Substring(sFilePath.Length - 6, 6); if(sAssetPath == "prefab") count++; } m_trafficSystemRoadPiecesLocation = new string[count]; count = 0; foreach (string sFilePath in aFilePaths) { if(sFilePath.Length <= 6) continue; string sAssetPath = sFilePath.Substring(sFilePath.Length - 6, 6); if(sAssetPath == "prefab") { string file = sFilePath.Substring(sDataPath.Length); m_trafficSystemRoadPiecesLocation[count] = m_dirRoadPieces + file; //Debug.Log(m_trafficSystemRoadPiecesLocation[count]); count++; } } if(TrafficSystem && Selection.activeGameObject == TrafficSystem.gameObject) { TrafficSystem.ClearCLRevealObjsFrom(); TrafficSystem.ClearCLRevealObjsTo(); } if(TrafficSystem) { TrafficSystem.TextureIconAnchor = AssetDatabase.LoadAssetAtPath("Assets/Traffic System/Textures/icon_anchor.png", typeof(Texture2D)) as Texture2D; TrafficSystem.TextureIconEdit = AssetDatabase.LoadAssetAtPath("Assets/Traffic System/Textures/icon_edit.png", typeof(Texture2D)) as Texture2D; } // m_trafficSystemRoadPiecesTextures.Clear(); // for(int aIndex = 0; aIndex < m_trafficSystemRoadPiecesNames.Length; aIndex++) // { // Texture2D image = AssetDatabase.LoadAssetAtPath("Assets/Traffic System/Textures/" + m_trafficSystemRoadPiecesNames[aIndex] + ".png", typeof(Texture2D)) as Texture2D; // m_trafficSystemRoadPiecesTextures.Add( image ); // } ProcessFolderChecks( true ); //CheckForAnchorNode(); }
void SetTrafficSystemPiece( TrafficSystem.TrafficSystemTooltip a_tooltip, TrafficSystemPiece a_obj ) { switch(a_tooltip) { case TrafficSystem.TrafficSystemTooltip.ANCHOR: { AnchorTrafficSystemPiece = a_obj; if(TrafficSystem.Instance && AnchorTrafficSystemPiece) { TrafficSystem.Instance.PositionTooltip(a_tooltip, AnchorTrafficSystemPiece); } } break; case TrafficSystem.TrafficSystemTooltip.EDIT: { EditTrafficSystemPiece = a_obj; if(TrafficSystem.Instance && EditTrafficSystemPiece) { TrafficSystem.Instance.PositionTooltip(a_tooltip, EditTrafficSystemPiece); } } break; } }
void CreateAllChangeLaneLinks( bool a_inbound, TrafficSystem.DriveSide a_side, int a_id, bool a_switch, bool a_revealOnly = false ) { TrafficSystem.ClearCLRevealObjsFrom(); TrafficSystem.ClearCLRevealObjsTo(); if(EditTrafficSystemPiece != AnchorTrafficSystemPiece) { if(a_inbound) { if(a_side == TrafficSystem.DriveSide.LEFT) { if(a_switch) CreateCLInBoundConnections( AnchorTrafficSystemPiece.m_primaryRightLaneNodes, EditTrafficSystemPiece.m_leftLaneChangeNodes, a_id, a_revealOnly ); else CreateCLInBoundConnections( AnchorTrafficSystemPiece.m_primaryLeftLaneNodes, EditTrafficSystemPiece.m_leftLaneChangeNodes, a_id, a_revealOnly ); } else { if(a_switch) CreateCLInBoundConnections( AnchorTrafficSystemPiece.m_primaryLeftLaneNodes, EditTrafficSystemPiece.m_rightLaneChangeNodes, a_id, a_revealOnly ); else CreateCLInBoundConnections( AnchorTrafficSystemPiece.m_primaryRightLaneNodes, EditTrafficSystemPiece.m_rightLaneChangeNodes, a_id, a_revealOnly ); } } else { if(a_side == TrafficSystem.DriveSide.LEFT) { if(a_switch) CreateCLOutBoundConnections( AnchorTrafficSystemPiece.m_leftLaneChangeNodes, EditTrafficSystemPiece.m_primaryLeftLaneNodes, a_id, a_revealOnly ); else CreateCLOutBoundConnections( AnchorTrafficSystemPiece.m_leftLaneChangeNodes, EditTrafficSystemPiece.m_primaryRightLaneNodes, a_id, a_revealOnly ); } else { if(a_switch) CreateCLOutBoundConnections( AnchorTrafficSystemPiece.m_rightLaneChangeNodes, EditTrafficSystemPiece.m_primaryRightLaneNodes, a_id, a_revealOnly ); else CreateCLOutBoundConnections( AnchorTrafficSystemPiece.m_rightLaneChangeNodes, EditTrafficSystemPiece.m_primaryLeftLaneNodes, a_id, a_revealOnly ); } } } }