public override void RenderOverlay(RenderManager.CameraInfo cameraInfo) { if (currentNode == null) { return; } ToolManager.instance.m_drawCallData.m_overlayCalls++; OverlayEffect OverlayEffect = RenderManager.instance.OverlayEffect; // draw the cursor, that eats the remaining track OverlayEffect.DrawCircle(cameraInfo, Color.yellow, new Vector3(currentNode.MapX, 0, currentNode.MapY), 80f, -1f, 1025f, false, true); // draw the remaining track for (int i = 0; i < track.Count - 1; i++) { Bezier3 bezier = new Bezier3(); // start point bezier.a = new Vector3(track[i].MapX, 0, track[i].MapY); // end point bezier.d = new Vector3(track[i + 1].MapX, 0, track[i + 1].MapY); Vector3 startDir = VectorUtils.NormalizeXZ(bezier.d - bezier.a); Vector3 endDir = VectorUtils.NormalizeXZ(bezier.a - bezier.d); NetSegment.CalculateMiddlePoints(bezier.a, startDir, bezier.d, endDir, true, true, out bezier.b, out bezier.c); OverlayEffect.DrawBezier(cameraInfo, Color.white, bezier, 8f, 100000f, -100000f, -1f, 1280f, false, true); } }
public override void RenderOverlay(RenderManager.CameraInfo cameraInfo) { Monitor.Exit(m_dataLock); if (m_mouseRayValid && enabled && m_mode != InGameTerrainTool.Mode.ResourceSand) { float brushRadius = m_brushSize * 0.5f; var colorActive = new Color(1.0f, Mathf.Sqrt(m_strength) * 2.5f - 0.77f, 0f); Color color2 = Color.yellow; var color3 = new Color(0.7f, 0.7f, 0.7f); int minX; int minZ; int maxX; int maxZ; GetBrushBounds(out minX, out minZ, out maxX, out maxZ, true); Singleton <ToolManager> .instance.m_drawCallData.m_overlayCalls++; OverlayEffect OverlayEffect = Singleton <RenderManager> .instance.OverlayEffect; for (int i = minX - 16; i <= maxX + 16; i += 16) { for (int j = minZ - 16; j <= maxZ + 16; j += 16) { if (m_mode == InGameTerrainTool.Mode.Point) { if ((i >= minX && i <= maxX) || (j >= minZ && j <= maxZ)) { if (i < minX || i > maxX || j < minZ || j > maxZ) { OverlayEffect.DrawCircle(cameraInfo, color3, new Vector3(i, 0f, j), 3f, -1f, 1025f, false, true); } else { OverlayEffect.DrawCircle(cameraInfo, colorActive, new Vector3(i, 0f, j), 4.5f, -1f, 1025f, false, true); } } } else { float dx = i - m_mousePosition.x; float dz = j - m_mousePosition.z; if (dx * dx + dz * dz < (brushRadius + 1) * (brushRadius + 1)) { if (dx * dx + dz * dz > brushRadius * brushRadius) { OverlayEffect.DrawCircle(cameraInfo, color3, new Vector3(i, 0f, j), 3f, -1f, 1025f, false, true); } else { OverlayEffect.DrawCircle(cameraInfo, colorActive, new Vector3(i, 0f, j), 4.5f, -1f, 1025f, false, true); } } } } } if (m_mode == InGameTerrainTool.Mode.Slope) { OverlayEffect.DrawCircle(cameraInfo, color2, m_endPosition, 9f, -1f, 1025f, false, true); if (!m_strokeInProgress) { Vector3 pointerPosition = SnapToTerrain(m_mousePosition); OverlayEffect.DrawCircle(cameraInfo, color2, pointerPosition, 9f, -1f, 1025f, false, true); } } if (m_mode == InGameTerrainTool.Mode.Level) { OverlayEffect.DrawCircle(cameraInfo, color2, m_startPosition, 9f, -1f, 1025f, false, true); } } base.RenderOverlay(cameraInfo); }