operator [] method

  1. @override
Timeline? operator [](
  1. int index
)
override

Get the element at the given index. Must be implemented by subclasses to call the appropriate spine_array_*_get

Implementation

@override
Timeline? operator [](int index) {
  if (index < 0 || index >= length) {
    throw RangeError.index(index, this, 'index');
  }
  final buffer = SpineBindings.bindings.spine_array_timeline_buffer(nativePtr.cast());
  if (buffer[index].address == 0) return null;
  final rtti = SpineBindings.bindings.spine_timeline_get_rtti(buffer[index]);
  final className = SpineBindings.bindings.spine_rtti_get_class_name(rtti).cast<Utf8>().toDartString();
  switch (className) {
    case 'AlphaTimeline':
      final castedPtr = SpineBindings.bindings.spine_timeline_cast_to_alpha_timeline(buffer[index]);
      return AlphaTimeline.fromPointer(castedPtr);
    case 'AttachmentTimeline':
      final castedPtr = SpineBindings.bindings.spine_timeline_cast_to_attachment_timeline(buffer[index]);
      return AttachmentTimeline.fromPointer(castedPtr);
    case 'DeformTimeline':
      final castedPtr = SpineBindings.bindings.spine_timeline_cast_to_deform_timeline(buffer[index]);
      return DeformTimeline.fromPointer(castedPtr);
    case 'DrawOrderTimeline':
      final castedPtr = SpineBindings.bindings.spine_timeline_cast_to_draw_order_timeline(buffer[index]);
      return DrawOrderTimeline.fromPointer(castedPtr);
    case 'EventTimeline':
      final castedPtr = SpineBindings.bindings.spine_timeline_cast_to_event_timeline(buffer[index]);
      return EventTimeline.fromPointer(castedPtr);
    case 'IkConstraintTimeline':
      final castedPtr = SpineBindings.bindings.spine_timeline_cast_to_ik_constraint_timeline(buffer[index]);
      return IkConstraintTimeline.fromPointer(castedPtr);
    case 'InheritTimeline':
      final castedPtr = SpineBindings.bindings.spine_timeline_cast_to_inherit_timeline(buffer[index]);
      return InheritTimeline.fromPointer(castedPtr);
    case 'PathConstraintMixTimeline':
      final castedPtr = SpineBindings.bindings.spine_timeline_cast_to_path_constraint_mix_timeline(buffer[index]);
      return PathConstraintMixTimeline.fromPointer(castedPtr);
    case 'PathConstraintPositionTimeline':
      final castedPtr =
          SpineBindings.bindings.spine_timeline_cast_to_path_constraint_position_timeline(buffer[index]);
      return PathConstraintPositionTimeline.fromPointer(castedPtr);
    case 'PathConstraintSpacingTimeline':
      final castedPtr = SpineBindings.bindings.spine_timeline_cast_to_path_constraint_spacing_timeline(buffer[index]);
      return PathConstraintSpacingTimeline.fromPointer(castedPtr);
    case 'PhysicsConstraintDampingTimeline':
      final castedPtr =
          SpineBindings.bindings.spine_timeline_cast_to_physics_constraint_damping_timeline(buffer[index]);
      return PhysicsConstraintDampingTimeline.fromPointer(castedPtr);
    case 'PhysicsConstraintGravityTimeline':
      final castedPtr =
          SpineBindings.bindings.spine_timeline_cast_to_physics_constraint_gravity_timeline(buffer[index]);
      return PhysicsConstraintGravityTimeline.fromPointer(castedPtr);
    case 'PhysicsConstraintInertiaTimeline':
      final castedPtr =
          SpineBindings.bindings.spine_timeline_cast_to_physics_constraint_inertia_timeline(buffer[index]);
      return PhysicsConstraintInertiaTimeline.fromPointer(castedPtr);
    case 'PhysicsConstraintMassTimeline':
      final castedPtr = SpineBindings.bindings.spine_timeline_cast_to_physics_constraint_mass_timeline(buffer[index]);
      return PhysicsConstraintMassTimeline.fromPointer(castedPtr);
    case 'PhysicsConstraintMixTimeline':
      final castedPtr = SpineBindings.bindings.spine_timeline_cast_to_physics_constraint_mix_timeline(buffer[index]);
      return PhysicsConstraintMixTimeline.fromPointer(castedPtr);
    case 'PhysicsConstraintResetTimeline':
      final castedPtr =
          SpineBindings.bindings.spine_timeline_cast_to_physics_constraint_reset_timeline(buffer[index]);
      return PhysicsConstraintResetTimeline.fromPointer(castedPtr);
    case 'PhysicsConstraintStrengthTimeline':
      final castedPtr =
          SpineBindings.bindings.spine_timeline_cast_to_physics_constraint_strength_timeline(buffer[index]);
      return PhysicsConstraintStrengthTimeline.fromPointer(castedPtr);
    case 'PhysicsConstraintWindTimeline':
      final castedPtr = SpineBindings.bindings.spine_timeline_cast_to_physics_constraint_wind_timeline(buffer[index]);
      return PhysicsConstraintWindTimeline.fromPointer(castedPtr);
    case 'RGB2Timeline':
      final castedPtr = SpineBindings.bindings.spine_timeline_cast_to_rgb2_timeline(buffer[index]);
      return Rgb2Timeline.fromPointer(castedPtr);
    case 'RGBA2Timeline':
      final castedPtr = SpineBindings.bindings.spine_timeline_cast_to_rgba2_timeline(buffer[index]);
      return Rgba2Timeline.fromPointer(castedPtr);
    case 'RGBATimeline':
      final castedPtr = SpineBindings.bindings.spine_timeline_cast_to_rgba_timeline(buffer[index]);
      return RgbaTimeline.fromPointer(castedPtr);
    case 'RGBTimeline':
      final castedPtr = SpineBindings.bindings.spine_timeline_cast_to_rgb_timeline(buffer[index]);
      return RgbTimeline.fromPointer(castedPtr);
    case 'RotateTimeline':
      final castedPtr = SpineBindings.bindings.spine_timeline_cast_to_rotate_timeline(buffer[index]);
      return RotateTimeline.fromPointer(castedPtr);
    case 'ScaleTimeline':
      final castedPtr = SpineBindings.bindings.spine_timeline_cast_to_scale_timeline(buffer[index]);
      return ScaleTimeline.fromPointer(castedPtr);
    case 'ScaleXTimeline':
      final castedPtr = SpineBindings.bindings.spine_timeline_cast_to_scale_x_timeline(buffer[index]);
      return ScaleXTimeline.fromPointer(castedPtr);
    case 'ScaleYTimeline':
      final castedPtr = SpineBindings.bindings.spine_timeline_cast_to_scale_y_timeline(buffer[index]);
      return ScaleYTimeline.fromPointer(castedPtr);
    case 'SequenceTimeline':
      final castedPtr = SpineBindings.bindings.spine_timeline_cast_to_sequence_timeline(buffer[index]);
      return SequenceTimeline.fromPointer(castedPtr);
    case 'ShearTimeline':
      final castedPtr = SpineBindings.bindings.spine_timeline_cast_to_shear_timeline(buffer[index]);
      return ShearTimeline.fromPointer(castedPtr);
    case 'ShearXTimeline':
      final castedPtr = SpineBindings.bindings.spine_timeline_cast_to_shear_x_timeline(buffer[index]);
      return ShearXTimeline.fromPointer(castedPtr);
    case 'ShearYTimeline':
      final castedPtr = SpineBindings.bindings.spine_timeline_cast_to_shear_y_timeline(buffer[index]);
      return ShearYTimeline.fromPointer(castedPtr);
    case 'SliderMixTimeline':
      final castedPtr = SpineBindings.bindings.spine_timeline_cast_to_slider_mix_timeline(buffer[index]);
      return SliderMixTimeline.fromPointer(castedPtr);
    case 'SliderTimeline':
      final castedPtr = SpineBindings.bindings.spine_timeline_cast_to_slider_timeline(buffer[index]);
      return SliderTimeline.fromPointer(castedPtr);
    case 'TransformConstraintTimeline':
      final castedPtr = SpineBindings.bindings.spine_timeline_cast_to_transform_constraint_timeline(buffer[index]);
      return TransformConstraintTimeline.fromPointer(castedPtr);
    case 'TranslateTimeline':
      final castedPtr = SpineBindings.bindings.spine_timeline_cast_to_translate_timeline(buffer[index]);
      return TranslateTimeline.fromPointer(castedPtr);
    case 'TranslateXTimeline':
      final castedPtr = SpineBindings.bindings.spine_timeline_cast_to_translate_x_timeline(buffer[index]);
      return TranslateXTimeline.fromPointer(castedPtr);
    case 'TranslateYTimeline':
      final castedPtr = SpineBindings.bindings.spine_timeline_cast_to_translate_y_timeline(buffer[index]);
      return TranslateYTimeline.fromPointer(castedPtr);
    default:
      throw UnsupportedError('Unknown concrete type: $className for abstract class Timeline');
  }
}