private bool LeftArrowLightMode(int segmentId, float lightWidth, bool hasRightSegment, bool hasForwardSegment, Vector3 screenPos, float pedestrianWidth, float zoom, float lightHeight, CustomSegmentLight segmentDict, bool hoveredSegment) { SetAlpha(segmentId, 3); var offsetLight = lightWidth; if (hasRightSegment) { offsetLight += lightWidth; } if (hasForwardSegment) { offsetLight += lightWidth; } var myRect4 = new Rect(screenPos.x - lightWidth / 2 - offsetLight - pedestrianWidth + 5f * zoom, screenPos.y - lightHeight / 2, lightWidth, lightHeight); switch (segmentDict.LightLeft) { case RoadBaseAI.TrafficLightState.Green: GUI.DrawTexture(myRect4, TrafficLightToolTextureResources.GreenLightLeftTexture2D); break; case RoadBaseAI.TrafficLightState.Red: GUI.DrawTexture(myRect4, TrafficLightToolTextureResources.RedLightLeftTexture2D); break; } if (!myRect4.Contains(Event.current.mousePosition)) { return(hoveredSegment); } _hoveredButton[0] = segmentId; _hoveredButton[1] = 3; if (!MainTool.CheckClicked()) { return(true); } segmentDict.ChangeLightLeft(); if (!hasForwardSegment) { segmentDict.ChangeLightMain(); } return(true); }
public object SetNodeState(int nodeIndex, int segIndex, RoadBaseAI.TrafficLightState vehicleState, RoadBaseAI.TrafficLightState pedestrianState) { ushort nodeId = SelectNodeId(nodeIndex); ushort segId = NetManager.instance.m_nodes.m_buffer[nodeId].GetSegment(segIndex); CustomSegmentLights csls = CustomTrafficLights.GetSegmentLights(nodeId, segId); if (csls != null) { foreach (ExtVehicleType evt in csls.VehicleTypes) { CustomSegmentLight csl = csls.GetCustomLight(evt); if (csl != null) { RoadBaseAI.TrafficLightState currentState = csl.GetVisualLightState(); if (currentState != vehicleState) { if (vehicleState != csl.GetLightMain()) { csl.ChangeLightMain(); } if (vehicleState != csl.GetLightLeft()) { csl.ChangeLightLeft(); } if (vehicleState != csl.GetLightRight()) { csl.ChangeLightRight(); } } } } } else { return(false); } return(true); }
private bool LeftForwardRManualSegmentLightMode(bool hasLeftSegment, int segmentId, Vector3 screenPos, float lightWidth, float pedestrianWidth, float zoom, float lightHeight, CustomSegmentLight segmentDict, bool hoveredSegment, bool hasForwardSegment, bool hasRightSegment) { if (hasLeftSegment) { // left arrow light SetAlpha(segmentId, 3); var myRect4 = new Rect(screenPos.x - lightWidth / 2 - lightWidth * 2 - pedestrianWidth + 5f * zoom, screenPos.y - lightHeight / 2, lightWidth, lightHeight); switch (segmentDict.LightLeft) { case RoadBaseAI.TrafficLightState.Green: GUI.DrawTexture(myRect4, TrafficLightToolTextureResources.GreenLightLeftTexture2D); break; case RoadBaseAI.TrafficLightState.Red: GUI.DrawTexture(myRect4, TrafficLightToolTextureResources.RedLightLeftTexture2D); break; } if (myRect4.Contains(Event.current.mousePosition)) { _hoveredButton[0] = segmentId; _hoveredButton[1] = 3; hoveredSegment = true; if (MainTool.CheckClicked()) { segmentDict.ChangeLightLeft(); } } } // forward-right arrow light SetAlpha(segmentId, 4); var myRect5 = new Rect(screenPos.x - lightWidth / 2 - lightWidth - pedestrianWidth + 5f * zoom, screenPos.y - lightHeight / 2, lightWidth, lightHeight); if (hasForwardSegment && hasRightSegment) { switch (segmentDict.LightMain) { case RoadBaseAI.TrafficLightState.Green: GUI.DrawTexture(myRect5, TrafficLightToolTextureResources.GreenLightForwardRightTexture2D); break; case RoadBaseAI.TrafficLightState.Red: GUI.DrawTexture(myRect5, TrafficLightToolTextureResources.RedLightForwardRightTexture2D); break; } } else if (!hasRightSegment) { switch (segmentDict.LightMain) { case RoadBaseAI.TrafficLightState.Green: GUI.DrawTexture(myRect5, TrafficLightToolTextureResources.GreenLightStraightTexture2D); break; case RoadBaseAI.TrafficLightState.Red: GUI.DrawTexture(myRect5, TrafficLightToolTextureResources.RedLightStraightTexture2D); break; } } else { switch (segmentDict.LightMain) { case RoadBaseAI.TrafficLightState.Green: GUI.DrawTexture(myRect5, TrafficLightToolTextureResources.GreenLightRightTexture2D); break; case RoadBaseAI.TrafficLightState.Red: GUI.DrawTexture(myRect5, TrafficLightToolTextureResources.RedLightRightTexture2D); break; } } if (!myRect5.Contains(Event.current.mousePosition)) { return(hoveredSegment); } _hoveredButton[0] = segmentId; _hoveredButton[1] = 4; if (!MainTool.CheckClicked()) { return(true); } segmentDict.ChangeLightMain(); return(true); }