Exemplo n.º 1
0
        private void DrawFrameExtended(Context contextParent, Sequence.SpritePart frameEx)
        {
            var context = contextParent.Clone();

            context.Left   = frameEx.Left;
            context.Top    = frameEx.Top;
            context.Right  = frameEx.Right;
            context.Bottom = frameEx.Bottom;

            DrawFrame(context, Sequence.Sprites[frameEx.SpriteIndex]);
        }
Exemplo n.º 2
0
        private void SpritePartEdit(Sequence.SpritePart spritePart, int index)
        {
            var position = new int[]
            {
                spritePart.Left,
                spritePart.Top
            };
            var size = new int[]
            {
                spritePart.Right - spritePart.Left,
                spritePart.Bottom - spritePart.Top
            };

            var spriteIndex = spritePart.SpriteIndex;

            if (ImGui.InputInt($"Sprite index##{index}", ref spriteIndex))
            {
                spritePart.SpriteIndex = Math.Min(Math.Max(spriteIndex, 0), _sequence.Sprites.Count - 1);
            }

            if (ImGui.DragInt2($"Position##{index}", ref position[0]))
            {
                spritePart.Left   = position[0];
                spritePart.Top    = position[1];
                spritePart.Right  = position[0] + size[0];
                spritePart.Bottom = position[1] + size[1];
                SpriteGroupModel.SizeChanged();
            }
            if (ImGui.DragInt2($"Size##{index}", ref size[0]))
            {
                spritePart.Right  = position[0] + size[0];
                spritePart.Bottom = position[1] + size[1];
                SpriteGroupModel.SizeChanged();
            }
            if (ImGui.Button($"Make sprite pixel perfect##{index}"))
            {
                var innerSprite = _sequence.Sprites[spritePart.SpriteIndex];
                spritePart.Right  = position[0] + Math.Abs(innerSprite.Left - innerSprite.Right);
                spritePart.Bottom = position[1] + Math.Abs(innerSprite.Top - innerSprite.Bottom);
                SpriteGroupModel.SizeChanged();
            }

            if (ImGui.SmallButton($"Remove from the sprite group##{index}"))
            {
                _removeSpritePart = index;
            }
        }
Exemplo n.º 3
0
        public void GetVisibilityRectangleForFrameExTest()
        {
            const int ExpectedX      = 50;
            const int ExpectedY      = 70;
            const int ExpectedWidth  = 100;
            const int ExpectedHeight = 200;

            var rect = new Sequence.SpritePart
            {
                Left   = ExpectedX,
                Top    = ExpectedY,
                Right  = ExpectedX + ExpectedWidth,
                Bottom = ExpectedY + ExpectedHeight
            }.GetVisibilityRectangle();

            Assert.Equal(ExpectedX, rect.X);
            Assert.Equal(ExpectedY, rect.Y);
            Assert.Equal(ExpectedWidth, rect.Width);
            Assert.Equal(ExpectedHeight, rect.Height);
        }
Exemplo n.º 4
0
 public static Rectangle GetVisibilityRectangle(
     this Sequence.SpritePart frameEx) => Rectangle.FromLTRB(
     frameEx.Left,
     frameEx.Top,
     frameEx.Right,
     frameEx.Bottom);