Ejemplo n.º 1
0
        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);
            }
        }
Ejemplo n.º 2
0
        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);
        }