WhirlyGlobeViewControllerAnimationDelegate

Objective-C

@protocol WhirlyGlobeViewControllerAnimationDelegate <NSObject>

Swift

protocol WhirlyGlobeViewControllerAnimationDelegate : NSObjectProtocol

An animation delegate that can be set on a WhirlyGlobeViewController to control the view over time.

Filling out these methods will get you animation callbacks at the proper time to control position, heading, tilt, and height on a frame basis.

You pass the resulting object in to

  • This method is called when the animation starts.

    At the animation start we collect up the various parameters of the current visual view state and pas them in via the startState. You probably want to keep track of this for later.

    Declaration

    Objective-C

    - (void)globeViewController:(WhirlyGlobeViewController *_Nonnull)viewC
                     startState:(WhirlyGlobeViewControllerAnimationState *_Nonnull)
                                    startState
                      startTime:(NSTimeInterval)startTime
                        endTime:(NSTimeInterval)endTime;

    Swift

    func globeViewController(_ viewC: WhirlyGlobeViewController, start startState: WhirlyGlobeViewControllerAnimationState, startTime: TimeInterval, endTime: TimeInterval)

    Parameters

    viewC

    The view controller doing the animation.

    startState

    The starting point for the visual view animation. Cache this somewhere for your own interpolation.

    startTime

    When the animation starts (e.g. now)

    endTime

    When the animation ends. This is an absolute value.

  • This method is called at the beginning of every frame draw to position the viewer.

    This is the method that does all the work. You need to fill out the returned WhirlyGlobeViewControllerAnimationState according to whatever interpolation your'e doing based on the currentTime.

    Declaration

    Objective-C

    - (nonnull WhirlyGlobeViewControllerAnimationState *)
        globeViewController:(WhirlyGlobeViewController *_Nonnull)viewC
               stateForTime:(NSTimeInterval)currentTime;

    Swift

    func globeViewController(_ viewC: WhirlyGlobeViewController, stateForTime currentTime: TimeInterval) -> WhirlyGlobeViewControllerAnimationState

    Parameters

    viewC

    The view controller doing the animation.

    currentTime

    The time for this frame. Use this rather than calculating the time yourself.

    Return Value

    The WhirlyGlobeViewControllerAnimationState expressing where you want the viewer to be and where they are looking.

  • This method is called at the end of the animation.

    The globe view controller calls this method when the animation is finished. Do your cleanup here if need be.

    Declaration

    Objective-C

    - (void)globeViewControllerDidFinishAnimation:
        (WhirlyGlobeViewController *_Nonnull)viewC;

    Swift

    optional func globeViewControllerDidFinishAnimation(_ viewC: WhirlyGlobeViewController)

    Parameters

    viewC

    The globe view controller.