ModelAnimationCollection - Cesium Documentation

# ModelAnimationCollection

#### new ModelAnimationCollection()

  A collection of active model animations. Access this using `Model#activeAnimations`.

  ##### See:

  - Model#activeAnimations
  Source: Scene/ModelAnimationCollection.js, line 36

### Members

#### animationAdded :Event

  The event fired when an animation is added to the collection. This can be used, for example, to keep a UI in sync.
  Default Value: `new Event()`

  ##### Example:

      model.activeAnimations.animationAdded.addEventListener(function(model, animation) {
        console.log('Animation added: ' + animation.name);
      });

  Source: Scene/ModelAnimationCollection.js, line 49

#### animationRemoved :Event

  The event fired when an animation is removed from the collection. This can be used, for example, to keep a UI in sync.
  Default Value: `new Event()`

  ##### Example:

      model.activeAnimations.animationRemoved.addEventListener(function(model, animation) {
        console.log('Animation removed: ' + animation.name);
      });

  Source: Scene/ModelAnimationCollection.js, line 63

#### readonlylength :Number

  The number of animations in the collection.
  Source: Scene/ModelAnimationCollection.js, line 79

### Methods

#### add(options) → ModelAnimation

  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.

  Name | Type | Description
  --- | --- | ---

  `options`

  Object

  Object with the following properties:

  Name | Type | Default | Description
  --- | --- | --- | ---
  `name` | String |  | The glTF animation name that identifies the animation.
  `startTime` | JulianDate |  | optional The scene time to start playing the animation. When this is `undefined`, the animation starts at the next frame.
  `delay` | Number | `0.0` | optional The delay, in seconds, from `startTime` to start playing.
  `stopTime` | JulianDate |  | optional The scene time to stop playing the animation. When this is `undefined`, the animation is played for its full duration.
  `removeOnStop` | Boolean | `false` | optional When `true`, the animation is removed after it stops playing.
  `speedup` | Number | `1.0` | optional 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.
  `reverse` | Boolean | `false` | optional When `true`, the animation is played in reverse.
  `loop` | ModelAnimationLoop | `ModelAnimationLoop.NONE` | optional Determines if and how the animation is looped.

  ##### Returns:

  The animation that was added to the collection.

  ##### Throws:

  - DeveloperError : Animations are not loaded. Wait for the `Model#readyPromise` to resolve.
  - DeveloperError : options.name must be a valid animation name.
  - DeveloperError : options.speedup must be greater than zero.

  ##### Examples:

      // Example 1. Add an animation
      model.activeAnimations.add({
        name : 'animation name'
      });

      // Example 2. Add an animation and provide all properties and events
      var startTime = Cesium.JulianDate.now();

      var animation = model.activeAnimations.add({
        name : 'another animation name',
        startTime : startTime,
        delay : 0.0,                          // Play at startTime (default)
        stopTime : Cesium.JulianDate.addSeconds(startTime, 4.0, new Cesium.JulianDate()),
        removeOnStop : false,                 // Do not remove when animation stops (default)
        speedup : 2.0,                        // Play at double speed
        reverse : true,                       // Play in reverse
        loop : Cesium.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);
      });

  Source: Scene/ModelAnimationCollection.js, line 138

#### addAll(options) → Array.<ModelAnimation>

  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.

  Name | Type | Description
  --- | --- | ---

  `options`

  Object

  optional Object with the following properties:

  Name | Type | Default | Description
  --- | --- | --- | ---
  `startTime` | JulianDate |  | optional The scene time to start playing the animations. When this is `undefined`, the animations starts at the next frame.
  `delay` | Number | `0.0` | optional The delay, in seconds, from `startTime` to start playing.
  `stopTime` | JulianDate |  | optional The scene time to stop playing the animations. When this is `undefined`, the animations are played for its full duration.
  `removeOnStop` | Boolean | `false` | optional When `true`, the animations are removed after they stop playing.
  `speedup` | Number | `1.0` | optional 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.
  `reverse` | Boolean | `false` | optional When `true`, the animations are played in reverse.
  `loop` | ModelAnimationLoop | `ModelAnimationLoop.NONE` | optional Determines if and how the animations are looped.

  ##### Returns:

  An array of `ModelAnimation` objects, one for each animation added to the collection. If there are no glTF animations, the array is empty.

  ##### Throws:

  - DeveloperError : Animations are not loaded. Wait for the `Model#readyPromise` to resolve.
  - DeveloperError : options.speedup must be greater than zero.

  ##### Example:

      model.activeAnimations.addAll({
        speedup : 0.5,                        // Play at half-speed
        loop : Cesium.ModelAnimationLoop.REPEAT      // Loop the animations
      });

  Source: Scene/ModelAnimationCollection.js, line 194

#### contains(animation) → Boolean

  Determines whether this collection contains a given animation.

  Name | Type | Description
  --- | --- | ---
  `animation` | ModelAnimation | The animation to check for.

  ##### Returns:

  `true` if this collection contains the animation, `false` otherwise.
  Source: Scene/ModelAnimationCollection.js, line 278

#### get(index) → ModelAnimation

  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.

  Name | Type | Description
  --- | --- | ---
  `index` | Number | The zero-based index of the animation.

  ##### Returns:

  The animation at the specified index.

  ##### Example:

      // Output the names of all the animations in the collection.
      var animations = model.activeAnimations;
      var length = animations.length;
      for (var i = 0; i < length; ++i) {
        console.log(animations.get(i).name);
      }

  Source: Scene/ModelAnimationCollection.js, line 303

#### remove(animation) → Boolean

  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.

  Name | Type | Description
  --- | --- | ---
  `animation` | ModelAnimation | The animation to remove.

  ##### Returns:

  `true` if the animation was removed; `false` if the animation was not found in the collection.

  ##### Example:

      var a = model.activeAnimations.add({
        name : 'animation name'
      });
      model.activeAnimations.remove(a); // Returns true

  Source: Scene/ModelAnimationCollection.js, line 239

#### removeAll()

  Removes all animations from the collection.

  This raises the `ModelAnimationCollection#animationRemoved` event for each animation so, for example, a UI can stay in sync.

  Source: Scene/ModelAnimationCollection.js, line 260