public override void RenderOverlay(RenderManager.CameraInfo cameraInfo, Color toolColor, Color despawnColor) { if (!isValid) { return; } ushort node = id.NetNode; NetManager netManager = NetManager.instance; NetInfo netInfo = nodeBuffer[node].Info; Vector3 position = nodeBuffer[node].m_position; // NON-STOCK CODE STARTS if (MoveItTool.IsCSUROffset(netInfo)) { var tmpDir = MoveItTool.GetNodeDir(node); tmpDir = new Vector3(tmpDir.z, tmpDir.y, -tmpDir.x); position = tmpDir * (netInfo.m_halfWidth + netInfo.m_pavementWidth) / 2f + position; } // NON-STOCK CODE ENDS Randomizer randomizer = new Randomizer(node); float alpha = 1f; NetTool.CheckOverlayAlpha(netInfo, ref alpha); toolColor.a *= alpha; // NON-STOCK CODE STARTS if (MoveItTool.IsCSUROffset(netInfo)) { RenderManager.instance.OverlayEffect.DrawCircle(cameraInfo, toolColor, position, Mathf.Max(6f, netInfo.m_halfWidth - netInfo.m_pavementWidth), -1f, 1280f, false, true); } else { RenderManager.instance.OverlayEffect.DrawCircle(cameraInfo, toolColor, position, Mathf.Max(6f, netInfo.m_halfWidth * 2f), -1f, 1280f, false, true); } // NON-STOCK CODE ENDS }
public override void RenderOverlay(RenderManager.CameraInfo cameraInfo, Color toolColor, Color despawnColor) { if (!isValid) { return; } ushort segment = id.NetSegment; NetInfo netInfo = segmentBuffer[segment].Info; ushort startNode = segmentBuffer[segment].m_startNode; ushort endNode = segmentBuffer[segment].m_endNode; bool smoothStart = ((nodeBuffer[startNode].m_flags & NetNode.Flags.Middle) != NetNode.Flags.None); bool smoothEnd = ((nodeBuffer[endNode].m_flags & NetNode.Flags.Middle) != NetNode.Flags.None); Bezier3 bezier; bezier.a = nodeBuffer[startNode].m_position; bezier.d = nodeBuffer[endNode].m_position; // NON-STOCK CODE STARTS if (MoveItTool.IsCSUROffset(netInfo)) { var tmpDir = segmentBuffer[segment].m_startDirection; if ((segmentBuffer[segment].m_flags & NetSegment.Flags.Invert) != NetSegment.Flags.None) { tmpDir = -tmpDir; } tmpDir = new Vector3(tmpDir.z, tmpDir.y, -tmpDir.x); bezier.a = tmpDir * (netInfo.m_halfWidth + netInfo.m_pavementWidth) / 2f + bezier.a; tmpDir = segmentBuffer[segment].m_endDirection; if ((segmentBuffer[segment].m_flags & NetSegment.Flags.Invert) != NetSegment.Flags.None) { tmpDir = -tmpDir; } tmpDir = new Vector3(-tmpDir.z, tmpDir.y, tmpDir.x); bezier.d = tmpDir * (netInfo.m_halfWidth + netInfo.m_pavementWidth) / 2f + bezier.d; } // NON-STOCK CODE ENDS NetSegment.CalculateMiddlePoints( bezier.a, segmentBuffer[segment].m_startDirection, bezier.d, segmentBuffer[segment].m_endDirection, smoothStart, smoothEnd, out bezier.b, out bezier.c); // NON-STOCK CODE STARTS if (MoveItTool.IsCSUROffset(netInfo)) { RenderManager.instance.OverlayEffect.DrawBezier(cameraInfo, toolColor, bezier, (netInfo.m_halfWidth - netInfo.m_pavementWidth) * 4f / 3f, 100000f, -100000f, -1f, 1280f, false, true); } else { RenderManager.instance.OverlayEffect.DrawBezier(cameraInfo, toolColor, bezier, netInfo.m_halfWidth * 4f / 3f, 100000f, -100000f, -1f, 1280f, false, true); } // NON-STOCK CODE ENDS Segment3 segment1, segment2; segment1.a = nodeBuffer[startNode].m_position; segment2.a = nodeBuffer[endNode].m_position; segment1.b = GetControlPoint(segment); segment2.b = segment1.b; // NON-STOCK CODE STARTS if (MoveItTool.IsCSUROffset(netInfo)) { var tmpDir = segmentBuffer[segment].m_startDirection; if ((segmentBuffer[segment].m_flags & NetSegment.Flags.Invert) != NetSegment.Flags.None) { tmpDir = -tmpDir; } tmpDir = new Vector3(tmpDir.z, tmpDir.y, -tmpDir.x); segment1.a = tmpDir * (netInfo.m_halfWidth + netInfo.m_pavementWidth) / 2f + segment1.a; tmpDir = segmentBuffer[segment].m_endDirection; if ((segmentBuffer[segment].m_flags & NetSegment.Flags.Invert) != NetSegment.Flags.None) { tmpDir = -tmpDir; } tmpDir = new Vector3(-tmpDir.z, tmpDir.y, tmpDir.x); segment2.a = tmpDir * (netInfo.m_halfWidth + netInfo.m_pavementWidth) / 2f + segment2.a; tmpDir = (segmentBuffer[segment].m_startDirection - segmentBuffer[segment].m_endDirection) / 2; if ((segmentBuffer[segment].m_flags & NetSegment.Flags.Invert) != NetSegment.Flags.None) { tmpDir = -tmpDir; } tmpDir = new Vector3(tmpDir.z, tmpDir.y, -tmpDir.x); segment1.b = tmpDir * (netInfo.m_halfWidth + netInfo.m_pavementWidth) / 2f + segment1.b; segment2.b = segment1.b; } // NON-STOCK CODE ENDS toolColor.a = toolColor.a / 2; RenderManager.instance.OverlayEffect.DrawSegment(cameraInfo, toolColor, segment1, segment2, 0, 10f, -1f, 1280f, false, true); // NON-STOCK CODE STARTS if (MoveItTool.IsCSUROffset(netInfo)) { RenderManager.instance.OverlayEffect.DrawCircle(cameraInfo, toolColor, segment1.b, (netInfo.m_halfWidth - netInfo.m_pavementWidth) / 2f, -1f, 1280f, false, true); } else { RenderManager.instance.OverlayEffect.DrawCircle(cameraInfo, toolColor, segment1.b, netInfo.m_halfWidth / 2f, -1f, 1280f, false, true); } // NON-STOCK CODE ENDS }