getAttachment method

Attachment? getAttachment(
  1. String slotName,
  2. String placeholder
)

Finds an attachment by looking in getSkin() and SkeletonData::getDefaultSkin() using the slot name 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? getAttachment(String slotName, String placeholder) {
  final result = SpineBindings.bindings.spine_skeleton_get_attachment_1(
      _ptr, slotName.toNativeUtf8().cast<Char>(), 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');
  }
}