private void StartStarVisualOffsetAnimation(SpriteVisual starVisual, double duration, float offsetZ = 0.0f) { float offsetX = _random.Create(-12, 12); float offsetY = _random.Create(-12, 12); var oldOffset = starVisual.Offset; starVisual.StartOffsetAnimation(null, new Vector3(oldOffset.X + offsetX, oldOffset.Y + offsetY, oldOffset.Z + offsetZ), duration, completed: () => { // TODO: Dispose and recreate the star StartStarVisualOffsetAnimation(starVisual, duration, offsetZ); }); }