operator [] method
Get the element at the given index. Must be implemented by subclasses to call the appropriate spine_array_*_get
Implementation
@override
FromProperty? operator [](int index) {
if (index < 0 || index >= length) {
throw RangeError.index(index, this, 'index');
}
final buffer = SpineBindings.bindings.spine_array_from_property_buffer(nativePtr.cast());
if (buffer[index].address == 0) return null;
final rtti = SpineBindings.bindings.spine_from_property_get_rtti(buffer[index]);
final className = SpineBindings.bindings.spine_rtti_get_class_name(rtti).cast<Utf8>().toDartString();
switch (className) {
case 'FromRotate':
final castedPtr = SpineBindings.bindings.spine_from_property_cast_to_from_rotate(buffer[index]);
return FromRotate.fromPointer(castedPtr);
case 'FromScaleX':
final castedPtr = SpineBindings.bindings.spine_from_property_cast_to_from_scale_x(buffer[index]);
return FromScaleX.fromPointer(castedPtr);
case 'FromScaleY':
final castedPtr = SpineBindings.bindings.spine_from_property_cast_to_from_scale_y(buffer[index]);
return FromScaleY.fromPointer(castedPtr);
case 'FromShearY':
final castedPtr = SpineBindings.bindings.spine_from_property_cast_to_from_shear_y(buffer[index]);
return FromShearY.fromPointer(castedPtr);
case 'FromX':
final castedPtr = SpineBindings.bindings.spine_from_property_cast_to_from_x(buffer[index]);
return FromX.fromPointer(castedPtr);
case 'FromY':
final castedPtr = SpineBindings.bindings.spine_from_property_cast_to_from_y(buffer[index]);
return FromY.fromPointer(castedPtr);
default:
throw UnsupportedError('Unknown concrete type: $className for abstract class FromProperty');
}
}