示例#1
0
        void IRenderAboveWorld.RenderAboveWorld(Actor self, EW.Graphics.WorldRenderer wr)
        {
            if (!Enabled)
            {
                return;
            }

            var map     = wr.World.Map;
            var tileSet = wr.World.Map.Rules.TileSet;

            var wcr    = WarGame.Renderer.WorldRgbaColorRenderer;
            var colors = tileSet.HeightDebugColors;

            var mouseCell = wr.ViewPort.ViewToWorld(GameViewPort.LastMousePos).ToMPos(wr.World.Map);

            foreach (var uv in wr.ViewPort.AllVisibleCells.CandidateMapCoords)
            {
                if (!map.Height.Contains(uv))
                {
                    continue;
                }

                var height = (int)map.Height[uv];
                var tile   = map.Tiles[uv];
                var ti     = tileSet.GetTileInfo(tile);
                var ramp   = ti != null ? ti.RampType : 0;

                var corners = map.Grid.CellCorners[ramp];
                var color   = corners.Select(c => colors[height + c.Z / 512]).ToArray();
                var pos     = map.CenterOfCell(uv.ToCPos(map));
                var screen  = corners.Select(c => wr.Screen3DPxPosition(pos + c)).ToArray();
                var width   = (uv == mouseCell ? 3 : 1) / wr.ViewPort.Zoom;

                //Colors change between points,so render separately
                for (var i = 0; i < 4; i++)
                {
                    var j = (i + 1) % 4;
                    wcr.DrawLine(screen[i], screen[j], width, color[i], color[j]);
                }
            }

            //Projected cell coordinates for the current cell.
            var projectedCorners = map.Grid.CellCorners[0];

            foreach (var puv in map.ProjectedCellsCovering(mouseCell))
            {
                var pos    = map.CenterOfCell(((MPos)puv).ToCPos(map));
                var screen = projectedCorners.Select(c => wr.Screen3DPxPosition(pos + c - new WVec(0, 0, pos.Z))).ToArray();
                for (var i = 0; i < 4; i++)
                {
                    var j = (i + 1) % 4;
                    wcr.DrawLine(screen[i], screen[j], 3 / wr.ViewPort.Zoom, Color.Green);
                }
            }
        }
示例#2
0
        void IWorldLoaded.WorldLoaded(World w, EW.Graphics.WorldRenderer render)
        {
            var console = w.WorldActor.TraitOrDefault <ChatCommands>();
            var help    = w.WorldActor.TraitOrDefault <HelpCommand>();

            if (console == null || help == null)
            {
                return;
            }

            //Enabled = true;
        }
示例#3
0
 IEnumerable <Rectangle> IRenderModifier.ModifyScreenBounds(Actor self, EW.Graphics.WorldRenderer wr, IEnumerable <Rectangle> bounds)
 {
     return(bounds);
 }