From 44c589e5914cb3e48cddd07f1b34565924f54b33 Mon Sep 17 00:00:00 2001 From: Mario Zechner Date: Tue, 6 Sep 2022 10:24:10 +0200 Subject: [PATCH] [flutter] Wrap RegionAttachment. --- spine-flutter/lib/spine_flutter.dart | 117 ++++- .../lib/spine_flutter_bindings_generated.dart | 416 ++++++++++++++++++ spine-flutter/src/spine_flutter.cpp | 155 +++++++ spine-flutter/src/spine_flutter.h | 28 ++ 4 files changed, 715 insertions(+), 1 deletion(-) diff --git a/spine-flutter/lib/spine_flutter.dart b/spine-flutter/lib/spine_flutter.dart index 119507c0c..65e0217ab 100644 --- a/spine-flutter/lib/spine_flutter.dart +++ b/spine-flutter/lib/spine_flutter.dart @@ -957,6 +957,20 @@ class Slot { } } +// FIXME +class TextureRegion { + final spine_texture_region _region; + + TextureRegion._(this._region); +} + +// FIXME +class Sequence { + final spine_sequence _sequence; + + Sequence._(this._sequence); +} + enum AttachmentType { Region(0), Mesh(1), @@ -1011,9 +1025,110 @@ abstract class Attachment { } } -// FIXME class RegionAttachment extends Attachment { RegionAttachment._(spine_attachment attachment): super._(attachment); + + List computeWorldVertices(Slot slot) { + Pointer vertices = malloc.allocate(4 * 9).cast(); + _bindings.spine_region_attachment_compute_world_vertices(_attachment, slot._slot, vertices); + final result = vertices.asTypedList(8).toList(); + malloc.free(vertices); + return result; + } + + double getX() { + return _bindings.spine_region_attachment_get_x(_attachment); + } + + void setX(double x) { + _bindings.spine_region_attachment_set_x(_attachment, x); + } + + double getY() { + return _bindings.spine_region_attachment_get_y(_attachment); + } + + void setY(double y) { + _bindings.spine_region_attachment_set_y(_attachment, y); + } + + double getRotation() { + return _bindings.spine_region_attachment_get_rotation(_attachment); + } + + void setRotation(double rotation) { + _bindings.spine_region_attachment_set_rotation(_attachment, rotation); + } + + double getScaleX() { + return _bindings.spine_region_attachment_get_scale_x(_attachment); + } + + void setScaleX(double scaleX) { + _bindings.spine_region_attachment_set_scale_x(_attachment, scaleX); + } + + double getScaleY() { + return _bindings.spine_region_attachment_get_scale_y(_attachment); + } + + void setScaleY(double scaleY) { + _bindings.spine_region_attachment_set_scale_x(_attachment, scaleY); + } + + double getWidth() { + return _bindings.spine_region_attachment_get_width(_attachment); + } + + void setWidth(double width) { + _bindings.spine_region_attachment_set_width(_attachment, width); + } + + double getHeight() { + return _bindings.spine_region_attachment_get_height(_attachment); + } + + void setHeight(double height) { + _bindings.spine_region_attachment_set_height(_attachment, height); + } + + Color getColor() { + final color = _bindings.spine_region_attachment_get_color(_attachment); + return Color(color.r, color.g, color.b, color.a); + } + + void setColor(double r, double g, double b, double a) { + _bindings.spine_region_attachment_set_color(_attachment, r, g, b, a); + } + + String getPath() { + Pointer path = _bindings.spine_region_attachment_get_path(_attachment).cast(); + return path.toDartString(); + } + + TextureRegion? getRegion() { + final region = _bindings.spine_region_attachment_get_region(_attachment); + if (region.address == nullptr.address) return null; + return TextureRegion._(region); + } + + Sequence? getSequence() { + final sequence = _bindings.spine_region_attachment_get_sequence(_attachment); + if (sequence.address == nullptr.address) return null; + return Sequence._(sequence); + } + + Float32List getOffset() { + final num = _bindings.spine_region_attachment_get_num_offset(_attachment); + final offset = _bindings.spine_region_attachment_get_offset(_attachment); + return offset.asTypedList(num); + } + + Float32List getUVs() { + final num = _bindings.spine_region_attachment_get_num_uvs(_attachment); + final offset = _bindings.spine_region_attachment_get_uvs(_attachment); + return offset.asTypedList(num); + } } class VertexAttachment extends Attachment { diff --git a/spine-flutter/lib/spine_flutter_bindings_generated.dart b/spine-flutter/lib/spine_flutter_bindings_generated.dart index 8c11dd574..512a359bf 100644 --- a/spine-flutter/lib/spine_flutter_bindings_generated.dart +++ b/spine-flutter/lib/spine_flutter_bindings_generated.dart @@ -4780,6 +4780,419 @@ class SpineFlutterBindings { void Function( spine_point_attachment, double, double, double, double)>(); + void spine_region_attachment_update_region( + spine_region_attachment attachment, + ) { + return _spine_region_attachment_update_region( + attachment, + ); + } + + late final _spine_region_attachment_update_regionPtr = + _lookup>( + 'spine_region_attachment_update_region'); + late final _spine_region_attachment_update_region = + _spine_region_attachment_update_regionPtr + .asFunction(); + + void spine_region_attachment_compute_world_vertices( + spine_region_attachment attachment, + spine_slot slot, + ffi.Pointer worldVertices, + ) { + return _spine_region_attachment_compute_world_vertices( + attachment, + slot, + worldVertices, + ); + } + + late final _spine_region_attachment_compute_world_verticesPtr = _lookup< + ffi.NativeFunction< + ffi.Void Function(spine_region_attachment, spine_slot, + ffi.Pointer)>>( + 'spine_region_attachment_compute_world_vertices'); + late final _spine_region_attachment_compute_world_vertices = + _spine_region_attachment_compute_world_verticesPtr.asFunction< + void Function( + spine_region_attachment, spine_slot, ffi.Pointer)>(); + + double spine_region_attachment_get_x( + spine_region_attachment attachment, + ) { + return _spine_region_attachment_get_x( + attachment, + ); + } + + late final _spine_region_attachment_get_xPtr = + _lookup>( + 'spine_region_attachment_get_x'); + late final _spine_region_attachment_get_x = _spine_region_attachment_get_xPtr + .asFunction(); + + void spine_region_attachment_set_x( + spine_region_attachment attachment, + double x, + ) { + return _spine_region_attachment_set_x( + attachment, + x, + ); + } + + late final _spine_region_attachment_set_xPtr = _lookup< + ffi.NativeFunction< + ffi.Void Function(spine_region_attachment, + ffi.Float)>>('spine_region_attachment_set_x'); + late final _spine_region_attachment_set_x = _spine_region_attachment_set_xPtr + .asFunction(); + + double spine_region_attachment_get_y( + spine_region_attachment attachment, + ) { + return _spine_region_attachment_get_y( + attachment, + ); + } + + late final _spine_region_attachment_get_yPtr = + _lookup>( + 'spine_region_attachment_get_y'); + late final _spine_region_attachment_get_y = _spine_region_attachment_get_yPtr + .asFunction(); + + void spine_region_attachment_set_y( + spine_region_attachment attachment, + double y, + ) { + return _spine_region_attachment_set_y( + attachment, + y, + ); + } + + late final _spine_region_attachment_set_yPtr = _lookup< + ffi.NativeFunction< + ffi.Void Function(spine_region_attachment, + ffi.Float)>>('spine_region_attachment_set_y'); + late final _spine_region_attachment_set_y = _spine_region_attachment_set_yPtr + .asFunction(); + + double spine_region_attachment_get_rotation( + spine_region_attachment attachment, + ) { + return _spine_region_attachment_get_rotation( + attachment, + ); + } + + late final _spine_region_attachment_get_rotationPtr = + _lookup>( + 'spine_region_attachment_get_rotation'); + late final _spine_region_attachment_get_rotation = + _spine_region_attachment_get_rotationPtr + .asFunction(); + + void spine_region_attachment_set_rotation( + spine_region_attachment attachment, + double rotation, + ) { + return _spine_region_attachment_set_rotation( + attachment, + rotation, + ); + } + + late final _spine_region_attachment_set_rotationPtr = _lookup< + ffi.NativeFunction< + ffi.Void Function(spine_region_attachment, + ffi.Float)>>('spine_region_attachment_set_rotation'); + late final _spine_region_attachment_set_rotation = + _spine_region_attachment_set_rotationPtr + .asFunction(); + + double spine_region_attachment_get_scale_x( + spine_region_attachment attachment, + ) { + return _spine_region_attachment_get_scale_x( + attachment, + ); + } + + late final _spine_region_attachment_get_scale_xPtr = + _lookup>( + 'spine_region_attachment_get_scale_x'); + late final _spine_region_attachment_get_scale_x = + _spine_region_attachment_get_scale_xPtr + .asFunction(); + + void spine_region_attachment_set_scale_x( + spine_region_attachment attachment, + double scaleX, + ) { + return _spine_region_attachment_set_scale_x( + attachment, + scaleX, + ); + } + + late final _spine_region_attachment_set_scale_xPtr = _lookup< + ffi.NativeFunction< + ffi.Void Function(spine_region_attachment, + ffi.Float)>>('spine_region_attachment_set_scale_x'); + late final _spine_region_attachment_set_scale_x = + _spine_region_attachment_set_scale_xPtr + .asFunction(); + + double spine_region_attachment_get_scale_y( + spine_region_attachment attachment, + ) { + return _spine_region_attachment_get_scale_y( + attachment, + ); + } + + late final _spine_region_attachment_get_scale_yPtr = + _lookup>( + 'spine_region_attachment_get_scale_y'); + late final _spine_region_attachment_get_scale_y = + _spine_region_attachment_get_scale_yPtr + .asFunction(); + + void spine_region_attachment_set_scale_y( + spine_region_attachment attachment, + double scaleY, + ) { + return _spine_region_attachment_set_scale_y( + attachment, + scaleY, + ); + } + + late final _spine_region_attachment_set_scale_yPtr = _lookup< + ffi.NativeFunction< + ffi.Void Function(spine_region_attachment, + ffi.Float)>>('spine_region_attachment_set_scale_y'); + late final _spine_region_attachment_set_scale_y = + _spine_region_attachment_set_scale_yPtr + .asFunction(); + + double spine_region_attachment_get_width( + spine_region_attachment attachment, + ) { + return _spine_region_attachment_get_width( + attachment, + ); + } + + late final _spine_region_attachment_get_widthPtr = + _lookup>( + 'spine_region_attachment_get_width'); + late final _spine_region_attachment_get_width = + _spine_region_attachment_get_widthPtr + .asFunction(); + + void spine_region_attachment_set_width( + spine_region_attachment attachment, + double width, + ) { + return _spine_region_attachment_set_width( + attachment, + width, + ); + } + + late final _spine_region_attachment_set_widthPtr = _lookup< + ffi.NativeFunction< + ffi.Void Function(spine_region_attachment, + ffi.Float)>>('spine_region_attachment_set_width'); + late final _spine_region_attachment_set_width = + _spine_region_attachment_set_widthPtr + .asFunction(); + + double spine_region_attachment_get_height( + spine_region_attachment attachment, + ) { + return _spine_region_attachment_get_height( + attachment, + ); + } + + late final _spine_region_attachment_get_heightPtr = + _lookup>( + 'spine_region_attachment_get_height'); + late final _spine_region_attachment_get_height = + _spine_region_attachment_get_heightPtr + .asFunction(); + + void spine_region_attachment_set_height( + spine_region_attachment attachment, + double height, + ) { + return _spine_region_attachment_set_height( + attachment, + height, + ); + } + + late final _spine_region_attachment_set_heightPtr = _lookup< + ffi.NativeFunction< + ffi.Void Function(spine_region_attachment, + ffi.Float)>>('spine_region_attachment_set_height'); + late final _spine_region_attachment_set_height = + _spine_region_attachment_set_heightPtr + .asFunction(); + + spine_color spine_region_attachment_get_color( + spine_region_attachment attachment, + ) { + return _spine_region_attachment_get_color( + attachment, + ); + } + + late final _spine_region_attachment_get_colorPtr = _lookup< + ffi.NativeFunction>( + 'spine_region_attachment_get_color'); + late final _spine_region_attachment_get_color = + _spine_region_attachment_get_colorPtr + .asFunction(); + + void spine_region_attachment_set_color( + spine_region_attachment attachment, + double r, + double g, + double b, + double a, + ) { + return _spine_region_attachment_set_color( + attachment, + r, + g, + b, + a, + ); + } + + late final _spine_region_attachment_set_colorPtr = _lookup< + ffi.NativeFunction< + ffi.Void Function(spine_region_attachment, ffi.Float, ffi.Float, + ffi.Float, ffi.Float)>>('spine_region_attachment_set_color'); + late final _spine_region_attachment_set_color = + _spine_region_attachment_set_colorPtr.asFunction< + void Function( + spine_region_attachment, double, double, double, double)>(); + + ffi.Pointer spine_region_attachment_get_path( + spine_region_attachment attachment, + ) { + return _spine_region_attachment_get_path( + attachment, + ); + } + + late final _spine_region_attachment_get_pathPtr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + spine_region_attachment)>>('spine_region_attachment_get_path'); + late final _spine_region_attachment_get_path = + _spine_region_attachment_get_pathPtr.asFunction< + ffi.Pointer Function(spine_region_attachment)>(); + + spine_texture_region spine_region_attachment_get_region( + spine_region_attachment attachment, + ) { + return _spine_region_attachment_get_region( + attachment, + ); + } + + late final _spine_region_attachment_get_regionPtr = _lookup< + ffi.NativeFunction< + spine_texture_region Function( + spine_region_attachment)>>('spine_region_attachment_get_region'); + late final _spine_region_attachment_get_region = + _spine_region_attachment_get_regionPtr + .asFunction(); + + spine_sequence spine_region_attachment_get_sequence( + spine_region_attachment attachment, + ) { + return _spine_region_attachment_get_sequence( + attachment, + ); + } + + late final _spine_region_attachment_get_sequencePtr = _lookup< + ffi.NativeFunction>( + 'spine_region_attachment_get_sequence'); + late final _spine_region_attachment_get_sequence = + _spine_region_attachment_get_sequencePtr + .asFunction(); + + int spine_region_attachment_get_num_offset( + spine_region_attachment attachment, + ) { + return _spine_region_attachment_get_num_offset( + attachment, + ); + } + + late final _spine_region_attachment_get_num_offsetPtr = + _lookup>( + 'spine_region_attachment_get_num_offset'); + late final _spine_region_attachment_get_num_offset = + _spine_region_attachment_get_num_offsetPtr + .asFunction(); + + ffi.Pointer spine_region_attachment_get_offset( + spine_region_attachment attachment, + ) { + return _spine_region_attachment_get_offset( + attachment, + ); + } + + late final _spine_region_attachment_get_offsetPtr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + spine_region_attachment)>>('spine_region_attachment_get_offset'); + late final _spine_region_attachment_get_offset = + _spine_region_attachment_get_offsetPtr.asFunction< + ffi.Pointer Function(spine_region_attachment)>(); + + int spine_region_attachment_get_num_uvs( + spine_region_attachment attachment, + ) { + return _spine_region_attachment_get_num_uvs( + attachment, + ); + } + + late final _spine_region_attachment_get_num_uvsPtr = + _lookup>( + 'spine_region_attachment_get_num_uvs'); + late final _spine_region_attachment_get_num_uvs = + _spine_region_attachment_get_num_uvsPtr + .asFunction(); + + ffi.Pointer spine_region_attachment_get_uvs( + spine_region_attachment attachment, + ) { + return _spine_region_attachment_get_uvs( + attachment, + ); + } + + late final _spine_region_attachment_get_uvsPtr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + spine_region_attachment)>>('spine_region_attachment_get_uvs'); + late final _spine_region_attachment_get_uvs = + _spine_region_attachment_get_uvsPtr.asFunction< + ffi.Pointer Function(spine_region_attachment)>(); + void spine_skin_set_attachment( spine_skin skin, int slotIndex, @@ -7319,4 +7732,7 @@ typedef spine_ik_constraint = ffi.Pointer; typedef spine_transform_constraint = ffi.Pointer; typedef spine_path_constraint = ffi.Pointer; typedef spine_point_attachment = ffi.Pointer; +typedef spine_region_attachment = ffi.Pointer; +typedef spine_texture_region = ffi.Pointer; +typedef spine_sequence = ffi.Pointer; typedef spine_constraint_data = ffi.Pointer; diff --git a/spine-flutter/src/spine_flutter.cpp b/spine-flutter/src/spine_flutter.cpp index 848b71314..175b687ce 100644 --- a/spine-flutter/src/spine_flutter.cpp +++ b/spine-flutter/src/spine_flutter.cpp @@ -1999,6 +1999,7 @@ FFI_PLUGIN_EXPORT void spine_attachment_dispose(spine_attachment attachment) { delete _attachment; } +// PointAttachment FFI_PLUGIN_EXPORT spine_vector spine_point_attachment_compute_world_position(spine_point_attachment attachment, spine_bone bone) { spine_vector result = { 0, 0 }; if (attachment == nullptr) return result; @@ -2064,6 +2065,160 @@ FFI_PLUGIN_EXPORT void spine_point_attachment_set_color(spine_point_attachment a _attachment->getColor().set(r, g, b, a); } +// RegionAttachment +FFI_PLUGIN_EXPORT void spine_region_attachment_update_region(spine_region_attachment attachment) { + if (attachment == nullptr) return; + RegionAttachment *_attachment = (RegionAttachment*)attachment; + _attachment->updateRegion(); +} + +FFI_PLUGIN_EXPORT void spine_region_attachment_compute_world_vertices(spine_region_attachment attachment, spine_slot slot, float *worldVertices) { + if (attachment == nullptr) return; + RegionAttachment *_attachment = (RegionAttachment*)attachment; + _attachment->computeWorldVertices(*(Slot*)slot, worldVertices, 0); +} + +FFI_PLUGIN_EXPORT float spine_region_attachment_get_x(spine_region_attachment attachment) { + if (attachment == nullptr) return 0; + RegionAttachment *_attachment = (RegionAttachment*)attachment; + return _attachment->getX(); +} + +FFI_PLUGIN_EXPORT void spine_region_attachment_set_x(spine_region_attachment attachment, float x) { + if (attachment == nullptr) return; + RegionAttachment *_attachment = (RegionAttachment*)attachment; + _attachment->setX(x); +} + +FFI_PLUGIN_EXPORT float spine_region_attachment_get_y(spine_region_attachment attachment) { + if (attachment == nullptr) return 0; + RegionAttachment *_attachment = (RegionAttachment*)attachment; + return _attachment->getY(); +} + +FFI_PLUGIN_EXPORT void spine_region_attachment_set_y(spine_region_attachment attachment, float y) { + if (attachment == nullptr) return; + RegionAttachment *_attachment = (RegionAttachment*)attachment; + _attachment->setY(y); +} + +FFI_PLUGIN_EXPORT float spine_region_attachment_get_rotation(spine_region_attachment attachment) { + if (attachment == nullptr) return 0; + RegionAttachment *_attachment = (RegionAttachment*)attachment; + return _attachment->getRotation(); +} + +FFI_PLUGIN_EXPORT void spine_region_attachment_set_rotation(spine_region_attachment attachment, float rotation) { + if (attachment == nullptr) return; + RegionAttachment *_attachment = (RegionAttachment*)attachment; + _attachment->setRotation(rotation); +} + +FFI_PLUGIN_EXPORT float spine_region_attachment_get_scale_x(spine_region_attachment attachment) { + if (attachment == nullptr) return 0; + RegionAttachment *_attachment = (RegionAttachment*)attachment; + return _attachment->getScaleX(); +} + +FFI_PLUGIN_EXPORT void spine_region_attachment_set_scale_x(spine_region_attachment attachment, float scaleX) { + if (attachment == nullptr) return; + RegionAttachment *_attachment = (RegionAttachment*)attachment; + _attachment->setScaleX(scaleX); +} + +FFI_PLUGIN_EXPORT float spine_region_attachment_get_scale_y(spine_region_attachment attachment) { + if (attachment == nullptr) return 0; + RegionAttachment *_attachment = (RegionAttachment*)attachment; + return _attachment->getScaleY(); +} + +FFI_PLUGIN_EXPORT void spine_region_attachment_set_scale_y(spine_region_attachment attachment, float scaleY) { + if (attachment == nullptr) return; + RegionAttachment *_attachment = (RegionAttachment*)attachment; + _attachment->setScaleY(scaleY); +} + +FFI_PLUGIN_EXPORT float spine_region_attachment_get_width(spine_region_attachment attachment) { + if (attachment == nullptr) return 0; + RegionAttachment *_attachment = (RegionAttachment*)attachment; + return _attachment->getWidth(); +} + +FFI_PLUGIN_EXPORT void spine_region_attachment_set_width(spine_region_attachment attachment, float width) { + if (attachment == nullptr) return; + RegionAttachment *_attachment = (RegionAttachment*)attachment; + _attachment->setWidth(width); +} + +FFI_PLUGIN_EXPORT float spine_region_attachment_get_height(spine_region_attachment attachment) { + if (attachment == nullptr) return 0; + RegionAttachment *_attachment = (RegionAttachment*)attachment; + return _attachment->getHeight(); +} + +FFI_PLUGIN_EXPORT void spine_region_attachment_set_height(spine_region_attachment attachment, float height) { + if (attachment == nullptr) return; + RegionAttachment *_attachment = (RegionAttachment*)attachment; + _attachment->setHeight(height); +} + +FFI_PLUGIN_EXPORT spine_color spine_region_attachment_get_color(spine_region_attachment attachment) { + spine_color result = { 0, 0, 0, 0 }; + if (attachment == nullptr) return result; + RegionAttachment *_attachment = (RegionAttachment*)attachment; + Color &color = _attachment->getColor(); + result = { color.r, color.g, color.b, color.a }; + return result; +} + +FFI_PLUGIN_EXPORT void spine_region_attachment_set_color(spine_region_attachment attachment, float r, float g, float b, float a) { + if (attachment == nullptr) return; + RegionAttachment *_attachment = (RegionAttachment*)attachment; + _attachment->getColor().set(r, g, b, a); +} + +FFI_PLUGIN_EXPORT const char *spine_region_attachment_get_path(spine_region_attachment attachment) { + if (attachment == nullptr) return nullptr; + RegionAttachment *_attachment = (RegionAttachment*)attachment; + return _attachment->getPath().buffer(); +} + +FFI_PLUGIN_EXPORT spine_texture_region spine_region_attachment_get_region(spine_region_attachment attachment) { + if (attachment == nullptr) return nullptr; + RegionAttachment *_attachment = (RegionAttachment*)attachment; + return (spine_texture_region)_attachment->getRegion(); +} + +FFI_PLUGIN_EXPORT spine_sequence spine_region_attachment_get_sequence(spine_region_attachment attachment) { + if (attachment == nullptr) return nullptr; + RegionAttachment *_attachment = (RegionAttachment*)attachment; + return (spine_sequence)_attachment->getSequence(); +} + +FFI_PLUGIN_EXPORT int spine_region_attachment_get_num_offset(spine_region_attachment attachment) { + if (attachment == nullptr) return 0; + RegionAttachment *_attachment = (RegionAttachment*)attachment; + return (int)_attachment->getOffset().size(); +} + +FFI_PLUGIN_EXPORT float *spine_region_attachment_get_offset(spine_region_attachment attachment) { + if (attachment == nullptr) return nullptr; + RegionAttachment *_attachment = (RegionAttachment*)attachment; + return _attachment->getOffset().buffer(); +} + +FFI_PLUGIN_EXPORT int spine_region_attachment_get_num_uvs(spine_region_attachment attachment) { + if (attachment == nullptr) return 0; + RegionAttachment *_attachment = (RegionAttachment*)attachment; + return (int)_attachment->getUVs().size(); +} + +FFI_PLUGIN_EXPORT float *spine_region_attachment_get_uvs(spine_region_attachment attachment) { + if (attachment == nullptr) return nullptr; + RegionAttachment *_attachment = (RegionAttachment*)attachment; + return _attachment->getUVs().buffer(); +} + // Skin FFI_PLUGIN_EXPORT void spine_skin_set_attachment(spine_skin skin, int slotIndex, const char* name, spine_attachment attachment) { if (skin == nullptr) return; diff --git a/spine-flutter/src/spine_flutter.h b/spine-flutter/src/spine_flutter.h index 38b5c47f5..963b847bf 100644 --- a/spine-flutter/src/spine_flutter.h +++ b/spine-flutter/src/spine_flutter.h @@ -33,6 +33,8 @@ typedef void* spine_skin; typedef void* spine_attachment; typedef void* spine_point_attachment; typedef void* spine_region_attachment; +typedef void* spine_texture_region; +typedef void* spine_sequence; typedef void* spine_mesh_attachment; typedef void* spine_clipping_attachment; typedef void* spine_bounding_box_attachment; @@ -487,6 +489,32 @@ FFI_PLUGIN_EXPORT void spine_point_attachment_set_rotation(spine_point_attachmen FFI_PLUGIN_EXPORT spine_color spine_point_attachment_get_color(spine_point_attachment attachment); FFI_PLUGIN_EXPORT void spine_point_attachment_set_color(spine_point_attachment attachment, float r, float g, float b, float a); +FFI_PLUGIN_EXPORT void spine_region_attachment_update_region(spine_region_attachment attachment); +FFI_PLUGIN_EXPORT void spine_region_attachment_compute_world_vertices(spine_region_attachment attachment, spine_slot slot, float *worldVertices); +FFI_PLUGIN_EXPORT float spine_region_attachment_get_x(spine_region_attachment attachment); +FFI_PLUGIN_EXPORT void spine_region_attachment_set_x(spine_region_attachment attachment, float x); +FFI_PLUGIN_EXPORT float spine_region_attachment_get_y(spine_region_attachment attachment); +FFI_PLUGIN_EXPORT void spine_region_attachment_set_y(spine_region_attachment attachment, float y); +FFI_PLUGIN_EXPORT float spine_region_attachment_get_rotation(spine_region_attachment attachment); +FFI_PLUGIN_EXPORT void spine_region_attachment_set_rotation(spine_region_attachment attachment, float rotation); +FFI_PLUGIN_EXPORT float spine_region_attachment_get_scale_x(spine_region_attachment attachment); +FFI_PLUGIN_EXPORT void spine_region_attachment_set_scale_x(spine_region_attachment attachment, float scaleX); +FFI_PLUGIN_EXPORT float spine_region_attachment_get_scale_y(spine_region_attachment attachment); +FFI_PLUGIN_EXPORT void spine_region_attachment_set_scale_y(spine_region_attachment attachment, float scaleY); +FFI_PLUGIN_EXPORT float spine_region_attachment_get_width(spine_region_attachment attachment); +FFI_PLUGIN_EXPORT void spine_region_attachment_set_width(spine_region_attachment attachment, float width); +FFI_PLUGIN_EXPORT float spine_region_attachment_get_height(spine_region_attachment attachment); +FFI_PLUGIN_EXPORT void spine_region_attachment_set_height(spine_region_attachment attachment, float height); +FFI_PLUGIN_EXPORT spine_color spine_region_attachment_get_color(spine_region_attachment attachment); +FFI_PLUGIN_EXPORT void spine_region_attachment_set_color(spine_region_attachment attachment, float r, float g, float b, float a); +FFI_PLUGIN_EXPORT const char *spine_region_attachment_get_path(spine_region_attachment attachment); +FFI_PLUGIN_EXPORT spine_texture_region spine_region_attachment_get_region(spine_region_attachment attachment); +FFI_PLUGIN_EXPORT spine_sequence spine_region_attachment_get_sequence(spine_region_attachment attachment); +FFI_PLUGIN_EXPORT int spine_region_attachment_get_num_offset(spine_region_attachment attachment); +FFI_PLUGIN_EXPORT float *spine_region_attachment_get_offset(spine_region_attachment attachment); +FFI_PLUGIN_EXPORT int spine_region_attachment_get_num_uvs(spine_region_attachment attachment); +FFI_PLUGIN_EXPORT float *spine_region_attachment_get_uvs(spine_region_attachment attachment); + FFI_PLUGIN_EXPORT void spine_skin_set_attachment(spine_skin skin, int slotIndex, const char* name, spine_attachment attachment); FFI_PLUGIN_EXPORT spine_attachment spine_skin_get_attachment(spine_skin skin, int slotIndex, const char* name); FFI_PLUGIN_EXPORT void spine_skin_remove_attachment(spine_skin skin, int slotIndex, const char* name);