attachment property
Attachment?
get
attachment
The current attachment for the slot, or null if the slot has no attachment.
Implementation
Attachment? get attachment {
final result = SpineBindings.bindings.spine_slot_pose_get_attachment(_ptr);
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');
}
}
set
attachment
(Attachment? value)
Sets the slot's attachment and, if the attachment changed, resets sequenceIndex and clears the deform. The deform is not cleared if the old attachment has the same VertexAttachment::getTimelineAttachment() as the specified attachment.
Implementation
set attachment(Attachment? value) {
SpineBindings.bindings.spine_slot_pose_set_attachment(_ptr, value?.nativePtr.cast() ?? Pointer.fromAddress(0));
}