All Downloads are FREE. Search and download functionalities are using the official Maven repository.

main.cesium.ModelAnimationCollection.kt Maven / Gradle / Ivy

The newest version!
// Automatically generated - do not modify!

@file:JsModule("cesium")

package cesium

/**
 * A collection of active model animations.  Access this using [Model.activeAnimations].
 * @see Online Documentation
 */
external class ModelAnimationCollection {
    /**
     * The event fired when an animation is added to the collection.  This can be used, for
     * example, to keep a UI in sync.
     * ```
     * model.activeAnimations.animationAdded.addEventListener(function(model, animation) {
     *   console.log('Animation added: ' + animation.name);
     * });
     * ```
     * @see Online Documentation
     */
    var animationAdded: Event

    /**
     * The event fired when an animation is removed from the collection.  This can be used, for
     * example, to keep a UI in sync.
     * ```
     * model.activeAnimations.animationRemoved.addEventListener(function(model, animation) {
     *   console.log('Animation removed: ' + animation.name);
     * });
     * ```
     * @see Online Documentation
     */
    var animationRemoved: Event

    /**
     * The number of animations in the collection.
     * @see Online Documentation
     */
    val length: Int

    /**
     * Creates and adds an animation with the specified initial properties to the collection.
     *
     * This raises the [ModelAnimationCollection.animationAdded] event so, for example, a UI can stay in sync.
     * ```
     * // Example 1. Add an animation by name
     * model.activeAnimations.add({
     *   name : 'animation name'
     * });
     *
     * // Example 2. Add an animation by index
     * model.activeAnimations.add({
     *   index : 0
     * });
     * ```
     * ```
     * // Example 3. Add an animation and provide all properties and events
     * const startTime = JulianDate.now();
     *
     * const animation = model.activeAnimations.add({
     *   name : 'another animation name',
     *   startTime : startTime,
     *   delay : 0.0,                          // Play at startTime (default)
     *   stopTime : JulianDate.addSeconds(startTime, 4.0, new JulianDate()),
     *   removeOnStop : false,                 // Do not remove when animation stops (default)
     *   multiplier : 2.0,                        // Play at double speed
     *   reverse : true,                       // Play in reverse
     *   loop : ModelAnimationLoop.REPEAT      // Loop the animation
     * });
     *
     * animation.start.addEventListener(function(model, animation) {
     *   console.log('Animation started: ' + animation.name);
     * });
     * animation.update.addEventListener(function(model, animation, time) {
     *   console.log('Animation updated: ' + animation.name + '. glTF animation time: ' + time);
     * });
     * animation.stop.addEventListener(function(model, animation) {
     *   console.log('Animation stopped: ' + animation.name);
     * });
     * ```
     * @return The animation that was added to the collection.
     * @see Online Documentation
     */
    fun add(options: AddOptions): ModelAnimation

    /**
     * @property [name] The glTF animation name that identifies the animation. Must be defined if `options.index` is `undefined`.
     * @property [index] The glTF animation index that identifies the animation. Must be defined if `options.name` is `undefined`.
     * @property [startTime] The scene time to start playing the animation.  When this is `undefined`, the animation starts at the next frame.
     * @property [delay] The delay, in seconds, from `startTime` to start playing.
     *   Default value - `0.0`
     * @property [stopTime] The scene time to stop playing the animation.  When this is `undefined`, the animation is played for its full duration.
     * @property [removeOnStop] When `true`, the animation is removed after it stops playing.
     *   Default value - `false`
     * @property [multiplier] Values greater than `1.0` increase the speed that the animation is played relative to the scene clock speed; values less than `1.0` decrease the speed.
     *   Default value - `1.0`
     * @property [reverse] When `true`, the animation is played in reverse.
     *   Default value - `false`
     * @property [loop] Determines if and how the animation is looped.
     *   Default value - [ModelAnimationLoop.NONE]
     */
    interface AddOptions {
        var name: String?
        var index: Int?
        var startTime: JulianDate?
        var delay: Double?
        var stopTime: JulianDate?
        var removeOnStop: Boolean?
        var multiplier: Double?
        var reverse: Boolean?
        var loop: ModelAnimationLoop?
    }

    /**
     * Creates and adds an animation with the specified initial properties to the collection
     * for each animation in the model.
     *
     * This raises the [ModelAnimationCollection.animationAdded] event for each model so, for example, a UI can stay in sync.
     * ```
     * model.activeAnimations.addAll({
     *   multiplier : 0.5,                        // Play at half-speed
     *   loop : ModelAnimationLoop.REPEAT      // Loop the animations
     * });
     * ```
     * @return An array of [ModelAnimation] objects, one for each animation added to the collection.  If there are no glTF animations, the array is empty.
     * @see Online Documentation
     */
    fun addAll(options: AddAllOptions? = definedExternally): Array

    /**
     * @property [startTime] The scene time to start playing the animations.  When this is `undefined`, the animations starts at the next frame.
     * @property [delay] The delay, in seconds, from `startTime` to start playing.
     *   Default value - `0.0`
     * @property [stopTime] The scene time to stop playing the animations.  When this is `undefined`, the animations are played for its full duration.
     * @property [removeOnStop] When `true`, the animations are removed after they stop playing.
     *   Default value - `false`
     * @property [multiplier] Values greater than `1.0` increase the speed that the animations play relative to the scene clock speed; values less than `1.0` decrease the speed.
     *   Default value - `1.0`
     * @property [reverse] When `true`, the animations are played in reverse.
     *   Default value - `false`
     * @property [loop] Determines if and how the animations are looped.
     *   Default value - [ModelAnimationLoop.NONE]
     */
    interface AddAllOptions {
        var startTime: JulianDate?
        var delay: Double?
        var stopTime: JulianDate?
        var removeOnStop: Boolean?
        var multiplier: Double?
        var reverse: Boolean?
        var loop: ModelAnimationLoop?
    }

    /**
     * Removes an animation from the collection.
     *
     * This raises the [ModelAnimationCollection.animationRemoved] event so, for example, a UI can stay in sync.
     *
     * An animation can also be implicitly removed from the collection by setting [ModelAnimation.removeOnStop] to
     * `true`.  The [ModelAnimationCollection.animationRemoved] event is still fired when the animation is removed.
     * ```
     * const a = model.activeAnimations.add({
     *   name : 'animation name'
     * });
     * model.activeAnimations.remove(a); // Returns true
     * ```
     * @param [animation] The animation to remove.
     * @return `true` if the animation was removed; `false` if the animation was not found in the collection.
     * @see Online Documentation
     */
    fun remove(animation: ModelAnimation): Boolean

    /**
     * Removes all animations from the collection.
     *
     * This raises the [ModelAnimationCollection.animationRemoved] event for each
     * animation so, for example, a UI can stay in sync.
     * @see Online Documentation
     */
    fun removeAll()

    /**
     * Determines whether this collection contains a given animation.
     * @param [animation] The animation to check for.
     * @return `true` if this collection contains the animation, `false` otherwise.
     * @see Online Documentation
     */
    fun contains(animation: ModelAnimation): Boolean

    /**
     * Returns the animation in the collection at the specified index.  Indices are zero-based
     * and increase as animations are added.  Removing an animation shifts all animations after
     * it to the left, changing their indices.  This function is commonly used to iterate over
     * all the animations in the collection.
     * ```
     * // Output the names of all the animations in the collection.
     * const animations = model.activeAnimations;
     * const length = animations.length;
     * for (let i = 0; i < length; ++i) {
     *   console.log(animations.get(i).name);
     * }
     * ```
     * @param [index] The zero-based index of the animation.
     * @return The animation at the specified index.
     * @see Online Documentation
     */
    fun get(index: Int): ModelAnimation
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy