operator [] method
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');
}
}