createMethod method

  1. @override
Constraint createMethod(
  1. Skeleton skeleton
)
override

Implementation

@override
Constraint createMethod(Skeleton skeleton) {
  final result =
      SpineBindings.bindings.spine_transform_constraint_data_create_method(_ptr, skeleton.nativePtr.cast());
  final rtti = SpineBindings.bindings.spine_constraint_get_rtti(result);
  final className = SpineBindings.bindings.spine_rtti_get_class_name(rtti).cast<Utf8>().toDartString();
  switch (className) {
    case 'IkConstraint':
      final castedPtr = SpineBindings.bindings.spine_constraint_cast_to_ik_constraint(result);
      return IkConstraint.fromPointer(castedPtr);
    case 'PathConstraint':
      final castedPtr = SpineBindings.bindings.spine_constraint_cast_to_path_constraint(result);
      return PathConstraint.fromPointer(castedPtr);
    case 'PhysicsConstraint':
      final castedPtr = SpineBindings.bindings.spine_constraint_cast_to_physics_constraint(result);
      return PhysicsConstraint.fromPointer(castedPtr);
    case 'Slider':
      final castedPtr = SpineBindings.bindings.spine_constraint_cast_to_slider(result);
      return Slider.fromPointer(castedPtr);
    case 'TransformConstraint':
      final castedPtr = SpineBindings.bindings.spine_constraint_cast_to_transform_constraint(result);
      return TransformConstraint.fromPointer(castedPtr);
    default:
      throw UnsupportedError('Unknown concrete type: $className for abstract class Constraint');
  }
}