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]); }
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; } }
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); }
public static Rectangle GetVisibilityRectangle( this Sequence.SpritePart frameEx) => Rectangle.FromLTRB( frameEx.Left, frameEx.Top, frameEx.Right, frameEx.Bottom);