void AdjustNewSplinePoint(Window callingWindow) { SplinePoint newSplinePoint = mListDisplayWindow.LastItemAdded as SplinePoint; if (SelectedObject.Count > 1) { // Remove the new point out because we're not sure what the sorting has done. // We'll add it back in after giving it its time. SelectedObject.Remove(newSplinePoint); SplinePoint pointBefore = SelectedObject[SelectedObject.Count - 1]; newSplinePoint.Time = pointBefore.Time + 1; if (SelectedObject.Count == 1) { newSplinePoint.Position = pointBefore.Position; newSplinePoint.Position.X += 25 / SpriteManager.Camera.PixelsPerUnitAt(newSplinePoint.Position.Z); } else { SplinePoint pointBeforePointBefore = SelectedObject[SelectedObject.Count - 2]; Vector3 difference = pointBefore.Position - pointBeforePointBefore.Position; if (difference == Vector3.Zero) { newSplinePoint.Position = pointBefore.Position; newSplinePoint.Position.X += 1; } else { newSplinePoint.Position = pointBefore.Position + difference; } } SelectedObject.Add(newSplinePoint); } else { newSplinePoint.Position.X = SpriteManager.Camera.X; newSplinePoint.Position.Y = SpriteManager.Camera.Y; } if (AfterNewPointAdded != null) { AfterNewPointAdded(this); } }