public override void FrameProc(IStateOwner pOwner) { StandardImageBackgroundDrawSkiaCapsule dd = Data; if (dd == null) { return; } if (dd.BackgroundBrush == null) { dd.ResetState(new SKRect(0, 0, pOwner.GameArea.Width, pOwner.GameArea.Height)); } if (dd.BackgroundBrush == null) { return; } if (!dd.Movement.IsEmpty) { dd.CurrOrigin = new SKPoint((dd.CurrOrigin.X + dd.Movement.X) % dd._BackgroundImage.Width, (dd.CurrOrigin.Y + dd.Movement.Y) % dd._BackgroundImage.Height); } if (dd.AngleSpeed > 0) { dd.CurrAngle += dd.AngleSpeed; } dd.BackgroundBrush.ImageFilter = SKImageFilter.CreateOffset(dd.CurrOrigin.X, dd.CurrOrigin.Y, dd.PrimaryFilter); //might need to do something weird for tiling. }