public override void Render(DrawingHandleWorld handle)
        {
            if (onGrid)
            {
                const int ppm          = EyeManager.PixelsPerMeter;
                var       viewportSize = (Vector2)pManager._clyde.ScreenSize;

                var position = pManager.eyeManager.ScreenToMap(Vector2.Zero);

                var gridstartx = (float)MathF.Round(position.X / snapSize, MidpointRounding.AwayFromZero) * snapSize;
                var gridstarty = (float)MathF.Round(position.Y / snapSize, MidpointRounding.AwayFromZero) * snapSize;
                var gridstart  = pManager.eyeManager.WorldToScreen(
                    new Vector2( //Find snap grid closest to screen origin and convert back to screen coords
                        gridstartx,
                        gridstarty));
                for (var a = gridstart.X;
                     a < viewportSize.X;
                     a += snapSize * ppm) //Iterate through screen creating gridlines
                {
                    var from = ScreenToWorld(new Vector2(a, 0));
                    var to   = ScreenToWorld(new Vector2(a, viewportSize.Y));
                    handle.DrawLine(from, to, new Color(0, 0, 1f));
                }

                for (var a = gridstart.Y; a < viewportSize.Y; a += snapSize * ppm)
                {
                    var from = ScreenToWorld(new Vector2(0, a));
                    var to   = ScreenToWorld(new Vector2(viewportSize.X, a));
                    handle.DrawLine(from, to, new Color(0, 0, 1f));
                }
            }

            // Draw grid BELOW the ghost.
            base.Render(handle);
        }
        public virtual void Render(DrawingHandleWorld handle)
        {
            if (SpriteToDraw == null)
            {
                SetSprite();
            }

            IEnumerable<GridCoordinates> locationcollection;
            switch (pManager.PlacementType)
            {
                case PlacementManager.PlacementTypes.None:
                    locationcollection = SingleCoordinate();
                    break;
                case PlacementManager.PlacementTypes.Line:
                    locationcollection = LineCoordinates();
                    break;
                case PlacementManager.PlacementTypes.Grid:
                    locationcollection = GridCoordinates();
                    break;
                default:
                    locationcollection = SingleCoordinate();
                    break;
            }

            var size = SpriteToDraw.Size;
            foreach (var coordinate in locationcollection)
            {
                var worldPos = pManager.MapManager.GetGrid(coordinate.GridID).LocalToWorld(coordinate).Position;
                var pos = worldPos - (size/(float)EyeManager.PixelsPerMeter) / 2f;
                var color = IsValidPosition(coordinate) ? ValidPlaceColor : InvalidPlaceColor;
                handle.DrawTexture(SpriteToDraw, pos, color);
            }
        }
        public override void Render(DrawingHandleWorld handle)
        {
            if (onGrid)
            {
                var viewportSize = (Vector2)pManager.DisplayManager.ScreenSize;
                var position     = pManager.eyeManager.ScreenToWorld(Vector2.Zero);
                var gridstart    = pManager.eyeManager.WorldToScreen(new Vector2( //Find snap grid closest to screen origin and convert back to screen coords
                                                                         (float)(Math.Round(position.X / snapSize - 0.5f, MidpointRounding.AwayFromZero) + 0.5f) * snapSize,
                                                                         (float)(Math.Round(position.Y / snapSize - 0.5f, MidpointRounding.AwayFromZero) + 0.5f) * snapSize));
                for (var a = gridstart.X; a < viewportSize.X; a += snapSize * 32) //Iterate through screen creating gridlines
                {
                    var from = ScreenToWorld(new Vector2(a, 0));
                    var to   = ScreenToWorld(new Vector2(a, viewportSize.Y));
                    handle.DrawLine(from, to, new Color(0, 0, 1f), 0.5f);
                }
                for (var a = gridstart.Y; a < viewportSize.Y; a += snapSize * 32)
                {
                    var from = ScreenToWorld(new Vector2(0, a));
                    var to   = ScreenToWorld(new Vector2(viewportSize.X, a));
                    handle.DrawLine(from, to, new Color(0, 0, 1f), 0.5f);
                }
            }

            // Draw grid BELOW the ghost thing.
            base.Render(handle);
        }
Exemple #4
0
            public RenderHandle(Clyde clyde)
            {
                _clyde = clyde;

                DrawingHandleScreen = new DrawingHandleScreenImpl(this);
                DrawingHandleWorld  = new DrawingHandleWorldImpl(this);
            }
        public virtual void Render(DrawingHandleWorld handle)
        {
            if (SpriteToDraw == null)
            {
                SetSprite();
                DebugTools.AssertNotNull(SpriteToDraw);
            }

            IEnumerable <EntityCoordinates> locationcollection;

            switch (pManager.PlacementType)
            {
            case PlacementManager.PlacementTypes.None:
                locationcollection = SingleCoordinate();
                break;

            case PlacementManager.PlacementTypes.Line:
                locationcollection = LineCoordinates();
                break;

            case PlacementManager.PlacementTypes.Grid:
                locationcollection = GridCoordinates();
                break;

            default:
                locationcollection = SingleCoordinate();
                break;
            }

            var size = SpriteToDraw !.Size;

            foreach (var coordinate in locationcollection)
            {
                var worldPos = coordinate.ToMapPos(pManager.EntityManager);
                var pos      = worldPos - (size / (float)EyeManager.PixelsPerMeter) / 2f;
                var color    = IsValidPosition(coordinate) ? ValidPlaceColor : InvalidPlaceColor;
                handle.DrawTexture(SpriteToDraw, pos, color);
            }
        }
        public virtual void Render(DrawingHandleWorld handle)
        {
            if (SpriteToDraw == null)
            {
                SetSprite();
            }

            IEnumerable <GridCoordinates> locationcollection;

            switch (pManager.PlacementType)
            {
            case PlacementManager.PlacementTypes.None:
                locationcollection = SingleCoordinate();
                break;

            case PlacementManager.PlacementTypes.Line:
                locationcollection = LineCoordinates();
                break;

            case PlacementManager.PlacementTypes.Grid:
                locationcollection = GridCoordinates();
                break;

            default:
                locationcollection = SingleCoordinate();
                break;
            }

            var size = SpriteToDraw.Size;

            foreach (var coordinate in locationcollection)
            {
                var pos   = coordinate.Position - (size / EyeManager.PIXELSPERMETER) / 2f;
                var color = IsValidPosition(coordinate) ? ValidPlaceColor : InvalidPlaceColor;
                handle.DrawTexture(SpriteToDraw, pos, color);
            }
        }