Ejemplo n.º 1
0
        protected virtual void RenderToolCircle(Viewport viewport, Component_Terrain terrain, Vector2 center)
        {
            var radius = Component_Scene_DocumentWindow.TerrainToolRadius;

            const double step    = Math.PI / 32;
            Vector3      lastPos = Vector3.Zero;

            for (double angle = 0; angle <= Math.PI * 2 + step / 2; angle += step)
            {
                var pos = new Vector3(
                    center.X + Math.Cos(angle) * radius,
                    center.Y + Math.Sin(angle) * radius, 0);
                pos.Z = terrain.GetHeight(pos.ToVector2(), false);

                if (angle != 0)
                {
                    viewport.Simple3DRenderer.AddLine(lastPos + new Vector3(0, 0, toolRenderOffset), pos + new Vector3(0, 0, toolRenderOffset));
                }

                lastPos = pos;
            }
        }
Ejemplo n.º 2
0
        protected virtual void RenderToolLine(Viewport viewport, Component_Terrain terrain, Vector2 start, Vector2 end, int stepCount)
        {
            Vector2 diff = end - start;
            Vector2 dir  = diff;
            var     len  = dir.Normalize();

            Vector3 lastPos = Vector3.Zero;

            for (int n = 0; n <= stepCount; n++)
            {
                Vector3 pos = new Vector3(
                    start.X + dir.X * ((float)n / stepCount * len),
                    start.Y + dir.Y * ((float)n / stepCount * len), 0);
                pos.Z = terrain.GetHeight(pos.ToVector2(), false);
                //if( selectedTerrain.HeightmapTerrainManager != null && HeightmapTerrainManager.Instance != null )
                //{
                //	float z;
                //	if( HeightmapTerrainManager.Instance.GetHeight( pos.ToVector2(), false, out z ) )
                //		pos.Z = z;
                //	else
                //		pos.Z = float.MinValue;
                //}
                //else
                //	pos.Z = selectedTerrain.GetHeight( pos.ToVector2(), false );

                if (n != 0)
                {
                    if (lastPos.Z != double.MinValue && pos.Z != double.MinValue)
                    {
                        viewport.Simple3DRenderer.AddLine(lastPos + new Vector3(0, 0, toolRenderOffset), pos + new Vector3(0, 0, toolRenderOffset));
                    }
                }

                lastPos = pos;
            }
        }