Example #1
0
            public static void DrawAnimation(this IDrawing drawing, FramesGroup framesGroup, double x, double y,
                                             float alpha = 1.0f, Drawing.Flip flip = Drawing.Flip.None)
            {
                var frame = framesGroup.Frames.FirstOrDefault();

                if (frame != null)
                {
                    var src = frame.Source;

                    flip = flip.Add(Drawing.Flip.FlipHorizontal, framesGroup.Reference.FlipX)
                           .Add(Drawing.Flip.FlipVertical, framesGroup.Reference.FlipY);

                    var nx = x - frame.Pivot.X;
                    var ny = y - frame.Pivot.Y;
                    if (flip.HasFlag(Drawing.Flip.FlipHorizontal))
                    {
                        nx += frame.Pivot.X * 2 - src.Width;
                    }
                    if (flip.HasFlag(Drawing.Flip.FlipVertical))
                    {
                        ny -= frame.Pivot.Y * 2 - src.Height;
                    }

                    drawing.DrawSurface(framesGroup.Texture,
                                        new System.Drawing.Rectangle((int)src.Left, (int)src.Top, (int)src.Width, (int)src.Height),
                                        new System.Drawing.Rectangle((int)nx, (int)ny, (int)src.Width, (int)src.Height), alpha, flip);
                }
            }
Example #2
0
 public static Drawing.Flip Add(this Drawing.Flip x, Drawing.Flip y, bool reverse)
 {
     return(reverse ? (Drawing.Flip)((int)x ^ (int)y) : x);
 }
Example #3
0
 public static Drawing.Flip Add(this Drawing.Flip x, Drawing.Flip y)
 {
     return((Drawing.Flip)((int)x ^ (int)y));
 }