private bool LeftForwardRManualSegmentLightMode(bool hasLeftSegment, int segmentId, Vector3 screenPos, float lightWidth,
float pedestrianWidth, float zoom, float lightHeight, ManualSegmentLight 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 (Input.GetMouseButtonDown(0) && !_uiClickedSegment)
{
_uiClickedSegment = true;
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 (!Input.GetMouseButtonDown(0) || _uiClickedSegment)
return true;
_uiClickedSegment = true;
segmentDict.ChangeLightMain();
return true;
}