activateAction method

void activateAction(
  1. AnimationAction action
)

Implementation

void activateAction(AnimationAction action) {
  if (!isActiveAction(action)) {
    if (action.cacheIndex == null) {
      // this action has been forgotten by the cache, but the user
      // appears to be still using it -> rebind

      final rootUuid = (action.localRoot ?? root).uuid,
          clipUuid = action.clip.uuid,
          actionsForClip = actionsByClip[clipUuid];

      _bindAction(action, actionsForClip.knownActions[0] ?? actionsForClip);
      _addInactiveAction(action, clipUuid, rootUuid);
    }

    final bindings = action.propertyBindings;

    // increment reference counts / sort out state
    for (int i = 0, n = bindings.length; i != n; ++i) {
      final binding = bindings[i]!;

      if (binding.useCount++ == 0) {
        _lendBinding(binding);
        binding.saveOriginalState();
      }
    }

    _lendAction(action);
  }
}