update method

void update(
  1. double delta
)

Increments each track entry TrackEntry.getTrackTime, setting queued animations as current if needed.

Implementation

void update(double delta) {
  _bindings.spine_animation_state_update(_state, delta);

  final numEvents = _bindings.spine_animation_state_events_get_num_events(_events);
  if (numEvents > 0) {
    for (int i = 0; i < numEvents; i++) {
      late final EventType type;
      switch (_bindings.spine_animation_state_events_get_event_type(_events, i)) {
        case 0:
          type = EventType.start;
          break;
        case 1:
          type = EventType.interrupt;
          break;
        case 2:
          type = EventType.end;
          break;
        case 3:
          type = EventType.complete;
          break;
        case 4:
          type = EventType.dispose;
          break;
        case 5:
          type = EventType.event;
          break;
      }
      final nativeEntry = _bindings.spine_animation_state_events_get_track_entry(_events, i);
      final entry = TrackEntry._(nativeEntry, this);
      final nativeEvent = _bindings.spine_animation_state_events_get_event(_events, i);
      final event = nativeEvent.address == nullptr.address ? null : Event._(nativeEvent);
      if (_trackEntryListeners.containsKey(nativeEntry)) {
        _trackEntryListeners[nativeEntry]?.call(type, entry, event);
      }
      if (_stateListener != null) {
        _stateListener?.call(type, entry, event);
      }
      if (type == EventType.dispose) {
        _bindings.spine_animation_state_dispose_track_entry(_state, nativeEntry);
      }
    }
  }
  _bindings.spine_animation_state_events_reset(_events);
}