public override void UpdateGeometryState(double atTime)
{
fRevealed = (int)Math.Floor((fDistance * atTime) + 0.5);
switch (fDirection)
{
case DOWN:
fSourceFrame = Rectangle.FromLTRB(Frame.Left, Frame.Top, Frame.Right, Revealed);
fSourceBoundary = new Rectangle(0, SourcePixelBuffer.Height - Revealed, SourcePixelBuffer.Width, Revealed);
break;
case UP:
fSourceFrame = Rectangle.FromLTRB(Frame.Left, Frame.Bottom - Revealed, Frame.Right, Frame.Bottom - Revealed);
fSourceBoundary = new Rectangle(0, 0, SourcePixelBuffer.Width, Revealed);
break;
case LEFT:
fSourceFrame = Rectangle.FromLTRB(Frame.Right - Revealed, Frame.Top, Frame.Right, Frame.Bottom);
fSourceBoundary = new Rectangle(0, 0, Revealed, SourcePixelBuffer.Height);
break;
case RIGHT:
fSourceFrame = Rectangle.FromLTRB(Frame.Left, Frame.Top, Frame.Left + Revealed, Frame.Bottom);
fSourceBoundary = new Rectangle(SourcePixelBuffer.Width - Revealed, 0, Revealed, SourcePixelBuffer.Height);
break;
}
}