getAttachment2 method
Finds an attachment by looking in getSkin() and SkeletonData::getDefaultSkin() using the slot index and skin placeholder name. First the skin is checked and if the attachment was not found, the default skin is checked.
Returns May be NULL.
Implementation
Attachment? getAttachment2(int slotIndex, String placeholder) {
final result = SpineBindings.bindings
.spine_skeleton_get_attachment_2(_ptr, slotIndex, placeholder.toNativeUtf8().cast<Char>());
if (result.address == 0) return null;
final rtti = SpineBindings.bindings.spine_attachment_get_rtti(result);
final className = SpineBindings.bindings.spine_rtti_get_class_name(rtti).cast<Utf8>().toDartString();
switch (className) {
case 'BoundingBoxAttachment':
final castedPtr = SpineBindings.bindings.spine_attachment_cast_to_bounding_box_attachment(result);
return BoundingBoxAttachment.fromPointer(castedPtr);
case 'ClippingAttachment':
final castedPtr = SpineBindings.bindings.spine_attachment_cast_to_clipping_attachment(result);
return ClippingAttachment.fromPointer(castedPtr);
case 'MeshAttachment':
final castedPtr = SpineBindings.bindings.spine_attachment_cast_to_mesh_attachment(result);
return MeshAttachment.fromPointer(castedPtr);
case 'PathAttachment':
final castedPtr = SpineBindings.bindings.spine_attachment_cast_to_path_attachment(result);
return PathAttachment.fromPointer(castedPtr);
case 'PointAttachment':
final castedPtr = SpineBindings.bindings.spine_attachment_cast_to_point_attachment(result);
return PointAttachment.fromPointer(castedPtr);
case 'RegionAttachment':
final castedPtr = SpineBindings.bindings.spine_attachment_cast_to_region_attachment(result);
return RegionAttachment.fromPointer(castedPtr);
default:
throw UnsupportedError('Unknown concrete type: $className for abstract class Attachment');
}
}