diff --git a/.gitignore b/.gitignore index 25a4f2531..ffe9fa7cf 100644 --- a/.gitignore +++ b/.gitignore @@ -259,3 +259,4 @@ spine-cpp/build-linux spine-cpp/build-release-debug spine-flutter/test/spine_flutter.dylib spine-c/codegen/nullable.md +spine-c/.docker-built diff --git a/spine-flutter/codegen/src/dart-writer.ts b/spine-flutter/codegen/src/dart-writer.ts index 41835ab6a..e7c87c9f9 100644 --- a/spine-flutter/codegen/src/dart-writer.ts +++ b/spine-flutter/codegen/src/dart-writer.ts @@ -1611,8 +1611,8 @@ ${declaration} {`; lines.push('// ignore_for_file: type_argument_not_matching_bounds'); lines.push(`import 'package:flutter/services.dart';`); lines.push(`import 'package:inject_js/inject_js.dart' as js;`); - lines.push(`import 'package:web_ffi_fork/web_ffi.dart';`); - lines.push(`import 'package:web_ffi_fork/web_ffi_modules.dart';`); + lines.push(`import 'web_ffi/web_ffi.dart';`); + lines.push(`import 'web_ffi/web_ffi_modules.dart';`); lines.push(''); lines.push(`import 'generated/spine_dart_bindings_generated.dart';`); lines.push(''); diff --git a/spine-flutter/example/ios/Flutter/AppFrameworkInfo.plist b/spine-flutter/example/ios/Flutter/AppFrameworkInfo.plist index 9625e105d..7c5696400 100644 --- a/spine-flutter/example/ios/Flutter/AppFrameworkInfo.plist +++ b/spine-flutter/example/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 11.0 + 12.0 diff --git a/spine-flutter/example/ios/Podfile b/spine-flutter/example/ios/Podfile index 88359b225..279576f38 100644 --- a/spine-flutter/example/ios/Podfile +++ b/spine-flutter/example/ios/Podfile @@ -1,5 +1,5 @@ # Uncomment this line to define a global platform for your project -# platform :ios, '11.0' +# platform :ios, '12.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/spine-flutter/example/ios/Podfile.lock b/spine-flutter/example/ios/Podfile.lock index 552d24f2f..ef078a776 100644 --- a/spine-flutter/example/ios/Podfile.lock +++ b/spine-flutter/example/ios/Podfile.lock @@ -14,9 +14,9 @@ EXTERNAL SOURCES: :path: ".symlinks/plugins/spine_flutter/ios" SPEC CHECKSUMS: - Flutter: f04841e97a9d0b0a8025694d0796dd46242b2854 - spine_flutter: 25063c3b7039f2fc0986b260b801a8bbc8906a3f + Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7 + spine_flutter: 6181f4ff23c3d7b53a656057e290c8f76f304a2a -PODFILE CHECKSUM: ef19549a9bc3046e7bb7d2fab4d021637c0c58a3 +PODFILE CHECKSUM: c4c93c5f6502fe2754f48404d3594bf779584011 -COCOAPODS: 1.11.3 +COCOAPODS: 1.16.2 diff --git a/spine-flutter/example/ios/Runner.xcodeproj/project.pbxproj b/spine-flutter/example/ios/Runner.xcodeproj/project.pbxproj index 664dc88cf..d80742828 100644 --- a/spine-flutter/example/ios/Runner.xcodeproj/project.pbxproj +++ b/spine-flutter/example/ios/Runner.xcodeproj/project.pbxproj @@ -156,7 +156,7 @@ 97C146E61CF9000F007C117D /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 1430; + LastUpgradeCheck = 1510; ORGANIZATIONNAME = ""; TargetAttributes = { 97C146ED1CF9000F007C117D = { @@ -343,7 +343,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -420,7 +420,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -469,7 +469,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/spine-flutter/example/ios/Runner/AppDelegate.swift b/spine-flutter/example/ios/Runner/AppDelegate.swift index 175629709..e4c5e5fdc 100644 --- a/spine-flutter/example/ios/Runner/AppDelegate.swift +++ b/spine-flutter/example/ios/Runner/AppDelegate.swift @@ -1,7 +1,7 @@ import Flutter import UIKit -@UIApplicationMain +@main @objc class AppDelegate: FlutterAppDelegate { override func application( _ application: UIApplication, diff --git a/spine-flutter/example/macos/Flutter/GeneratedPluginRegistrant.swift b/spine-flutter/example/macos/Flutter/GeneratedPluginRegistrant.swift index bfa0333a3..cccf817a5 100644 --- a/spine-flutter/example/macos/Flutter/GeneratedPluginRegistrant.swift +++ b/spine-flutter/example/macos/Flutter/GeneratedPluginRegistrant.swift @@ -5,5 +5,6 @@ import FlutterMacOS import Foundation + func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { } diff --git a/spine-flutter/example/pubspec.lock b/spine-flutter/example/pubspec.lock index d38ecc27e..dc1bdaa9e 100644 --- a/spine-flutter/example/pubspec.lock +++ b/spine-flutter/example/pubspec.lock @@ -169,7 +169,7 @@ packages: path: ".." relative: true source: path - version: "4.2.36" + version: "4.3.0" string_scanner: dependency: transitive description: @@ -202,14 +202,6 @@ packages: url: "https://pub.dev" source: hosted version: "2.1.4" - web_ffi_fork: - dependency: transitive - description: - name: web_ffi_fork - sha256: "557b3008bb3c8547ee63eac6e53c0ebebb443da9d7558b3f1b98e1ed59989a11" - url: "https://pub.dev" - source: hosted - version: "0.7.5" sdks: dart: ">=3.7.0-0 <4.0.0" flutter: ">=3.27.1" diff --git a/spine-flutter/example/pubspec.yaml b/spine-flutter/example/pubspec.yaml index d75e4de07..271a0b133 100644 --- a/spine-flutter/example/pubspec.yaml +++ b/spine-flutter/example/pubspec.yaml @@ -4,7 +4,7 @@ publish_to: 'none' version: 1.0.0+1 environment: - sdk: '>=2.17.6 <4.0.0' + sdk: '>=3.0.0 <4.0.0' flutter: ">=3.16.0 <4.0.0" dependencies: diff --git a/spine-flutter/lib/assets/libspine_flutter.js b/spine-flutter/lib/assets/libspine_flutter.js index 179af7fc3..619ffeb0b 100644 --- a/spine-flutter/lib/assets/libspine_flutter.js +++ b/spine-flutter/lib/assets/libspine_flutter.js @@ -18,118 +18,390 @@ var O=(c,d=0,e=NaN)=>{var g=d+e;for(e=d;c[e]&&!(e>=g);)++e;if(16L(`Assertion failed: ${c?O(A,c,void 0):""}, at: `+[d?d?O(A,d,void 0):"":"unknown filename",e,g?g?O(A,g,void 0):"":"unknown function"]);a.___assert_fail=P;var Q=()=>L("");a.__abort_js=Q;a.getHeapMax=()=>2147483648;a.alignMemory=(c,d)=>Math.ceil(c/d)*d;var R=c=>{c=(c-w.buffer.byteLength+65535)/65536|0;try{return w.grow(c),H(),1}catch(d){}};a.growMemory=R; var S=c=>{var d=A.length;c>>>=0;if(2147483648=e;e*=2){var g=d*(1+.2/e);g=Math.min(g,c+100663296);if(R(Math.min(2147483648,65536*Math.ceil(Math.max(c,g)/65536))))return!0}return!1};a._emscripten_resize_heap=S;var T=[null,[],[]];a.printCharBuffers=T;var U=(c,d)=>{var e=T[c];0===d||10===d?((1===c?ba:v)(O(e)),e.length=0):e.push(d)};a.printChar=U;a.flush_NO_FILESYSTEM=()=>{T[1].length&&U(1,10);T[2].length&&U(2,10)};a.SYSCALLS={h:void 0,g(c){return c?O(A,c,void 0):""}}; var V=(c,d,e,g)=>{for(var f=0,n=0;n>2],W=D[d+4>>2];d+=8;for(var K=0;K>2]=f;return 0};a._fd_write=V;a.ptrToString=c=>"0x"+(c>>>0).toString(16).padStart(8,"0"); -var X={__assert_fail:P,_abort_js:Q,emscripten_resize_heap:S,fd_write:V},Y=await (async function(){I++;var c={env:X,wasi_snapshot_preview1:X};M??=q+"libspine_flutter.wasm";try{return Y=(await ea(c)).instance.exports,a.wasmExports=Y,w=Y.memory,H(),I--,0==I&&J&&(c=J,J=null,c()),Y}catch(d){return h(d),Promise.reject(d)}}());a._spine_enable_debug_extension=Y.spine_enable_debug_extension;a._spine_major_version=Y.spine_major_version;a._spine_minor_version=Y.spine_minor_version; -a._spine_report_leaks=Y.spine_report_leaks;a._spine_color_get_r=Y.spine_color_get_r;a._spine_color_get_g=Y.spine_color_get_g;a._spine_color_get_b=Y.spine_color_get_b;a._spine_color_get_a=Y.spine_color_get_a;a._spine_bounds_get_x=Y.spine_bounds_get_x;a._spine_bounds_get_y=Y.spine_bounds_get_y;a._spine_bounds_get_width=Y.spine_bounds_get_width;a._spine_bounds_get_height=Y.spine_bounds_get_height;a._spine_vector_get_x=Y.spine_vector_get_x;a._spine_vector_get_y=Y.spine_vector_get_y; -a._spine_atlas_load=Y.spine_atlas_load;a._spine_atlas_load_callback=Y.spine_atlas_load_callback;a._spine_atlas_get_num_image_paths=Y.spine_atlas_get_num_image_paths;a._spine_atlas_is_pma=Y.spine_atlas_is_pma;a._spine_atlas_get_image_path=Y.spine_atlas_get_image_path;a._spine_atlas_get_error=Y.spine_atlas_get_error;a._spine_atlas_dispose=Y.spine_atlas_dispose;a._free=Y.free;a._spine_skeleton_data_load_json=Y.spine_skeleton_data_load_json;a._spine_skeleton_data_load_binary=Y.spine_skeleton_data_load_binary; -a._spine_skeleton_data_result_get_error=Y.spine_skeleton_data_result_get_error;a._spine_skeleton_data_result_get_data=Y.spine_skeleton_data_result_get_data;a._spine_skeleton_data_result_dispose=Y.spine_skeleton_data_result_dispose;a._spine_skeleton_data_find_bone=Y.spine_skeleton_data_find_bone;a._spine_skeleton_data_find_slot=Y.spine_skeleton_data_find_slot;a._spine_skeleton_data_find_skin=Y.spine_skeleton_data_find_skin;a._spine_skeleton_data_find_event=Y.spine_skeleton_data_find_event; -a._spine_skeleton_data_find_animation=Y.spine_skeleton_data_find_animation;a._spine_skeleton_data_find_ik_constraint=Y.spine_skeleton_data_find_ik_constraint;a._spine_skeleton_data_find_transform_constraint=Y.spine_skeleton_data_find_transform_constraint;a._spine_skeleton_data_find_path_constraint=Y.spine_skeleton_data_find_path_constraint;a._spine_skeleton_data_find_physics_constraint=Y.spine_skeleton_data_find_physics_constraint;a._spine_skeleton_data_get_name=Y.spine_skeleton_data_get_name; -a._spine_skeleton_data_get_num_bones=Y.spine_skeleton_data_get_num_bones;a._spine_skeleton_data_get_bones=Y.spine_skeleton_data_get_bones;a._spine_skeleton_data_get_num_slots=Y.spine_skeleton_data_get_num_slots;a._spine_skeleton_data_get_slots=Y.spine_skeleton_data_get_slots;a._spine_skeleton_data_get_num_skins=Y.spine_skeleton_data_get_num_skins;a._spine_skeleton_data_get_skins=Y.spine_skeleton_data_get_skins;a._spine_skeleton_data_get_default_skin=Y.spine_skeleton_data_get_default_skin; -a._spine_skeleton_data_set_default_skin=Y.spine_skeleton_data_set_default_skin;a._spine_skeleton_data_get_num_events=Y.spine_skeleton_data_get_num_events;a._spine_skeleton_data_get_events=Y.spine_skeleton_data_get_events;a._spine_skeleton_data_get_num_animations=Y.spine_skeleton_data_get_num_animations;a._spine_skeleton_data_get_animations=Y.spine_skeleton_data_get_animations;a._spine_skeleton_data_get_num_ik_constraints=Y.spine_skeleton_data_get_num_ik_constraints; -a._spine_skeleton_data_get_ik_constraints=Y.spine_skeleton_data_get_ik_constraints;a._spine_skeleton_data_get_num_transform_constraints=Y.spine_skeleton_data_get_num_transform_constraints;a._spine_skeleton_data_get_transform_constraints=Y.spine_skeleton_data_get_transform_constraints;a._spine_skeleton_data_get_num_path_constraints=Y.spine_skeleton_data_get_num_path_constraints;a._spine_skeleton_data_get_path_constraints=Y.spine_skeleton_data_get_path_constraints; -a._spine_skeleton_data_get_num_physics_constraints=Y.spine_skeleton_data_get_num_physics_constraints;a._spine_skeleton_data_get_physics_constraints=Y.spine_skeleton_data_get_physics_constraints;a._spine_skeleton_data_get_x=Y.spine_skeleton_data_get_x;a._spine_skeleton_data_set_x=Y.spine_skeleton_data_set_x;a._spine_skeleton_data_get_y=Y.spine_skeleton_data_get_y;a._spine_skeleton_data_set_y=Y.spine_skeleton_data_set_y;a._spine_skeleton_data_get_width=Y.spine_skeleton_data_get_width; -a._spine_skeleton_data_set_width=Y.spine_skeleton_data_set_width;a._spine_skeleton_data_get_height=Y.spine_skeleton_data_get_height;a._spine_skeleton_data_set_height=Y.spine_skeleton_data_set_height;a._spine_skeleton_data_get_version=Y.spine_skeleton_data_get_version;a._spine_skeleton_data_get_hash=Y.spine_skeleton_data_get_hash;a._spine_skeleton_data_get_images_path=Y.spine_skeleton_data_get_images_path;a._spine_skeleton_data_get_audio_path=Y.spine_skeleton_data_get_audio_path; -a._spine_skeleton_data_get_fps=Y.spine_skeleton_data_get_fps;a._spine_skeleton_data_get_reference_scale=Y.spine_skeleton_data_get_reference_scale;a._spine_skeleton_data_dispose=Y.spine_skeleton_data_dispose;a._spine_skeleton_drawable_create=Y.spine_skeleton_drawable_create;a._spine_skeleton_drawable_dispose=Y.spine_skeleton_drawable_dispose;a._spine_skeleton_drawable_render=Y.spine_skeleton_drawable_render;a._spine_skeleton_drawable_get_skeleton=Y.spine_skeleton_drawable_get_skeleton; -a._spine_skeleton_drawable_get_animation_state=Y.spine_skeleton_drawable_get_animation_state;a._spine_skeleton_drawable_get_animation_state_data=Y.spine_skeleton_drawable_get_animation_state_data;a._spine_skeleton_drawable_get_animation_state_events=Y.spine_skeleton_drawable_get_animation_state_events;a._spine_render_command_get_positions=Y.spine_render_command_get_positions;a._spine_render_command_get_uvs=Y.spine_render_command_get_uvs;a._spine_render_command_get_colors=Y.spine_render_command_get_colors; -a._spine_render_command_get_dark_colors=Y.spine_render_command_get_dark_colors;a._spine_render_command_get_num_vertices=Y.spine_render_command_get_num_vertices;a._spine_render_command_get_indices=Y.spine_render_command_get_indices;a._spine_render_command_get_num_indices=Y.spine_render_command_get_num_indices;a._spine_render_command_get_atlas_page=Y.spine_render_command_get_atlas_page;a._spine_render_command_get_blend_mode=Y.spine_render_command_get_blend_mode;a._spine_render_command_get_next=Y.spine_render_command_get_next; -a._spine_animation_get_name=Y.spine_animation_get_name;a._spine_animation_get_duration=Y.spine_animation_get_duration;a._spine_animation_state_data_get_skeleton_data=Y.spine_animation_state_data_get_skeleton_data;a._spine_animation_state_data_get_default_mix=Y.spine_animation_state_data_get_default_mix;a._spine_animation_state_data_set_default_mix=Y.spine_animation_state_data_set_default_mix;a._spine_animation_state_data_set_mix=Y.spine_animation_state_data_set_mix; -a._spine_animation_state_data_get_mix=Y.spine_animation_state_data_get_mix;a._spine_animation_state_data_set_mix_by_name=Y.spine_animation_state_data_set_mix_by_name;a._spine_animation_state_data_get_mix_by_name=Y.spine_animation_state_data_get_mix_by_name;a._spine_animation_state_data_clear=Y.spine_animation_state_data_clear;a._spine_animation_state_update=Y.spine_animation_state_update;a._spine_animation_state_dispose_track_entry=Y.spine_animation_state_dispose_track_entry; -a._spine_animation_state_apply=Y.spine_animation_state_apply;a._spine_animation_state_clear_tracks=Y.spine_animation_state_clear_tracks;a._spine_animation_state_get_num_tracks=Y.spine_animation_state_get_num_tracks;a._spine_animation_state_clear_track=Y.spine_animation_state_clear_track;a._spine_animation_state_set_animation_by_name=Y.spine_animation_state_set_animation_by_name;a._spine_animation_state_set_animation=Y.spine_animation_state_set_animation; -a._spine_animation_state_add_animation_by_name=Y.spine_animation_state_add_animation_by_name;a._spine_animation_state_add_animation=Y.spine_animation_state_add_animation;a._spine_animation_state_set_empty_animation=Y.spine_animation_state_set_empty_animation;a._spine_animation_state_add_empty_animation=Y.spine_animation_state_add_empty_animation;a._spine_animation_state_set_empty_animations=Y.spine_animation_state_set_empty_animations;a._spine_animation_state_get_current=Y.spine_animation_state_get_current; -a._spine_animation_state_get_data=Y.spine_animation_state_get_data;a._spine_animation_state_get_time_scale=Y.spine_animation_state_get_time_scale;a._spine_animation_state_set_time_scale=Y.spine_animation_state_set_time_scale;a._spine_animation_state_events_get_num_events=Y.spine_animation_state_events_get_num_events;a._spine_animation_state_events_get_event_type=Y.spine_animation_state_events_get_event_type;a._spine_animation_state_events_get_track_entry=Y.spine_animation_state_events_get_track_entry; -a._spine_animation_state_events_get_event=Y.spine_animation_state_events_get_event;a._spine_animation_state_events_reset=Y.spine_animation_state_events_reset;a._spine_track_entry_get_track_index=Y.spine_track_entry_get_track_index;a._spine_track_entry_get_animation=Y.spine_track_entry_get_animation;a._spine_track_entry_get_previous=Y.spine_track_entry_get_previous;a._spine_track_entry_get_loop=Y.spine_track_entry_get_loop;a._spine_track_entry_set_loop=Y.spine_track_entry_set_loop; +var X={__assert_fail:P,_abort_js:Q,emscripten_resize_heap:S,fd_write:V},Y=await (async function(){I++;var c={env:X,wasi_snapshot_preview1:X};M??=q+"libspine_flutter.wasm";try{return Y=(await ea(c)).instance.exports,a.wasmExports=Y,w=Y.memory,H(),I--,0==I&&J&&(c=J,J=null,c()),Y}catch(d){return h(d),Promise.reject(d)}}());a._spine_major_version=Y.spine_major_version;a._spine_minor_version=Y.spine_minor_version;a._spine_enable_debug_extension=Y.spine_enable_debug_extension; +a._spine_report_leaks=Y.spine_report_leaks;a._spine_atlas_load=Y.spine_atlas_load;a._spine_atlas_load_callback=Y.spine_atlas_load_callback;a._spine_atlas_result_get_error=Y.spine_atlas_result_get_error;a._spine_atlas_result_get_atlas=Y.spine_atlas_result_get_atlas;a._spine_atlas_result_dispose=Y.spine_atlas_result_dispose;a._spine_skeleton_data_load_json=Y.spine_skeleton_data_load_json;a._spine_skeleton_data_load_binary=Y.spine_skeleton_data_load_binary;a._spine_skeleton_data_result_get_error=Y.spine_skeleton_data_result_get_error; +a._spine_skeleton_data_result_get_data=Y.spine_skeleton_data_result_get_data;a._spine_skeleton_data_result_dispose=Y.spine_skeleton_data_result_dispose;a._spine_skeleton_drawable_create=Y.spine_skeleton_drawable_create;a._spine_skeleton_drawable_render=Y.spine_skeleton_drawable_render;a._spine_skeleton_drawable_dispose=Y.spine_skeleton_drawable_dispose;a._spine_skeleton_drawable_get_skeleton=Y.spine_skeleton_drawable_get_skeleton;a._spine_skeleton_drawable_get_animation_state=Y.spine_skeleton_drawable_get_animation_state; +a._spine_skeleton_drawable_get_animation_state_data=Y.spine_skeleton_drawable_get_animation_state_data;a._spine_skeleton_drawable_get_animation_state_events=Y.spine_skeleton_drawable_get_animation_state_events;a._spine_animation_state_events_get_num_events=Y.spine_animation_state_events_get_num_events;a._spine_animation_state_events_get_event_type=Y.spine_animation_state_events_get_event_type;a._spine_animation_state_events_get_track_entry=Y.spine_animation_state_events_get_track_entry; +a._spine_animation_state_events_get_event=Y.spine_animation_state_events_get_event;a._spine_animation_state_events_reset=Y.spine_animation_state_events_reset;a._spine_skin_entries_dispose=Y.spine_skin_entries_dispose;a._spine_skin_entries_get_num_entries=Y.spine_skin_entries_get_num_entries;a._spine_skin_entries_get_entry=Y.spine_skin_entries_get_entry;a._spine_skin_entry_get_slot_index=Y.spine_skin_entry_get_slot_index;a._spine_skin_entry_get_name=Y.spine_skin_entry_get_name; +a._spine_skin_entry_get_attachment=Y.spine_skin_entry_get_attachment;a._spine_skin_get_entries=Y.spine_skin_get_entries;a._spine_skeleton_get_bounds=Y.spine_skeleton_get_bounds;a._spine_array_float_clear=Y.spine_array_float_clear;a._spine_array_float_add=Y.spine_array_float_add;a._spine_skeleton_get_position_v=Y.spine_skeleton_get_position_v;a._spine_bone_pose_world_to_local_v=Y.spine_bone_pose_world_to_local_v;a._spine_bone_pose_local_to_world_v=Y.spine_bone_pose_local_to_world_v; +a._spine_bone_pose_world_to_parent_v=Y.spine_bone_pose_world_to_parent_v;a._spine_bone_pose_parent_to_world_v=Y.spine_bone_pose_parent_to_world_v;a._spine_path_constraint_pose_create=Y.spine_path_constraint_pose_create;a._spine_path_constraint_pose_dispose=Y.spine_path_constraint_pose_dispose;a._spine_path_constraint_pose_set=Y.spine_path_constraint_pose_set;a._spine_path_constraint_pose_get_position=Y.spine_path_constraint_pose_get_position;a._spine_path_constraint_pose_set_position=Y.spine_path_constraint_pose_set_position; +a._spine_path_constraint_pose_get_spacing=Y.spine_path_constraint_pose_get_spacing;a._spine_path_constraint_pose_set_spacing=Y.spine_path_constraint_pose_set_spacing;a._spine_path_constraint_pose_get_mix_rotate=Y.spine_path_constraint_pose_get_mix_rotate;a._spine_path_constraint_pose_set_mix_rotate=Y.spine_path_constraint_pose_set_mix_rotate;a._spine_path_constraint_pose_get_mix_x=Y.spine_path_constraint_pose_get_mix_x;a._spine_path_constraint_pose_set_mix_x=Y.spine_path_constraint_pose_set_mix_x; +a._spine_path_constraint_pose_get_mix_y=Y.spine_path_constraint_pose_get_mix_y;a._spine_path_constraint_pose_set_mix_y=Y.spine_path_constraint_pose_set_mix_y;a._spine_from_rotate_create=Y.spine_from_rotate_create;a._spine_from_rotate_dispose=Y.spine_from_rotate_dispose;a._spine_from_rotate_get_rtti=Y.spine_from_rotate_get_rtti;a._spine_from_rotate_value=Y.spine_from_rotate_value;a._spine_from_rotate_rtti=Y.spine_from_rotate_rtti;a._spine_bone_timeline_dispose=Y.spine_bone_timeline_dispose; +a._spine_bone_timeline_get_rtti=Y.spine_bone_timeline_get_rtti;a._spine_bone_timeline_get_bone_index=Y.spine_bone_timeline_get_bone_index;a._spine_bone_timeline_set_bone_index=Y.spine_bone_timeline_set_bone_index;a._spine_bone_timeline_rtti=Y.spine_bone_timeline_rtti;a._spine_inherit_timeline_create=Y.spine_inherit_timeline_create;a._spine_inherit_timeline_dispose=Y.spine_inherit_timeline_dispose;a._spine_inherit_timeline_get_rtti=Y.spine_inherit_timeline_get_rtti; +a._spine_inherit_timeline_set_frame=Y.spine_inherit_timeline_set_frame;a._spine_inherit_timeline_apply=Y.spine_inherit_timeline_apply;a._spine_inherit_timeline_get_bone_index=Y.spine_inherit_timeline_get_bone_index;a._spine_inherit_timeline_set_bone_index=Y.spine_inherit_timeline_set_bone_index;a._spine_inherit_timeline_get_frame_entries=Y.spine_inherit_timeline_get_frame_entries;a._spine_inherit_timeline_get_frame_count=Y.spine_inherit_timeline_get_frame_count; +a._spine_inherit_timeline_get_frames=Y.spine_inherit_timeline_get_frames;a._spine_inherit_timeline_get_duration=Y.spine_inherit_timeline_get_duration;a._spine_inherit_timeline_get_property_ids=Y.spine_inherit_timeline_get_property_ids;a._spine_inherit_timeline_rtti=Y.spine_inherit_timeline_rtti;a._spine_attachment_dispose=Y.spine_attachment_dispose;a._spine_attachment_get_rtti=Y.spine_attachment_get_rtti;a._spine_attachment_get_name=Y.spine_attachment_get_name;a._spine_attachment_copy=Y.spine_attachment_copy; +a._spine_attachment_get_ref_count=Y.spine_attachment_get_ref_count;a._spine_attachment_reference=Y.spine_attachment_reference;a._spine_attachment_dereference=Y.spine_attachment_dereference;a._spine_attachment_rtti=Y.spine_attachment_rtti;a._spine_ik_constraint_timeline_create=Y.spine_ik_constraint_timeline_create;a._spine_ik_constraint_timeline_dispose=Y.spine_ik_constraint_timeline_dispose;a._spine_ik_constraint_timeline_get_rtti=Y.spine_ik_constraint_timeline_get_rtti; +a._spine_ik_constraint_timeline_apply=Y.spine_ik_constraint_timeline_apply;a._spine_ik_constraint_timeline_set_frame=Y.spine_ik_constraint_timeline_set_frame;a._spine_ik_constraint_timeline_get_constraint_index=Y.spine_ik_constraint_timeline_get_constraint_index;a._spine_ik_constraint_timeline_set_constraint_index=Y.spine_ik_constraint_timeline_set_constraint_index;a._spine_ik_constraint_timeline_set_linear=Y.spine_ik_constraint_timeline_set_linear;a._spine_ik_constraint_timeline_set_stepped=Y.spine_ik_constraint_timeline_set_stepped; +a._spine_ik_constraint_timeline_set_bezier=Y.spine_ik_constraint_timeline_set_bezier;a._spine_ik_constraint_timeline_get_bezier_value=Y.spine_ik_constraint_timeline_get_bezier_value;a._spine_ik_constraint_timeline_get_curves=Y.spine_ik_constraint_timeline_get_curves;a._spine_ik_constraint_timeline_get_frame_entries=Y.spine_ik_constraint_timeline_get_frame_entries;a._spine_ik_constraint_timeline_get_frame_count=Y.spine_ik_constraint_timeline_get_frame_count; +a._spine_ik_constraint_timeline_get_frames=Y.spine_ik_constraint_timeline_get_frames;a._spine_ik_constraint_timeline_get_duration=Y.spine_ik_constraint_timeline_get_duration;a._spine_ik_constraint_timeline_get_property_ids=Y.spine_ik_constraint_timeline_get_property_ids;a._spine_ik_constraint_timeline_rtti=Y.spine_ik_constraint_timeline_rtti;a._spine_skeleton_create=Y.spine_skeleton_create;a._spine_skeleton_dispose=Y.spine_skeleton_dispose;a._spine_skeleton_update_cache=Y.spine_skeleton_update_cache; +a._spine_skeleton_print_update_cache=Y.spine_skeleton_print_update_cache;a._spine_skeleton_constrained=Y.spine_skeleton_constrained;a._spine_skeleton_sort_bone=Y.spine_skeleton_sort_bone;a._spine_skeleton_sort_reset=Y.spine_skeleton_sort_reset;a._spine_skeleton_update_world_transform=Y.spine_skeleton_update_world_transform;a._spine_skeleton_setup_pose=Y.spine_skeleton_setup_pose;a._spine_skeleton_setup_pose_bones=Y.spine_skeleton_setup_pose_bones;a._spine_skeleton_setup_pose_slots=Y.spine_skeleton_setup_pose_slots; +a._spine_skeleton_get_data=Y.spine_skeleton_get_data;a._spine_skeleton_get_bones=Y.spine_skeleton_get_bones;a._spine_skeleton_get_update_cache=Y.spine_skeleton_get_update_cache;a._spine_skeleton_get_root_bone=Y.spine_skeleton_get_root_bone;a._spine_skeleton_find_bone=Y.spine_skeleton_find_bone;a._spine_skeleton_get_slots=Y.spine_skeleton_get_slots;a._spine_skeleton_find_slot=Y.spine_skeleton_find_slot;a._spine_skeleton_get_draw_order=Y.spine_skeleton_get_draw_order;a._spine_skeleton_get_skin=Y.spine_skeleton_get_skin; +a._spine_skeleton_set_skin_1=Y.spine_skeleton_set_skin_1;a._spine_skeleton_set_skin_2=Y.spine_skeleton_set_skin_2;a._spine_skeleton_get_attachment_1=Y.spine_skeleton_get_attachment_1;a._spine_skeleton_get_attachment_2=Y.spine_skeleton_get_attachment_2;a._spine_skeleton_set_attachment=Y.spine_skeleton_set_attachment;a._spine_skeleton_get_constraints=Y.spine_skeleton_get_constraints;a._spine_skeleton_get_physics_constraints=Y.spine_skeleton_get_physics_constraints;a._spine_skeleton_get_bounds_1=Y.spine_skeleton_get_bounds_1; +a._spine_skeleton_get_bounds_2=Y.spine_skeleton_get_bounds_2;a._spine_skeleton_get_color=Y.spine_skeleton_get_color;a._spine_skeleton_set_color_1=Y.spine_skeleton_set_color_1;a._spine_skeleton_set_color_2=Y.spine_skeleton_set_color_2;a._spine_skeleton_get_scale_x=Y.spine_skeleton_get_scale_x;a._spine_skeleton_set_scale_x=Y.spine_skeleton_set_scale_x;a._spine_skeleton_get_scale_y=Y.spine_skeleton_get_scale_y;a._spine_skeleton_set_scale_y=Y.spine_skeleton_set_scale_y;a._spine_skeleton_set_scale=Y.spine_skeleton_set_scale; +a._spine_skeleton_get_x=Y.spine_skeleton_get_x;a._spine_skeleton_set_x=Y.spine_skeleton_set_x;a._spine_skeleton_get_y=Y.spine_skeleton_get_y;a._spine_skeleton_set_y=Y.spine_skeleton_set_y;a._spine_skeleton_set_position=Y.spine_skeleton_set_position;a._spine_skeleton_get_position=Y.spine_skeleton_get_position;a._spine_skeleton_get_wind_x=Y.spine_skeleton_get_wind_x;a._spine_skeleton_set_wind_x=Y.spine_skeleton_set_wind_x;a._spine_skeleton_get_wind_y=Y.spine_skeleton_get_wind_y; +a._spine_skeleton_set_wind_y=Y.spine_skeleton_set_wind_y;a._spine_skeleton_get_gravity_x=Y.spine_skeleton_get_gravity_x;a._spine_skeleton_set_gravity_x=Y.spine_skeleton_set_gravity_x;a._spine_skeleton_get_gravity_y=Y.spine_skeleton_get_gravity_y;a._spine_skeleton_set_gravity_y=Y.spine_skeleton_set_gravity_y;a._spine_skeleton_physics_translate=Y.spine_skeleton_physics_translate;a._spine_skeleton_physics_rotate=Y.spine_skeleton_physics_rotate;a._spine_skeleton_get_time=Y.spine_skeleton_get_time; +a._spine_skeleton_set_time=Y.spine_skeleton_set_time;a._spine_skeleton_update=Y.spine_skeleton_update;a._spine_texture_region_create=Y.spine_texture_region_create;a._spine_texture_region_dispose=Y.spine_texture_region_dispose;a._spine_texture_region_get_rtti=Y.spine_texture_region_get_rtti;a._spine_texture_region_get_u=Y.spine_texture_region_get_u;a._spine_texture_region_set_u=Y.spine_texture_region_set_u;a._spine_texture_region_get_v=Y.spine_texture_region_get_v;a._spine_texture_region_set_v=Y.spine_texture_region_set_v; +a._spine_texture_region_get_u2=Y.spine_texture_region_get_u2;a._spine_texture_region_set_u2=Y.spine_texture_region_set_u2;a._spine_texture_region_get_v2=Y.spine_texture_region_get_v2;a._spine_texture_region_set_v2=Y.spine_texture_region_set_v2;a._spine_texture_region_get_region_width=Y.spine_texture_region_get_region_width;a._spine_texture_region_set_region_width=Y.spine_texture_region_set_region_width;a._spine_texture_region_get_region_height=Y.spine_texture_region_get_region_height; +a._spine_texture_region_set_region_height=Y.spine_texture_region_set_region_height;a._spine_texture_region_rtti=Y.spine_texture_region_rtti;a._spine_translate_x_timeline_create=Y.spine_translate_x_timeline_create;a._spine_translate_x_timeline_dispose=Y.spine_translate_x_timeline_dispose;a._spine_translate_x_timeline_get_rtti=Y.spine_translate_x_timeline_get_rtti;a._spine_translate_x_timeline_apply=Y.spine_translate_x_timeline_apply;a._spine_translate_x_timeline_get_bone_index=Y.spine_translate_x_timeline_get_bone_index; +a._spine_translate_x_timeline_set_bone_index=Y.spine_translate_x_timeline_set_bone_index;a._spine_translate_x_timeline_set_frame=Y.spine_translate_x_timeline_set_frame;a._spine_translate_x_timeline_get_curve_value=Y.spine_translate_x_timeline_get_curve_value;a._spine_translate_x_timeline_get_relative_value=Y.spine_translate_x_timeline_get_relative_value;a._spine_translate_x_timeline_get_absolute_value_1=Y.spine_translate_x_timeline_get_absolute_value_1; +a._spine_translate_x_timeline_get_absolute_value_2=Y.spine_translate_x_timeline_get_absolute_value_2;a._spine_translate_x_timeline_get_scale_value=Y.spine_translate_x_timeline_get_scale_value;a._spine_translate_x_timeline_set_linear=Y.spine_translate_x_timeline_set_linear;a._spine_translate_x_timeline_set_stepped=Y.spine_translate_x_timeline_set_stepped;a._spine_translate_x_timeline_set_bezier=Y.spine_translate_x_timeline_set_bezier;a._spine_translate_x_timeline_get_bezier_value=Y.spine_translate_x_timeline_get_bezier_value; +a._spine_translate_x_timeline_get_curves=Y.spine_translate_x_timeline_get_curves;a._spine_translate_x_timeline_get_frame_entries=Y.spine_translate_x_timeline_get_frame_entries;a._spine_translate_x_timeline_get_frame_count=Y.spine_translate_x_timeline_get_frame_count;a._spine_translate_x_timeline_get_frames=Y.spine_translate_x_timeline_get_frames;a._spine_translate_x_timeline_get_duration=Y.spine_translate_x_timeline_get_duration;a._spine_translate_x_timeline_get_property_ids=Y.spine_translate_x_timeline_get_property_ids; +a._spine_translate_x_timeline_rtti=Y.spine_translate_x_timeline_rtti;a._spine_transform_constraint_create=Y.spine_transform_constraint_create;a._spine_transform_constraint_dispose=Y.spine_transform_constraint_dispose;a._spine_transform_constraint_get_rtti=Y.spine_transform_constraint_get_rtti;a._spine_transform_constraint_copy=Y.spine_transform_constraint_copy;a._spine_transform_constraint_update=Y.spine_transform_constraint_update;a._spine_transform_constraint_sort=Y.spine_transform_constraint_sort; +a._spine_transform_constraint_is_source_active=Y.spine_transform_constraint_is_source_active;a._spine_transform_constraint_get_bones=Y.spine_transform_constraint_get_bones;a._spine_transform_constraint_get_source=Y.spine_transform_constraint_get_source;a._spine_transform_constraint_set_source=Y.spine_transform_constraint_set_source;a._spine_transform_constraint_get_data=Y.spine_transform_constraint_get_data;a._spine_transform_constraint_get_pose=Y.spine_transform_constraint_get_pose; +a._spine_transform_constraint_get_applied_pose=Y.spine_transform_constraint_get_applied_pose;a._spine_transform_constraint_reset_constrained=Y.spine_transform_constraint_reset_constrained;a._spine_transform_constraint_constrained=Y.spine_transform_constraint_constrained;a._spine_transform_constraint_is_pose_equal_to_applied=Y.spine_transform_constraint_is_pose_equal_to_applied;a._spine_transform_constraint_is_active=Y.spine_transform_constraint_is_active;a._spine_transform_constraint_set_active=Y.spine_transform_constraint_set_active; +a._spine_transform_constraint_rtti=Y.spine_transform_constraint_rtti;a._spine_ik_constraint_pose_create=Y.spine_ik_constraint_pose_create;a._spine_ik_constraint_pose_dispose=Y.spine_ik_constraint_pose_dispose;a._spine_ik_constraint_pose_set=Y.spine_ik_constraint_pose_set;a._spine_ik_constraint_pose_get_mix=Y.spine_ik_constraint_pose_get_mix;a._spine_ik_constraint_pose_set_mix=Y.spine_ik_constraint_pose_set_mix;a._spine_ik_constraint_pose_get_softness=Y.spine_ik_constraint_pose_get_softness; +a._spine_ik_constraint_pose_set_softness=Y.spine_ik_constraint_pose_set_softness;a._spine_ik_constraint_pose_get_bend_direction=Y.spine_ik_constraint_pose_get_bend_direction;a._spine_ik_constraint_pose_set_bend_direction=Y.spine_ik_constraint_pose_set_bend_direction;a._spine_ik_constraint_pose_get_compress=Y.spine_ik_constraint_pose_get_compress;a._spine_ik_constraint_pose_set_compress=Y.spine_ik_constraint_pose_set_compress;a._spine_ik_constraint_pose_get_stretch=Y.spine_ik_constraint_pose_get_stretch; +a._spine_ik_constraint_pose_set_stretch=Y.spine_ik_constraint_pose_set_stretch;a._spine_bone_create=Y.spine_bone_create;a._spine_bone_create2=Y.spine_bone_create2;a._spine_bone_dispose=Y.spine_bone_dispose;a._spine_bone_get_rtti=Y.spine_bone_get_rtti;a._spine_bone_get_parent=Y.spine_bone_get_parent;a._spine_bone_get_children=Y.spine_bone_get_children;a._spine_bone_is_y_down=Y.spine_bone_is_y_down;a._spine_bone_set_y_down=Y.spine_bone_set_y_down;a._spine_bone_update=Y.spine_bone_update; +a._spine_bone_get_data=Y.spine_bone_get_data;a._spine_bone_get_pose=Y.spine_bone_get_pose;a._spine_bone_get_applied_pose=Y.spine_bone_get_applied_pose;a._spine_bone_reset_constrained=Y.spine_bone_reset_constrained;a._spine_bone_constrained=Y.spine_bone_constrained;a._spine_bone_is_pose_equal_to_applied=Y.spine_bone_is_pose_equal_to_applied;a._spine_bone_is_active=Y.spine_bone_is_active;a._spine_bone_set_active=Y.spine_bone_set_active;a._spine_bone_rtti=Y.spine_bone_rtti; +a._spine_to_scale_y_create=Y.spine_to_scale_y_create;a._spine_to_scale_y_dispose=Y.spine_to_scale_y_dispose;a._spine_to_scale_y_get_rtti=Y.spine_to_scale_y_get_rtti;a._spine_to_scale_y_mix=Y.spine_to_scale_y_mix;a._spine_to_scale_y_apply=Y.spine_to_scale_y_apply;a._spine_to_scale_y_rtti=Y.spine_to_scale_y_rtti;a._spine_from_property_dispose=Y.spine_from_property_dispose;a._spine_from_property_get_rtti=Y.spine_from_property_get_rtti;a._spine_from_property_value=Y.spine_from_property_value; +a._spine_from_property_rtti=Y.spine_from_property_rtti;a._spine_from_property_get__offset=Y.spine_from_property_get__offset;a._spine_from_property_set__offset=Y.spine_from_property_set__offset;a._spine_from_property_get__to=Y.spine_from_property_get__to;a._spine_from_property_set__to=Y.spine_from_property_set__to;a._spine_transform_constraint_pose_create=Y.spine_transform_constraint_pose_create;a._spine_transform_constraint_pose_dispose=Y.spine_transform_constraint_pose_dispose; +a._spine_transform_constraint_pose_set=Y.spine_transform_constraint_pose_set;a._spine_transform_constraint_pose_get_mix_rotate=Y.spine_transform_constraint_pose_get_mix_rotate;a._spine_transform_constraint_pose_set_mix_rotate=Y.spine_transform_constraint_pose_set_mix_rotate;a._spine_transform_constraint_pose_get_mix_x=Y.spine_transform_constraint_pose_get_mix_x;a._spine_transform_constraint_pose_set_mix_x=Y.spine_transform_constraint_pose_set_mix_x;a._spine_transform_constraint_pose_get_mix_y=Y.spine_transform_constraint_pose_get_mix_y; +a._spine_transform_constraint_pose_set_mix_y=Y.spine_transform_constraint_pose_set_mix_y;a._spine_transform_constraint_pose_get_mix_scale_x=Y.spine_transform_constraint_pose_get_mix_scale_x;a._spine_transform_constraint_pose_set_mix_scale_x=Y.spine_transform_constraint_pose_set_mix_scale_x;a._spine_transform_constraint_pose_get_mix_scale_y=Y.spine_transform_constraint_pose_get_mix_scale_y;a._spine_transform_constraint_pose_set_mix_scale_y=Y.spine_transform_constraint_pose_set_mix_scale_y; +a._spine_transform_constraint_pose_get_mix_shear_y=Y.spine_transform_constraint_pose_get_mix_shear_y;a._spine_transform_constraint_pose_set_mix_shear_y=Y.spine_transform_constraint_pose_set_mix_shear_y;a._spine_scale_y_timeline_create=Y.spine_scale_y_timeline_create;a._spine_scale_y_timeline_dispose=Y.spine_scale_y_timeline_dispose;a._spine_scale_y_timeline_get_rtti=Y.spine_scale_y_timeline_get_rtti;a._spine_scale_y_timeline_apply=Y.spine_scale_y_timeline_apply; +a._spine_scale_y_timeline_get_bone_index=Y.spine_scale_y_timeline_get_bone_index;a._spine_scale_y_timeline_set_bone_index=Y.spine_scale_y_timeline_set_bone_index;a._spine_scale_y_timeline_set_frame=Y.spine_scale_y_timeline_set_frame;a._spine_scale_y_timeline_get_curve_value=Y.spine_scale_y_timeline_get_curve_value;a._spine_scale_y_timeline_get_relative_value=Y.spine_scale_y_timeline_get_relative_value;a._spine_scale_y_timeline_get_absolute_value_1=Y.spine_scale_y_timeline_get_absolute_value_1; +a._spine_scale_y_timeline_get_absolute_value_2=Y.spine_scale_y_timeline_get_absolute_value_2;a._spine_scale_y_timeline_get_scale_value=Y.spine_scale_y_timeline_get_scale_value;a._spine_scale_y_timeline_set_linear=Y.spine_scale_y_timeline_set_linear;a._spine_scale_y_timeline_set_stepped=Y.spine_scale_y_timeline_set_stepped;a._spine_scale_y_timeline_set_bezier=Y.spine_scale_y_timeline_set_bezier;a._spine_scale_y_timeline_get_bezier_value=Y.spine_scale_y_timeline_get_bezier_value; +a._spine_scale_y_timeline_get_curves=Y.spine_scale_y_timeline_get_curves;a._spine_scale_y_timeline_get_frame_entries=Y.spine_scale_y_timeline_get_frame_entries;a._spine_scale_y_timeline_get_frame_count=Y.spine_scale_y_timeline_get_frame_count;a._spine_scale_y_timeline_get_frames=Y.spine_scale_y_timeline_get_frames;a._spine_scale_y_timeline_get_duration=Y.spine_scale_y_timeline_get_duration;a._spine_scale_y_timeline_get_property_ids=Y.spine_scale_y_timeline_get_property_ids; +a._spine_scale_y_timeline_rtti=Y.spine_scale_y_timeline_rtti;a._spine_physics_constraint_data_create=Y.spine_physics_constraint_data_create;a._spine_physics_constraint_data_dispose=Y.spine_physics_constraint_data_dispose;a._spine_physics_constraint_data_get_rtti=Y.spine_physics_constraint_data_get_rtti;a._spine_physics_constraint_data_create_method=Y.spine_physics_constraint_data_create_method;a._spine_physics_constraint_data_get_bone=Y.spine_physics_constraint_data_get_bone; +a._spine_physics_constraint_data_set_bone=Y.spine_physics_constraint_data_set_bone;a._spine_physics_constraint_data_get_step=Y.spine_physics_constraint_data_get_step;a._spine_physics_constraint_data_set_step=Y.spine_physics_constraint_data_set_step;a._spine_physics_constraint_data_get_x=Y.spine_physics_constraint_data_get_x;a._spine_physics_constraint_data_set_x=Y.spine_physics_constraint_data_set_x;a._spine_physics_constraint_data_get_y=Y.spine_physics_constraint_data_get_y; +a._spine_physics_constraint_data_set_y=Y.spine_physics_constraint_data_set_y;a._spine_physics_constraint_data_get_rotate=Y.spine_physics_constraint_data_get_rotate;a._spine_physics_constraint_data_set_rotate=Y.spine_physics_constraint_data_set_rotate;a._spine_physics_constraint_data_get_scale_x=Y.spine_physics_constraint_data_get_scale_x;a._spine_physics_constraint_data_set_scale_x=Y.spine_physics_constraint_data_set_scale_x;a._spine_physics_constraint_data_get_shear_x=Y.spine_physics_constraint_data_get_shear_x; +a._spine_physics_constraint_data_set_shear_x=Y.spine_physics_constraint_data_set_shear_x;a._spine_physics_constraint_data_get_limit=Y.spine_physics_constraint_data_get_limit;a._spine_physics_constraint_data_set_limit=Y.spine_physics_constraint_data_set_limit;a._spine_physics_constraint_data_get_inertia_global=Y.spine_physics_constraint_data_get_inertia_global;a._spine_physics_constraint_data_set_inertia_global=Y.spine_physics_constraint_data_set_inertia_global; +a._spine_physics_constraint_data_get_strength_global=Y.spine_physics_constraint_data_get_strength_global;a._spine_physics_constraint_data_set_strength_global=Y.spine_physics_constraint_data_set_strength_global;a._spine_physics_constraint_data_get_damping_global=Y.spine_physics_constraint_data_get_damping_global;a._spine_physics_constraint_data_set_damping_global=Y.spine_physics_constraint_data_set_damping_global;a._spine_physics_constraint_data_get_mass_global=Y.spine_physics_constraint_data_get_mass_global; +a._spine_physics_constraint_data_set_mass_global=Y.spine_physics_constraint_data_set_mass_global;a._spine_physics_constraint_data_get_wind_global=Y.spine_physics_constraint_data_get_wind_global;a._spine_physics_constraint_data_set_wind_global=Y.spine_physics_constraint_data_set_wind_global;a._spine_physics_constraint_data_get_gravity_global=Y.spine_physics_constraint_data_get_gravity_global;a._spine_physics_constraint_data_set_gravity_global=Y.spine_physics_constraint_data_set_gravity_global; +a._spine_physics_constraint_data_get_mix_global=Y.spine_physics_constraint_data_get_mix_global;a._spine_physics_constraint_data_set_mix_global=Y.spine_physics_constraint_data_set_mix_global;a._spine_physics_constraint_data_get_name=Y.spine_physics_constraint_data_get_name;a._spine_physics_constraint_data_get_skin_required=Y.spine_physics_constraint_data_get_skin_required;a._spine_physics_constraint_data_get_setup_pose=Y.spine_physics_constraint_data_get_setup_pose; +a._spine_physics_constraint_data_set_skin_required=Y.spine_physics_constraint_data_set_skin_required;a._spine_physics_constraint_data_rtti=Y.spine_physics_constraint_data_rtti;a._spine_to_scale_x_create=Y.spine_to_scale_x_create;a._spine_to_scale_x_dispose=Y.spine_to_scale_x_dispose;a._spine_to_scale_x_get_rtti=Y.spine_to_scale_x_get_rtti;a._spine_to_scale_x_mix=Y.spine_to_scale_x_mix;a._spine_to_scale_x_apply=Y.spine_to_scale_x_apply;a._spine_to_scale_x_rtti=Y.spine_to_scale_x_rtti; +a._spine_constraint_timeline_dispose=Y.spine_constraint_timeline_dispose;a._spine_constraint_timeline_get_rtti=Y.spine_constraint_timeline_get_rtti;a._spine_constraint_timeline_get_constraint_index=Y.spine_constraint_timeline_get_constraint_index;a._spine_constraint_timeline_set_constraint_index=Y.spine_constraint_timeline_set_constraint_index;a._spine_constraint_timeline_rtti=Y.spine_constraint_timeline_rtti;a._spine_to_property_dispose=Y.spine_to_property_dispose;a._spine_to_property_get_rtti=Y.spine_to_property_get_rtti; +a._spine_to_property_mix=Y.spine_to_property_mix;a._spine_to_property_apply=Y.spine_to_property_apply;a._spine_to_property_rtti=Y.spine_to_property_rtti;a._spine_to_property_get__offset=Y.spine_to_property_get__offset;a._spine_to_property_set__offset=Y.spine_to_property_set__offset;a._spine_to_property_get__max=Y.spine_to_property_get__max;a._spine_to_property_set__max=Y.spine_to_property_set__max;a._spine_to_property_get__scale=Y.spine_to_property_get__scale;a._spine_to_property_set__scale=Y.spine_to_property_set__scale; +a._spine_rgb_timeline_create=Y.spine_rgb_timeline_create;a._spine_rgb_timeline_dispose=Y.spine_rgb_timeline_dispose;a._spine_rgb_timeline_get_rtti=Y.spine_rgb_timeline_get_rtti;a._spine_rgb_timeline_set_frame=Y.spine_rgb_timeline_set_frame;a._spine_rgb_timeline_apply=Y.spine_rgb_timeline_apply;a._spine_rgb_timeline_get_slot_index=Y.spine_rgb_timeline_get_slot_index;a._spine_rgb_timeline_set_slot_index=Y.spine_rgb_timeline_set_slot_index;a._spine_rgb_timeline_set_linear=Y.spine_rgb_timeline_set_linear; +a._spine_rgb_timeline_set_stepped=Y.spine_rgb_timeline_set_stepped;a._spine_rgb_timeline_set_bezier=Y.spine_rgb_timeline_set_bezier;a._spine_rgb_timeline_get_bezier_value=Y.spine_rgb_timeline_get_bezier_value;a._spine_rgb_timeline_get_curves=Y.spine_rgb_timeline_get_curves;a._spine_rgb_timeline_get_frame_entries=Y.spine_rgb_timeline_get_frame_entries;a._spine_rgb_timeline_get_frame_count=Y.spine_rgb_timeline_get_frame_count;a._spine_rgb_timeline_get_frames=Y.spine_rgb_timeline_get_frames; +a._spine_rgb_timeline_get_duration=Y.spine_rgb_timeline_get_duration;a._spine_rgb_timeline_get_property_ids=Y.spine_rgb_timeline_get_property_ids;a._spine_rgb_timeline_rtti=Y.spine_rgb_timeline_rtti;a._spine_render_command_dispose=Y.spine_render_command_dispose;a._spine_render_command_get_positions=Y.spine_render_command_get_positions;a._spine_render_command_get_uvs=Y.spine_render_command_get_uvs;a._spine_render_command_get_colors=Y.spine_render_command_get_colors; +a._spine_render_command_get_dark_colors=Y.spine_render_command_get_dark_colors;a._spine_render_command_get_num_vertices=Y.spine_render_command_get_num_vertices;a._spine_render_command_get_indices=Y.spine_render_command_get_indices;a._spine_render_command_get_num_indices=Y.spine_render_command_get_num_indices;a._spine_render_command_get_blend_mode=Y.spine_render_command_get_blend_mode;a._spine_render_command_get_texture=Y.spine_render_command_get_texture;a._spine_render_command_get_next=Y.spine_render_command_get_next; +a._spine_translate_y_timeline_create=Y.spine_translate_y_timeline_create;a._spine_translate_y_timeline_dispose=Y.spine_translate_y_timeline_dispose;a._spine_translate_y_timeline_get_rtti=Y.spine_translate_y_timeline_get_rtti;a._spine_translate_y_timeline_apply=Y.spine_translate_y_timeline_apply;a._spine_translate_y_timeline_get_bone_index=Y.spine_translate_y_timeline_get_bone_index;a._spine_translate_y_timeline_set_bone_index=Y.spine_translate_y_timeline_set_bone_index; +a._spine_translate_y_timeline_set_frame=Y.spine_translate_y_timeline_set_frame;a._spine_translate_y_timeline_get_curve_value=Y.spine_translate_y_timeline_get_curve_value;a._spine_translate_y_timeline_get_relative_value=Y.spine_translate_y_timeline_get_relative_value;a._spine_translate_y_timeline_get_absolute_value_1=Y.spine_translate_y_timeline_get_absolute_value_1;a._spine_translate_y_timeline_get_absolute_value_2=Y.spine_translate_y_timeline_get_absolute_value_2; +a._spine_translate_y_timeline_get_scale_value=Y.spine_translate_y_timeline_get_scale_value;a._spine_translate_y_timeline_set_linear=Y.spine_translate_y_timeline_set_linear;a._spine_translate_y_timeline_set_stepped=Y.spine_translate_y_timeline_set_stepped;a._spine_translate_y_timeline_set_bezier=Y.spine_translate_y_timeline_set_bezier;a._spine_translate_y_timeline_get_bezier_value=Y.spine_translate_y_timeline_get_bezier_value;a._spine_translate_y_timeline_get_curves=Y.spine_translate_y_timeline_get_curves; +a._spine_translate_y_timeline_get_frame_entries=Y.spine_translate_y_timeline_get_frame_entries;a._spine_translate_y_timeline_get_frame_count=Y.spine_translate_y_timeline_get_frame_count;a._spine_translate_y_timeline_get_frames=Y.spine_translate_y_timeline_get_frames;a._spine_translate_y_timeline_get_duration=Y.spine_translate_y_timeline_get_duration;a._spine_translate_y_timeline_get_property_ids=Y.spine_translate_y_timeline_get_property_ids;a._spine_translate_y_timeline_rtti=Y.spine_translate_y_timeline_rtti; +a._spine_rgb2_timeline_create=Y.spine_rgb2_timeline_create;a._spine_rgb2_timeline_dispose=Y.spine_rgb2_timeline_dispose;a._spine_rgb2_timeline_get_rtti=Y.spine_rgb2_timeline_get_rtti;a._spine_rgb2_timeline_set_frame=Y.spine_rgb2_timeline_set_frame;a._spine_rgb2_timeline_apply=Y.spine_rgb2_timeline_apply;a._spine_rgb2_timeline_get_slot_index=Y.spine_rgb2_timeline_get_slot_index;a._spine_rgb2_timeline_set_slot_index=Y.spine_rgb2_timeline_set_slot_index;a._spine_rgb2_timeline_set_linear=Y.spine_rgb2_timeline_set_linear; +a._spine_rgb2_timeline_set_stepped=Y.spine_rgb2_timeline_set_stepped;a._spine_rgb2_timeline_set_bezier=Y.spine_rgb2_timeline_set_bezier;a._spine_rgb2_timeline_get_bezier_value=Y.spine_rgb2_timeline_get_bezier_value;a._spine_rgb2_timeline_get_curves=Y.spine_rgb2_timeline_get_curves;a._spine_rgb2_timeline_get_frame_entries=Y.spine_rgb2_timeline_get_frame_entries;a._spine_rgb2_timeline_get_frame_count=Y.spine_rgb2_timeline_get_frame_count;a._spine_rgb2_timeline_get_frames=Y.spine_rgb2_timeline_get_frames; +a._spine_rgb2_timeline_get_duration=Y.spine_rgb2_timeline_get_duration;a._spine_rgb2_timeline_get_property_ids=Y.spine_rgb2_timeline_get_property_ids;a._spine_rgb2_timeline_rtti=Y.spine_rgb2_timeline_rtti;a._spine_event_timeline_create=Y.spine_event_timeline_create;a._spine_event_timeline_dispose=Y.spine_event_timeline_dispose;a._spine_event_timeline_get_rtti=Y.spine_event_timeline_get_rtti;a._spine_event_timeline_apply=Y.spine_event_timeline_apply;a._spine_event_timeline_get_frame_count=Y.spine_event_timeline_get_frame_count; +a._spine_event_timeline_get_events=Y.spine_event_timeline_get_events;a._spine_event_timeline_set_frame=Y.spine_event_timeline_set_frame;a._spine_event_timeline_get_frame_entries=Y.spine_event_timeline_get_frame_entries;a._spine_event_timeline_get_frames=Y.spine_event_timeline_get_frames;a._spine_event_timeline_get_duration=Y.spine_event_timeline_get_duration;a._spine_event_timeline_get_property_ids=Y.spine_event_timeline_get_property_ids;a._spine_event_timeline_rtti=Y.spine_event_timeline_rtti; +a._spine_to_rotate_create=Y.spine_to_rotate_create;a._spine_to_rotate_dispose=Y.spine_to_rotate_dispose;a._spine_to_rotate_get_rtti=Y.spine_to_rotate_get_rtti;a._spine_to_rotate_mix=Y.spine_to_rotate_mix;a._spine_to_rotate_apply=Y.spine_to_rotate_apply;a._spine_to_rotate_rtti=Y.spine_to_rotate_rtti;a._spine_bone_timeline2_dispose=Y.spine_bone_timeline2_dispose;a._spine_bone_timeline2_get_rtti=Y.spine_bone_timeline2_get_rtti;a._spine_bone_timeline2_apply=Y.spine_bone_timeline2_apply; +a._spine_bone_timeline2_get_bone_index=Y.spine_bone_timeline2_get_bone_index;a._spine_bone_timeline2_set_bone_index=Y.spine_bone_timeline2_set_bone_index;a._spine_bone_timeline2_set_frame=Y.spine_bone_timeline2_set_frame;a._spine_bone_timeline2_set_linear=Y.spine_bone_timeline2_set_linear;a._spine_bone_timeline2_set_stepped=Y.spine_bone_timeline2_set_stepped;a._spine_bone_timeline2_set_bezier=Y.spine_bone_timeline2_set_bezier;a._spine_bone_timeline2_get_bezier_value=Y.spine_bone_timeline2_get_bezier_value; +a._spine_bone_timeline2_get_curves=Y.spine_bone_timeline2_get_curves;a._spine_bone_timeline2_get_frame_entries=Y.spine_bone_timeline2_get_frame_entries;a._spine_bone_timeline2_get_frame_count=Y.spine_bone_timeline2_get_frame_count;a._spine_bone_timeline2_get_frames=Y.spine_bone_timeline2_get_frames;a._spine_bone_timeline2_get_duration=Y.spine_bone_timeline2_get_duration;a._spine_bone_timeline2_get_property_ids=Y.spine_bone_timeline2_get_property_ids;a._spine_bone_timeline2_rtti=Y.spine_bone_timeline2_rtti; +a._spine_linked_mesh_create=Y.spine_linked_mesh_create;a._spine_linked_mesh_create2=Y.spine_linked_mesh_create2;a._spine_linked_mesh_dispose=Y.spine_linked_mesh_dispose;a._spine_scale_x_timeline_create=Y.spine_scale_x_timeline_create;a._spine_scale_x_timeline_dispose=Y.spine_scale_x_timeline_dispose;a._spine_scale_x_timeline_get_rtti=Y.spine_scale_x_timeline_get_rtti;a._spine_scale_x_timeline_apply=Y.spine_scale_x_timeline_apply;a._spine_scale_x_timeline_get_bone_index=Y.spine_scale_x_timeline_get_bone_index; +a._spine_scale_x_timeline_set_bone_index=Y.spine_scale_x_timeline_set_bone_index;a._spine_scale_x_timeline_set_frame=Y.spine_scale_x_timeline_set_frame;a._spine_scale_x_timeline_get_curve_value=Y.spine_scale_x_timeline_get_curve_value;a._spine_scale_x_timeline_get_relative_value=Y.spine_scale_x_timeline_get_relative_value;a._spine_scale_x_timeline_get_absolute_value_1=Y.spine_scale_x_timeline_get_absolute_value_1;a._spine_scale_x_timeline_get_absolute_value_2=Y.spine_scale_x_timeline_get_absolute_value_2; +a._spine_scale_x_timeline_get_scale_value=Y.spine_scale_x_timeline_get_scale_value;a._spine_scale_x_timeline_set_linear=Y.spine_scale_x_timeline_set_linear;a._spine_scale_x_timeline_set_stepped=Y.spine_scale_x_timeline_set_stepped;a._spine_scale_x_timeline_set_bezier=Y.spine_scale_x_timeline_set_bezier;a._spine_scale_x_timeline_get_bezier_value=Y.spine_scale_x_timeline_get_bezier_value;a._spine_scale_x_timeline_get_curves=Y.spine_scale_x_timeline_get_curves; +a._spine_scale_x_timeline_get_frame_entries=Y.spine_scale_x_timeline_get_frame_entries;a._spine_scale_x_timeline_get_frame_count=Y.spine_scale_x_timeline_get_frame_count;a._spine_scale_x_timeline_get_frames=Y.spine_scale_x_timeline_get_frames;a._spine_scale_x_timeline_get_duration=Y.spine_scale_x_timeline_get_duration;a._spine_scale_x_timeline_get_property_ids=Y.spine_scale_x_timeline_get_property_ids;a._spine_scale_x_timeline_rtti=Y.spine_scale_x_timeline_rtti; +a._spine_path_constraint_position_timeline_create=Y.spine_path_constraint_position_timeline_create;a._spine_path_constraint_position_timeline_dispose=Y.spine_path_constraint_position_timeline_dispose;a._spine_path_constraint_position_timeline_get_rtti=Y.spine_path_constraint_position_timeline_get_rtti;a._spine_path_constraint_position_timeline_apply=Y.spine_path_constraint_position_timeline_apply;a._spine_path_constraint_position_timeline_get_constraint_index=Y.spine_path_constraint_position_timeline_get_constraint_index; +a._spine_path_constraint_position_timeline_set_constraint_index=Y.spine_path_constraint_position_timeline_set_constraint_index;a._spine_path_constraint_position_timeline_set_frame=Y.spine_path_constraint_position_timeline_set_frame;a._spine_path_constraint_position_timeline_get_curve_value=Y.spine_path_constraint_position_timeline_get_curve_value;a._spine_path_constraint_position_timeline_get_relative_value=Y.spine_path_constraint_position_timeline_get_relative_value; +a._spine_path_constraint_position_timeline_get_absolute_value_1=Y.spine_path_constraint_position_timeline_get_absolute_value_1;a._spine_path_constraint_position_timeline_get_absolute_value_2=Y.spine_path_constraint_position_timeline_get_absolute_value_2;a._spine_path_constraint_position_timeline_get_scale_value=Y.spine_path_constraint_position_timeline_get_scale_value;a._spine_path_constraint_position_timeline_set_linear=Y.spine_path_constraint_position_timeline_set_linear; +a._spine_path_constraint_position_timeline_set_stepped=Y.spine_path_constraint_position_timeline_set_stepped;a._spine_path_constraint_position_timeline_set_bezier=Y.spine_path_constraint_position_timeline_set_bezier;a._spine_path_constraint_position_timeline_get_bezier_value=Y.spine_path_constraint_position_timeline_get_bezier_value;a._spine_path_constraint_position_timeline_get_curves=Y.spine_path_constraint_position_timeline_get_curves; +a._spine_path_constraint_position_timeline_get_frame_entries=Y.spine_path_constraint_position_timeline_get_frame_entries;a._spine_path_constraint_position_timeline_get_frame_count=Y.spine_path_constraint_position_timeline_get_frame_count;a._spine_path_constraint_position_timeline_get_frames=Y.spine_path_constraint_position_timeline_get_frames;a._spine_path_constraint_position_timeline_get_duration=Y.spine_path_constraint_position_timeline_get_duration; +a._spine_path_constraint_position_timeline_get_property_ids=Y.spine_path_constraint_position_timeline_get_property_ids;a._spine_path_constraint_position_timeline_rtti=Y.spine_path_constraint_position_timeline_rtti;a._spine_rgba2_timeline_create=Y.spine_rgba2_timeline_create;a._spine_rgba2_timeline_dispose=Y.spine_rgba2_timeline_dispose;a._spine_rgba2_timeline_get_rtti=Y.spine_rgba2_timeline_get_rtti;a._spine_rgba2_timeline_set_frame=Y.spine_rgba2_timeline_set_frame;a._spine_rgba2_timeline_apply=Y.spine_rgba2_timeline_apply; +a._spine_rgba2_timeline_get_slot_index=Y.spine_rgba2_timeline_get_slot_index;a._spine_rgba2_timeline_set_slot_index=Y.spine_rgba2_timeline_set_slot_index;a._spine_rgba2_timeline_set_linear=Y.spine_rgba2_timeline_set_linear;a._spine_rgba2_timeline_set_stepped=Y.spine_rgba2_timeline_set_stepped;a._spine_rgba2_timeline_set_bezier=Y.spine_rgba2_timeline_set_bezier;a._spine_rgba2_timeline_get_bezier_value=Y.spine_rgba2_timeline_get_bezier_value;a._spine_rgba2_timeline_get_curves=Y.spine_rgba2_timeline_get_curves; +a._spine_rgba2_timeline_get_frame_entries=Y.spine_rgba2_timeline_get_frame_entries;a._spine_rgba2_timeline_get_frame_count=Y.spine_rgba2_timeline_get_frame_count;a._spine_rgba2_timeline_get_frames=Y.spine_rgba2_timeline_get_frames;a._spine_rgba2_timeline_get_duration=Y.spine_rgba2_timeline_get_duration;a._spine_rgba2_timeline_get_property_ids=Y.spine_rgba2_timeline_get_property_ids;a._spine_rgba2_timeline_rtti=Y.spine_rgba2_timeline_rtti;a._spine_skeleton_renderer_create=Y.spine_skeleton_renderer_create; +a._spine_skeleton_renderer_dispose=Y.spine_skeleton_renderer_dispose;a._spine_skeleton_renderer_render=Y.spine_skeleton_renderer_render;a._spine_slider_mix_timeline_create=Y.spine_slider_mix_timeline_create;a._spine_slider_mix_timeline_dispose=Y.spine_slider_mix_timeline_dispose;a._spine_slider_mix_timeline_get_rtti=Y.spine_slider_mix_timeline_get_rtti;a._spine_slider_mix_timeline_apply=Y.spine_slider_mix_timeline_apply;a._spine_slider_mix_timeline_get_constraint_index=Y.spine_slider_mix_timeline_get_constraint_index; +a._spine_slider_mix_timeline_set_constraint_index=Y.spine_slider_mix_timeline_set_constraint_index;a._spine_slider_mix_timeline_set_frame=Y.spine_slider_mix_timeline_set_frame;a._spine_slider_mix_timeline_get_curve_value=Y.spine_slider_mix_timeline_get_curve_value;a._spine_slider_mix_timeline_get_relative_value=Y.spine_slider_mix_timeline_get_relative_value;a._spine_slider_mix_timeline_get_absolute_value_1=Y.spine_slider_mix_timeline_get_absolute_value_1; +a._spine_slider_mix_timeline_get_absolute_value_2=Y.spine_slider_mix_timeline_get_absolute_value_2;a._spine_slider_mix_timeline_get_scale_value=Y.spine_slider_mix_timeline_get_scale_value;a._spine_slider_mix_timeline_set_linear=Y.spine_slider_mix_timeline_set_linear;a._spine_slider_mix_timeline_set_stepped=Y.spine_slider_mix_timeline_set_stepped;a._spine_slider_mix_timeline_set_bezier=Y.spine_slider_mix_timeline_set_bezier;a._spine_slider_mix_timeline_get_bezier_value=Y.spine_slider_mix_timeline_get_bezier_value; +a._spine_slider_mix_timeline_get_curves=Y.spine_slider_mix_timeline_get_curves;a._spine_slider_mix_timeline_get_frame_entries=Y.spine_slider_mix_timeline_get_frame_entries;a._spine_slider_mix_timeline_get_frame_count=Y.spine_slider_mix_timeline_get_frame_count;a._spine_slider_mix_timeline_get_frames=Y.spine_slider_mix_timeline_get_frames;a._spine_slider_mix_timeline_get_duration=Y.spine_slider_mix_timeline_get_duration;a._spine_slider_mix_timeline_get_property_ids=Y.spine_slider_mix_timeline_get_property_ids; +a._spine_slider_mix_timeline_rtti=Y.spine_slider_mix_timeline_rtti;a._spine_animation_state_create=Y.spine_animation_state_create;a._spine_animation_state_dispose=Y.spine_animation_state_dispose;a._spine_animation_state_update=Y.spine_animation_state_update;a._spine_animation_state_apply=Y.spine_animation_state_apply;a._spine_animation_state_clear_tracks=Y.spine_animation_state_clear_tracks;a._spine_animation_state_clear_track=Y.spine_animation_state_clear_track; +a._spine_animation_state_set_animation_1=Y.spine_animation_state_set_animation_1;a._spine_animation_state_set_animation_2=Y.spine_animation_state_set_animation_2;a._spine_animation_state_add_animation_1=Y.spine_animation_state_add_animation_1;a._spine_animation_state_add_animation_2=Y.spine_animation_state_add_animation_2;a._spine_animation_state_set_empty_animation=Y.spine_animation_state_set_empty_animation;a._spine_animation_state_add_empty_animation=Y.spine_animation_state_add_empty_animation; +a._spine_animation_state_set_empty_animations=Y.spine_animation_state_set_empty_animations;a._spine_animation_state_get_current=Y.spine_animation_state_get_current;a._spine_animation_state_get_data=Y.spine_animation_state_get_data;a._spine_animation_state_get_tracks=Y.spine_animation_state_get_tracks;a._spine_animation_state_get_time_scale=Y.spine_animation_state_get_time_scale;a._spine_animation_state_set_time_scale=Y.spine_animation_state_set_time_scale;a._spine_animation_state_disable_queue=Y.spine_animation_state_disable_queue; +a._spine_animation_state_enable_queue=Y.spine_animation_state_enable_queue;a._spine_animation_state_set_manual_track_entry_disposal=Y.spine_animation_state_set_manual_track_entry_disposal;a._spine_animation_state_get_manual_track_entry_disposal=Y.spine_animation_state_get_manual_track_entry_disposal;a._spine_animation_state_dispose_track_entry=Y.spine_animation_state_dispose_track_entry;a._spine_animation_state_get_renderer_object=Y.spine_animation_state_get_renderer_object; +a._spine_bone_pose_create=Y.spine_bone_pose_create;a._spine_bone_pose_dispose=Y.spine_bone_pose_dispose;a._spine_bone_pose_get_rtti=Y.spine_bone_pose_get_rtti;a._spine_bone_pose_update=Y.spine_bone_pose_update;a._spine_bone_pose_update_world_transform=Y.spine_bone_pose_update_world_transform;a._spine_bone_pose_update_local_transform=Y.spine_bone_pose_update_local_transform;a._spine_bone_pose_validate_local_transform=Y.spine_bone_pose_validate_local_transform;a._spine_bone_pose_modify_local=Y.spine_bone_pose_modify_local; +a._spine_bone_pose_modify_world=Y.spine_bone_pose_modify_world;a._spine_bone_pose_reset_world=Y.spine_bone_pose_reset_world;a._spine_bone_pose_get_a=Y.spine_bone_pose_get_a;a._spine_bone_pose_set_a=Y.spine_bone_pose_set_a;a._spine_bone_pose_get_b=Y.spine_bone_pose_get_b;a._spine_bone_pose_set_b=Y.spine_bone_pose_set_b;a._spine_bone_pose_get_c=Y.spine_bone_pose_get_c;a._spine_bone_pose_set_c=Y.spine_bone_pose_set_c;a._spine_bone_pose_get_d=Y.spine_bone_pose_get_d;a._spine_bone_pose_set_d=Y.spine_bone_pose_set_d; +a._spine_bone_pose_get_world_x=Y.spine_bone_pose_get_world_x;a._spine_bone_pose_set_world_x=Y.spine_bone_pose_set_world_x;a._spine_bone_pose_get_world_y=Y.spine_bone_pose_get_world_y;a._spine_bone_pose_set_world_y=Y.spine_bone_pose_set_world_y;a._spine_bone_pose_get_world_rotation_x=Y.spine_bone_pose_get_world_rotation_x;a._spine_bone_pose_get_world_rotation_y=Y.spine_bone_pose_get_world_rotation_y;a._spine_bone_pose_get_world_scale_x=Y.spine_bone_pose_get_world_scale_x; +a._spine_bone_pose_get_world_scale_y=Y.spine_bone_pose_get_world_scale_y;a._spine_bone_pose_world_to_local=Y.spine_bone_pose_world_to_local;a._spine_bone_pose_local_to_world=Y.spine_bone_pose_local_to_world;a._spine_bone_pose_world_to_parent=Y.spine_bone_pose_world_to_parent;a._spine_bone_pose_parent_to_world=Y.spine_bone_pose_parent_to_world;a._spine_bone_pose_world_to_local_rotation=Y.spine_bone_pose_world_to_local_rotation;a._spine_bone_pose_local_to_world_rotation=Y.spine_bone_pose_local_to_world_rotation; +a._spine_bone_pose_rotate_world=Y.spine_bone_pose_rotate_world;a._spine_bone_pose_set=Y.spine_bone_pose_set;a._spine_bone_pose_get_x=Y.spine_bone_pose_get_x;a._spine_bone_pose_set_x=Y.spine_bone_pose_set_x;a._spine_bone_pose_get_y=Y.spine_bone_pose_get_y;a._spine_bone_pose_set_y=Y.spine_bone_pose_set_y;a._spine_bone_pose_set_position=Y.spine_bone_pose_set_position;a._spine_bone_pose_get_rotation=Y.spine_bone_pose_get_rotation;a._spine_bone_pose_set_rotation=Y.spine_bone_pose_set_rotation; +a._spine_bone_pose_get_scale_x=Y.spine_bone_pose_get_scale_x;a._spine_bone_pose_set_scale_x=Y.spine_bone_pose_set_scale_x;a._spine_bone_pose_get_scale_y=Y.spine_bone_pose_get_scale_y;a._spine_bone_pose_set_scale_y=Y.spine_bone_pose_set_scale_y;a._spine_bone_pose_set_scale_1=Y.spine_bone_pose_set_scale_1;a._spine_bone_pose_set_scale_2=Y.spine_bone_pose_set_scale_2;a._spine_bone_pose_get_shear_x=Y.spine_bone_pose_get_shear_x;a._spine_bone_pose_set_shear_x=Y.spine_bone_pose_set_shear_x; +a._spine_bone_pose_get_shear_y=Y.spine_bone_pose_get_shear_y;a._spine_bone_pose_set_shear_y=Y.spine_bone_pose_set_shear_y;a._spine_bone_pose_get_inherit=Y.spine_bone_pose_get_inherit;a._spine_bone_pose_set_inherit=Y.spine_bone_pose_set_inherit;a._spine_bone_pose_rtti=Y.spine_bone_pose_rtti;a._spine_bone_timeline1_dispose=Y.spine_bone_timeline1_dispose;a._spine_bone_timeline1_get_rtti=Y.spine_bone_timeline1_get_rtti;a._spine_bone_timeline1_apply=Y.spine_bone_timeline1_apply; +a._spine_bone_timeline1_get_bone_index=Y.spine_bone_timeline1_get_bone_index;a._spine_bone_timeline1_set_bone_index=Y.spine_bone_timeline1_set_bone_index;a._spine_bone_timeline1_set_frame=Y.spine_bone_timeline1_set_frame;a._spine_bone_timeline1_get_curve_value=Y.spine_bone_timeline1_get_curve_value;a._spine_bone_timeline1_get_relative_value=Y.spine_bone_timeline1_get_relative_value;a._spine_bone_timeline1_get_absolute_value_1=Y.spine_bone_timeline1_get_absolute_value_1; +a._spine_bone_timeline1_get_absolute_value_2=Y.spine_bone_timeline1_get_absolute_value_2;a._spine_bone_timeline1_get_scale_value=Y.spine_bone_timeline1_get_scale_value;a._spine_bone_timeline1_set_linear=Y.spine_bone_timeline1_set_linear;a._spine_bone_timeline1_set_stepped=Y.spine_bone_timeline1_set_stepped;a._spine_bone_timeline1_set_bezier=Y.spine_bone_timeline1_set_bezier;a._spine_bone_timeline1_get_bezier_value=Y.spine_bone_timeline1_get_bezier_value;a._spine_bone_timeline1_get_curves=Y.spine_bone_timeline1_get_curves; +a._spine_bone_timeline1_get_frame_entries=Y.spine_bone_timeline1_get_frame_entries;a._spine_bone_timeline1_get_frame_count=Y.spine_bone_timeline1_get_frame_count;a._spine_bone_timeline1_get_frames=Y.spine_bone_timeline1_get_frames;a._spine_bone_timeline1_get_duration=Y.spine_bone_timeline1_get_duration;a._spine_bone_timeline1_get_property_ids=Y.spine_bone_timeline1_get_property_ids;a._spine_bone_timeline1_rtti=Y.spine_bone_timeline1_rtti;a._spine_slot_data_create=Y.spine_slot_data_create; +a._spine_slot_data_dispose=Y.spine_slot_data_dispose;a._spine_slot_data_get_index=Y.spine_slot_data_get_index;a._spine_slot_data_get_bone_data=Y.spine_slot_data_get_bone_data;a._spine_slot_data_set_attachment_name=Y.spine_slot_data_set_attachment_name;a._spine_slot_data_get_attachment_name=Y.spine_slot_data_get_attachment_name;a._spine_slot_data_get_blend_mode=Y.spine_slot_data_get_blend_mode;a._spine_slot_data_set_blend_mode=Y.spine_slot_data_set_blend_mode;a._spine_slot_data_get_visible=Y.spine_slot_data_get_visible; +a._spine_slot_data_set_visible=Y.spine_slot_data_set_visible;a._spine_slot_data_get_setup_pose=Y.spine_slot_data_get_setup_pose;a._spine_slot_data_get_name=Y.spine_slot_data_get_name;a._spine_slot_data_get_skin_required=Y.spine_slot_data_get_skin_required;a._spine_slot_data_set_skin_required=Y.spine_slot_data_set_skin_required;a._spine_deform_timeline_create=Y.spine_deform_timeline_create;a._spine_deform_timeline_dispose=Y.spine_deform_timeline_dispose;a._spine_deform_timeline_get_rtti=Y.spine_deform_timeline_get_rtti; +a._spine_deform_timeline_set_frame=Y.spine_deform_timeline_set_frame;a._spine_deform_timeline_get_attachment=Y.spine_deform_timeline_get_attachment;a._spine_deform_timeline_set_attachment=Y.spine_deform_timeline_set_attachment;a._spine_deform_timeline_set_bezier=Y.spine_deform_timeline_set_bezier;a._spine_deform_timeline_get_curve_percent=Y.spine_deform_timeline_get_curve_percent;a._spine_deform_timeline_get_frame_count=Y.spine_deform_timeline_get_frame_count;a._spine_deform_timeline_apply=Y.spine_deform_timeline_apply; +a._spine_deform_timeline_get_slot_index=Y.spine_deform_timeline_get_slot_index;a._spine_deform_timeline_set_slot_index=Y.spine_deform_timeline_set_slot_index;a._spine_deform_timeline_set_linear=Y.spine_deform_timeline_set_linear;a._spine_deform_timeline_set_stepped=Y.spine_deform_timeline_set_stepped;a._spine_deform_timeline_get_bezier_value=Y.spine_deform_timeline_get_bezier_value;a._spine_deform_timeline_get_curves=Y.spine_deform_timeline_get_curves;a._spine_deform_timeline_get_frame_entries=Y.spine_deform_timeline_get_frame_entries; +a._spine_deform_timeline_get_frames=Y.spine_deform_timeline_get_frames;a._spine_deform_timeline_get_duration=Y.spine_deform_timeline_get_duration;a._spine_deform_timeline_get_property_ids=Y.spine_deform_timeline_get_property_ids;a._spine_deform_timeline_rtti=Y.spine_deform_timeline_rtti;a._spine_posed_data_create=Y.spine_posed_data_create;a._spine_posed_data_dispose=Y.spine_posed_data_dispose;a._spine_posed_data_get_name=Y.spine_posed_data_get_name;a._spine_posed_data_get_skin_required=Y.spine_posed_data_get_skin_required; +a._spine_posed_data_set_skin_required=Y.spine_posed_data_set_skin_required;a._spine_event_queue_entry_create=Y.spine_event_queue_entry_create;a._spine_event_queue_entry_dispose=Y.spine_event_queue_entry_dispose;a._spine_event_queue_entry_get__type=Y.spine_event_queue_entry_get__type;a._spine_event_queue_entry_set__type=Y.spine_event_queue_entry_set__type;a._spine_event_queue_entry_get__entry=Y.spine_event_queue_entry_get__entry;a._spine_event_queue_entry_set__entry=Y.spine_event_queue_entry_set__entry; +a._spine_event_queue_entry_get__event=Y.spine_event_queue_entry_get__event;a._spine_event_queue_entry_set__event=Y.spine_event_queue_entry_set__event;a._spine_transform_constraint_timeline_create=Y.spine_transform_constraint_timeline_create;a._spine_transform_constraint_timeline_dispose=Y.spine_transform_constraint_timeline_dispose;a._spine_transform_constraint_timeline_get_rtti=Y.spine_transform_constraint_timeline_get_rtti;a._spine_transform_constraint_timeline_apply=Y.spine_transform_constraint_timeline_apply; +a._spine_transform_constraint_timeline_set_frame=Y.spine_transform_constraint_timeline_set_frame;a._spine_transform_constraint_timeline_get_constraint_index=Y.spine_transform_constraint_timeline_get_constraint_index;a._spine_transform_constraint_timeline_set_constraint_index=Y.spine_transform_constraint_timeline_set_constraint_index;a._spine_transform_constraint_timeline_set_linear=Y.spine_transform_constraint_timeline_set_linear;a._spine_transform_constraint_timeline_set_stepped=Y.spine_transform_constraint_timeline_set_stepped; +a._spine_transform_constraint_timeline_set_bezier=Y.spine_transform_constraint_timeline_set_bezier;a._spine_transform_constraint_timeline_get_bezier_value=Y.spine_transform_constraint_timeline_get_bezier_value;a._spine_transform_constraint_timeline_get_curves=Y.spine_transform_constraint_timeline_get_curves;a._spine_transform_constraint_timeline_get_frame_entries=Y.spine_transform_constraint_timeline_get_frame_entries;a._spine_transform_constraint_timeline_get_frame_count=Y.spine_transform_constraint_timeline_get_frame_count; +a._spine_transform_constraint_timeline_get_frames=Y.spine_transform_constraint_timeline_get_frames;a._spine_transform_constraint_timeline_get_duration=Y.spine_transform_constraint_timeline_get_duration;a._spine_transform_constraint_timeline_get_property_ids=Y.spine_transform_constraint_timeline_get_property_ids;a._spine_transform_constraint_timeline_rtti=Y.spine_transform_constraint_timeline_rtti;a._spine_slider_pose_create=Y.spine_slider_pose_create;a._spine_slider_pose_dispose=Y.spine_slider_pose_dispose; +a._spine_slider_pose_set=Y.spine_slider_pose_set;a._spine_slider_pose_get_time=Y.spine_slider_pose_get_time;a._spine_slider_pose_set_time=Y.spine_slider_pose_set_time;a._spine_slider_pose_get_mix=Y.spine_slider_pose_get_mix;a._spine_slider_pose_set_mix=Y.spine_slider_pose_set_mix;a._spine_constraint_dispose=Y.spine_constraint_dispose;a._spine_constraint_get_rtti=Y.spine_constraint_get_rtti;a._spine_constraint_get_data=Y.spine_constraint_get_data;a._spine_constraint_sort=Y.spine_constraint_sort; +a._spine_constraint_is_source_active=Y.spine_constraint_is_source_active;a._spine_constraint_update=Y.spine_constraint_update;a._spine_constraint_rtti=Y.spine_constraint_rtti;a._spine_physics_constraint_wind_timeline_create=Y.spine_physics_constraint_wind_timeline_create;a._spine_physics_constraint_wind_timeline_dispose=Y.spine_physics_constraint_wind_timeline_dispose;a._spine_physics_constraint_wind_timeline_get_rtti=Y.spine_physics_constraint_wind_timeline_get_rtti; +a._spine_physics_constraint_wind_timeline_apply=Y.spine_physics_constraint_wind_timeline_apply;a._spine_physics_constraint_wind_timeline_get_constraint_index=Y.spine_physics_constraint_wind_timeline_get_constraint_index;a._spine_physics_constraint_wind_timeline_set_constraint_index=Y.spine_physics_constraint_wind_timeline_set_constraint_index;a._spine_physics_constraint_wind_timeline_set_frame=Y.spine_physics_constraint_wind_timeline_set_frame; +a._spine_physics_constraint_wind_timeline_get_curve_value=Y.spine_physics_constraint_wind_timeline_get_curve_value;a._spine_physics_constraint_wind_timeline_get_relative_value=Y.spine_physics_constraint_wind_timeline_get_relative_value;a._spine_physics_constraint_wind_timeline_get_absolute_value_1=Y.spine_physics_constraint_wind_timeline_get_absolute_value_1;a._spine_physics_constraint_wind_timeline_get_absolute_value_2=Y.spine_physics_constraint_wind_timeline_get_absolute_value_2; +a._spine_physics_constraint_wind_timeline_get_scale_value=Y.spine_physics_constraint_wind_timeline_get_scale_value;a._spine_physics_constraint_wind_timeline_set_linear=Y.spine_physics_constraint_wind_timeline_set_linear;a._spine_physics_constraint_wind_timeline_set_stepped=Y.spine_physics_constraint_wind_timeline_set_stepped;a._spine_physics_constraint_wind_timeline_set_bezier=Y.spine_physics_constraint_wind_timeline_set_bezier;a._spine_physics_constraint_wind_timeline_get_bezier_value=Y.spine_physics_constraint_wind_timeline_get_bezier_value; +a._spine_physics_constraint_wind_timeline_get_curves=Y.spine_physics_constraint_wind_timeline_get_curves;a._spine_physics_constraint_wind_timeline_get_frame_entries=Y.spine_physics_constraint_wind_timeline_get_frame_entries;a._spine_physics_constraint_wind_timeline_get_frame_count=Y.spine_physics_constraint_wind_timeline_get_frame_count;a._spine_physics_constraint_wind_timeline_get_frames=Y.spine_physics_constraint_wind_timeline_get_frames;a._spine_physics_constraint_wind_timeline_get_duration=Y.spine_physics_constraint_wind_timeline_get_duration; +a._spine_physics_constraint_wind_timeline_get_property_ids=Y.spine_physics_constraint_wind_timeline_get_property_ids;a._spine_physics_constraint_wind_timeline_rtti=Y.spine_physics_constraint_wind_timeline_rtti;a._spine_skeleton_json_create=Y.spine_skeleton_json_create;a._spine_skeleton_json_create2=Y.spine_skeleton_json_create2;a._spine_skeleton_json_dispose=Y.spine_skeleton_json_dispose;a._spine_skeleton_json_read_skeleton_data_file=Y.spine_skeleton_json_read_skeleton_data_file; +a._spine_skeleton_json_read_skeleton_data=Y.spine_skeleton_json_read_skeleton_data;a._spine_skeleton_json_set_scale=Y.spine_skeleton_json_set_scale;a._spine_skeleton_json_get_error=Y.spine_skeleton_json_get_error;a._spine_physics_constraint_create=Y.spine_physics_constraint_create;a._spine_physics_constraint_dispose=Y.spine_physics_constraint_dispose;a._spine_physics_constraint_get_rtti=Y.spine_physics_constraint_get_rtti;a._spine_physics_constraint_update=Y.spine_physics_constraint_update; +a._spine_physics_constraint_sort=Y.spine_physics_constraint_sort;a._spine_physics_constraint_is_source_active=Y.spine_physics_constraint_is_source_active;a._spine_physics_constraint_copy=Y.spine_physics_constraint_copy;a._spine_physics_constraint_reset=Y.spine_physics_constraint_reset;a._spine_physics_constraint_translate=Y.spine_physics_constraint_translate;a._spine_physics_constraint_rotate=Y.spine_physics_constraint_rotate;a._spine_physics_constraint_get_bone=Y.spine_physics_constraint_get_bone; +a._spine_physics_constraint_set_bone=Y.spine_physics_constraint_set_bone;a._spine_physics_constraint_get_data=Y.spine_physics_constraint_get_data;a._spine_physics_constraint_get_pose=Y.spine_physics_constraint_get_pose;a._spine_physics_constraint_get_applied_pose=Y.spine_physics_constraint_get_applied_pose;a._spine_physics_constraint_reset_constrained=Y.spine_physics_constraint_reset_constrained;a._spine_physics_constraint_constrained=Y.spine_physics_constraint_constrained; +a._spine_physics_constraint_is_pose_equal_to_applied=Y.spine_physics_constraint_is_pose_equal_to_applied;a._spine_physics_constraint_is_active=Y.spine_physics_constraint_is_active;a._spine_physics_constraint_set_active=Y.spine_physics_constraint_set_active;a._spine_physics_constraint_rtti=Y.spine_physics_constraint_rtti;a._spine_physics_constraint_gravity_timeline_create=Y.spine_physics_constraint_gravity_timeline_create;a._spine_physics_constraint_gravity_timeline_dispose=Y.spine_physics_constraint_gravity_timeline_dispose; +a._spine_physics_constraint_gravity_timeline_get_rtti=Y.spine_physics_constraint_gravity_timeline_get_rtti;a._spine_physics_constraint_gravity_timeline_apply=Y.spine_physics_constraint_gravity_timeline_apply;a._spine_physics_constraint_gravity_timeline_get_constraint_index=Y.spine_physics_constraint_gravity_timeline_get_constraint_index;a._spine_physics_constraint_gravity_timeline_set_constraint_index=Y.spine_physics_constraint_gravity_timeline_set_constraint_index; +a._spine_physics_constraint_gravity_timeline_set_frame=Y.spine_physics_constraint_gravity_timeline_set_frame;a._spine_physics_constraint_gravity_timeline_get_curve_value=Y.spine_physics_constraint_gravity_timeline_get_curve_value;a._spine_physics_constraint_gravity_timeline_get_relative_value=Y.spine_physics_constraint_gravity_timeline_get_relative_value;a._spine_physics_constraint_gravity_timeline_get_absolute_value_1=Y.spine_physics_constraint_gravity_timeline_get_absolute_value_1; +a._spine_physics_constraint_gravity_timeline_get_absolute_value_2=Y.spine_physics_constraint_gravity_timeline_get_absolute_value_2;a._spine_physics_constraint_gravity_timeline_get_scale_value=Y.spine_physics_constraint_gravity_timeline_get_scale_value;a._spine_physics_constraint_gravity_timeline_set_linear=Y.spine_physics_constraint_gravity_timeline_set_linear;a._spine_physics_constraint_gravity_timeline_set_stepped=Y.spine_physics_constraint_gravity_timeline_set_stepped; +a._spine_physics_constraint_gravity_timeline_set_bezier=Y.spine_physics_constraint_gravity_timeline_set_bezier;a._spine_physics_constraint_gravity_timeline_get_bezier_value=Y.spine_physics_constraint_gravity_timeline_get_bezier_value;a._spine_physics_constraint_gravity_timeline_get_curves=Y.spine_physics_constraint_gravity_timeline_get_curves;a._spine_physics_constraint_gravity_timeline_get_frame_entries=Y.spine_physics_constraint_gravity_timeline_get_frame_entries; +a._spine_physics_constraint_gravity_timeline_get_frame_count=Y.spine_physics_constraint_gravity_timeline_get_frame_count;a._spine_physics_constraint_gravity_timeline_get_frames=Y.spine_physics_constraint_gravity_timeline_get_frames;a._spine_physics_constraint_gravity_timeline_get_duration=Y.spine_physics_constraint_gravity_timeline_get_duration;a._spine_physics_constraint_gravity_timeline_get_property_ids=Y.spine_physics_constraint_gravity_timeline_get_property_ids; +a._spine_physics_constraint_gravity_timeline_rtti=Y.spine_physics_constraint_gravity_timeline_rtti;a._spine_skin_create=Y.spine_skin_create;a._spine_skin_dispose=Y.spine_skin_dispose;a._spine_skin_set_attachment=Y.spine_skin_set_attachment;a._spine_skin_get_attachment=Y.spine_skin_get_attachment;a._spine_skin_remove_attachment=Y.spine_skin_remove_attachment;a._spine_skin_find_attachments_for_slot=Y.spine_skin_find_attachments_for_slot;a._spine_skin_get_name=Y.spine_skin_get_name; +a._spine_skin_add_skin=Y.spine_skin_add_skin;a._spine_skin_copy_skin=Y.spine_skin_copy_skin;a._spine_skin_get_bones=Y.spine_skin_get_bones;a._spine_skin_get_constraints=Y.spine_skin_get_constraints;a._spine_skin_get_color=Y.spine_skin_get_color;a._spine_curve_timeline_dispose=Y.spine_curve_timeline_dispose;a._spine_curve_timeline_get_rtti=Y.spine_curve_timeline_get_rtti;a._spine_curve_timeline_set_linear=Y.spine_curve_timeline_set_linear;a._spine_curve_timeline_set_stepped=Y.spine_curve_timeline_set_stepped; +a._spine_curve_timeline_set_bezier=Y.spine_curve_timeline_set_bezier;a._spine_curve_timeline_get_bezier_value=Y.spine_curve_timeline_get_bezier_value;a._spine_curve_timeline_get_curves=Y.spine_curve_timeline_get_curves;a._spine_curve_timeline_apply=Y.spine_curve_timeline_apply;a._spine_curve_timeline_get_frame_entries=Y.spine_curve_timeline_get_frame_entries;a._spine_curve_timeline_get_frame_count=Y.spine_curve_timeline_get_frame_count;a._spine_curve_timeline_get_frames=Y.spine_curve_timeline_get_frames; +a._spine_curve_timeline_get_duration=Y.spine_curve_timeline_get_duration;a._spine_curve_timeline_get_property_ids=Y.spine_curve_timeline_get_property_ids;a._spine_curve_timeline_rtti=Y.spine_curve_timeline_rtti;a._spine_ik_constraint_create=Y.spine_ik_constraint_create;a._spine_ik_constraint_dispose=Y.spine_ik_constraint_dispose;a._spine_ik_constraint_get_rtti=Y.spine_ik_constraint_get_rtti;a._spine_ik_constraint_copy=Y.spine_ik_constraint_copy;a._spine_ik_constraint_update=Y.spine_ik_constraint_update; +a._spine_ik_constraint_sort=Y.spine_ik_constraint_sort;a._spine_ik_constraint_is_source_active=Y.spine_ik_constraint_is_source_active;a._spine_ik_constraint_get_data=Y.spine_ik_constraint_get_data;a._spine_ik_constraint_get_bones=Y.spine_ik_constraint_get_bones;a._spine_ik_constraint_get_target=Y.spine_ik_constraint_get_target;a._spine_ik_constraint_set_target=Y.spine_ik_constraint_set_target;a._spine_ik_constraint_apply_1=Y.spine_ik_constraint_apply_1;a._spine_ik_constraint_apply_2=Y.spine_ik_constraint_apply_2; +a._spine_ik_constraint_get_pose=Y.spine_ik_constraint_get_pose;a._spine_ik_constraint_get_applied_pose=Y.spine_ik_constraint_get_applied_pose;a._spine_ik_constraint_reset_constrained=Y.spine_ik_constraint_reset_constrained;a._spine_ik_constraint_constrained=Y.spine_ik_constraint_constrained;a._spine_ik_constraint_is_pose_equal_to_applied=Y.spine_ik_constraint_is_pose_equal_to_applied;a._spine_ik_constraint_is_active=Y.spine_ik_constraint_is_active;a._spine_ik_constraint_set_active=Y.spine_ik_constraint_set_active; +a._spine_ik_constraint_rtti=Y.spine_ik_constraint_rtti;a._spine_rtti_dispose=Y.spine_rtti_dispose;a._spine_rtti_get_class_name=Y.spine_rtti_get_class_name;a._spine_rtti_is_exactly=Y.spine_rtti_is_exactly;a._spine_rtti_instance_of=Y.spine_rtti_instance_of;a._spine_physics_constraint_mass_timeline_create=Y.spine_physics_constraint_mass_timeline_create;a._spine_physics_constraint_mass_timeline_dispose=Y.spine_physics_constraint_mass_timeline_dispose; +a._spine_physics_constraint_mass_timeline_get_rtti=Y.spine_physics_constraint_mass_timeline_get_rtti;a._spine_physics_constraint_mass_timeline_apply=Y.spine_physics_constraint_mass_timeline_apply;a._spine_physics_constraint_mass_timeline_get_constraint_index=Y.spine_physics_constraint_mass_timeline_get_constraint_index;a._spine_physics_constraint_mass_timeline_set_constraint_index=Y.spine_physics_constraint_mass_timeline_set_constraint_index;a._spine_physics_constraint_mass_timeline_set_frame=Y.spine_physics_constraint_mass_timeline_set_frame; +a._spine_physics_constraint_mass_timeline_get_curve_value=Y.spine_physics_constraint_mass_timeline_get_curve_value;a._spine_physics_constraint_mass_timeline_get_relative_value=Y.spine_physics_constraint_mass_timeline_get_relative_value;a._spine_physics_constraint_mass_timeline_get_absolute_value_1=Y.spine_physics_constraint_mass_timeline_get_absolute_value_1;a._spine_physics_constraint_mass_timeline_get_absolute_value_2=Y.spine_physics_constraint_mass_timeline_get_absolute_value_2; +a._spine_physics_constraint_mass_timeline_get_scale_value=Y.spine_physics_constraint_mass_timeline_get_scale_value;a._spine_physics_constraint_mass_timeline_set_linear=Y.spine_physics_constraint_mass_timeline_set_linear;a._spine_physics_constraint_mass_timeline_set_stepped=Y.spine_physics_constraint_mass_timeline_set_stepped;a._spine_physics_constraint_mass_timeline_set_bezier=Y.spine_physics_constraint_mass_timeline_set_bezier;a._spine_physics_constraint_mass_timeline_get_bezier_value=Y.spine_physics_constraint_mass_timeline_get_bezier_value; +a._spine_physics_constraint_mass_timeline_get_curves=Y.spine_physics_constraint_mass_timeline_get_curves;a._spine_physics_constraint_mass_timeline_get_frame_entries=Y.spine_physics_constraint_mass_timeline_get_frame_entries;a._spine_physics_constraint_mass_timeline_get_frame_count=Y.spine_physics_constraint_mass_timeline_get_frame_count;a._spine_physics_constraint_mass_timeline_get_frames=Y.spine_physics_constraint_mass_timeline_get_frames;a._spine_physics_constraint_mass_timeline_get_duration=Y.spine_physics_constraint_mass_timeline_get_duration; +a._spine_physics_constraint_mass_timeline_get_property_ids=Y.spine_physics_constraint_mass_timeline_get_property_ids;a._spine_physics_constraint_mass_timeline_rtti=Y.spine_physics_constraint_mass_timeline_rtti;a._spine_from_shear_y_create=Y.spine_from_shear_y_create;a._spine_from_shear_y_dispose=Y.spine_from_shear_y_dispose;a._spine_from_shear_y_get_rtti=Y.spine_from_shear_y_get_rtti;a._spine_from_shear_y_value=Y.spine_from_shear_y_value;a._spine_from_shear_y_rtti=Y.spine_from_shear_y_rtti; +a._spine_bone_local_create=Y.spine_bone_local_create;a._spine_bone_local_dispose=Y.spine_bone_local_dispose;a._spine_bone_local_set=Y.spine_bone_local_set;a._spine_bone_local_get_x=Y.spine_bone_local_get_x;a._spine_bone_local_set_x=Y.spine_bone_local_set_x;a._spine_bone_local_get_y=Y.spine_bone_local_get_y;a._spine_bone_local_set_y=Y.spine_bone_local_set_y;a._spine_bone_local_set_position=Y.spine_bone_local_set_position;a._spine_bone_local_get_rotation=Y.spine_bone_local_get_rotation; +a._spine_bone_local_set_rotation=Y.spine_bone_local_set_rotation;a._spine_bone_local_get_scale_x=Y.spine_bone_local_get_scale_x;a._spine_bone_local_set_scale_x=Y.spine_bone_local_set_scale_x;a._spine_bone_local_get_scale_y=Y.spine_bone_local_get_scale_y;a._spine_bone_local_set_scale_y=Y.spine_bone_local_set_scale_y;a._spine_bone_local_set_scale_1=Y.spine_bone_local_set_scale_1;a._spine_bone_local_set_scale_2=Y.spine_bone_local_set_scale_2;a._spine_bone_local_get_shear_x=Y.spine_bone_local_get_shear_x; +a._spine_bone_local_set_shear_x=Y.spine_bone_local_set_shear_x;a._spine_bone_local_get_shear_y=Y.spine_bone_local_get_shear_y;a._spine_bone_local_set_shear_y=Y.spine_bone_local_set_shear_y;a._spine_bone_local_get_inherit=Y.spine_bone_local_get_inherit;a._spine_bone_local_set_inherit=Y.spine_bone_local_set_inherit;a._spine_atlas_dispose=Y.spine_atlas_dispose;a._spine_atlas_flip_v=Y.spine_atlas_flip_v;a._spine_atlas_find_region=Y.spine_atlas_find_region;a._spine_atlas_get_pages=Y.spine_atlas_get_pages; +a._spine_atlas_get_regions=Y.spine_atlas_get_regions;a._spine_bounding_box_attachment_create=Y.spine_bounding_box_attachment_create;a._spine_bounding_box_attachment_dispose=Y.spine_bounding_box_attachment_dispose;a._spine_bounding_box_attachment_get_rtti=Y.spine_bounding_box_attachment_get_rtti;a._spine_bounding_box_attachment_get_color=Y.spine_bounding_box_attachment_get_color;a._spine_bounding_box_attachment_copy=Y.spine_bounding_box_attachment_copy; +a._spine_bounding_box_attachment_compute_world_vertices_1=Y.spine_bounding_box_attachment_compute_world_vertices_1;a._spine_bounding_box_attachment_compute_world_vertices_2=Y.spine_bounding_box_attachment_compute_world_vertices_2;a._spine_bounding_box_attachment_get_id=Y.spine_bounding_box_attachment_get_id;a._spine_bounding_box_attachment_get_bones=Y.spine_bounding_box_attachment_get_bones;a._spine_bounding_box_attachment_set_bones=Y.spine_bounding_box_attachment_set_bones; +a._spine_bounding_box_attachment_get_vertices=Y.spine_bounding_box_attachment_get_vertices;a._spine_bounding_box_attachment_set_vertices=Y.spine_bounding_box_attachment_set_vertices;a._spine_bounding_box_attachment_get_world_vertices_length=Y.spine_bounding_box_attachment_get_world_vertices_length;a._spine_bounding_box_attachment_set_world_vertices_length=Y.spine_bounding_box_attachment_set_world_vertices_length;a._spine_bounding_box_attachment_get_timeline_attachment=Y.spine_bounding_box_attachment_get_timeline_attachment; +a._spine_bounding_box_attachment_set_timeline_attachment=Y.spine_bounding_box_attachment_set_timeline_attachment;a._spine_bounding_box_attachment_copy_to=Y.spine_bounding_box_attachment_copy_to;a._spine_bounding_box_attachment_get_name=Y.spine_bounding_box_attachment_get_name;a._spine_bounding_box_attachment_get_ref_count=Y.spine_bounding_box_attachment_get_ref_count;a._spine_bounding_box_attachment_reference=Y.spine_bounding_box_attachment_reference;a._spine_bounding_box_attachment_dereference=Y.spine_bounding_box_attachment_dereference; +a._spine_bounding_box_attachment_rtti=Y.spine_bounding_box_attachment_rtti;a._spine_skeleton_clipping_create=Y.spine_skeleton_clipping_create;a._spine_skeleton_clipping_dispose=Y.spine_skeleton_clipping_dispose;a._spine_skeleton_clipping_clip_start=Y.spine_skeleton_clipping_clip_start;a._spine_skeleton_clipping_clip_end_1=Y.spine_skeleton_clipping_clip_end_1;a._spine_skeleton_clipping_clip_end_2=Y.spine_skeleton_clipping_clip_end_2;a._spine_skeleton_clipping_clip_triangles_1=Y.spine_skeleton_clipping_clip_triangles_1; +a._spine_skeleton_clipping_clip_triangles_2=Y.spine_skeleton_clipping_clip_triangles_2;a._spine_skeleton_clipping_clip_triangles_3=Y.spine_skeleton_clipping_clip_triangles_3;a._spine_skeleton_clipping_is_clipping=Y.spine_skeleton_clipping_is_clipping;a._spine_skeleton_clipping_get_clipped_vertices=Y.spine_skeleton_clipping_get_clipped_vertices;a._spine_skeleton_clipping_get_clipped_triangles=Y.spine_skeleton_clipping_get_clipped_triangles;a._spine_skeleton_clipping_get_clipped_u_vs=Y.spine_skeleton_clipping_get_clipped_u_vs; +a._spine_path_constraint_spacing_timeline_create=Y.spine_path_constraint_spacing_timeline_create;a._spine_path_constraint_spacing_timeline_dispose=Y.spine_path_constraint_spacing_timeline_dispose;a._spine_path_constraint_spacing_timeline_get_rtti=Y.spine_path_constraint_spacing_timeline_get_rtti;a._spine_path_constraint_spacing_timeline_apply=Y.spine_path_constraint_spacing_timeline_apply;a._spine_path_constraint_spacing_timeline_get_constraint_index=Y.spine_path_constraint_spacing_timeline_get_constraint_index; +a._spine_path_constraint_spacing_timeline_set_constraint_index=Y.spine_path_constraint_spacing_timeline_set_constraint_index;a._spine_path_constraint_spacing_timeline_set_frame=Y.spine_path_constraint_spacing_timeline_set_frame;a._spine_path_constraint_spacing_timeline_get_curve_value=Y.spine_path_constraint_spacing_timeline_get_curve_value;a._spine_path_constraint_spacing_timeline_get_relative_value=Y.spine_path_constraint_spacing_timeline_get_relative_value; +a._spine_path_constraint_spacing_timeline_get_absolute_value_1=Y.spine_path_constraint_spacing_timeline_get_absolute_value_1;a._spine_path_constraint_spacing_timeline_get_absolute_value_2=Y.spine_path_constraint_spacing_timeline_get_absolute_value_2;a._spine_path_constraint_spacing_timeline_get_scale_value=Y.spine_path_constraint_spacing_timeline_get_scale_value;a._spine_path_constraint_spacing_timeline_set_linear=Y.spine_path_constraint_spacing_timeline_set_linear; +a._spine_path_constraint_spacing_timeline_set_stepped=Y.spine_path_constraint_spacing_timeline_set_stepped;a._spine_path_constraint_spacing_timeline_set_bezier=Y.spine_path_constraint_spacing_timeline_set_bezier;a._spine_path_constraint_spacing_timeline_get_bezier_value=Y.spine_path_constraint_spacing_timeline_get_bezier_value;a._spine_path_constraint_spacing_timeline_get_curves=Y.spine_path_constraint_spacing_timeline_get_curves;a._spine_path_constraint_spacing_timeline_get_frame_entries=Y.spine_path_constraint_spacing_timeline_get_frame_entries; +a._spine_path_constraint_spacing_timeline_get_frame_count=Y.spine_path_constraint_spacing_timeline_get_frame_count;a._spine_path_constraint_spacing_timeline_get_frames=Y.spine_path_constraint_spacing_timeline_get_frames;a._spine_path_constraint_spacing_timeline_get_duration=Y.spine_path_constraint_spacing_timeline_get_duration;a._spine_path_constraint_spacing_timeline_get_property_ids=Y.spine_path_constraint_spacing_timeline_get_property_ids;a._spine_path_constraint_spacing_timeline_rtti=Y.spine_path_constraint_spacing_timeline_rtti; +a._spine_timeline_dispose=Y.spine_timeline_dispose;a._spine_timeline_get_rtti=Y.spine_timeline_get_rtti;a._spine_timeline_apply=Y.spine_timeline_apply;a._spine_timeline_get_frame_entries=Y.spine_timeline_get_frame_entries;a._spine_timeline_get_frame_count=Y.spine_timeline_get_frame_count;a._spine_timeline_get_frames=Y.spine_timeline_get_frames;a._spine_timeline_get_duration=Y.spine_timeline_get_duration;a._spine_timeline_get_property_ids=Y.spine_timeline_get_property_ids;a._spine_timeline_rtti=Y.spine_timeline_rtti; +a._spine_skeleton_binary_create=Y.spine_skeleton_binary_create;a._spine_skeleton_binary_create2=Y.spine_skeleton_binary_create2;a._spine_skeleton_binary_dispose=Y.spine_skeleton_binary_dispose;a._spine_skeleton_binary_read_skeleton_data=Y.spine_skeleton_binary_read_skeleton_data;a._spine_skeleton_binary_read_skeleton_data_file=Y.spine_skeleton_binary_read_skeleton_data_file;a._spine_skeleton_binary_set_scale=Y.spine_skeleton_binary_set_scale;a._spine_skeleton_binary_get_error=Y.spine_skeleton_binary_get_error; +a._spine_alpha_timeline_create=Y.spine_alpha_timeline_create;a._spine_alpha_timeline_dispose=Y.spine_alpha_timeline_dispose;a._spine_alpha_timeline_get_rtti=Y.spine_alpha_timeline_get_rtti;a._spine_alpha_timeline_apply=Y.spine_alpha_timeline_apply;a._spine_alpha_timeline_get_slot_index=Y.spine_alpha_timeline_get_slot_index;a._spine_alpha_timeline_set_slot_index=Y.spine_alpha_timeline_set_slot_index;a._spine_alpha_timeline_set_frame=Y.spine_alpha_timeline_set_frame; +a._spine_alpha_timeline_get_curve_value=Y.spine_alpha_timeline_get_curve_value;a._spine_alpha_timeline_get_relative_value=Y.spine_alpha_timeline_get_relative_value;a._spine_alpha_timeline_get_absolute_value_1=Y.spine_alpha_timeline_get_absolute_value_1;a._spine_alpha_timeline_get_absolute_value_2=Y.spine_alpha_timeline_get_absolute_value_2;a._spine_alpha_timeline_get_scale_value=Y.spine_alpha_timeline_get_scale_value;a._spine_alpha_timeline_set_linear=Y.spine_alpha_timeline_set_linear; +a._spine_alpha_timeline_set_stepped=Y.spine_alpha_timeline_set_stepped;a._spine_alpha_timeline_set_bezier=Y.spine_alpha_timeline_set_bezier;a._spine_alpha_timeline_get_bezier_value=Y.spine_alpha_timeline_get_bezier_value;a._spine_alpha_timeline_get_curves=Y.spine_alpha_timeline_get_curves;a._spine_alpha_timeline_get_frame_entries=Y.spine_alpha_timeline_get_frame_entries;a._spine_alpha_timeline_get_frame_count=Y.spine_alpha_timeline_get_frame_count;a._spine_alpha_timeline_get_frames=Y.spine_alpha_timeline_get_frames; +a._spine_alpha_timeline_get_duration=Y.spine_alpha_timeline_get_duration;a._spine_alpha_timeline_get_property_ids=Y.spine_alpha_timeline_get_property_ids;a._spine_alpha_timeline_rtti=Y.spine_alpha_timeline_rtti;a._spine_color_create=Y.spine_color_create;a._spine_color_create2=Y.spine_color_create2;a._spine_color_dispose=Y.spine_color_dispose;a._spine_color_set_1=Y.spine_color_set_1;a._spine_color_set_2=Y.spine_color_set_2;a._spine_color_set_3=Y.spine_color_set_3;a._spine_color_add_1=Y.spine_color_add_1; +a._spine_color_add_2=Y.spine_color_add_2;a._spine_color_add_3=Y.spine_color_add_3;a._spine_color_clamp=Y.spine_color_clamp;a._spine_color_parse_hex=Y.spine_color_parse_hex;a._spine_color_rgba8888_to_color=Y.spine_color_rgba8888_to_color;a._spine_color_rgb888_to_color=Y.spine_color_rgb888_to_color;a._spine_color_get_r=Y.spine_color_get_r;a._spine_color_set_r=Y.spine_color_set_r;a._spine_color_get_g=Y.spine_color_get_g;a._spine_color_set_g=Y.spine_color_set_g;a._spine_color_get_b=Y.spine_color_get_b; +a._spine_color_set_b=Y.spine_color_set_b;a._spine_color_get_a=Y.spine_color_get_a;a._spine_color_set_a=Y.spine_color_set_a;a._spine_translate_timeline_create=Y.spine_translate_timeline_create;a._spine_translate_timeline_dispose=Y.spine_translate_timeline_dispose;a._spine_translate_timeline_get_rtti=Y.spine_translate_timeline_get_rtti;a._spine_translate_timeline_apply=Y.spine_translate_timeline_apply;a._spine_translate_timeline_get_bone_index=Y.spine_translate_timeline_get_bone_index; +a._spine_translate_timeline_set_bone_index=Y.spine_translate_timeline_set_bone_index;a._spine_translate_timeline_set_frame=Y.spine_translate_timeline_set_frame;a._spine_translate_timeline_set_linear=Y.spine_translate_timeline_set_linear;a._spine_translate_timeline_set_stepped=Y.spine_translate_timeline_set_stepped;a._spine_translate_timeline_set_bezier=Y.spine_translate_timeline_set_bezier;a._spine_translate_timeline_get_bezier_value=Y.spine_translate_timeline_get_bezier_value; +a._spine_translate_timeline_get_curves=Y.spine_translate_timeline_get_curves;a._spine_translate_timeline_get_frame_entries=Y.spine_translate_timeline_get_frame_entries;a._spine_translate_timeline_get_frame_count=Y.spine_translate_timeline_get_frame_count;a._spine_translate_timeline_get_frames=Y.spine_translate_timeline_get_frames;a._spine_translate_timeline_get_duration=Y.spine_translate_timeline_get_duration;a._spine_translate_timeline_get_property_ids=Y.spine_translate_timeline_get_property_ids; +a._spine_translate_timeline_rtti=Y.spine_translate_timeline_rtti;a._spine_attachment_timeline_create=Y.spine_attachment_timeline_create;a._spine_attachment_timeline_dispose=Y.spine_attachment_timeline_dispose;a._spine_attachment_timeline_get_rtti=Y.spine_attachment_timeline_get_rtti;a._spine_attachment_timeline_apply=Y.spine_attachment_timeline_apply;a._spine_attachment_timeline_set_frame=Y.spine_attachment_timeline_set_frame;a._spine_attachment_timeline_get_slot_index=Y.spine_attachment_timeline_get_slot_index; +a._spine_attachment_timeline_set_slot_index=Y.spine_attachment_timeline_set_slot_index;a._spine_attachment_timeline_get_frame_entries=Y.spine_attachment_timeline_get_frame_entries;a._spine_attachment_timeline_get_frame_count=Y.spine_attachment_timeline_get_frame_count;a._spine_attachment_timeline_get_frames=Y.spine_attachment_timeline_get_frames;a._spine_attachment_timeline_get_duration=Y.spine_attachment_timeline_get_duration;a._spine_attachment_timeline_get_property_ids=Y.spine_attachment_timeline_get_property_ids; +a._spine_attachment_timeline_rtti=Y.spine_attachment_timeline_rtti;a._spine_shear_timeline_create=Y.spine_shear_timeline_create;a._spine_shear_timeline_dispose=Y.spine_shear_timeline_dispose;a._spine_shear_timeline_get_rtti=Y.spine_shear_timeline_get_rtti;a._spine_shear_timeline_apply=Y.spine_shear_timeline_apply;a._spine_shear_timeline_get_bone_index=Y.spine_shear_timeline_get_bone_index;a._spine_shear_timeline_set_bone_index=Y.spine_shear_timeline_set_bone_index; +a._spine_shear_timeline_set_frame=Y.spine_shear_timeline_set_frame;a._spine_shear_timeline_set_linear=Y.spine_shear_timeline_set_linear;a._spine_shear_timeline_set_stepped=Y.spine_shear_timeline_set_stepped;a._spine_shear_timeline_set_bezier=Y.spine_shear_timeline_set_bezier;a._spine_shear_timeline_get_bezier_value=Y.spine_shear_timeline_get_bezier_value;a._spine_shear_timeline_get_curves=Y.spine_shear_timeline_get_curves;a._spine_shear_timeline_get_frame_entries=Y.spine_shear_timeline_get_frame_entries; +a._spine_shear_timeline_get_frame_count=Y.spine_shear_timeline_get_frame_count;a._spine_shear_timeline_get_frames=Y.spine_shear_timeline_get_frames;a._spine_shear_timeline_get_duration=Y.spine_shear_timeline_get_duration;a._spine_shear_timeline_get_property_ids=Y.spine_shear_timeline_get_property_ids;a._spine_shear_timeline_rtti=Y.spine_shear_timeline_rtti;a._spine_bone_data_create=Y.spine_bone_data_create;a._spine_bone_data_dispose=Y.spine_bone_data_dispose;a._spine_bone_data_get_index=Y.spine_bone_data_get_index; +a._spine_bone_data_get_parent=Y.spine_bone_data_get_parent;a._spine_bone_data_get_length=Y.spine_bone_data_get_length;a._spine_bone_data_set_length=Y.spine_bone_data_set_length;a._spine_bone_data_get_color=Y.spine_bone_data_get_color;a._spine_bone_data_get_icon=Y.spine_bone_data_get_icon;a._spine_bone_data_set_icon=Y.spine_bone_data_set_icon;a._spine_bone_data_get_visible=Y.spine_bone_data_get_visible;a._spine_bone_data_set_visible=Y.spine_bone_data_set_visible;a._spine_bone_data_get_setup_pose=Y.spine_bone_data_get_setup_pose; +a._spine_bone_data_get_name=Y.spine_bone_data_get_name;a._spine_bone_data_get_skin_required=Y.spine_bone_data_get_skin_required;a._spine_bone_data_set_skin_required=Y.spine_bone_data_set_skin_required;a._spine_slot_pose_create=Y.spine_slot_pose_create;a._spine_slot_pose_dispose=Y.spine_slot_pose_dispose;a._spine_slot_pose_set=Y.spine_slot_pose_set;a._spine_slot_pose_get_color=Y.spine_slot_pose_get_color;a._spine_slot_pose_get_dark_color=Y.spine_slot_pose_get_dark_color; +a._spine_slot_pose_has_dark_color=Y.spine_slot_pose_has_dark_color;a._spine_slot_pose_set_has_dark_color=Y.spine_slot_pose_set_has_dark_color;a._spine_slot_pose_get_attachment=Y.spine_slot_pose_get_attachment;a._spine_slot_pose_set_attachment=Y.spine_slot_pose_set_attachment;a._spine_slot_pose_get_sequence_index=Y.spine_slot_pose_get_sequence_index;a._spine_slot_pose_set_sequence_index=Y.spine_slot_pose_set_sequence_index;a._spine_slot_pose_get_deform=Y.spine_slot_pose_get_deform; +a._spine_track_entry_create=Y.spine_track_entry_create;a._spine_track_entry_dispose=Y.spine_track_entry_dispose;a._spine_track_entry_get_track_index=Y.spine_track_entry_get_track_index;a._spine_track_entry_get_animation=Y.spine_track_entry_get_animation;a._spine_track_entry_set_animation=Y.spine_track_entry_set_animation;a._spine_track_entry_get_previous=Y.spine_track_entry_get_previous;a._spine_track_entry_get_loop=Y.spine_track_entry_get_loop;a._spine_track_entry_set_loop=Y.spine_track_entry_set_loop; a._spine_track_entry_get_hold_previous=Y.spine_track_entry_get_hold_previous;a._spine_track_entry_set_hold_previous=Y.spine_track_entry_set_hold_previous;a._spine_track_entry_get_reverse=Y.spine_track_entry_get_reverse;a._spine_track_entry_set_reverse=Y.spine_track_entry_set_reverse;a._spine_track_entry_get_shortest_rotation=Y.spine_track_entry_get_shortest_rotation;a._spine_track_entry_set_shortest_rotation=Y.spine_track_entry_set_shortest_rotation;a._spine_track_entry_get_delay=Y.spine_track_entry_get_delay; a._spine_track_entry_set_delay=Y.spine_track_entry_set_delay;a._spine_track_entry_get_track_time=Y.spine_track_entry_get_track_time;a._spine_track_entry_set_track_time=Y.spine_track_entry_set_track_time;a._spine_track_entry_get_track_end=Y.spine_track_entry_get_track_end;a._spine_track_entry_set_track_end=Y.spine_track_entry_set_track_end;a._spine_track_entry_get_animation_start=Y.spine_track_entry_get_animation_start;a._spine_track_entry_set_animation_start=Y.spine_track_entry_set_animation_start; a._spine_track_entry_get_animation_end=Y.spine_track_entry_get_animation_end;a._spine_track_entry_set_animation_end=Y.spine_track_entry_set_animation_end;a._spine_track_entry_get_animation_last=Y.spine_track_entry_get_animation_last;a._spine_track_entry_set_animation_last=Y.spine_track_entry_set_animation_last;a._spine_track_entry_get_animation_time=Y.spine_track_entry_get_animation_time;a._spine_track_entry_get_time_scale=Y.spine_track_entry_get_time_scale;a._spine_track_entry_set_time_scale=Y.spine_track_entry_set_time_scale; -a._spine_track_entry_get_alpha=Y.spine_track_entry_get_alpha;a._spine_track_entry_set_alpha=Y.spine_track_entry_set_alpha;a._spine_track_entry_get_event_threshold=Y.spine_track_entry_get_event_threshold;a._spine_track_entry_set_event_threshold=Y.spine_track_entry_set_event_threshold;a._spine_track_entry_get_alpha_attachment_threshold=Y.spine_track_entry_get_alpha_attachment_threshold;a._spine_track_entry_set_alpha_attachment_threshold=Y.spine_track_entry_set_alpha_attachment_threshold; -a._spine_track_entry_get_mix_attachment_threshold=Y.spine_track_entry_get_mix_attachment_threshold;a._spine_track_entry_set_mix_attachment_threshold=Y.spine_track_entry_set_mix_attachment_threshold;a._spine_track_entry_get_mix_draw_order_threshold=Y.spine_track_entry_get_mix_draw_order_threshold;a._spine_track_entry_set_mix_draw_order_threshold=Y.spine_track_entry_set_mix_draw_order_threshold;a._spine_track_entry_get_next=Y.spine_track_entry_get_next;a._spine_track_entry_is_complete=Y.spine_track_entry_is_complete; -a._spine_track_entry_get_mix_time=Y.spine_track_entry_get_mix_time;a._spine_track_entry_set_mix_time=Y.spine_track_entry_set_mix_time;a._spine_track_entry_get_mix_duration=Y.spine_track_entry_get_mix_duration;a._spine_track_entry_set_mix_duration=Y.spine_track_entry_set_mix_duration;a._spine_track_entry_get_mix_blend=Y.spine_track_entry_get_mix_blend;a._spine_track_entry_set_mix_blend=Y.spine_track_entry_set_mix_blend;a._spine_track_entry_get_mixing_from=Y.spine_track_entry_get_mixing_from; -a._spine_track_entry_get_mixing_to=Y.spine_track_entry_get_mixing_to;a._spine_track_entry_reset_rotation_directions=Y.spine_track_entry_reset_rotation_directions;a._spine_track_entry_get_track_complete=Y.spine_track_entry_get_track_complete;a._spine_track_entry_was_applied=Y.spine_track_entry_was_applied;a._spine_track_entry_is_next_ready=Y.spine_track_entry_is_next_ready;a._spine_skeleton_update_cache=Y.spine_skeleton_update_cache;a._spine_skeleton_update_world_transform=Y.spine_skeleton_update_world_transform; -a._spine_skeleton_update_world_transform_bone=Y.spine_skeleton_update_world_transform_bone;a._spine_skeleton_set_to_setup_pose=Y.spine_skeleton_set_to_setup_pose;a._spine_skeleton_set_bones_to_setup_pose=Y.spine_skeleton_set_bones_to_setup_pose;a._spine_skeleton_set_slots_to_setup_pose=Y.spine_skeleton_set_slots_to_setup_pose;a._spine_skeleton_find_bone=Y.spine_skeleton_find_bone;a._spine_skeleton_find_slot=Y.spine_skeleton_find_slot;a._spine_skeleton_set_skin_by_name=Y.spine_skeleton_set_skin_by_name; -a._spine_skeleton_set_skin=Y.spine_skeleton_set_skin;a._spine_skeleton_get_attachment_by_name=Y.spine_skeleton_get_attachment_by_name;a._spine_skeleton_get_attachment=Y.spine_skeleton_get_attachment;a._spine_skeleton_set_attachment=Y.spine_skeleton_set_attachment;a._spine_skeleton_find_ik_constraint=Y.spine_skeleton_find_ik_constraint;a._spine_skeleton_find_transform_constraint=Y.spine_skeleton_find_transform_constraint;a._spine_skeleton_find_path_constraint=Y.spine_skeleton_find_path_constraint; -a._spine_skeleton_find_physics_constraint=Y.spine_skeleton_find_physics_constraint;a._spine_skeleton_get_bounds=Y.spine_skeleton_get_bounds;a._spine_skeleton_get_root_bone=Y.spine_skeleton_get_root_bone;a._spine_skeleton_get_data=Y.spine_skeleton_get_data;a._spine_skeleton_get_num_bones=Y.spine_skeleton_get_num_bones;a._spine_skeleton_get_bones=Y.spine_skeleton_get_bones;a._spine_skeleton_get_num_slots=Y.spine_skeleton_get_num_slots;a._spine_skeleton_get_slots=Y.spine_skeleton_get_slots; -a._spine_skeleton_get_num_draw_order=Y.spine_skeleton_get_num_draw_order;a._spine_skeleton_get_draw_order=Y.spine_skeleton_get_draw_order;a._spine_skeleton_get_num_ik_constraints=Y.spine_skeleton_get_num_ik_constraints;a._spine_skeleton_get_ik_constraints=Y.spine_skeleton_get_ik_constraints;a._spine_skeleton_get_num_transform_constraints=Y.spine_skeleton_get_num_transform_constraints;a._spine_skeleton_get_transform_constraints=Y.spine_skeleton_get_transform_constraints; -a._spine_skeleton_get_num_path_constraints=Y.spine_skeleton_get_num_path_constraints;a._spine_skeleton_get_path_constraints=Y.spine_skeleton_get_path_constraints;a._spine_skeleton_get_num_physics_constraints=Y.spine_skeleton_get_num_physics_constraints;a._spine_skeleton_get_physics_constraints=Y.spine_skeleton_get_physics_constraints;a._spine_skeleton_get_skin=Y.spine_skeleton_get_skin;a._spine_skeleton_get_color=Y.spine_skeleton_get_color;a._spine_skeleton_set_color=Y.spine_skeleton_set_color; -a._spine_skeleton_set_position=Y.spine_skeleton_set_position;a._spine_skeleton_get_x=Y.spine_skeleton_get_x;a._spine_skeleton_set_x=Y.spine_skeleton_set_x;a._spine_skeleton_get_y=Y.spine_skeleton_get_y;a._spine_skeleton_set_y=Y.spine_skeleton_set_y;a._spine_skeleton_set_scale=Y.spine_skeleton_set_scale;a._spine_skeleton_get_scale_x=Y.spine_skeleton_get_scale_x;a._spine_skeleton_set_scale_x=Y.spine_skeleton_set_scale_x;a._spine_skeleton_get_scale_y=Y.spine_skeleton_get_scale_y; -a._spine_skeleton_set_scale_y=Y.spine_skeleton_set_scale_y;a._spine_skeleton_get_time=Y.spine_skeleton_get_time;a._spine_skeleton_set_time=Y.spine_skeleton_set_time;a._spine_skeleton_update=Y.spine_skeleton_update;a._spine_event_data_get_name=Y.spine_event_data_get_name;a._spine_event_data_get_int_value=Y.spine_event_data_get_int_value;a._spine_event_data_set_int_value=Y.spine_event_data_set_int_value;a._spine_event_data_get_float_value=Y.spine_event_data_get_float_value; -a._spine_event_data_set_float_value=Y.spine_event_data_set_float_value;a._spine_event_data_get_string_value=Y.spine_event_data_get_string_value;a._spine_event_data_set_string_value=Y.spine_event_data_set_string_value;a._spine_event_data_get_audio_path=Y.spine_event_data_get_audio_path;a._spine_event_data_get_volume=Y.spine_event_data_get_volume;a._spine_event_data_set_volume=Y.spine_event_data_set_volume;a._spine_event_data_get_balance=Y.spine_event_data_get_balance; -a._spine_event_data_set_balance=Y.spine_event_data_set_balance;a._spine_event_get_data=Y.spine_event_get_data;a._spine_event_get_time=Y.spine_event_get_time;a._spine_event_get_int_value=Y.spine_event_get_int_value;a._spine_event_set_int_value=Y.spine_event_set_int_value;a._spine_event_get_float_value=Y.spine_event_get_float_value;a._spine_event_set_float_value=Y.spine_event_set_float_value;a._spine_event_get_string_value=Y.spine_event_get_string_value;a._spine_event_set_string_value=Y.spine_event_set_string_value; -a._spine_event_get_volume=Y.spine_event_get_volume;a._spine_event_set_volume=Y.spine_event_set_volume;a._spine_event_get_balance=Y.spine_event_get_balance;a._spine_event_set_balance=Y.spine_event_set_balance;a._spine_slot_data_get_index=Y.spine_slot_data_get_index;a._spine_slot_data_get_name=Y.spine_slot_data_get_name;a._spine_slot_data_get_bone_data=Y.spine_slot_data_get_bone_data;a._spine_slot_data_get_color=Y.spine_slot_data_get_color;a._spine_slot_data_set_color=Y.spine_slot_data_set_color; -a._spine_slot_data_get_dark_color=Y.spine_slot_data_get_dark_color;a._spine_slot_data_set_dark_color=Y.spine_slot_data_set_dark_color;a._spine_slot_data_get_has_dark_color=Y.spine_slot_data_get_has_dark_color;a._spine_slot_data_set_has_dark_color=Y.spine_slot_data_set_has_dark_color;a._spine_slot_data_get_attachment_name=Y.spine_slot_data_get_attachment_name;a._spine_slot_data_set_attachment_name=Y.spine_slot_data_set_attachment_name;a._spine_slot_data_get_blend_mode=Y.spine_slot_data_get_blend_mode; -a._spine_slot_data_set_blend_mode=Y.spine_slot_data_set_blend_mode;a._spine_slot_data_is_visible=Y.spine_slot_data_is_visible;a._spine_slot_data_set_visible=Y.spine_slot_data_set_visible;a._spine_slot_set_to_setup_pose=Y.spine_slot_set_to_setup_pose;a._spine_slot_get_data=Y.spine_slot_get_data;a._spine_slot_get_bone=Y.spine_slot_get_bone;a._spine_slot_get_skeleton=Y.spine_slot_get_skeleton;a._spine_slot_get_color=Y.spine_slot_get_color;a._spine_slot_set_color=Y.spine_slot_set_color; -a._spine_slot_get_dark_color=Y.spine_slot_get_dark_color;a._spine_slot_set_dark_color=Y.spine_slot_set_dark_color;a._spine_slot_has_dark_color=Y.spine_slot_has_dark_color;a._spine_slot_get_attachment=Y.spine_slot_get_attachment;a._spine_slot_set_attachment=Y.spine_slot_set_attachment;a._spine_slot_get_sequence_index=Y.spine_slot_get_sequence_index;a._spine_slot_set_sequence_index=Y.spine_slot_set_sequence_index;a._spine_bone_data_get_index=Y.spine_bone_data_get_index;a._spine_bone_data_get_name=Y.spine_bone_data_get_name; -a._spine_bone_data_get_parent=Y.spine_bone_data_get_parent;a._spine_bone_data_get_length=Y.spine_bone_data_get_length;a._spine_bone_data_set_length=Y.spine_bone_data_set_length;a._spine_bone_data_get_x=Y.spine_bone_data_get_x;a._spine_bone_data_set_x=Y.spine_bone_data_set_x;a._spine_bone_data_get_y=Y.spine_bone_data_get_y;a._spine_bone_data_set_y=Y.spine_bone_data_set_y;a._spine_bone_data_get_rotation=Y.spine_bone_data_get_rotation;a._spine_bone_data_set_rotation=Y.spine_bone_data_set_rotation; -a._spine_bone_data_get_scale_x=Y.spine_bone_data_get_scale_x;a._spine_bone_data_set_scale_x=Y.spine_bone_data_set_scale_x;a._spine_bone_data_get_scale_y=Y.spine_bone_data_get_scale_y;a._spine_bone_data_set_scale_y=Y.spine_bone_data_set_scale_y;a._spine_bone_data_get_shear_x=Y.spine_bone_data_get_shear_x;a._spine_bone_data_set_shear_x=Y.spine_bone_data_set_shear_x;a._spine_bone_data_get_shear_y=Y.spine_bone_data_get_shear_y;a._spine_bone_data_set_shear_y=Y.spine_bone_data_set_shear_y; -a._spine_bone_data_get_inherit=Y.spine_bone_data_get_inherit;a._spine_bone_data_set_inherit=Y.spine_bone_data_set_inherit;a._spine_bone_data_get_is_skin_required=Y.spine_bone_data_get_is_skin_required;a._spine_bone_data_set_is_skin_required=Y.spine_bone_data_set_is_skin_required;a._spine_bone_data_get_color=Y.spine_bone_data_get_color;a._spine_bone_data_set_color=Y.spine_bone_data_set_color;a._spine_bone_data_is_visible=Y.spine_bone_data_is_visible;a._spine_bone_data_set_visible=Y.spine_bone_data_set_visible; -a._spine_bone_set_is_y_down=Y.spine_bone_set_is_y_down;a._spine_bone_get_is_y_down=Y.spine_bone_get_is_y_down;a._spine_bone_update=Y.spine_bone_update;a._spine_bone_update_world_transform=Y.spine_bone_update_world_transform;a._spine_bone_update_world_transform_with=Y.spine_bone_update_world_transform_with;a._spine_bone_update_applied_transform=Y.spine_bone_update_applied_transform;a._spine_bone_set_to_setup_pose=Y.spine_bone_set_to_setup_pose;a._spine_bone_world_to_local=Y.spine_bone_world_to_local; -a._spine_bone_world_to_parent=Y.spine_bone_world_to_parent;a._spine_bone_local_to_world=Y.spine_bone_local_to_world;a._spine_bone_parent_to_world=Y.spine_bone_parent_to_world;a._spine_bone_world_to_local_rotation=Y.spine_bone_world_to_local_rotation;a._spine_bone_local_to_world_rotation=Y.spine_bone_local_to_world_rotation;a._spine_bone_rotate_world=Y.spine_bone_rotate_world;a._spine_bone_get_world_to_local_rotation_x=Y.spine_bone_get_world_to_local_rotation_x; -a._spine_bone_get_world_to_local_rotation_y=Y.spine_bone_get_world_to_local_rotation_y;a._spine_bone_get_data=Y.spine_bone_get_data;a._spine_bone_get_skeleton=Y.spine_bone_get_skeleton;a._spine_bone_get_parent=Y.spine_bone_get_parent;a._spine_bone_get_num_children=Y.spine_bone_get_num_children;a._spine_bone_get_children=Y.spine_bone_get_children;a._spine_bone_get_x=Y.spine_bone_get_x;a._spine_bone_set_x=Y.spine_bone_set_x;a._spine_bone_get_y=Y.spine_bone_get_y;a._spine_bone_set_y=Y.spine_bone_set_y; -a._spine_bone_get_rotation=Y.spine_bone_get_rotation;a._spine_bone_set_rotation=Y.spine_bone_set_rotation;a._spine_bone_get_scale_x=Y.spine_bone_get_scale_x;a._spine_bone_set_scale_x=Y.spine_bone_set_scale_x;a._spine_bone_get_scale_y=Y.spine_bone_get_scale_y;a._spine_bone_set_scale_y=Y.spine_bone_set_scale_y;a._spine_bone_get_shear_x=Y.spine_bone_get_shear_x;a._spine_bone_set_shear_x=Y.spine_bone_set_shear_x;a._spine_bone_get_shear_y=Y.spine_bone_get_shear_y;a._spine_bone_set_shear_y=Y.spine_bone_set_shear_y; -a._spine_bone_get_applied_rotation=Y.spine_bone_get_applied_rotation;a._spine_bone_set_applied_rotation=Y.spine_bone_set_applied_rotation;a._spine_bone_get_a_x=Y.spine_bone_get_a_x;a._spine_bone_set_a_x=Y.spine_bone_set_a_x;a._spine_bone_get_a_y=Y.spine_bone_get_a_y;a._spine_bone_set_a_y=Y.spine_bone_set_a_y;a._spine_bone_get_a_scale_x=Y.spine_bone_get_a_scale_x;a._spine_bone_set_a_scale_x=Y.spine_bone_set_a_scale_x;a._spine_bone_get_a_scale_y=Y.spine_bone_get_a_scale_y; -a._spine_bone_set_a_scale_y=Y.spine_bone_set_a_scale_y;a._spine_bone_get_a_shear_x=Y.spine_bone_get_a_shear_x;a._spine_bone_set_a_shear_x=Y.spine_bone_set_a_shear_x;a._spine_bone_get_a_shear_y=Y.spine_bone_get_a_shear_y;a._spine_bone_set_a_shear_y=Y.spine_bone_set_a_shear_y;a._spine_bone_get_a=Y.spine_bone_get_a;a._spine_bone_set_a=Y.spine_bone_set_a;a._spine_bone_get_b=Y.spine_bone_get_b;a._spine_bone_set_b=Y.spine_bone_set_b;a._spine_bone_get_c=Y.spine_bone_get_c;a._spine_bone_set_c=Y.spine_bone_set_c; -a._spine_bone_get_d=Y.spine_bone_get_d;a._spine_bone_set_d=Y.spine_bone_set_d;a._spine_bone_get_world_x=Y.spine_bone_get_world_x;a._spine_bone_set_world_x=Y.spine_bone_set_world_x;a._spine_bone_get_world_y=Y.spine_bone_get_world_y;a._spine_bone_set_world_y=Y.spine_bone_set_world_y;a._spine_bone_get_world_rotation_x=Y.spine_bone_get_world_rotation_x;a._spine_bone_get_world_rotation_y=Y.spine_bone_get_world_rotation_y;a._spine_bone_get_world_scale_x=Y.spine_bone_get_world_scale_x; -a._spine_bone_get_world_scale_y=Y.spine_bone_get_world_scale_y;a._spine_bone_get_is_active=Y.spine_bone_get_is_active;a._spine_bone_set_is_active=Y.spine_bone_set_is_active;a._spine_bone_get_inherit=Y.spine_bone_get_inherit;a._spine_bone_set_inherit=Y.spine_bone_set_inherit;a._spine_attachment_get_name=Y.spine_attachment_get_name;a._spine_attachment_get_type=Y.spine_attachment_get_type;a._spine_attachment_copy=Y.spine_attachment_copy;a._spine_attachment_cast_to_bounding_box_attachment=Y.spine_attachment_cast_to_bounding_box_attachment; -a._spine_attachment_dispose=Y.spine_attachment_dispose;a._spine_point_attachment_compute_world_position=Y.spine_point_attachment_compute_world_position;a._spine_point_attachment_compute_world_rotation=Y.spine_point_attachment_compute_world_rotation;a._spine_point_attachment_get_x=Y.spine_point_attachment_get_x;a._spine_point_attachment_set_x=Y.spine_point_attachment_set_x;a._spine_point_attachment_get_y=Y.spine_point_attachment_get_y;a._spine_point_attachment_set_y=Y.spine_point_attachment_set_y; -a._spine_point_attachment_get_rotation=Y.spine_point_attachment_get_rotation;a._spine_point_attachment_set_rotation=Y.spine_point_attachment_set_rotation;a._spine_point_attachment_get_color=Y.spine_point_attachment_get_color;a._spine_point_attachment_set_color=Y.spine_point_attachment_set_color;a._spine_region_attachment_update_region=Y.spine_region_attachment_update_region;a._spine_region_attachment_compute_world_vertices=Y.spine_region_attachment_compute_world_vertices; -a._spine_region_attachment_get_x=Y.spine_region_attachment_get_x;a._spine_region_attachment_set_x=Y.spine_region_attachment_set_x;a._spine_region_attachment_get_y=Y.spine_region_attachment_get_y;a._spine_region_attachment_set_y=Y.spine_region_attachment_set_y;a._spine_region_attachment_get_rotation=Y.spine_region_attachment_get_rotation;a._spine_region_attachment_set_rotation=Y.spine_region_attachment_set_rotation;a._spine_region_attachment_get_scale_x=Y.spine_region_attachment_get_scale_x; -a._spine_region_attachment_set_scale_x=Y.spine_region_attachment_set_scale_x;a._spine_region_attachment_get_scale_y=Y.spine_region_attachment_get_scale_y;a._spine_region_attachment_set_scale_y=Y.spine_region_attachment_set_scale_y;a._spine_region_attachment_get_width=Y.spine_region_attachment_get_width;a._spine_region_attachment_set_width=Y.spine_region_attachment_set_width;a._spine_region_attachment_get_height=Y.spine_region_attachment_get_height;a._spine_region_attachment_set_height=Y.spine_region_attachment_set_height; -a._spine_region_attachment_get_color=Y.spine_region_attachment_get_color;a._spine_region_attachment_set_color=Y.spine_region_attachment_set_color;a._spine_region_attachment_get_path=Y.spine_region_attachment_get_path;a._spine_region_attachment_get_region=Y.spine_region_attachment_get_region;a._spine_region_attachment_get_sequence=Y.spine_region_attachment_get_sequence;a._spine_region_attachment_get_num_offset=Y.spine_region_attachment_get_num_offset;a._spine_region_attachment_get_offset=Y.spine_region_attachment_get_offset; -a._spine_region_attachment_get_num_uvs=Y.spine_region_attachment_get_num_uvs;a._spine_region_attachment_get_uvs=Y.spine_region_attachment_get_uvs;a._spine_vertex_attachment_get_world_vertices_length=Y.spine_vertex_attachment_get_world_vertices_length;a._spine_vertex_attachment_compute_world_vertices=Y.spine_vertex_attachment_compute_world_vertices;a._spine_vertex_attachment_get_num_bones=Y.spine_vertex_attachment_get_num_bones;a._spine_vertex_attachment_get_bones=Y.spine_vertex_attachment_get_bones; -a._spine_vertex_attachment_get_num_vertices=Y.spine_vertex_attachment_get_num_vertices;a._spine_vertex_attachment_get_vertices=Y.spine_vertex_attachment_get_vertices;a._spine_vertex_attachment_get_timeline_attachment=Y.spine_vertex_attachment_get_timeline_attachment;a._spine_vertex_attachment_set_timeline_attachment=Y.spine_vertex_attachment_set_timeline_attachment;a._spine_mesh_attachment_update_region=Y.spine_mesh_attachment_update_region;a._spine_mesh_attachment_get_hull_length=Y.spine_mesh_attachment_get_hull_length; -a._spine_mesh_attachment_set_hull_length=Y.spine_mesh_attachment_set_hull_length;a._spine_mesh_attachment_get_num_region_uvs=Y.spine_mesh_attachment_get_num_region_uvs;a._spine_mesh_attachment_get_region_uvs=Y.spine_mesh_attachment_get_region_uvs;a._spine_mesh_attachment_get_num_uvs=Y.spine_mesh_attachment_get_num_uvs;a._spine_mesh_attachment_get_uvs=Y.spine_mesh_attachment_get_uvs;a._spine_mesh_attachment_get_num_triangles=Y.spine_mesh_attachment_get_num_triangles; -a._spine_mesh_attachment_get_triangles=Y.spine_mesh_attachment_get_triangles;a._spine_mesh_attachment_get_color=Y.spine_mesh_attachment_get_color;a._spine_mesh_attachment_set_color=Y.spine_mesh_attachment_set_color;a._spine_mesh_attachment_get_path=Y.spine_mesh_attachment_get_path;a._spine_mesh_attachment_get_region=Y.spine_mesh_attachment_get_region;a._spine_mesh_attachment_get_sequence=Y.spine_mesh_attachment_get_sequence;a._spine_mesh_attachment_get_parent_mesh=Y.spine_mesh_attachment_get_parent_mesh; -a._spine_mesh_attachment_set_parent_mesh=Y.spine_mesh_attachment_set_parent_mesh;a._spine_mesh_attachment_get_num_edges=Y.spine_mesh_attachment_get_num_edges;a._spine_mesh_attachment_get_edges=Y.spine_mesh_attachment_get_edges;a._spine_mesh_attachment_get_width=Y.spine_mesh_attachment_get_width;a._spine_mesh_attachment_set_width=Y.spine_mesh_attachment_set_width;a._spine_mesh_attachment_get_height=Y.spine_mesh_attachment_get_height;a._spine_mesh_attachment_set_height=Y.spine_mesh_attachment_set_height; -a._spine_clipping_attachment_get_end_slot=Y.spine_clipping_attachment_get_end_slot;a._spine_clipping_attachment_set_end_slot=Y.spine_clipping_attachment_set_end_slot;a._spine_clipping_attachment_get_color=Y.spine_clipping_attachment_get_color;a._spine_clipping_attachment_set_color=Y.spine_clipping_attachment_set_color;a._spine_bounding_box_attachment_get_color=Y.spine_bounding_box_attachment_get_color;a._spine_bounding_box_attachment_set_color=Y.spine_bounding_box_attachment_set_color; -a._spine_path_attachment_get_num_lengths=Y.spine_path_attachment_get_num_lengths;a._spine_path_attachment_get_lengths=Y.spine_path_attachment_get_lengths;a._spine_path_attachment_get_is_closed=Y.spine_path_attachment_get_is_closed;a._spine_path_attachment_set_is_closed=Y.spine_path_attachment_set_is_closed;a._spine_path_attachment_get_is_constant_speed=Y.spine_path_attachment_get_is_constant_speed;a._spine_path_attachment_set_is_constant_speed=Y.spine_path_attachment_set_is_constant_speed; -a._spine_path_attachment_get_color=Y.spine_path_attachment_get_color;a._spine_path_attachment_set_color=Y.spine_path_attachment_set_color;a._spine_skin_set_attachment=Y.spine_skin_set_attachment;a._spine_skin_get_attachment=Y.spine_skin_get_attachment;a._spine_skin_remove_attachment=Y.spine_skin_remove_attachment;a._spine_skin_get_name=Y.spine_skin_get_name;a._spine_skin_add_skin=Y.spine_skin_add_skin;a._spine_skin_copy_skin=Y.spine_skin_copy_skin;a._spine_skin_get_entries=Y.spine_skin_get_entries; -a._spine_skin_entries_get_num_entries=Y.spine_skin_entries_get_num_entries;a._spine_skin_entries_get_entry=Y.spine_skin_entries_get_entry;a._spine_skin_entries_dispose=Y.spine_skin_entries_dispose;a._spine_skin_entry_get_slot_index=Y.spine_skin_entry_get_slot_index;a._spine_skin_entry_get_name=Y.spine_skin_entry_get_name;a._spine_skin_entry_get_attachment=Y.spine_skin_entry_get_attachment;a._spine_skin_get_num_bones=Y.spine_skin_get_num_bones;a._spine_skin_get_bones=Y.spine_skin_get_bones; -a._spine_skin_get_num_constraints=Y.spine_skin_get_num_constraints;a._spine_skin_get_constraints=Y.spine_skin_get_constraints;a._spine_skin_create=Y.spine_skin_create;a._spine_skin_dispose=Y.spine_skin_dispose;a._spine_constraint_data_get_type=Y.spine_constraint_data_get_type;a._spine_constraint_data_get_name=Y.spine_constraint_data_get_name;a._spine_constraint_data_get_order=Y.spine_constraint_data_get_order;a._spine_constraint_data_set_order=Y.spine_constraint_data_set_order; -a._spine_constraint_data_get_is_skin_required=Y.spine_constraint_data_get_is_skin_required;a._spine_constraint_data_set_is_skin_required=Y.spine_constraint_data_set_is_skin_required;a._spine_ik_constraint_data_get_num_bones=Y.spine_ik_constraint_data_get_num_bones;a._spine_ik_constraint_data_get_bones=Y.spine_ik_constraint_data_get_bones;a._spine_ik_constraint_data_get_target=Y.spine_ik_constraint_data_get_target;a._spine_ik_constraint_data_set_target=Y.spine_ik_constraint_data_set_target; -a._spine_ik_constraint_data_get_bend_direction=Y.spine_ik_constraint_data_get_bend_direction;a._spine_ik_constraint_data_set_bend_direction=Y.spine_ik_constraint_data_set_bend_direction;a._spine_ik_constraint_data_get_compress=Y.spine_ik_constraint_data_get_compress;a._spine_ik_constraint_data_set_compress=Y.spine_ik_constraint_data_set_compress;a._spine_ik_constraint_data_get_stretch=Y.spine_ik_constraint_data_get_stretch;a._spine_ik_constraint_data_set_stretch=Y.spine_ik_constraint_data_set_stretch; -a._spine_ik_constraint_data_get_uniform=Y.spine_ik_constraint_data_get_uniform;a._spine_ik_constraint_data_set_uniform=Y.spine_ik_constraint_data_set_uniform;a._spine_ik_constraint_data_get_mix=Y.spine_ik_constraint_data_get_mix;a._spine_ik_constraint_data_set_mix=Y.spine_ik_constraint_data_set_mix;a._spine_ik_constraint_data_get_softness=Y.spine_ik_constraint_data_get_softness;a._spine_ik_constraint_data_set_softness=Y.spine_ik_constraint_data_set_softness;a._spine_ik_constraint_update=Y.spine_ik_constraint_update; -a._spine_ik_constraint_get_order=Y.spine_ik_constraint_get_order;a._spine_ik_constraint_get_data=Y.spine_ik_constraint_get_data;a._spine_ik_constraint_get_num_bones=Y.spine_ik_constraint_get_num_bones;a._spine_ik_constraint_get_bones=Y.spine_ik_constraint_get_bones;a._spine_ik_constraint_get_target=Y.spine_ik_constraint_get_target;a._spine_ik_constraint_set_target=Y.spine_ik_constraint_set_target;a._spine_ik_constraint_get_bend_direction=Y.spine_ik_constraint_get_bend_direction; -a._spine_ik_constraint_set_bend_direction=Y.spine_ik_constraint_set_bend_direction;a._spine_ik_constraint_get_compress=Y.spine_ik_constraint_get_compress;a._spine_ik_constraint_set_compress=Y.spine_ik_constraint_set_compress;a._spine_ik_constraint_get_stretch=Y.spine_ik_constraint_get_stretch;a._spine_ik_constraint_set_stretch=Y.spine_ik_constraint_set_stretch;a._spine_ik_constraint_get_mix=Y.spine_ik_constraint_get_mix;a._spine_ik_constraint_set_mix=Y.spine_ik_constraint_set_mix; -a._spine_ik_constraint_get_softness=Y.spine_ik_constraint_get_softness;a._spine_ik_constraint_set_softness=Y.spine_ik_constraint_set_softness;a._spine_ik_constraint_get_is_active=Y.spine_ik_constraint_get_is_active;a._spine_ik_constraint_set_is_active=Y.spine_ik_constraint_set_is_active;a._spine_transform_constraint_data_get_num_bones=Y.spine_transform_constraint_data_get_num_bones;a._spine_transform_constraint_data_get_bones=Y.spine_transform_constraint_data_get_bones; -a._spine_transform_constraint_data_get_target=Y.spine_transform_constraint_data_get_target;a._spine_transform_constraint_data_set_target=Y.spine_transform_constraint_data_set_target;a._spine_transform_constraint_data_get_mix_rotate=Y.spine_transform_constraint_data_get_mix_rotate;a._spine_transform_constraint_data_set_mix_rotate=Y.spine_transform_constraint_data_set_mix_rotate;a._spine_transform_constraint_data_get_mix_x=Y.spine_transform_constraint_data_get_mix_x; -a._spine_transform_constraint_data_set_mix_x=Y.spine_transform_constraint_data_set_mix_x;a._spine_transform_constraint_data_get_mix_y=Y.spine_transform_constraint_data_get_mix_y;a._spine_transform_constraint_data_set_mix_y=Y.spine_transform_constraint_data_set_mix_y;a._spine_transform_constraint_data_get_mix_scale_x=Y.spine_transform_constraint_data_get_mix_scale_x;a._spine_transform_constraint_data_set_mix_scale_x=Y.spine_transform_constraint_data_set_mix_scale_x; -a._spine_transform_constraint_data_get_mix_scale_y=Y.spine_transform_constraint_data_get_mix_scale_y;a._spine_transform_constraint_data_set_mix_scale_y=Y.spine_transform_constraint_data_set_mix_scale_y;a._spine_transform_constraint_data_get_mix_shear_y=Y.spine_transform_constraint_data_get_mix_shear_y;a._spine_transform_constraint_data_set_mix_shear_y=Y.spine_transform_constraint_data_set_mix_shear_y;a._spine_transform_constraint_data_get_offset_rotation=Y.spine_transform_constraint_data_get_offset_rotation; -a._spine_transform_constraint_data_set_offset_rotation=Y.spine_transform_constraint_data_set_offset_rotation;a._spine_transform_constraint_data_get_offset_x=Y.spine_transform_constraint_data_get_offset_x;a._spine_transform_constraint_data_set_offset_x=Y.spine_transform_constraint_data_set_offset_x;a._spine_transform_constraint_data_get_offset_y=Y.spine_transform_constraint_data_get_offset_y;a._spine_transform_constraint_data_set_offset_y=Y.spine_transform_constraint_data_set_offset_y; -a._spine_transform_constraint_data_get_offset_scale_x=Y.spine_transform_constraint_data_get_offset_scale_x;a._spine_transform_constraint_data_set_offset_scale_x=Y.spine_transform_constraint_data_set_offset_scale_x;a._spine_transform_constraint_data_get_offset_scale_y=Y.spine_transform_constraint_data_get_offset_scale_y;a._spine_transform_constraint_data_set_offset_scale_y=Y.spine_transform_constraint_data_set_offset_scale_y;a._spine_transform_constraint_data_get_offset_shear_y=Y.spine_transform_constraint_data_get_offset_shear_y; -a._spine_transform_constraint_data_set_offset_shear_y=Y.spine_transform_constraint_data_set_offset_shear_y;a._spine_transform_constraint_data_get_is_relative=Y.spine_transform_constraint_data_get_is_relative;a._spine_transform_constraint_data_set_is_relative=Y.spine_transform_constraint_data_set_is_relative;a._spine_transform_constraint_data_get_is_local=Y.spine_transform_constraint_data_get_is_local;a._spine_transform_constraint_data_set_is_local=Y.spine_transform_constraint_data_set_is_local; -a._spine_transform_constraint_update=Y.spine_transform_constraint_update;a._spine_transform_constraint_get_order=Y.spine_transform_constraint_get_order;a._spine_transform_constraint_get_data=Y.spine_transform_constraint_get_data;a._spine_transform_constraint_get_num_bones=Y.spine_transform_constraint_get_num_bones;a._spine_transform_constraint_get_bones=Y.spine_transform_constraint_get_bones;a._spine_transform_constraint_get_target=Y.spine_transform_constraint_get_target; -a._spine_transform_constraint_set_target=Y.spine_transform_constraint_set_target;a._spine_transform_constraint_get_mix_rotate=Y.spine_transform_constraint_get_mix_rotate;a._spine_transform_constraint_set_mix_rotate=Y.spine_transform_constraint_set_mix_rotate;a._spine_transform_constraint_get_mix_x=Y.spine_transform_constraint_get_mix_x;a._spine_transform_constraint_set_mix_x=Y.spine_transform_constraint_set_mix_x;a._spine_transform_constraint_get_mix_y=Y.spine_transform_constraint_get_mix_y; -a._spine_transform_constraint_set_mix_y=Y.spine_transform_constraint_set_mix_y;a._spine_transform_constraint_get_mix_scale_x=Y.spine_transform_constraint_get_mix_scale_x;a._spine_transform_constraint_set_mix_scale_x=Y.spine_transform_constraint_set_mix_scale_x;a._spine_transform_constraint_get_mix_scale_y=Y.spine_transform_constraint_get_mix_scale_y;a._spine_transform_constraint_set_mix_scale_y=Y.spine_transform_constraint_set_mix_scale_y;a._spine_transform_constraint_get_mix_shear_y=Y.spine_transform_constraint_get_mix_shear_y; -a._spine_transform_constraint_set_mix_shear_y=Y.spine_transform_constraint_set_mix_shear_y;a._spine_transform_constraint_get_is_active=Y.spine_transform_constraint_get_is_active;a._spine_transform_constraint_set_is_active=Y.spine_transform_constraint_set_is_active;a._spine_path_constraint_data_get_num_bones=Y.spine_path_constraint_data_get_num_bones;a._spine_path_constraint_data_get_bones=Y.spine_path_constraint_data_get_bones;a._spine_path_constraint_data_get_target=Y.spine_path_constraint_data_get_target; -a._spine_path_constraint_data_set_target=Y.spine_path_constraint_data_set_target;a._spine_path_constraint_data_get_position_mode=Y.spine_path_constraint_data_get_position_mode;a._spine_path_constraint_data_set_position_mode=Y.spine_path_constraint_data_set_position_mode;a._spine_path_constraint_data_get_spacing_mode=Y.spine_path_constraint_data_get_spacing_mode;a._spine_path_constraint_data_set_spacing_mode=Y.spine_path_constraint_data_set_spacing_mode; -a._spine_path_constraint_data_get_rotate_mode=Y.spine_path_constraint_data_get_rotate_mode;a._spine_path_constraint_data_set_rotate_mode=Y.spine_path_constraint_data_set_rotate_mode;a._spine_path_constraint_data_get_offset_rotation=Y.spine_path_constraint_data_get_offset_rotation;a._spine_path_constraint_data_set_offset_rotation=Y.spine_path_constraint_data_set_offset_rotation;a._spine_path_constraint_data_get_position=Y.spine_path_constraint_data_get_position; -a._spine_path_constraint_data_set_position=Y.spine_path_constraint_data_set_position;a._spine_path_constraint_data_get_spacing=Y.spine_path_constraint_data_get_spacing;a._spine_path_constraint_data_set_spacing=Y.spine_path_constraint_data_set_spacing;a._spine_path_constraint_data_get_mix_rotate=Y.spine_path_constraint_data_get_mix_rotate;a._spine_path_constraint_data_set_mix_rotate=Y.spine_path_constraint_data_set_mix_rotate;a._spine_path_constraint_data_get_mix_x=Y.spine_path_constraint_data_get_mix_x; -a._spine_path_constraint_data_set_mix_x=Y.spine_path_constraint_data_set_mix_x;a._spine_path_constraint_data_get_mix_y=Y.spine_path_constraint_data_get_mix_y;a._spine_path_constraint_data_set_mix_y=Y.spine_path_constraint_data_set_mix_y;a._spine_path_constraint_update=Y.spine_path_constraint_update;a._spine_path_constraint_get_order=Y.spine_path_constraint_get_order;a._spine_path_constraint_get_data=Y.spine_path_constraint_get_data;a._spine_path_constraint_get_num_bones=Y.spine_path_constraint_get_num_bones; -a._spine_path_constraint_get_bones=Y.spine_path_constraint_get_bones;a._spine_path_constraint_get_target=Y.spine_path_constraint_get_target;a._spine_path_constraint_set_target=Y.spine_path_constraint_set_target;a._spine_path_constraint_get_position=Y.spine_path_constraint_get_position;a._spine_path_constraint_set_position=Y.spine_path_constraint_set_position;a._spine_path_constraint_get_spacing=Y.spine_path_constraint_get_spacing;a._spine_path_constraint_set_spacing=Y.spine_path_constraint_set_spacing; -a._spine_path_constraint_get_mix_rotate=Y.spine_path_constraint_get_mix_rotate;a._spine_path_constraint_set_mix_rotate=Y.spine_path_constraint_set_mix_rotate;a._spine_path_constraint_get_mix_x=Y.spine_path_constraint_get_mix_x;a._spine_path_constraint_set_mix_x=Y.spine_path_constraint_set_mix_x;a._spine_path_constraint_get_mix_y=Y.spine_path_constraint_get_mix_y;a._spine_path_constraint_set_mix_y=Y.spine_path_constraint_set_mix_y;a._spine_path_constraint_get_is_active=Y.spine_path_constraint_get_is_active; -a._spine_path_constraint_set_is_active=Y.spine_path_constraint_set_is_active;a._spine_physics_constraint_data_set_bone=Y.spine_physics_constraint_data_set_bone;a._spine_physics_constraint_data_get_bone=Y.spine_physics_constraint_data_get_bone;a._spine_physics_constraint_data_set_x=Y.spine_physics_constraint_data_set_x;a._spine_physics_constraint_data_get_x=Y.spine_physics_constraint_data_get_x;a._spine_physics_constraint_data_set_y=Y.spine_physics_constraint_data_set_y; -a._spine_physics_constraint_data_get_y=Y.spine_physics_constraint_data_get_y;a._spine_physics_constraint_data_set_rotate=Y.spine_physics_constraint_data_set_rotate;a._spine_physics_constraint_data_get_rotate=Y.spine_physics_constraint_data_get_rotate;a._spine_physics_constraint_data_set_scale_x=Y.spine_physics_constraint_data_set_scale_x;a._spine_physics_constraint_data_get_scale_x=Y.spine_physics_constraint_data_get_scale_x;a._spine_physics_constraint_data_set_shear_x=Y.spine_physics_constraint_data_set_shear_x; -a._spine_physics_constraint_data_get_shear_x=Y.spine_physics_constraint_data_get_shear_x;a._spine_physics_constraint_data_set_limit=Y.spine_physics_constraint_data_set_limit;a._spine_physics_constraint_data_get_limit=Y.spine_physics_constraint_data_get_limit;a._spine_physics_constraint_data_set_step=Y.spine_physics_constraint_data_set_step;a._spine_physics_constraint_data_get_step=Y.spine_physics_constraint_data_get_step;a._spine_physics_constraint_data_set_inertia=Y.spine_physics_constraint_data_set_inertia; -a._spine_physics_constraint_data_get_inertia=Y.spine_physics_constraint_data_get_inertia;a._spine_physics_constraint_data_set_strength=Y.spine_physics_constraint_data_set_strength;a._spine_physics_constraint_data_get_strength=Y.spine_physics_constraint_data_get_strength;a._spine_physics_constraint_data_set_damping=Y.spine_physics_constraint_data_set_damping;a._spine_physics_constraint_data_get_damping=Y.spine_physics_constraint_data_get_damping;a._spine_physics_constraint_data_set_mass_inverse=Y.spine_physics_constraint_data_set_mass_inverse; -a._spine_physics_constraint_data_get_mass_inverse=Y.spine_physics_constraint_data_get_mass_inverse;a._spine_physics_constraint_data_set_wind=Y.spine_physics_constraint_data_set_wind;a._spine_physics_constraint_data_get_wind=Y.spine_physics_constraint_data_get_wind;a._spine_physics_constraint_data_set_gravity=Y.spine_physics_constraint_data_set_gravity;a._spine_physics_constraint_data_get_gravity=Y.spine_physics_constraint_data_get_gravity;a._spine_physics_constraint_data_set_mix=Y.spine_physics_constraint_data_set_mix; -a._spine_physics_constraint_data_get_mix=Y.spine_physics_constraint_data_get_mix;a._spine_physics_constraint_data_set_inertia_global=Y.spine_physics_constraint_data_set_inertia_global;a._spine_physics_constraint_data_is_inertia_global=Y.spine_physics_constraint_data_is_inertia_global;a._spine_physics_constraint_data_set_strength_global=Y.spine_physics_constraint_data_set_strength_global;a._spine_physics_constraint_data_is_strength_global=Y.spine_physics_constraint_data_is_strength_global; -a._spine_physics_constraint_data_set_damping_global=Y.spine_physics_constraint_data_set_damping_global;a._spine_physics_constraint_data_is_damping_global=Y.spine_physics_constraint_data_is_damping_global;a._spine_physics_constraint_data_set_mass_global=Y.spine_physics_constraint_data_set_mass_global;a._spine_physics_constraint_data_is_mass_global=Y.spine_physics_constraint_data_is_mass_global;a._spine_physics_constraint_data_set_wind_global=Y.spine_physics_constraint_data_set_wind_global; -a._spine_physics_constraint_data_is_wind_global=Y.spine_physics_constraint_data_is_wind_global;a._spine_physics_constraint_data_set_gravity_global=Y.spine_physics_constraint_data_set_gravity_global;a._spine_physics_constraint_data_is_gravity_global=Y.spine_physics_constraint_data_is_gravity_global;a._spine_physics_constraint_data_set_mix_global=Y.spine_physics_constraint_data_set_mix_global;a._spine_physics_constraint_data_is_mix_global=Y.spine_physics_constraint_data_is_mix_global; -a._spine_physics_constraint_set_bone=Y.spine_physics_constraint_set_bone;a._spine_physics_constraint_get_bone=Y.spine_physics_constraint_get_bone;a._spine_physics_constraint_set_inertia=Y.spine_physics_constraint_set_inertia;a._spine_physics_constraint_get_inertia=Y.spine_physics_constraint_get_inertia;a._spine_physics_constraint_set_strength=Y.spine_physics_constraint_set_strength;a._spine_physics_constraint_get_strength=Y.spine_physics_constraint_get_strength; -a._spine_physics_constraint_set_damping=Y.spine_physics_constraint_set_damping;a._spine_physics_constraint_get_damping=Y.spine_physics_constraint_get_damping;a._spine_physics_constraint_set_mass_inverse=Y.spine_physics_constraint_set_mass_inverse;a._spine_physics_constraint_get_mass_inverse=Y.spine_physics_constraint_get_mass_inverse;a._spine_physics_constraint_set_wind=Y.spine_physics_constraint_set_wind;a._spine_physics_constraint_get_wind=Y.spine_physics_constraint_get_wind; -a._spine_physics_constraint_set_gravity=Y.spine_physics_constraint_set_gravity;a._spine_physics_constraint_get_gravity=Y.spine_physics_constraint_get_gravity;a._spine_physics_constraint_set_mix=Y.spine_physics_constraint_set_mix;a._spine_physics_constraint_get_mix=Y.spine_physics_constraint_get_mix;a._spine_physics_constraint_set_reset=Y.spine_physics_constraint_set_reset;a._spine_physics_constraint_get_reset=Y.spine_physics_constraint_get_reset;a._spine_physics_constraint_set_ux=Y.spine_physics_constraint_set_ux; -a._spine_physics_constraint_get_ux=Y.spine_physics_constraint_get_ux;a._spine_physics_constraint_set_uy=Y.spine_physics_constraint_set_uy;a._spine_physics_constraint_get_uy=Y.spine_physics_constraint_get_uy;a._spine_physics_constraint_set_cx=Y.spine_physics_constraint_set_cx;a._spine_physics_constraint_get_cx=Y.spine_physics_constraint_get_cx;a._spine_physics_constraint_set_cy=Y.spine_physics_constraint_set_cy;a._spine_physics_constraint_get_cy=Y.spine_physics_constraint_get_cy; -a._spine_physics_constraint_set_tx=Y.spine_physics_constraint_set_tx;a._spine_physics_constraint_get_tx=Y.spine_physics_constraint_get_tx;a._spine_physics_constraint_set_ty=Y.spine_physics_constraint_set_ty;a._spine_physics_constraint_get_ty=Y.spine_physics_constraint_get_ty;a._spine_physics_constraint_set_x_offset=Y.spine_physics_constraint_set_x_offset;a._spine_physics_constraint_get_x_offset=Y.spine_physics_constraint_get_x_offset;a._spine_physics_constraint_set_x_velocity=Y.spine_physics_constraint_set_x_velocity; -a._spine_physics_constraint_get_x_velocity=Y.spine_physics_constraint_get_x_velocity;a._spine_physics_constraint_set_y_offset=Y.spine_physics_constraint_set_y_offset;a._spine_physics_constraint_get_y_offset=Y.spine_physics_constraint_get_y_offset;a._spine_physics_constraint_set_y_velocity=Y.spine_physics_constraint_set_y_velocity;a._spine_physics_constraint_get_y_velocity=Y.spine_physics_constraint_get_y_velocity;a._spine_physics_constraint_set_rotate_offset=Y.spine_physics_constraint_set_rotate_offset; -a._spine_physics_constraint_get_rotate_offset=Y.spine_physics_constraint_get_rotate_offset;a._spine_physics_constraint_set_rotate_velocity=Y.spine_physics_constraint_set_rotate_velocity;a._spine_physics_constraint_get_rotate_velocity=Y.spine_physics_constraint_get_rotate_velocity;a._spine_physics_constraint_set_scale_offset=Y.spine_physics_constraint_set_scale_offset;a._spine_physics_constraint_get_scale_offset=Y.spine_physics_constraint_get_scale_offset; -a._spine_physics_constraint_set_scale_velocity=Y.spine_physics_constraint_set_scale_velocity;a._spine_physics_constraint_get_scale_velocity=Y.spine_physics_constraint_get_scale_velocity;a._spine_physics_constraint_set_active=Y.spine_physics_constraint_set_active;a._spine_physics_constraint_is_active=Y.spine_physics_constraint_is_active;a._spine_physics_constraint_set_remaining=Y.spine_physics_constraint_set_remaining;a._spine_physics_constraint_get_remaining=Y.spine_physics_constraint_get_remaining; -a._spine_physics_constraint_set_last_time=Y.spine_physics_constraint_set_last_time;a._spine_physics_constraint_get_last_time=Y.spine_physics_constraint_get_last_time;a._spine_physics_constraint_reset_fully=Y.spine_physics_constraint_reset_fully;a._spine_physics_constraint_update=Y.spine_physics_constraint_update;a._spine_physics_constraint_translate=Y.spine_physics_constraint_translate;a._spine_physics_constraint_rotate=Y.spine_physics_constraint_rotate;a._spine_sequence_apply=Y.spine_sequence_apply; -a._spine_sequence_get_path=Y.spine_sequence_get_path;a._spine_sequence_get_id=Y.spine_sequence_get_id;a._spine_sequence_set_id=Y.spine_sequence_set_id;a._spine_sequence_get_start=Y.spine_sequence_get_start;a._spine_sequence_set_start=Y.spine_sequence_set_start;a._spine_sequence_get_digits=Y.spine_sequence_get_digits;a._spine_sequence_set_digits=Y.spine_sequence_set_digits;a._spine_sequence_get_setup_index=Y.spine_sequence_get_setup_index;a._spine_sequence_set_setup_index=Y.spine_sequence_set_setup_index; -a._spine_sequence_get_num_regions=Y.spine_sequence_get_num_regions;a._spine_sequence_get_regions=Y.spine_sequence_get_regions;a._spine_texture_region_get_texture=Y.spine_texture_region_get_texture;a._spine_texture_region_set_texture=Y.spine_texture_region_set_texture;a._spine_texture_region_get_u=Y.spine_texture_region_get_u;a._spine_texture_region_set_u=Y.spine_texture_region_set_u;a._spine_texture_region_get_v=Y.spine_texture_region_get_v;a._spine_texture_region_set_v=Y.spine_texture_region_set_v; -a._spine_texture_region_get_u2=Y.spine_texture_region_get_u2;a._spine_texture_region_set_u2=Y.spine_texture_region_set_u2;a._spine_texture_region_get_v2=Y.spine_texture_region_get_v2;a._spine_texture_region_set_v2=Y.spine_texture_region_set_v2;a._spine_texture_region_get_degrees=Y.spine_texture_region_get_degrees;a._spine_texture_region_set_degrees=Y.spine_texture_region_set_degrees;a._spine_texture_region_get_offset_x=Y.spine_texture_region_get_offset_x;a._spine_texture_region_set_offset_x=Y.spine_texture_region_set_offset_x; -a._spine_texture_region_get_offset_y=Y.spine_texture_region_get_offset_y;a._spine_texture_region_set_offset_y=Y.spine_texture_region_set_offset_y;a._spine_texture_region_get_width=Y.spine_texture_region_get_width;a._spine_texture_region_set_width=Y.spine_texture_region_set_width;a._spine_texture_region_get_height=Y.spine_texture_region_get_height;a._spine_texture_region_set_height=Y.spine_texture_region_set_height;a._spine_texture_region_get_original_width=Y.spine_texture_region_get_original_width; -a._spine_texture_region_set_original_width=Y.spine_texture_region_set_original_width;a._spine_texture_region_get_original_height=Y.spine_texture_region_get_original_height;a._spine_texture_region_set_original_height=Y.spine_texture_region_set_original_height;a._spine_skeleton_bounds_create=Y.spine_skeleton_bounds_create;a._spine_skeleton_bounds_dispose=Y.spine_skeleton_bounds_dispose;a._spine_skeleton_bounds_update=Y.spine_skeleton_bounds_update;a._spine_skeleton_bounds_aabb_contains_point=Y.spine_skeleton_bounds_aabb_contains_point; -a._spine_skeleton_bounds_aabb_intersects_segment=Y.spine_skeleton_bounds_aabb_intersects_segment;a._spine_skeleton_bounds_aabb_intersects_skeleton=Y.spine_skeleton_bounds_aabb_intersects_skeleton;a._spine_skeleton_bounds_contains_point=Y.spine_skeleton_bounds_contains_point;a._spine_skeleton_bounds_contains_point_attachment=Y.spine_skeleton_bounds_contains_point_attachment;a._spine_skeleton_bounds_intersects_segment_attachment=Y.spine_skeleton_bounds_intersects_segment_attachment; -a._spine_skeleton_bounds_intersects_segment=Y.spine_skeleton_bounds_intersects_segment;a._spine_skeleton_bounds_get_polygon=Y.spine_skeleton_bounds_get_polygon;a._spine_skeleton_bounds_get_bounding_box=Y.spine_skeleton_bounds_get_bounding_box;a._spine_skeleton_bounds_get_num_polygons=Y.spine_skeleton_bounds_get_num_polygons;a._spine_skeleton_bounds_get_polygons=Y.spine_skeleton_bounds_get_polygons;a._spine_skeleton_bounds_get_num_bounding_boxes=Y.spine_skeleton_bounds_get_num_bounding_boxes; -a._spine_skeleton_bounds_get_bounding_boxes=Y.spine_skeleton_bounds_get_bounding_boxes;a._spine_skeleton_bounds_get_width=Y.spine_skeleton_bounds_get_width;a._spine_skeleton_bounds_get_height=Y.spine_skeleton_bounds_get_height;a._spine_polygon_get_num_vertices=Y.spine_polygon_get_num_vertices;a._spine_polygon_get_vertices=Y.spine_polygon_get_vertices;a._malloc=Y.malloc;var ha=Y._emscripten_stack_restore,ia=Y.emscripten_stack_get_current;a.wasmExports=Y; +a._spine_track_entry_get_alpha=Y.spine_track_entry_get_alpha;a._spine_track_entry_set_alpha=Y.spine_track_entry_set_alpha;a._spine_track_entry_get_event_threshold=Y.spine_track_entry_get_event_threshold;a._spine_track_entry_set_event_threshold=Y.spine_track_entry_set_event_threshold;a._spine_track_entry_get_mix_attachment_threshold=Y.spine_track_entry_get_mix_attachment_threshold;a._spine_track_entry_set_mix_attachment_threshold=Y.spine_track_entry_set_mix_attachment_threshold; +a._spine_track_entry_get_alpha_attachment_threshold=Y.spine_track_entry_get_alpha_attachment_threshold;a._spine_track_entry_set_alpha_attachment_threshold=Y.spine_track_entry_set_alpha_attachment_threshold;a._spine_track_entry_get_mix_draw_order_threshold=Y.spine_track_entry_get_mix_draw_order_threshold;a._spine_track_entry_set_mix_draw_order_threshold=Y.spine_track_entry_set_mix_draw_order_threshold;a._spine_track_entry_get_next=Y.spine_track_entry_get_next;a._spine_track_entry_is_complete=Y.spine_track_entry_is_complete; +a._spine_track_entry_get_mix_time=Y.spine_track_entry_get_mix_time;a._spine_track_entry_set_mix_time=Y.spine_track_entry_set_mix_time;a._spine_track_entry_get_mix_duration=Y.spine_track_entry_get_mix_duration;a._spine_track_entry_set_mix_duration_1=Y.spine_track_entry_set_mix_duration_1;a._spine_track_entry_set_mix_duration_2=Y.spine_track_entry_set_mix_duration_2;a._spine_track_entry_get_mix_blend=Y.spine_track_entry_get_mix_blend;a._spine_track_entry_set_mix_blend=Y.spine_track_entry_set_mix_blend; +a._spine_track_entry_get_mixing_from=Y.spine_track_entry_get_mixing_from;a._spine_track_entry_get_mixing_to=Y.spine_track_entry_get_mixing_to;a._spine_track_entry_reset_rotation_directions=Y.spine_track_entry_reset_rotation_directions;a._spine_track_entry_get_track_complete=Y.spine_track_entry_get_track_complete;a._spine_track_entry_is_empty_animation=Y.spine_track_entry_is_empty_animation;a._spine_track_entry_was_applied=Y.spine_track_entry_was_applied;a._spine_track_entry_is_next_ready=Y.spine_track_entry_is_next_ready; +a._spine_track_entry_get_animation_state=Y.spine_track_entry_get_animation_state;a._spine_track_entry_set_animation_state=Y.spine_track_entry_set_animation_state;a._spine_track_entry_get_renderer_object=Y.spine_track_entry_get_renderer_object;a._spine_to_x_create=Y.spine_to_x_create;a._spine_to_x_dispose=Y.spine_to_x_dispose;a._spine_to_x_get_rtti=Y.spine_to_x_get_rtti;a._spine_to_x_mix=Y.spine_to_x_mix;a._spine_to_x_apply=Y.spine_to_x_apply;a._spine_to_x_rtti=Y.spine_to_x_rtti; +a._spine_sequence_create=Y.spine_sequence_create;a._spine_sequence_dispose=Y.spine_sequence_dispose;a._spine_sequence_copy=Y.spine_sequence_copy;a._spine_sequence_apply=Y.spine_sequence_apply;a._spine_sequence_get_path=Y.spine_sequence_get_path;a._spine_sequence_get_id=Y.spine_sequence_get_id;a._spine_sequence_set_id=Y.spine_sequence_set_id;a._spine_sequence_get_start=Y.spine_sequence_get_start;a._spine_sequence_set_start=Y.spine_sequence_set_start;a._spine_sequence_get_digits=Y.spine_sequence_get_digits; +a._spine_sequence_set_digits=Y.spine_sequence_set_digits;a._spine_sequence_get_setup_index=Y.spine_sequence_get_setup_index;a._spine_sequence_set_setup_index=Y.spine_sequence_set_setup_index;a._spine_sequence_get_regions=Y.spine_sequence_get_regions;a._spine_to_y_create=Y.spine_to_y_create;a._spine_to_y_dispose=Y.spine_to_y_dispose;a._spine_to_y_get_rtti=Y.spine_to_y_get_rtti;a._spine_to_y_mix=Y.spine_to_y_mix;a._spine_to_y_apply=Y.spine_to_y_apply;a._spine_to_y_rtti=Y.spine_to_y_rtti; +a._spine_path_attachment_create=Y.spine_path_attachment_create;a._spine_path_attachment_dispose=Y.spine_path_attachment_dispose;a._spine_path_attachment_get_rtti=Y.spine_path_attachment_get_rtti;a._spine_path_attachment_get_lengths=Y.spine_path_attachment_get_lengths;a._spine_path_attachment_set_lengths=Y.spine_path_attachment_set_lengths;a._spine_path_attachment_get_closed=Y.spine_path_attachment_get_closed;a._spine_path_attachment_set_closed=Y.spine_path_attachment_set_closed; +a._spine_path_attachment_get_constant_speed=Y.spine_path_attachment_get_constant_speed;a._spine_path_attachment_set_constant_speed=Y.spine_path_attachment_set_constant_speed;a._spine_path_attachment_get_color=Y.spine_path_attachment_get_color;a._spine_path_attachment_copy=Y.spine_path_attachment_copy;a._spine_path_attachment_compute_world_vertices_1=Y.spine_path_attachment_compute_world_vertices_1;a._spine_path_attachment_compute_world_vertices_2=Y.spine_path_attachment_compute_world_vertices_2; +a._spine_path_attachment_get_id=Y.spine_path_attachment_get_id;a._spine_path_attachment_get_bones=Y.spine_path_attachment_get_bones;a._spine_path_attachment_set_bones=Y.spine_path_attachment_set_bones;a._spine_path_attachment_get_vertices=Y.spine_path_attachment_get_vertices;a._spine_path_attachment_set_vertices=Y.spine_path_attachment_set_vertices;a._spine_path_attachment_get_world_vertices_length=Y.spine_path_attachment_get_world_vertices_length; +a._spine_path_attachment_set_world_vertices_length=Y.spine_path_attachment_set_world_vertices_length;a._spine_path_attachment_get_timeline_attachment=Y.spine_path_attachment_get_timeline_attachment;a._spine_path_attachment_set_timeline_attachment=Y.spine_path_attachment_set_timeline_attachment;a._spine_path_attachment_copy_to=Y.spine_path_attachment_copy_to;a._spine_path_attachment_get_name=Y.spine_path_attachment_get_name;a._spine_path_attachment_get_ref_count=Y.spine_path_attachment_get_ref_count; +a._spine_path_attachment_reference=Y.spine_path_attachment_reference;a._spine_path_attachment_dereference=Y.spine_path_attachment_dereference;a._spine_path_attachment_rtti=Y.spine_path_attachment_rtti;a._spine_sequence_timeline_create=Y.spine_sequence_timeline_create;a._spine_sequence_timeline_dispose=Y.spine_sequence_timeline_dispose;a._spine_sequence_timeline_get_rtti=Y.spine_sequence_timeline_get_rtti;a._spine_sequence_timeline_apply=Y.spine_sequence_timeline_apply; +a._spine_sequence_timeline_set_frame=Y.spine_sequence_timeline_set_frame;a._spine_sequence_timeline_get_attachment=Y.spine_sequence_timeline_get_attachment;a._spine_sequence_timeline_get_slot_index=Y.spine_sequence_timeline_get_slot_index;a._spine_sequence_timeline_set_slot_index=Y.spine_sequence_timeline_set_slot_index;a._spine_sequence_timeline_get_frame_entries=Y.spine_sequence_timeline_get_frame_entries;a._spine_sequence_timeline_get_frame_count=Y.spine_sequence_timeline_get_frame_count; +a._spine_sequence_timeline_get_frames=Y.spine_sequence_timeline_get_frames;a._spine_sequence_timeline_get_duration=Y.spine_sequence_timeline_get_duration;a._spine_sequence_timeline_get_property_ids=Y.spine_sequence_timeline_get_property_ids;a._spine_sequence_timeline_rtti=Y.spine_sequence_timeline_rtti;a._spine_animation_create=Y.spine_animation_create;a._spine_animation_dispose=Y.spine_animation_dispose;a._spine_animation_get_timelines=Y.spine_animation_get_timelines; +a._spine_animation_set_timelines=Y.spine_animation_set_timelines;a._spine_animation_has_timeline=Y.spine_animation_has_timeline;a._spine_animation_get_duration=Y.spine_animation_get_duration;a._spine_animation_set_duration=Y.spine_animation_set_duration;a._spine_animation_apply=Y.spine_animation_apply;a._spine_animation_get_name=Y.spine_animation_get_name;a._spine_animation_get_bones=Y.spine_animation_get_bones;a._spine_animation_search_1=Y.spine_animation_search_1;a._spine_animation_search_2=Y.spine_animation_search_2; +a._spine_physics_constraint_timeline_dispose=Y.spine_physics_constraint_timeline_dispose;a._spine_physics_constraint_timeline_get_rtti=Y.spine_physics_constraint_timeline_get_rtti;a._spine_physics_constraint_timeline_apply=Y.spine_physics_constraint_timeline_apply;a._spine_physics_constraint_timeline_get_constraint_index=Y.spine_physics_constraint_timeline_get_constraint_index;a._spine_physics_constraint_timeline_set_constraint_index=Y.spine_physics_constraint_timeline_set_constraint_index; +a._spine_physics_constraint_timeline_set_frame=Y.spine_physics_constraint_timeline_set_frame;a._spine_physics_constraint_timeline_get_curve_value=Y.spine_physics_constraint_timeline_get_curve_value;a._spine_physics_constraint_timeline_get_relative_value=Y.spine_physics_constraint_timeline_get_relative_value;a._spine_physics_constraint_timeline_get_absolute_value_1=Y.spine_physics_constraint_timeline_get_absolute_value_1;a._spine_physics_constraint_timeline_get_absolute_value_2=Y.spine_physics_constraint_timeline_get_absolute_value_2; +a._spine_physics_constraint_timeline_get_scale_value=Y.spine_physics_constraint_timeline_get_scale_value;a._spine_physics_constraint_timeline_set_linear=Y.spine_physics_constraint_timeline_set_linear;a._spine_physics_constraint_timeline_set_stepped=Y.spine_physics_constraint_timeline_set_stepped;a._spine_physics_constraint_timeline_set_bezier=Y.spine_physics_constraint_timeline_set_bezier;a._spine_physics_constraint_timeline_get_bezier_value=Y.spine_physics_constraint_timeline_get_bezier_value; +a._spine_physics_constraint_timeline_get_curves=Y.spine_physics_constraint_timeline_get_curves;a._spine_physics_constraint_timeline_get_frame_entries=Y.spine_physics_constraint_timeline_get_frame_entries;a._spine_physics_constraint_timeline_get_frame_count=Y.spine_physics_constraint_timeline_get_frame_count;a._spine_physics_constraint_timeline_get_frames=Y.spine_physics_constraint_timeline_get_frames;a._spine_physics_constraint_timeline_get_duration=Y.spine_physics_constraint_timeline_get_duration; +a._spine_physics_constraint_timeline_get_property_ids=Y.spine_physics_constraint_timeline_get_property_ids;a._spine_physics_constraint_timeline_rtti=Y.spine_physics_constraint_timeline_rtti;a._spine_rgba_timeline_create=Y.spine_rgba_timeline_create;a._spine_rgba_timeline_dispose=Y.spine_rgba_timeline_dispose;a._spine_rgba_timeline_get_rtti=Y.spine_rgba_timeline_get_rtti;a._spine_rgba_timeline_set_frame=Y.spine_rgba_timeline_set_frame;a._spine_rgba_timeline_apply=Y.spine_rgba_timeline_apply; +a._spine_rgba_timeline_get_slot_index=Y.spine_rgba_timeline_get_slot_index;a._spine_rgba_timeline_set_slot_index=Y.spine_rgba_timeline_set_slot_index;a._spine_rgba_timeline_set_linear=Y.spine_rgba_timeline_set_linear;a._spine_rgba_timeline_set_stepped=Y.spine_rgba_timeline_set_stepped;a._spine_rgba_timeline_set_bezier=Y.spine_rgba_timeline_set_bezier;a._spine_rgba_timeline_get_bezier_value=Y.spine_rgba_timeline_get_bezier_value;a._spine_rgba_timeline_get_curves=Y.spine_rgba_timeline_get_curves; +a._spine_rgba_timeline_get_frame_entries=Y.spine_rgba_timeline_get_frame_entries;a._spine_rgba_timeline_get_frame_count=Y.spine_rgba_timeline_get_frame_count;a._spine_rgba_timeline_get_frames=Y.spine_rgba_timeline_get_frames;a._spine_rgba_timeline_get_duration=Y.spine_rgba_timeline_get_duration;a._spine_rgba_timeline_get_property_ids=Y.spine_rgba_timeline_get_property_ids;a._spine_rgba_timeline_rtti=Y.spine_rgba_timeline_rtti;a._spine_clipping_attachment_create=Y.spine_clipping_attachment_create; +a._spine_clipping_attachment_dispose=Y.spine_clipping_attachment_dispose;a._spine_clipping_attachment_get_rtti=Y.spine_clipping_attachment_get_rtti;a._spine_clipping_attachment_get_end_slot=Y.spine_clipping_attachment_get_end_slot;a._spine_clipping_attachment_set_end_slot=Y.spine_clipping_attachment_set_end_slot;a._spine_clipping_attachment_get_color=Y.spine_clipping_attachment_get_color;a._spine_clipping_attachment_copy=Y.spine_clipping_attachment_copy; +a._spine_clipping_attachment_compute_world_vertices_1=Y.spine_clipping_attachment_compute_world_vertices_1;a._spine_clipping_attachment_compute_world_vertices_2=Y.spine_clipping_attachment_compute_world_vertices_2;a._spine_clipping_attachment_get_id=Y.spine_clipping_attachment_get_id;a._spine_clipping_attachment_get_bones=Y.spine_clipping_attachment_get_bones;a._spine_clipping_attachment_set_bones=Y.spine_clipping_attachment_set_bones;a._spine_clipping_attachment_get_vertices=Y.spine_clipping_attachment_get_vertices; +a._spine_clipping_attachment_set_vertices=Y.spine_clipping_attachment_set_vertices;a._spine_clipping_attachment_get_world_vertices_length=Y.spine_clipping_attachment_get_world_vertices_length;a._spine_clipping_attachment_set_world_vertices_length=Y.spine_clipping_attachment_set_world_vertices_length;a._spine_clipping_attachment_get_timeline_attachment=Y.spine_clipping_attachment_get_timeline_attachment;a._spine_clipping_attachment_set_timeline_attachment=Y.spine_clipping_attachment_set_timeline_attachment; +a._spine_clipping_attachment_copy_to=Y.spine_clipping_attachment_copy_to;a._spine_clipping_attachment_get_name=Y.spine_clipping_attachment_get_name;a._spine_clipping_attachment_get_ref_count=Y.spine_clipping_attachment_get_ref_count;a._spine_clipping_attachment_reference=Y.spine_clipping_attachment_reference;a._spine_clipping_attachment_dereference=Y.spine_clipping_attachment_dereference;a._spine_clipping_attachment_rtti=Y.spine_clipping_attachment_rtti;a._spine_from_y_create=Y.spine_from_y_create; +a._spine_from_y_dispose=Y.spine_from_y_dispose;a._spine_from_y_get_rtti=Y.spine_from_y_get_rtti;a._spine_from_y_value=Y.spine_from_y_value;a._spine_from_y_rtti=Y.spine_from_y_rtti;a._spine_point_attachment_create=Y.spine_point_attachment_create;a._spine_point_attachment_dispose=Y.spine_point_attachment_dispose;a._spine_point_attachment_get_rtti=Y.spine_point_attachment_get_rtti;a._spine_point_attachment_get_x=Y.spine_point_attachment_get_x;a._spine_point_attachment_set_x=Y.spine_point_attachment_set_x; +a._spine_point_attachment_get_y=Y.spine_point_attachment_get_y;a._spine_point_attachment_set_y=Y.spine_point_attachment_set_y;a._spine_point_attachment_get_rotation=Y.spine_point_attachment_get_rotation;a._spine_point_attachment_set_rotation=Y.spine_point_attachment_set_rotation;a._spine_point_attachment_get_color=Y.spine_point_attachment_get_color;a._spine_point_attachment_compute_world_position=Y.spine_point_attachment_compute_world_position;a._spine_point_attachment_compute_world_rotation=Y.spine_point_attachment_compute_world_rotation; +a._spine_point_attachment_copy=Y.spine_point_attachment_copy;a._spine_point_attachment_get_name=Y.spine_point_attachment_get_name;a._spine_point_attachment_get_ref_count=Y.spine_point_attachment_get_ref_count;a._spine_point_attachment_reference=Y.spine_point_attachment_reference;a._spine_point_attachment_dereference=Y.spine_point_attachment_dereference;a._spine_point_attachment_rtti=Y.spine_point_attachment_rtti;a._spine_path_constraint_mix_timeline_create=Y.spine_path_constraint_mix_timeline_create; +a._spine_path_constraint_mix_timeline_dispose=Y.spine_path_constraint_mix_timeline_dispose;a._spine_path_constraint_mix_timeline_get_rtti=Y.spine_path_constraint_mix_timeline_get_rtti;a._spine_path_constraint_mix_timeline_apply=Y.spine_path_constraint_mix_timeline_apply;a._spine_path_constraint_mix_timeline_set_frame=Y.spine_path_constraint_mix_timeline_set_frame;a._spine_path_constraint_mix_timeline_get_constraint_index=Y.spine_path_constraint_mix_timeline_get_constraint_index; +a._spine_path_constraint_mix_timeline_set_constraint_index=Y.spine_path_constraint_mix_timeline_set_constraint_index;a._spine_path_constraint_mix_timeline_set_linear=Y.spine_path_constraint_mix_timeline_set_linear;a._spine_path_constraint_mix_timeline_set_stepped=Y.spine_path_constraint_mix_timeline_set_stepped;a._spine_path_constraint_mix_timeline_set_bezier=Y.spine_path_constraint_mix_timeline_set_bezier;a._spine_path_constraint_mix_timeline_get_bezier_value=Y.spine_path_constraint_mix_timeline_get_bezier_value; +a._spine_path_constraint_mix_timeline_get_curves=Y.spine_path_constraint_mix_timeline_get_curves;a._spine_path_constraint_mix_timeline_get_frame_entries=Y.spine_path_constraint_mix_timeline_get_frame_entries;a._spine_path_constraint_mix_timeline_get_frame_count=Y.spine_path_constraint_mix_timeline_get_frame_count;a._spine_path_constraint_mix_timeline_get_frames=Y.spine_path_constraint_mix_timeline_get_frames;a._spine_path_constraint_mix_timeline_get_duration=Y.spine_path_constraint_mix_timeline_get_duration; +a._spine_path_constraint_mix_timeline_get_property_ids=Y.spine_path_constraint_mix_timeline_get_property_ids;a._spine_path_constraint_mix_timeline_rtti=Y.spine_path_constraint_mix_timeline_rtti;a._spine_physics_constraint_reset_timeline_create=Y.spine_physics_constraint_reset_timeline_create;a._spine_physics_constraint_reset_timeline_dispose=Y.spine_physics_constraint_reset_timeline_dispose;a._spine_physics_constraint_reset_timeline_get_rtti=Y.spine_physics_constraint_reset_timeline_get_rtti; +a._spine_physics_constraint_reset_timeline_apply=Y.spine_physics_constraint_reset_timeline_apply;a._spine_physics_constraint_reset_timeline_get_frame_count=Y.spine_physics_constraint_reset_timeline_get_frame_count;a._spine_physics_constraint_reset_timeline_get_constraint_index=Y.spine_physics_constraint_reset_timeline_get_constraint_index;a._spine_physics_constraint_reset_timeline_set_constraint_index=Y.spine_physics_constraint_reset_timeline_set_constraint_index; +a._spine_physics_constraint_reset_timeline_set_frame=Y.spine_physics_constraint_reset_timeline_set_frame;a._spine_physics_constraint_reset_timeline_get_frame_entries=Y.spine_physics_constraint_reset_timeline_get_frame_entries;a._spine_physics_constraint_reset_timeline_get_frames=Y.spine_physics_constraint_reset_timeline_get_frames;a._spine_physics_constraint_reset_timeline_get_duration=Y.spine_physics_constraint_reset_timeline_get_duration; +a._spine_physics_constraint_reset_timeline_get_property_ids=Y.spine_physics_constraint_reset_timeline_get_property_ids;a._spine_physics_constraint_reset_timeline_rtti=Y.spine_physics_constraint_reset_timeline_rtti;a._spine_atlas_attachment_loader_create=Y.spine_atlas_attachment_loader_create;a._spine_atlas_attachment_loader_dispose=Y.spine_atlas_attachment_loader_dispose;a._spine_atlas_attachment_loader_new_region_attachment=Y.spine_atlas_attachment_loader_new_region_attachment; +a._spine_atlas_attachment_loader_new_mesh_attachment=Y.spine_atlas_attachment_loader_new_mesh_attachment;a._spine_atlas_attachment_loader_new_bounding_box_attachment=Y.spine_atlas_attachment_loader_new_bounding_box_attachment;a._spine_atlas_attachment_loader_new_path_attachment=Y.spine_atlas_attachment_loader_new_path_attachment;a._spine_atlas_attachment_loader_new_point_attachment=Y.spine_atlas_attachment_loader_new_point_attachment;a._spine_atlas_attachment_loader_new_clipping_attachment=Y.spine_atlas_attachment_loader_new_clipping_attachment; +a._spine_atlas_attachment_loader_find_region=Y.spine_atlas_attachment_loader_find_region;a._spine_slot_timeline_dispose=Y.spine_slot_timeline_dispose;a._spine_slot_timeline_get_rtti=Y.spine_slot_timeline_get_rtti;a._spine_slot_timeline_get_slot_index=Y.spine_slot_timeline_get_slot_index;a._spine_slot_timeline_set_slot_index=Y.spine_slot_timeline_set_slot_index;a._spine_slot_timeline_rtti=Y.spine_slot_timeline_rtti;a._spine_physics_constraint_mix_timeline_create=Y.spine_physics_constraint_mix_timeline_create; +a._spine_physics_constraint_mix_timeline_dispose=Y.spine_physics_constraint_mix_timeline_dispose;a._spine_physics_constraint_mix_timeline_get_rtti=Y.spine_physics_constraint_mix_timeline_get_rtti;a._spine_physics_constraint_mix_timeline_apply=Y.spine_physics_constraint_mix_timeline_apply;a._spine_physics_constraint_mix_timeline_get_constraint_index=Y.spine_physics_constraint_mix_timeline_get_constraint_index;a._spine_physics_constraint_mix_timeline_set_constraint_index=Y.spine_physics_constraint_mix_timeline_set_constraint_index; +a._spine_physics_constraint_mix_timeline_set_frame=Y.spine_physics_constraint_mix_timeline_set_frame;a._spine_physics_constraint_mix_timeline_get_curve_value=Y.spine_physics_constraint_mix_timeline_get_curve_value;a._spine_physics_constraint_mix_timeline_get_relative_value=Y.spine_physics_constraint_mix_timeline_get_relative_value;a._spine_physics_constraint_mix_timeline_get_absolute_value_1=Y.spine_physics_constraint_mix_timeline_get_absolute_value_1; +a._spine_physics_constraint_mix_timeline_get_absolute_value_2=Y.spine_physics_constraint_mix_timeline_get_absolute_value_2;a._spine_physics_constraint_mix_timeline_get_scale_value=Y.spine_physics_constraint_mix_timeline_get_scale_value;a._spine_physics_constraint_mix_timeline_set_linear=Y.spine_physics_constraint_mix_timeline_set_linear;a._spine_physics_constraint_mix_timeline_set_stepped=Y.spine_physics_constraint_mix_timeline_set_stepped;a._spine_physics_constraint_mix_timeline_set_bezier=Y.spine_physics_constraint_mix_timeline_set_bezier; +a._spine_physics_constraint_mix_timeline_get_bezier_value=Y.spine_physics_constraint_mix_timeline_get_bezier_value;a._spine_physics_constraint_mix_timeline_get_curves=Y.spine_physics_constraint_mix_timeline_get_curves;a._spine_physics_constraint_mix_timeline_get_frame_entries=Y.spine_physics_constraint_mix_timeline_get_frame_entries;a._spine_physics_constraint_mix_timeline_get_frame_count=Y.spine_physics_constraint_mix_timeline_get_frame_count;a._spine_physics_constraint_mix_timeline_get_frames=Y.spine_physics_constraint_mix_timeline_get_frames; +a._spine_physics_constraint_mix_timeline_get_duration=Y.spine_physics_constraint_mix_timeline_get_duration;a._spine_physics_constraint_mix_timeline_get_property_ids=Y.spine_physics_constraint_mix_timeline_get_property_ids;a._spine_physics_constraint_mix_timeline_rtti=Y.spine_physics_constraint_mix_timeline_rtti;a._spine_from_x_create=Y.spine_from_x_create;a._spine_from_x_dispose=Y.spine_from_x_dispose;a._spine_from_x_get_rtti=Y.spine_from_x_get_rtti;a._spine_from_x_value=Y.spine_from_x_value; +a._spine_from_x_rtti=Y.spine_from_x_rtti;a._spine_array_float_create=Y.spine_array_float_create;a._spine_array_float_create_with_capacity=Y.spine_array_float_create_with_capacity;a._spine_array_float_dispose=Y.spine_array_float_dispose;a._spine_array_float_get_capacity=Y.spine_array_float_get_capacity;a._spine_array_float_size=Y.spine_array_float_size;a._spine_array_float_set_size=Y.spine_array_float_set_size;a._spine_array_float_ensure_capacity=Y.spine_array_float_ensure_capacity; +a._spine_array_float_add_all=Y.spine_array_float_add_all;a._spine_array_float_clear_and_add_all=Y.spine_array_float_clear_and_add_all;a._spine_array_float_remove_at=Y.spine_array_float_remove_at;a._spine_array_float_contains=Y.spine_array_float_contains;a._spine_array_float_index_of=Y.spine_array_float_index_of;a._spine_array_float_buffer=Y.spine_array_float_buffer;a._spine_array_int_create=Y.spine_array_int_create;a._spine_array_int_create_with_capacity=Y.spine_array_int_create_with_capacity; +a._spine_array_int_dispose=Y.spine_array_int_dispose;a._spine_array_int_clear=Y.spine_array_int_clear;a._spine_array_int_get_capacity=Y.spine_array_int_get_capacity;a._spine_array_int_size=Y.spine_array_int_size;a._spine_array_int_set_size=Y.spine_array_int_set_size;a._spine_array_int_ensure_capacity=Y.spine_array_int_ensure_capacity;a._spine_array_int_add=Y.spine_array_int_add;a._spine_array_int_add_all=Y.spine_array_int_add_all;a._spine_array_int_clear_and_add_all=Y.spine_array_int_clear_and_add_all; +a._spine_array_int_remove_at=Y.spine_array_int_remove_at;a._spine_array_int_contains=Y.spine_array_int_contains;a._spine_array_int_index_of=Y.spine_array_int_index_of;a._spine_array_int_buffer=Y.spine_array_int_buffer;a._spine_array_unsigned_short_create=Y.spine_array_unsigned_short_create;a._spine_array_unsigned_short_create_with_capacity=Y.spine_array_unsigned_short_create_with_capacity;a._spine_array_unsigned_short_dispose=Y.spine_array_unsigned_short_dispose; +a._spine_array_unsigned_short_clear=Y.spine_array_unsigned_short_clear;a._spine_array_unsigned_short_get_capacity=Y.spine_array_unsigned_short_get_capacity;a._spine_array_unsigned_short_size=Y.spine_array_unsigned_short_size;a._spine_array_unsigned_short_set_size=Y.spine_array_unsigned_short_set_size;a._spine_array_unsigned_short_ensure_capacity=Y.spine_array_unsigned_short_ensure_capacity;a._spine_array_unsigned_short_add=Y.spine_array_unsigned_short_add;a._spine_array_unsigned_short_add_all=Y.spine_array_unsigned_short_add_all; +a._spine_array_unsigned_short_clear_and_add_all=Y.spine_array_unsigned_short_clear_and_add_all;a._spine_array_unsigned_short_remove_at=Y.spine_array_unsigned_short_remove_at;a._spine_array_unsigned_short_contains=Y.spine_array_unsigned_short_contains;a._spine_array_unsigned_short_index_of=Y.spine_array_unsigned_short_index_of;a._spine_array_unsigned_short_buffer=Y.spine_array_unsigned_short_buffer;a._spine_array_property_id_create=Y.spine_array_property_id_create; +a._spine_array_property_id_create_with_capacity=Y.spine_array_property_id_create_with_capacity;a._spine_array_property_id_dispose=Y.spine_array_property_id_dispose;a._spine_array_property_id_clear=Y.spine_array_property_id_clear;a._spine_array_property_id_get_capacity=Y.spine_array_property_id_get_capacity;a._spine_array_property_id_size=Y.spine_array_property_id_size;a._spine_array_property_id_set_size=Y.spine_array_property_id_set_size;a._spine_array_property_id_ensure_capacity=Y.spine_array_property_id_ensure_capacity; +a._spine_array_property_id_add=Y.spine_array_property_id_add;a._spine_array_property_id_add_all=Y.spine_array_property_id_add_all;a._spine_array_property_id_clear_and_add_all=Y.spine_array_property_id_clear_and_add_all;a._spine_array_property_id_remove_at=Y.spine_array_property_id_remove_at;a._spine_array_property_id_contains=Y.spine_array_property_id_contains;a._spine_array_property_id_index_of=Y.spine_array_property_id_index_of;a._spine_array_property_id_buffer=Y.spine_array_property_id_buffer; +a._spine_array_animation_create=Y.spine_array_animation_create;a._spine_array_animation_create_with_capacity=Y.spine_array_animation_create_with_capacity;a._spine_array_animation_dispose=Y.spine_array_animation_dispose;a._spine_array_animation_clear=Y.spine_array_animation_clear;a._spine_array_animation_get_capacity=Y.spine_array_animation_get_capacity;a._spine_array_animation_size=Y.spine_array_animation_size;a._spine_array_animation_set_size=Y.spine_array_animation_set_size; +a._spine_array_animation_ensure_capacity=Y.spine_array_animation_ensure_capacity;a._spine_array_animation_add=Y.spine_array_animation_add;a._spine_array_animation_add_all=Y.spine_array_animation_add_all;a._spine_array_animation_clear_and_add_all=Y.spine_array_animation_clear_and_add_all;a._spine_array_animation_remove_at=Y.spine_array_animation_remove_at;a._spine_array_animation_contains=Y.spine_array_animation_contains;a._spine_array_animation_index_of=Y.spine_array_animation_index_of; +a._spine_array_animation_buffer=Y.spine_array_animation_buffer;a._spine_array_atlas_page_create=Y.spine_array_atlas_page_create;a._spine_array_atlas_page_create_with_capacity=Y.spine_array_atlas_page_create_with_capacity;a._spine_array_atlas_page_dispose=Y.spine_array_atlas_page_dispose;a._spine_array_atlas_page_clear=Y.spine_array_atlas_page_clear;a._spine_array_atlas_page_get_capacity=Y.spine_array_atlas_page_get_capacity;a._spine_array_atlas_page_size=Y.spine_array_atlas_page_size; +a._spine_array_atlas_page_set_size=Y.spine_array_atlas_page_set_size;a._spine_array_atlas_page_ensure_capacity=Y.spine_array_atlas_page_ensure_capacity;a._spine_array_atlas_page_add=Y.spine_array_atlas_page_add;a._spine_array_atlas_page_add_all=Y.spine_array_atlas_page_add_all;a._spine_array_atlas_page_clear_and_add_all=Y.spine_array_atlas_page_clear_and_add_all;a._spine_array_atlas_page_remove_at=Y.spine_array_atlas_page_remove_at;a._spine_array_atlas_page_contains=Y.spine_array_atlas_page_contains; +a._spine_array_atlas_page_index_of=Y.spine_array_atlas_page_index_of;a._spine_array_atlas_page_buffer=Y.spine_array_atlas_page_buffer;a._spine_array_atlas_region_create=Y.spine_array_atlas_region_create;a._spine_array_atlas_region_create_with_capacity=Y.spine_array_atlas_region_create_with_capacity;a._spine_array_atlas_region_dispose=Y.spine_array_atlas_region_dispose;a._spine_array_atlas_region_clear=Y.spine_array_atlas_region_clear;a._spine_array_atlas_region_get_capacity=Y.spine_array_atlas_region_get_capacity; +a._spine_array_atlas_region_size=Y.spine_array_atlas_region_size;a._spine_array_atlas_region_set_size=Y.spine_array_atlas_region_set_size;a._spine_array_atlas_region_ensure_capacity=Y.spine_array_atlas_region_ensure_capacity;a._spine_array_atlas_region_add=Y.spine_array_atlas_region_add;a._spine_array_atlas_region_add_all=Y.spine_array_atlas_region_add_all;a._spine_array_atlas_region_clear_and_add_all=Y.spine_array_atlas_region_clear_and_add_all;a._spine_array_atlas_region_remove_at=Y.spine_array_atlas_region_remove_at; +a._spine_array_atlas_region_contains=Y.spine_array_atlas_region_contains;a._spine_array_atlas_region_index_of=Y.spine_array_atlas_region_index_of;a._spine_array_atlas_region_buffer=Y.spine_array_atlas_region_buffer;a._spine_array_attachment_create=Y.spine_array_attachment_create;a._spine_array_attachment_create_with_capacity=Y.spine_array_attachment_create_with_capacity;a._spine_array_attachment_dispose=Y.spine_array_attachment_dispose;a._spine_array_attachment_clear=Y.spine_array_attachment_clear; +a._spine_array_attachment_get_capacity=Y.spine_array_attachment_get_capacity;a._spine_array_attachment_size=Y.spine_array_attachment_size;a._spine_array_attachment_set_size=Y.spine_array_attachment_set_size;a._spine_array_attachment_ensure_capacity=Y.spine_array_attachment_ensure_capacity;a._spine_array_attachment_add=Y.spine_array_attachment_add;a._spine_array_attachment_add_all=Y.spine_array_attachment_add_all;a._spine_array_attachment_clear_and_add_all=Y.spine_array_attachment_clear_and_add_all; +a._spine_array_attachment_remove_at=Y.spine_array_attachment_remove_at;a._spine_array_attachment_contains=Y.spine_array_attachment_contains;a._spine_array_attachment_index_of=Y.spine_array_attachment_index_of;a._spine_array_attachment_buffer=Y.spine_array_attachment_buffer;a._spine_array_bone_create=Y.spine_array_bone_create;a._spine_array_bone_create_with_capacity=Y.spine_array_bone_create_with_capacity;a._spine_array_bone_dispose=Y.spine_array_bone_dispose;a._spine_array_bone_clear=Y.spine_array_bone_clear; +a._spine_array_bone_get_capacity=Y.spine_array_bone_get_capacity;a._spine_array_bone_size=Y.spine_array_bone_size;a._spine_array_bone_set_size=Y.spine_array_bone_set_size;a._spine_array_bone_ensure_capacity=Y.spine_array_bone_ensure_capacity;a._spine_array_bone_add=Y.spine_array_bone_add;a._spine_array_bone_add_all=Y.spine_array_bone_add_all;a._spine_array_bone_clear_and_add_all=Y.spine_array_bone_clear_and_add_all;a._spine_array_bone_remove_at=Y.spine_array_bone_remove_at; +a._spine_array_bone_contains=Y.spine_array_bone_contains;a._spine_array_bone_index_of=Y.spine_array_bone_index_of;a._spine_array_bone_buffer=Y.spine_array_bone_buffer;a._spine_array_bone_data_create=Y.spine_array_bone_data_create;a._spine_array_bone_data_create_with_capacity=Y.spine_array_bone_data_create_with_capacity;a._spine_array_bone_data_dispose=Y.spine_array_bone_data_dispose;a._spine_array_bone_data_clear=Y.spine_array_bone_data_clear;a._spine_array_bone_data_get_capacity=Y.spine_array_bone_data_get_capacity; +a._spine_array_bone_data_size=Y.spine_array_bone_data_size;a._spine_array_bone_data_set_size=Y.spine_array_bone_data_set_size;a._spine_array_bone_data_ensure_capacity=Y.spine_array_bone_data_ensure_capacity;a._spine_array_bone_data_add=Y.spine_array_bone_data_add;a._spine_array_bone_data_add_all=Y.spine_array_bone_data_add_all;a._spine_array_bone_data_clear_and_add_all=Y.spine_array_bone_data_clear_and_add_all;a._spine_array_bone_data_remove_at=Y.spine_array_bone_data_remove_at; +a._spine_array_bone_data_contains=Y.spine_array_bone_data_contains;a._spine_array_bone_data_index_of=Y.spine_array_bone_data_index_of;a._spine_array_bone_data_buffer=Y.spine_array_bone_data_buffer;a._spine_array_bone_pose_create=Y.spine_array_bone_pose_create;a._spine_array_bone_pose_create_with_capacity=Y.spine_array_bone_pose_create_with_capacity;a._spine_array_bone_pose_dispose=Y.spine_array_bone_pose_dispose;a._spine_array_bone_pose_clear=Y.spine_array_bone_pose_clear; +a._spine_array_bone_pose_get_capacity=Y.spine_array_bone_pose_get_capacity;a._spine_array_bone_pose_size=Y.spine_array_bone_pose_size;a._spine_array_bone_pose_set_size=Y.spine_array_bone_pose_set_size;a._spine_array_bone_pose_ensure_capacity=Y.spine_array_bone_pose_ensure_capacity;a._spine_array_bone_pose_add=Y.spine_array_bone_pose_add;a._spine_array_bone_pose_add_all=Y.spine_array_bone_pose_add_all;a._spine_array_bone_pose_clear_and_add_all=Y.spine_array_bone_pose_clear_and_add_all; +a._spine_array_bone_pose_remove_at=Y.spine_array_bone_pose_remove_at;a._spine_array_bone_pose_contains=Y.spine_array_bone_pose_contains;a._spine_array_bone_pose_index_of=Y.spine_array_bone_pose_index_of;a._spine_array_bone_pose_buffer=Y.spine_array_bone_pose_buffer;a._spine_array_bounding_box_attachment_create=Y.spine_array_bounding_box_attachment_create;a._spine_array_bounding_box_attachment_create_with_capacity=Y.spine_array_bounding_box_attachment_create_with_capacity; +a._spine_array_bounding_box_attachment_dispose=Y.spine_array_bounding_box_attachment_dispose;a._spine_array_bounding_box_attachment_clear=Y.spine_array_bounding_box_attachment_clear;a._spine_array_bounding_box_attachment_get_capacity=Y.spine_array_bounding_box_attachment_get_capacity;a._spine_array_bounding_box_attachment_size=Y.spine_array_bounding_box_attachment_size;a._spine_array_bounding_box_attachment_set_size=Y.spine_array_bounding_box_attachment_set_size; +a._spine_array_bounding_box_attachment_ensure_capacity=Y.spine_array_bounding_box_attachment_ensure_capacity;a._spine_array_bounding_box_attachment_add=Y.spine_array_bounding_box_attachment_add;a._spine_array_bounding_box_attachment_add_all=Y.spine_array_bounding_box_attachment_add_all;a._spine_array_bounding_box_attachment_clear_and_add_all=Y.spine_array_bounding_box_attachment_clear_and_add_all;a._spine_array_bounding_box_attachment_remove_at=Y.spine_array_bounding_box_attachment_remove_at; +a._spine_array_bounding_box_attachment_contains=Y.spine_array_bounding_box_attachment_contains;a._spine_array_bounding_box_attachment_index_of=Y.spine_array_bounding_box_attachment_index_of;a._spine_array_bounding_box_attachment_buffer=Y.spine_array_bounding_box_attachment_buffer;a._spine_array_constraint_create=Y.spine_array_constraint_create;a._spine_array_constraint_create_with_capacity=Y.spine_array_constraint_create_with_capacity;a._spine_array_constraint_dispose=Y.spine_array_constraint_dispose; +a._spine_array_constraint_clear=Y.spine_array_constraint_clear;a._spine_array_constraint_get_capacity=Y.spine_array_constraint_get_capacity;a._spine_array_constraint_size=Y.spine_array_constraint_size;a._spine_array_constraint_set_size=Y.spine_array_constraint_set_size;a._spine_array_constraint_ensure_capacity=Y.spine_array_constraint_ensure_capacity;a._spine_array_constraint_add=Y.spine_array_constraint_add;a._spine_array_constraint_add_all=Y.spine_array_constraint_add_all; +a._spine_array_constraint_clear_and_add_all=Y.spine_array_constraint_clear_and_add_all;a._spine_array_constraint_remove_at=Y.spine_array_constraint_remove_at;a._spine_array_constraint_contains=Y.spine_array_constraint_contains;a._spine_array_constraint_index_of=Y.spine_array_constraint_index_of;a._spine_array_constraint_buffer=Y.spine_array_constraint_buffer;a._spine_array_constraint_data_create=Y.spine_array_constraint_data_create;a._spine_array_constraint_data_create_with_capacity=Y.spine_array_constraint_data_create_with_capacity; +a._spine_array_constraint_data_dispose=Y.spine_array_constraint_data_dispose;a._spine_array_constraint_data_clear=Y.spine_array_constraint_data_clear;a._spine_array_constraint_data_get_capacity=Y.spine_array_constraint_data_get_capacity;a._spine_array_constraint_data_size=Y.spine_array_constraint_data_size;a._spine_array_constraint_data_set_size=Y.spine_array_constraint_data_set_size;a._spine_array_constraint_data_ensure_capacity=Y.spine_array_constraint_data_ensure_capacity; +a._spine_array_constraint_data_add=Y.spine_array_constraint_data_add;a._spine_array_constraint_data_add_all=Y.spine_array_constraint_data_add_all;a._spine_array_constraint_data_clear_and_add_all=Y.spine_array_constraint_data_clear_and_add_all;a._spine_array_constraint_data_remove_at=Y.spine_array_constraint_data_remove_at;a._spine_array_constraint_data_contains=Y.spine_array_constraint_data_contains;a._spine_array_constraint_data_index_of=Y.spine_array_constraint_data_index_of; +a._spine_array_constraint_data_buffer=Y.spine_array_constraint_data_buffer;a._spine_array_event_create=Y.spine_array_event_create;a._spine_array_event_create_with_capacity=Y.spine_array_event_create_with_capacity;a._spine_array_event_dispose=Y.spine_array_event_dispose;a._spine_array_event_clear=Y.spine_array_event_clear;a._spine_array_event_get_capacity=Y.spine_array_event_get_capacity;a._spine_array_event_size=Y.spine_array_event_size;a._spine_array_event_set_size=Y.spine_array_event_set_size; +a._spine_array_event_ensure_capacity=Y.spine_array_event_ensure_capacity;a._spine_array_event_add=Y.spine_array_event_add;a._spine_array_event_add_all=Y.spine_array_event_add_all;a._spine_array_event_clear_and_add_all=Y.spine_array_event_clear_and_add_all;a._spine_array_event_remove_at=Y.spine_array_event_remove_at;a._spine_array_event_contains=Y.spine_array_event_contains;a._spine_array_event_index_of=Y.spine_array_event_index_of;a._spine_array_event_buffer=Y.spine_array_event_buffer; +a._spine_array_event_data_create=Y.spine_array_event_data_create;a._spine_array_event_data_create_with_capacity=Y.spine_array_event_data_create_with_capacity;a._spine_array_event_data_dispose=Y.spine_array_event_data_dispose;a._spine_array_event_data_clear=Y.spine_array_event_data_clear;a._spine_array_event_data_get_capacity=Y.spine_array_event_data_get_capacity;a._spine_array_event_data_size=Y.spine_array_event_data_size;a._spine_array_event_data_set_size=Y.spine_array_event_data_set_size; +a._spine_array_event_data_ensure_capacity=Y.spine_array_event_data_ensure_capacity;a._spine_array_event_data_add=Y.spine_array_event_data_add;a._spine_array_event_data_add_all=Y.spine_array_event_data_add_all;a._spine_array_event_data_clear_and_add_all=Y.spine_array_event_data_clear_and_add_all;a._spine_array_event_data_remove_at=Y.spine_array_event_data_remove_at;a._spine_array_event_data_contains=Y.spine_array_event_data_contains;a._spine_array_event_data_index_of=Y.spine_array_event_data_index_of; +a._spine_array_event_data_buffer=Y.spine_array_event_data_buffer;a._spine_array_from_property_create=Y.spine_array_from_property_create;a._spine_array_from_property_create_with_capacity=Y.spine_array_from_property_create_with_capacity;a._spine_array_from_property_dispose=Y.spine_array_from_property_dispose;a._spine_array_from_property_clear=Y.spine_array_from_property_clear;a._spine_array_from_property_get_capacity=Y.spine_array_from_property_get_capacity;a._spine_array_from_property_size=Y.spine_array_from_property_size; +a._spine_array_from_property_set_size=Y.spine_array_from_property_set_size;a._spine_array_from_property_ensure_capacity=Y.spine_array_from_property_ensure_capacity;a._spine_array_from_property_add=Y.spine_array_from_property_add;a._spine_array_from_property_add_all=Y.spine_array_from_property_add_all;a._spine_array_from_property_clear_and_add_all=Y.spine_array_from_property_clear_and_add_all;a._spine_array_from_property_remove_at=Y.spine_array_from_property_remove_at; +a._spine_array_from_property_contains=Y.spine_array_from_property_contains;a._spine_array_from_property_index_of=Y.spine_array_from_property_index_of;a._spine_array_from_property_buffer=Y.spine_array_from_property_buffer;a._spine_array_physics_constraint_create=Y.spine_array_physics_constraint_create;a._spine_array_physics_constraint_create_with_capacity=Y.spine_array_physics_constraint_create_with_capacity;a._spine_array_physics_constraint_dispose=Y.spine_array_physics_constraint_dispose; +a._spine_array_physics_constraint_clear=Y.spine_array_physics_constraint_clear;a._spine_array_physics_constraint_get_capacity=Y.spine_array_physics_constraint_get_capacity;a._spine_array_physics_constraint_size=Y.spine_array_physics_constraint_size;a._spine_array_physics_constraint_set_size=Y.spine_array_physics_constraint_set_size;a._spine_array_physics_constraint_ensure_capacity=Y.spine_array_physics_constraint_ensure_capacity;a._spine_array_physics_constraint_add=Y.spine_array_physics_constraint_add; +a._spine_array_physics_constraint_add_all=Y.spine_array_physics_constraint_add_all;a._spine_array_physics_constraint_clear_and_add_all=Y.spine_array_physics_constraint_clear_and_add_all;a._spine_array_physics_constraint_remove_at=Y.spine_array_physics_constraint_remove_at;a._spine_array_physics_constraint_contains=Y.spine_array_physics_constraint_contains;a._spine_array_physics_constraint_index_of=Y.spine_array_physics_constraint_index_of;a._spine_array_physics_constraint_buffer=Y.spine_array_physics_constraint_buffer; +a._spine_array_polygon_create=Y.spine_array_polygon_create;a._spine_array_polygon_create_with_capacity=Y.spine_array_polygon_create_with_capacity;a._spine_array_polygon_dispose=Y.spine_array_polygon_dispose;a._spine_array_polygon_clear=Y.spine_array_polygon_clear;a._spine_array_polygon_get_capacity=Y.spine_array_polygon_get_capacity;a._spine_array_polygon_size=Y.spine_array_polygon_size;a._spine_array_polygon_set_size=Y.spine_array_polygon_set_size;a._spine_array_polygon_ensure_capacity=Y.spine_array_polygon_ensure_capacity; +a._spine_array_polygon_add=Y.spine_array_polygon_add;a._spine_array_polygon_add_all=Y.spine_array_polygon_add_all;a._spine_array_polygon_clear_and_add_all=Y.spine_array_polygon_clear_and_add_all;a._spine_array_polygon_remove_at=Y.spine_array_polygon_remove_at;a._spine_array_polygon_contains=Y.spine_array_polygon_contains;a._spine_array_polygon_index_of=Y.spine_array_polygon_index_of;a._spine_array_polygon_buffer=Y.spine_array_polygon_buffer;a._spine_array_skin_create=Y.spine_array_skin_create; +a._spine_array_skin_create_with_capacity=Y.spine_array_skin_create_with_capacity;a._spine_array_skin_dispose=Y.spine_array_skin_dispose;a._spine_array_skin_clear=Y.spine_array_skin_clear;a._spine_array_skin_get_capacity=Y.spine_array_skin_get_capacity;a._spine_array_skin_size=Y.spine_array_skin_size;a._spine_array_skin_set_size=Y.spine_array_skin_set_size;a._spine_array_skin_ensure_capacity=Y.spine_array_skin_ensure_capacity;a._spine_array_skin_add=Y.spine_array_skin_add; +a._spine_array_skin_add_all=Y.spine_array_skin_add_all;a._spine_array_skin_clear_and_add_all=Y.spine_array_skin_clear_and_add_all;a._spine_array_skin_remove_at=Y.spine_array_skin_remove_at;a._spine_array_skin_contains=Y.spine_array_skin_contains;a._spine_array_skin_index_of=Y.spine_array_skin_index_of;a._spine_array_skin_buffer=Y.spine_array_skin_buffer;a._spine_array_slot_create=Y.spine_array_slot_create;a._spine_array_slot_create_with_capacity=Y.spine_array_slot_create_with_capacity; +a._spine_array_slot_dispose=Y.spine_array_slot_dispose;a._spine_array_slot_clear=Y.spine_array_slot_clear;a._spine_array_slot_get_capacity=Y.spine_array_slot_get_capacity;a._spine_array_slot_size=Y.spine_array_slot_size;a._spine_array_slot_set_size=Y.spine_array_slot_set_size;a._spine_array_slot_ensure_capacity=Y.spine_array_slot_ensure_capacity;a._spine_array_slot_add=Y.spine_array_slot_add;a._spine_array_slot_add_all=Y.spine_array_slot_add_all;a._spine_array_slot_clear_and_add_all=Y.spine_array_slot_clear_and_add_all; +a._spine_array_slot_remove_at=Y.spine_array_slot_remove_at;a._spine_array_slot_contains=Y.spine_array_slot_contains;a._spine_array_slot_index_of=Y.spine_array_slot_index_of;a._spine_array_slot_buffer=Y.spine_array_slot_buffer;a._spine_array_slot_data_create=Y.spine_array_slot_data_create;a._spine_array_slot_data_create_with_capacity=Y.spine_array_slot_data_create_with_capacity;a._spine_array_slot_data_dispose=Y.spine_array_slot_data_dispose;a._spine_array_slot_data_clear=Y.spine_array_slot_data_clear; +a._spine_array_slot_data_get_capacity=Y.spine_array_slot_data_get_capacity;a._spine_array_slot_data_size=Y.spine_array_slot_data_size;a._spine_array_slot_data_set_size=Y.spine_array_slot_data_set_size;a._spine_array_slot_data_ensure_capacity=Y.spine_array_slot_data_ensure_capacity;a._spine_array_slot_data_add=Y.spine_array_slot_data_add;a._spine_array_slot_data_add_all=Y.spine_array_slot_data_add_all;a._spine_array_slot_data_clear_and_add_all=Y.spine_array_slot_data_clear_and_add_all; +a._spine_array_slot_data_remove_at=Y.spine_array_slot_data_remove_at;a._spine_array_slot_data_contains=Y.spine_array_slot_data_contains;a._spine_array_slot_data_index_of=Y.spine_array_slot_data_index_of;a._spine_array_slot_data_buffer=Y.spine_array_slot_data_buffer;a._spine_array_texture_region_create=Y.spine_array_texture_region_create;a._spine_array_texture_region_create_with_capacity=Y.spine_array_texture_region_create_with_capacity;a._spine_array_texture_region_dispose=Y.spine_array_texture_region_dispose; +a._spine_array_texture_region_clear=Y.spine_array_texture_region_clear;a._spine_array_texture_region_get_capacity=Y.spine_array_texture_region_get_capacity;a._spine_array_texture_region_size=Y.spine_array_texture_region_size;a._spine_array_texture_region_set_size=Y.spine_array_texture_region_set_size;a._spine_array_texture_region_ensure_capacity=Y.spine_array_texture_region_ensure_capacity;a._spine_array_texture_region_add=Y.spine_array_texture_region_add;a._spine_array_texture_region_add_all=Y.spine_array_texture_region_add_all; +a._spine_array_texture_region_clear_and_add_all=Y.spine_array_texture_region_clear_and_add_all;a._spine_array_texture_region_remove_at=Y.spine_array_texture_region_remove_at;a._spine_array_texture_region_contains=Y.spine_array_texture_region_contains;a._spine_array_texture_region_index_of=Y.spine_array_texture_region_index_of;a._spine_array_texture_region_buffer=Y.spine_array_texture_region_buffer;a._spine_array_timeline_create=Y.spine_array_timeline_create; +a._spine_array_timeline_create_with_capacity=Y.spine_array_timeline_create_with_capacity;a._spine_array_timeline_dispose=Y.spine_array_timeline_dispose;a._spine_array_timeline_clear=Y.spine_array_timeline_clear;a._spine_array_timeline_get_capacity=Y.spine_array_timeline_get_capacity;a._spine_array_timeline_size=Y.spine_array_timeline_size;a._spine_array_timeline_set_size=Y.spine_array_timeline_set_size;a._spine_array_timeline_ensure_capacity=Y.spine_array_timeline_ensure_capacity; +a._spine_array_timeline_add=Y.spine_array_timeline_add;a._spine_array_timeline_add_all=Y.spine_array_timeline_add_all;a._spine_array_timeline_clear_and_add_all=Y.spine_array_timeline_clear_and_add_all;a._spine_array_timeline_remove_at=Y.spine_array_timeline_remove_at;a._spine_array_timeline_contains=Y.spine_array_timeline_contains;a._spine_array_timeline_index_of=Y.spine_array_timeline_index_of;a._spine_array_timeline_buffer=Y.spine_array_timeline_buffer;a._spine_array_to_property_create=Y.spine_array_to_property_create; +a._spine_array_to_property_create_with_capacity=Y.spine_array_to_property_create_with_capacity;a._spine_array_to_property_dispose=Y.spine_array_to_property_dispose;a._spine_array_to_property_clear=Y.spine_array_to_property_clear;a._spine_array_to_property_get_capacity=Y.spine_array_to_property_get_capacity;a._spine_array_to_property_size=Y.spine_array_to_property_size;a._spine_array_to_property_set_size=Y.spine_array_to_property_set_size;a._spine_array_to_property_ensure_capacity=Y.spine_array_to_property_ensure_capacity; +a._spine_array_to_property_add=Y.spine_array_to_property_add;a._spine_array_to_property_add_all=Y.spine_array_to_property_add_all;a._spine_array_to_property_clear_and_add_all=Y.spine_array_to_property_clear_and_add_all;a._spine_array_to_property_remove_at=Y.spine_array_to_property_remove_at;a._spine_array_to_property_contains=Y.spine_array_to_property_contains;a._spine_array_to_property_index_of=Y.spine_array_to_property_index_of;a._spine_array_to_property_buffer=Y.spine_array_to_property_buffer; +a._spine_array_track_entry_create=Y.spine_array_track_entry_create;a._spine_array_track_entry_create_with_capacity=Y.spine_array_track_entry_create_with_capacity;a._spine_array_track_entry_dispose=Y.spine_array_track_entry_dispose;a._spine_array_track_entry_clear=Y.spine_array_track_entry_clear;a._spine_array_track_entry_get_capacity=Y.spine_array_track_entry_get_capacity;a._spine_array_track_entry_size=Y.spine_array_track_entry_size;a._spine_array_track_entry_set_size=Y.spine_array_track_entry_set_size; +a._spine_array_track_entry_ensure_capacity=Y.spine_array_track_entry_ensure_capacity;a._spine_array_track_entry_add=Y.spine_array_track_entry_add;a._spine_array_track_entry_add_all=Y.spine_array_track_entry_add_all;a._spine_array_track_entry_clear_and_add_all=Y.spine_array_track_entry_clear_and_add_all;a._spine_array_track_entry_remove_at=Y.spine_array_track_entry_remove_at;a._spine_array_track_entry_contains=Y.spine_array_track_entry_contains;a._spine_array_track_entry_index_of=Y.spine_array_track_entry_index_of; +a._spine_array_track_entry_buffer=Y.spine_array_track_entry_buffer;a._spine_array_update_create=Y.spine_array_update_create;a._spine_array_update_create_with_capacity=Y.spine_array_update_create_with_capacity;a._spine_array_update_dispose=Y.spine_array_update_dispose;a._spine_array_update_clear=Y.spine_array_update_clear;a._spine_array_update_get_capacity=Y.spine_array_update_get_capacity;a._spine_array_update_size=Y.spine_array_update_size;a._spine_array_update_set_size=Y.spine_array_update_set_size; +a._spine_array_update_ensure_capacity=Y.spine_array_update_ensure_capacity;a._spine_array_update_add=Y.spine_array_update_add;a._spine_array_update_add_all=Y.spine_array_update_add_all;a._spine_array_update_clear_and_add_all=Y.spine_array_update_clear_and_add_all;a._spine_array_update_remove_at=Y.spine_array_update_remove_at;a._spine_array_update_contains=Y.spine_array_update_contains;a._spine_array_update_index_of=Y.spine_array_update_index_of;a._spine_array_update_buffer=Y.spine_array_update_buffer; +a._spine_scale_timeline_create=Y.spine_scale_timeline_create;a._spine_scale_timeline_dispose=Y.spine_scale_timeline_dispose;a._spine_scale_timeline_get_rtti=Y.spine_scale_timeline_get_rtti;a._spine_scale_timeline_apply=Y.spine_scale_timeline_apply;a._spine_scale_timeline_get_bone_index=Y.spine_scale_timeline_get_bone_index;a._spine_scale_timeline_set_bone_index=Y.spine_scale_timeline_set_bone_index;a._spine_scale_timeline_set_frame=Y.spine_scale_timeline_set_frame; +a._spine_scale_timeline_set_linear=Y.spine_scale_timeline_set_linear;a._spine_scale_timeline_set_stepped=Y.spine_scale_timeline_set_stepped;a._spine_scale_timeline_set_bezier=Y.spine_scale_timeline_set_bezier;a._spine_scale_timeline_get_bezier_value=Y.spine_scale_timeline_get_bezier_value;a._spine_scale_timeline_get_curves=Y.spine_scale_timeline_get_curves;a._spine_scale_timeline_get_frame_entries=Y.spine_scale_timeline_get_frame_entries;a._spine_scale_timeline_get_frame_count=Y.spine_scale_timeline_get_frame_count; +a._spine_scale_timeline_get_frames=Y.spine_scale_timeline_get_frames;a._spine_scale_timeline_get_duration=Y.spine_scale_timeline_get_duration;a._spine_scale_timeline_get_property_ids=Y.spine_scale_timeline_get_property_ids;a._spine_scale_timeline_rtti=Y.spine_scale_timeline_rtti;a._spine_attachment_loader_dispose=Y.spine_attachment_loader_dispose;a._spine_attachment_loader_new_region_attachment=Y.spine_attachment_loader_new_region_attachment;a._spine_attachment_loader_new_mesh_attachment=Y.spine_attachment_loader_new_mesh_attachment; +a._spine_attachment_loader_new_bounding_box_attachment=Y.spine_attachment_loader_new_bounding_box_attachment;a._spine_attachment_loader_new_path_attachment=Y.spine_attachment_loader_new_path_attachment;a._spine_attachment_loader_new_point_attachment=Y.spine_attachment_loader_new_point_attachment;a._spine_attachment_loader_new_clipping_attachment=Y.spine_attachment_loader_new_clipping_attachment;a._spine_draw_order_timeline_create=Y.spine_draw_order_timeline_create; +a._spine_draw_order_timeline_dispose=Y.spine_draw_order_timeline_dispose;a._spine_draw_order_timeline_get_rtti=Y.spine_draw_order_timeline_get_rtti;a._spine_draw_order_timeline_apply=Y.spine_draw_order_timeline_apply;a._spine_draw_order_timeline_get_frame_count=Y.spine_draw_order_timeline_get_frame_count;a._spine_draw_order_timeline_set_frame=Y.spine_draw_order_timeline_set_frame;a._spine_draw_order_timeline_get_frame_entries=Y.spine_draw_order_timeline_get_frame_entries; +a._spine_draw_order_timeline_get_frames=Y.spine_draw_order_timeline_get_frames;a._spine_draw_order_timeline_get_duration=Y.spine_draw_order_timeline_get_duration;a._spine_draw_order_timeline_get_property_ids=Y.spine_draw_order_timeline_get_property_ids;a._spine_draw_order_timeline_rtti=Y.spine_draw_order_timeline_rtti;a._spine_physics_constraint_pose_create=Y.spine_physics_constraint_pose_create;a._spine_physics_constraint_pose_dispose=Y.spine_physics_constraint_pose_dispose; +a._spine_physics_constraint_pose_set=Y.spine_physics_constraint_pose_set;a._spine_physics_constraint_pose_get_inertia=Y.spine_physics_constraint_pose_get_inertia;a._spine_physics_constraint_pose_set_inertia=Y.spine_physics_constraint_pose_set_inertia;a._spine_physics_constraint_pose_get_strength=Y.spine_physics_constraint_pose_get_strength;a._spine_physics_constraint_pose_set_strength=Y.spine_physics_constraint_pose_set_strength;a._spine_physics_constraint_pose_get_damping=Y.spine_physics_constraint_pose_get_damping; +a._spine_physics_constraint_pose_set_damping=Y.spine_physics_constraint_pose_set_damping;a._spine_physics_constraint_pose_get_mass_inverse=Y.spine_physics_constraint_pose_get_mass_inverse;a._spine_physics_constraint_pose_set_mass_inverse=Y.spine_physics_constraint_pose_set_mass_inverse;a._spine_physics_constraint_pose_get_wind=Y.spine_physics_constraint_pose_get_wind;a._spine_physics_constraint_pose_set_wind=Y.spine_physics_constraint_pose_set_wind;a._spine_physics_constraint_pose_get_gravity=Y.spine_physics_constraint_pose_get_gravity; +a._spine_physics_constraint_pose_set_gravity=Y.spine_physics_constraint_pose_set_gravity;a._spine_physics_constraint_pose_get_mix=Y.spine_physics_constraint_pose_get_mix;a._spine_physics_constraint_pose_set_mix=Y.spine_physics_constraint_pose_set_mix;a._spine_posed_dispose=Y.spine_posed_dispose;a._spine_posed_constrained=Y.spine_posed_constrained;a._spine_posed_reset_constrained=Y.spine_posed_reset_constrained;a._spine_posed_is_pose_equal_to_applied=Y.spine_posed_is_pose_equal_to_applied; +a._spine_ik_constraint_data_create=Y.spine_ik_constraint_data_create;a._spine_ik_constraint_data_dispose=Y.spine_ik_constraint_data_dispose;a._spine_ik_constraint_data_get_rtti=Y.spine_ik_constraint_data_get_rtti;a._spine_ik_constraint_data_create_method=Y.spine_ik_constraint_data_create_method;a._spine_ik_constraint_data_get_bones=Y.spine_ik_constraint_data_get_bones;a._spine_ik_constraint_data_get_target=Y.spine_ik_constraint_data_get_target;a._spine_ik_constraint_data_set_target=Y.spine_ik_constraint_data_set_target; +a._spine_ik_constraint_data_get_uniform=Y.spine_ik_constraint_data_get_uniform;a._spine_ik_constraint_data_set_uniform=Y.spine_ik_constraint_data_set_uniform;a._spine_ik_constraint_data_get_name=Y.spine_ik_constraint_data_get_name;a._spine_ik_constraint_data_get_skin_required=Y.spine_ik_constraint_data_get_skin_required;a._spine_ik_constraint_data_get_setup_pose=Y.spine_ik_constraint_data_get_setup_pose;a._spine_ik_constraint_data_set_skin_required=Y.spine_ik_constraint_data_set_skin_required; +a._spine_ik_constraint_data_rtti=Y.spine_ik_constraint_data_rtti;a._spine_transform_constraint_data_create=Y.spine_transform_constraint_data_create;a._spine_transform_constraint_data_dispose=Y.spine_transform_constraint_data_dispose;a._spine_transform_constraint_data_get_rtti=Y.spine_transform_constraint_data_get_rtti;a._spine_transform_constraint_data_create_method=Y.spine_transform_constraint_data_create_method;a._spine_transform_constraint_data_get_bones=Y.spine_transform_constraint_data_get_bones; +a._spine_transform_constraint_data_get_source=Y.spine_transform_constraint_data_get_source;a._spine_transform_constraint_data_set_source=Y.spine_transform_constraint_data_set_source;a._spine_transform_constraint_data_get_offset_rotation=Y.spine_transform_constraint_data_get_offset_rotation;a._spine_transform_constraint_data_set_offset_rotation=Y.spine_transform_constraint_data_set_offset_rotation;a._spine_transform_constraint_data_get_offset_x=Y.spine_transform_constraint_data_get_offset_x; +a._spine_transform_constraint_data_set_offset_x=Y.spine_transform_constraint_data_set_offset_x;a._spine_transform_constraint_data_get_offset_y=Y.spine_transform_constraint_data_get_offset_y;a._spine_transform_constraint_data_set_offset_y=Y.spine_transform_constraint_data_set_offset_y;a._spine_transform_constraint_data_get_offset_scale_x=Y.spine_transform_constraint_data_get_offset_scale_x;a._spine_transform_constraint_data_set_offset_scale_x=Y.spine_transform_constraint_data_set_offset_scale_x; +a._spine_transform_constraint_data_get_offset_scale_y=Y.spine_transform_constraint_data_get_offset_scale_y;a._spine_transform_constraint_data_set_offset_scale_y=Y.spine_transform_constraint_data_set_offset_scale_y;a._spine_transform_constraint_data_get_offset_shear_y=Y.spine_transform_constraint_data_get_offset_shear_y;a._spine_transform_constraint_data_set_offset_shear_y=Y.spine_transform_constraint_data_set_offset_shear_y;a._spine_transform_constraint_data_get_local_source=Y.spine_transform_constraint_data_get_local_source; +a._spine_transform_constraint_data_set_local_source=Y.spine_transform_constraint_data_set_local_source;a._spine_transform_constraint_data_get_local_target=Y.spine_transform_constraint_data_get_local_target;a._spine_transform_constraint_data_set_local_target=Y.spine_transform_constraint_data_set_local_target;a._spine_transform_constraint_data_get_additive=Y.spine_transform_constraint_data_get_additive;a._spine_transform_constraint_data_set_additive=Y.spine_transform_constraint_data_set_additive; +a._spine_transform_constraint_data_get_clamp=Y.spine_transform_constraint_data_get_clamp;a._spine_transform_constraint_data_set_clamp=Y.spine_transform_constraint_data_set_clamp;a._spine_transform_constraint_data_get_properties=Y.spine_transform_constraint_data_get_properties;a._spine_transform_constraint_data_get_name=Y.spine_transform_constraint_data_get_name;a._spine_transform_constraint_data_get_skin_required=Y.spine_transform_constraint_data_get_skin_required; +a._spine_transform_constraint_data_get_setup_pose=Y.spine_transform_constraint_data_get_setup_pose;a._spine_transform_constraint_data_set_skin_required=Y.spine_transform_constraint_data_set_skin_required;a._spine_transform_constraint_data_rtti=Y.spine_transform_constraint_data_rtti;a._spine_to_shear_y_create=Y.spine_to_shear_y_create;a._spine_to_shear_y_dispose=Y.spine_to_shear_y_dispose;a._spine_to_shear_y_get_rtti=Y.spine_to_shear_y_get_rtti;a._spine_to_shear_y_mix=Y.spine_to_shear_y_mix; +a._spine_to_shear_y_apply=Y.spine_to_shear_y_apply;a._spine_to_shear_y_rtti=Y.spine_to_shear_y_rtti;a._spine_polygon_create=Y.spine_polygon_create;a._spine_polygon_dispose=Y.spine_polygon_dispose;a._spine_polygon_get__vertices=Y.spine_polygon_get__vertices;a._spine_polygon_set__vertices=Y.spine_polygon_set__vertices;a._spine_polygon_get__count=Y.spine_polygon_get__count;a._spine_polygon_set__count=Y.spine_polygon_set__count;a._spine_physics_constraint_damping_timeline_create=Y.spine_physics_constraint_damping_timeline_create; +a._spine_physics_constraint_damping_timeline_dispose=Y.spine_physics_constraint_damping_timeline_dispose;a._spine_physics_constraint_damping_timeline_get_rtti=Y.spine_physics_constraint_damping_timeline_get_rtti;a._spine_physics_constraint_damping_timeline_apply=Y.spine_physics_constraint_damping_timeline_apply;a._spine_physics_constraint_damping_timeline_get_constraint_index=Y.spine_physics_constraint_damping_timeline_get_constraint_index; +a._spine_physics_constraint_damping_timeline_set_constraint_index=Y.spine_physics_constraint_damping_timeline_set_constraint_index;a._spine_physics_constraint_damping_timeline_set_frame=Y.spine_physics_constraint_damping_timeline_set_frame;a._spine_physics_constraint_damping_timeline_get_curve_value=Y.spine_physics_constraint_damping_timeline_get_curve_value;a._spine_physics_constraint_damping_timeline_get_relative_value=Y.spine_physics_constraint_damping_timeline_get_relative_value; +a._spine_physics_constraint_damping_timeline_get_absolute_value_1=Y.spine_physics_constraint_damping_timeline_get_absolute_value_1;a._spine_physics_constraint_damping_timeline_get_absolute_value_2=Y.spine_physics_constraint_damping_timeline_get_absolute_value_2;a._spine_physics_constraint_damping_timeline_get_scale_value=Y.spine_physics_constraint_damping_timeline_get_scale_value;a._spine_physics_constraint_damping_timeline_set_linear=Y.spine_physics_constraint_damping_timeline_set_linear; +a._spine_physics_constraint_damping_timeline_set_stepped=Y.spine_physics_constraint_damping_timeline_set_stepped;a._spine_physics_constraint_damping_timeline_set_bezier=Y.spine_physics_constraint_damping_timeline_set_bezier;a._spine_physics_constraint_damping_timeline_get_bezier_value=Y.spine_physics_constraint_damping_timeline_get_bezier_value;a._spine_physics_constraint_damping_timeline_get_curves=Y.spine_physics_constraint_damping_timeline_get_curves; +a._spine_physics_constraint_damping_timeline_get_frame_entries=Y.spine_physics_constraint_damping_timeline_get_frame_entries;a._spine_physics_constraint_damping_timeline_get_frame_count=Y.spine_physics_constraint_damping_timeline_get_frame_count;a._spine_physics_constraint_damping_timeline_get_frames=Y.spine_physics_constraint_damping_timeline_get_frames;a._spine_physics_constraint_damping_timeline_get_duration=Y.spine_physics_constraint_damping_timeline_get_duration; +a._spine_physics_constraint_damping_timeline_get_property_ids=Y.spine_physics_constraint_damping_timeline_get_property_ids;a._spine_physics_constraint_damping_timeline_rtti=Y.spine_physics_constraint_damping_timeline_rtti;a._spine_slot_curve_timeline_dispose=Y.spine_slot_curve_timeline_dispose;a._spine_slot_curve_timeline_get_rtti=Y.spine_slot_curve_timeline_get_rtti;a._spine_slot_curve_timeline_apply=Y.spine_slot_curve_timeline_apply;a._spine_slot_curve_timeline_get_slot_index=Y.spine_slot_curve_timeline_get_slot_index; +a._spine_slot_curve_timeline_set_slot_index=Y.spine_slot_curve_timeline_set_slot_index;a._spine_slot_curve_timeline_set_linear=Y.spine_slot_curve_timeline_set_linear;a._spine_slot_curve_timeline_set_stepped=Y.spine_slot_curve_timeline_set_stepped;a._spine_slot_curve_timeline_set_bezier=Y.spine_slot_curve_timeline_set_bezier;a._spine_slot_curve_timeline_get_bezier_value=Y.spine_slot_curve_timeline_get_bezier_value;a._spine_slot_curve_timeline_get_curves=Y.spine_slot_curve_timeline_get_curves; +a._spine_slot_curve_timeline_get_frame_entries=Y.spine_slot_curve_timeline_get_frame_entries;a._spine_slot_curve_timeline_get_frame_count=Y.spine_slot_curve_timeline_get_frame_count;a._spine_slot_curve_timeline_get_frames=Y.spine_slot_curve_timeline_get_frames;a._spine_slot_curve_timeline_get_duration=Y.spine_slot_curve_timeline_get_duration;a._spine_slot_curve_timeline_get_property_ids=Y.spine_slot_curve_timeline_get_property_ids;a._spine_slot_curve_timeline_rtti=Y.spine_slot_curve_timeline_rtti; +a._spine_slot_create=Y.spine_slot_create;a._spine_slot_dispose=Y.spine_slot_dispose;a._spine_slot_get_bone=Y.spine_slot_get_bone;a._spine_slot_setup_pose=Y.spine_slot_setup_pose;a._spine_slot_get_data=Y.spine_slot_get_data;a._spine_slot_get_pose=Y.spine_slot_get_pose;a._spine_slot_get_applied_pose=Y.spine_slot_get_applied_pose;a._spine_slot_reset_constrained=Y.spine_slot_reset_constrained;a._spine_slot_constrained=Y.spine_slot_constrained;a._spine_slot_is_pose_equal_to_applied=Y.spine_slot_is_pose_equal_to_applied; +a._spine_path_constraint_data_create=Y.spine_path_constraint_data_create;a._spine_path_constraint_data_dispose=Y.spine_path_constraint_data_dispose;a._spine_path_constraint_data_get_rtti=Y.spine_path_constraint_data_get_rtti;a._spine_path_constraint_data_create_method=Y.spine_path_constraint_data_create_method;a._spine_path_constraint_data_get_bones=Y.spine_path_constraint_data_get_bones;a._spine_path_constraint_data_get_slot=Y.spine_path_constraint_data_get_slot; +a._spine_path_constraint_data_set_slot=Y.spine_path_constraint_data_set_slot;a._spine_path_constraint_data_get_position_mode=Y.spine_path_constraint_data_get_position_mode;a._spine_path_constraint_data_set_position_mode=Y.spine_path_constraint_data_set_position_mode;a._spine_path_constraint_data_get_spacing_mode=Y.spine_path_constraint_data_get_spacing_mode;a._spine_path_constraint_data_set_spacing_mode=Y.spine_path_constraint_data_set_spacing_mode;a._spine_path_constraint_data_get_rotate_mode=Y.spine_path_constraint_data_get_rotate_mode; +a._spine_path_constraint_data_set_rotate_mode=Y.spine_path_constraint_data_set_rotate_mode;a._spine_path_constraint_data_get_offset_rotation=Y.spine_path_constraint_data_get_offset_rotation;a._spine_path_constraint_data_set_offset_rotation=Y.spine_path_constraint_data_set_offset_rotation;a._spine_path_constraint_data_get_name=Y.spine_path_constraint_data_get_name;a._spine_path_constraint_data_get_skin_required=Y.spine_path_constraint_data_get_skin_required; +a._spine_path_constraint_data_get_setup_pose=Y.spine_path_constraint_data_get_setup_pose;a._spine_path_constraint_data_set_skin_required=Y.spine_path_constraint_data_set_skin_required;a._spine_path_constraint_data_rtti=Y.spine_path_constraint_data_rtti;a._spine_physics_constraint_strength_timeline_create=Y.spine_physics_constraint_strength_timeline_create;a._spine_physics_constraint_strength_timeline_dispose=Y.spine_physics_constraint_strength_timeline_dispose; +a._spine_physics_constraint_strength_timeline_get_rtti=Y.spine_physics_constraint_strength_timeline_get_rtti;a._spine_physics_constraint_strength_timeline_apply=Y.spine_physics_constraint_strength_timeline_apply;a._spine_physics_constraint_strength_timeline_get_constraint_index=Y.spine_physics_constraint_strength_timeline_get_constraint_index;a._spine_physics_constraint_strength_timeline_set_constraint_index=Y.spine_physics_constraint_strength_timeline_set_constraint_index; +a._spine_physics_constraint_strength_timeline_set_frame=Y.spine_physics_constraint_strength_timeline_set_frame;a._spine_physics_constraint_strength_timeline_get_curve_value=Y.spine_physics_constraint_strength_timeline_get_curve_value;a._spine_physics_constraint_strength_timeline_get_relative_value=Y.spine_physics_constraint_strength_timeline_get_relative_value;a._spine_physics_constraint_strength_timeline_get_absolute_value_1=Y.spine_physics_constraint_strength_timeline_get_absolute_value_1; +a._spine_physics_constraint_strength_timeline_get_absolute_value_2=Y.spine_physics_constraint_strength_timeline_get_absolute_value_2;a._spine_physics_constraint_strength_timeline_get_scale_value=Y.spine_physics_constraint_strength_timeline_get_scale_value;a._spine_physics_constraint_strength_timeline_set_linear=Y.spine_physics_constraint_strength_timeline_set_linear;a._spine_physics_constraint_strength_timeline_set_stepped=Y.spine_physics_constraint_strength_timeline_set_stepped; +a._spine_physics_constraint_strength_timeline_set_bezier=Y.spine_physics_constraint_strength_timeline_set_bezier;a._spine_physics_constraint_strength_timeline_get_bezier_value=Y.spine_physics_constraint_strength_timeline_get_bezier_value;a._spine_physics_constraint_strength_timeline_get_curves=Y.spine_physics_constraint_strength_timeline_get_curves;a._spine_physics_constraint_strength_timeline_get_frame_entries=Y.spine_physics_constraint_strength_timeline_get_frame_entries; +a._spine_physics_constraint_strength_timeline_get_frame_count=Y.spine_physics_constraint_strength_timeline_get_frame_count;a._spine_physics_constraint_strength_timeline_get_frames=Y.spine_physics_constraint_strength_timeline_get_frames;a._spine_physics_constraint_strength_timeline_get_duration=Y.spine_physics_constraint_strength_timeline_get_duration;a._spine_physics_constraint_strength_timeline_get_property_ids=Y.spine_physics_constraint_strength_timeline_get_property_ids; +a._spine_physics_constraint_strength_timeline_rtti=Y.spine_physics_constraint_strength_timeline_rtti;a._spine_vertex_attachment_dispose=Y.spine_vertex_attachment_dispose;a._spine_vertex_attachment_get_rtti=Y.spine_vertex_attachment_get_rtti;a._spine_vertex_attachment_compute_world_vertices_1=Y.spine_vertex_attachment_compute_world_vertices_1;a._spine_vertex_attachment_compute_world_vertices_2=Y.spine_vertex_attachment_compute_world_vertices_2;a._spine_vertex_attachment_get_id=Y.spine_vertex_attachment_get_id; +a._spine_vertex_attachment_get_bones=Y.spine_vertex_attachment_get_bones;a._spine_vertex_attachment_set_bones=Y.spine_vertex_attachment_set_bones;a._spine_vertex_attachment_get_vertices=Y.spine_vertex_attachment_get_vertices;a._spine_vertex_attachment_set_vertices=Y.spine_vertex_attachment_set_vertices;a._spine_vertex_attachment_get_world_vertices_length=Y.spine_vertex_attachment_get_world_vertices_length;a._spine_vertex_attachment_set_world_vertices_length=Y.spine_vertex_attachment_set_world_vertices_length; +a._spine_vertex_attachment_get_timeline_attachment=Y.spine_vertex_attachment_get_timeline_attachment;a._spine_vertex_attachment_set_timeline_attachment=Y.spine_vertex_attachment_set_timeline_attachment;a._spine_vertex_attachment_copy_to=Y.spine_vertex_attachment_copy_to;a._spine_vertex_attachment_get_name=Y.spine_vertex_attachment_get_name;a._spine_vertex_attachment_copy=Y.spine_vertex_attachment_copy;a._spine_vertex_attachment_get_ref_count=Y.spine_vertex_attachment_get_ref_count; +a._spine_vertex_attachment_reference=Y.spine_vertex_attachment_reference;a._spine_vertex_attachment_dereference=Y.spine_vertex_attachment_dereference;a._spine_vertex_attachment_rtti=Y.spine_vertex_attachment_rtti;a._spine_slider_timeline_create=Y.spine_slider_timeline_create;a._spine_slider_timeline_dispose=Y.spine_slider_timeline_dispose;a._spine_slider_timeline_get_rtti=Y.spine_slider_timeline_get_rtti;a._spine_slider_timeline_apply=Y.spine_slider_timeline_apply; +a._spine_slider_timeline_get_constraint_index=Y.spine_slider_timeline_get_constraint_index;a._spine_slider_timeline_set_constraint_index=Y.spine_slider_timeline_set_constraint_index;a._spine_slider_timeline_set_frame=Y.spine_slider_timeline_set_frame;a._spine_slider_timeline_get_curve_value=Y.spine_slider_timeline_get_curve_value;a._spine_slider_timeline_get_relative_value=Y.spine_slider_timeline_get_relative_value;a._spine_slider_timeline_get_absolute_value_1=Y.spine_slider_timeline_get_absolute_value_1; +a._spine_slider_timeline_get_absolute_value_2=Y.spine_slider_timeline_get_absolute_value_2;a._spine_slider_timeline_get_scale_value=Y.spine_slider_timeline_get_scale_value;a._spine_slider_timeline_set_linear=Y.spine_slider_timeline_set_linear;a._spine_slider_timeline_set_stepped=Y.spine_slider_timeline_set_stepped;a._spine_slider_timeline_set_bezier=Y.spine_slider_timeline_set_bezier;a._spine_slider_timeline_get_bezier_value=Y.spine_slider_timeline_get_bezier_value; +a._spine_slider_timeline_get_curves=Y.spine_slider_timeline_get_curves;a._spine_slider_timeline_get_frame_entries=Y.spine_slider_timeline_get_frame_entries;a._spine_slider_timeline_get_frame_count=Y.spine_slider_timeline_get_frame_count;a._spine_slider_timeline_get_frames=Y.spine_slider_timeline_get_frames;a._spine_slider_timeline_get_duration=Y.spine_slider_timeline_get_duration;a._spine_slider_timeline_get_property_ids=Y.spine_slider_timeline_get_property_ids;a._spine_slider_timeline_rtti=Y.spine_slider_timeline_rtti; +a._spine_path_constraint_create=Y.spine_path_constraint_create;a._spine_path_constraint_dispose=Y.spine_path_constraint_dispose;a._spine_path_constraint_get_rtti=Y.spine_path_constraint_get_rtti;a._spine_path_constraint_copy=Y.spine_path_constraint_copy;a._spine_path_constraint_update=Y.spine_path_constraint_update;a._spine_path_constraint_sort=Y.spine_path_constraint_sort;a._spine_path_constraint_is_source_active=Y.spine_path_constraint_is_source_active;a._spine_path_constraint_get_bones=Y.spine_path_constraint_get_bones; +a._spine_path_constraint_get_slot=Y.spine_path_constraint_get_slot;a._spine_path_constraint_set_slot=Y.spine_path_constraint_set_slot;a._spine_path_constraint_get_data=Y.spine_path_constraint_get_data;a._spine_path_constraint_get_pose=Y.spine_path_constraint_get_pose;a._spine_path_constraint_get_applied_pose=Y.spine_path_constraint_get_applied_pose;a._spine_path_constraint_reset_constrained=Y.spine_path_constraint_reset_constrained;a._spine_path_constraint_constrained=Y.spine_path_constraint_constrained; +a._spine_path_constraint_is_pose_equal_to_applied=Y.spine_path_constraint_is_pose_equal_to_applied;a._spine_path_constraint_is_active=Y.spine_path_constraint_is_active;a._spine_path_constraint_set_active=Y.spine_path_constraint_set_active;a._spine_path_constraint_rtti=Y.spine_path_constraint_rtti;a._spine_update_dispose=Y.spine_update_dispose;a._spine_update_get_rtti=Y.spine_update_get_rtti;a._spine_update_update=Y.spine_update_update;a._spine_update_rtti=Y.spine_update_rtti; +a._spine_curve_timeline1_dispose=Y.spine_curve_timeline1_dispose;a._spine_curve_timeline1_get_rtti=Y.spine_curve_timeline1_get_rtti;a._spine_curve_timeline1_set_frame=Y.spine_curve_timeline1_set_frame;a._spine_curve_timeline1_get_curve_value=Y.spine_curve_timeline1_get_curve_value;a._spine_curve_timeline1_get_relative_value=Y.spine_curve_timeline1_get_relative_value;a._spine_curve_timeline1_get_absolute_value_1=Y.spine_curve_timeline1_get_absolute_value_1; +a._spine_curve_timeline1_get_absolute_value_2=Y.spine_curve_timeline1_get_absolute_value_2;a._spine_curve_timeline1_get_scale_value=Y.spine_curve_timeline1_get_scale_value;a._spine_curve_timeline1_set_linear=Y.spine_curve_timeline1_set_linear;a._spine_curve_timeline1_set_stepped=Y.spine_curve_timeline1_set_stepped;a._spine_curve_timeline1_set_bezier=Y.spine_curve_timeline1_set_bezier;a._spine_curve_timeline1_get_bezier_value=Y.spine_curve_timeline1_get_bezier_value; +a._spine_curve_timeline1_get_curves=Y.spine_curve_timeline1_get_curves;a._spine_curve_timeline1_apply=Y.spine_curve_timeline1_apply;a._spine_curve_timeline1_get_frame_entries=Y.spine_curve_timeline1_get_frame_entries;a._spine_curve_timeline1_get_frame_count=Y.spine_curve_timeline1_get_frame_count;a._spine_curve_timeline1_get_frames=Y.spine_curve_timeline1_get_frames;a._spine_curve_timeline1_get_duration=Y.spine_curve_timeline1_get_duration;a._spine_curve_timeline1_get_property_ids=Y.spine_curve_timeline1_get_property_ids; +a._spine_curve_timeline1_rtti=Y.spine_curve_timeline1_rtti;a._spine_region_attachment_create=Y.spine_region_attachment_create;a._spine_region_attachment_dispose=Y.spine_region_attachment_dispose;a._spine_region_attachment_get_rtti=Y.spine_region_attachment_get_rtti;a._spine_region_attachment_update_region=Y.spine_region_attachment_update_region;a._spine_region_attachment_compute_world_vertices_1=Y.spine_region_attachment_compute_world_vertices_1; +a._spine_region_attachment_compute_world_vertices_2=Y.spine_region_attachment_compute_world_vertices_2;a._spine_region_attachment_get_x=Y.spine_region_attachment_get_x;a._spine_region_attachment_set_x=Y.spine_region_attachment_set_x;a._spine_region_attachment_get_y=Y.spine_region_attachment_get_y;a._spine_region_attachment_set_y=Y.spine_region_attachment_set_y;a._spine_region_attachment_get_rotation=Y.spine_region_attachment_get_rotation;a._spine_region_attachment_set_rotation=Y.spine_region_attachment_set_rotation; +a._spine_region_attachment_get_scale_x=Y.spine_region_attachment_get_scale_x;a._spine_region_attachment_set_scale_x=Y.spine_region_attachment_set_scale_x;a._spine_region_attachment_get_scale_y=Y.spine_region_attachment_get_scale_y;a._spine_region_attachment_set_scale_y=Y.spine_region_attachment_set_scale_y;a._spine_region_attachment_get_width=Y.spine_region_attachment_get_width;a._spine_region_attachment_set_width=Y.spine_region_attachment_set_width;a._spine_region_attachment_get_height=Y.spine_region_attachment_get_height; +a._spine_region_attachment_set_height=Y.spine_region_attachment_set_height;a._spine_region_attachment_get_color=Y.spine_region_attachment_get_color;a._spine_region_attachment_get_path=Y.spine_region_attachment_get_path;a._spine_region_attachment_set_path=Y.spine_region_attachment_set_path;a._spine_region_attachment_get_region=Y.spine_region_attachment_get_region;a._spine_region_attachment_set_region=Y.spine_region_attachment_set_region;a._spine_region_attachment_get_sequence=Y.spine_region_attachment_get_sequence; +a._spine_region_attachment_set_sequence=Y.spine_region_attachment_set_sequence;a._spine_region_attachment_get_offset=Y.spine_region_attachment_get_offset;a._spine_region_attachment_get_u_vs=Y.spine_region_attachment_get_u_vs;a._spine_region_attachment_copy=Y.spine_region_attachment_copy;a._spine_region_attachment_get_name=Y.spine_region_attachment_get_name;a._spine_region_attachment_get_ref_count=Y.spine_region_attachment_get_ref_count;a._spine_region_attachment_reference=Y.spine_region_attachment_reference; +a._spine_region_attachment_dereference=Y.spine_region_attachment_dereference;a._spine_region_attachment_rtti=Y.spine_region_attachment_rtti;a._spine_event_create=Y.spine_event_create;a._spine_event_dispose=Y.spine_event_dispose;a._spine_event_get_data=Y.spine_event_get_data;a._spine_event_get_time=Y.spine_event_get_time;a._spine_event_get_int=Y.spine_event_get_int;a._spine_event_set_int=Y.spine_event_set_int;a._spine_event_get_float=Y.spine_event_get_float;a._spine_event_set_float=Y.spine_event_set_float; +a._spine_event_get_string=Y.spine_event_get_string;a._spine_event_set_string=Y.spine_event_set_string;a._spine_event_get_volume=Y.spine_event_get_volume;a._spine_event_set_volume=Y.spine_event_set_volume;a._spine_event_get_balance=Y.spine_event_get_balance;a._spine_event_set_balance=Y.spine_event_set_balance;a._spine_atlas_region_create=Y.spine_atlas_region_create;a._spine_atlas_region_dispose=Y.spine_atlas_region_dispose;a._spine_atlas_region_get_rtti=Y.spine_atlas_region_get_rtti; +a._spine_atlas_region_get_page=Y.spine_atlas_region_get_page;a._spine_atlas_region_get_name=Y.spine_atlas_region_get_name;a._spine_atlas_region_get_index=Y.spine_atlas_region_get_index;a._spine_atlas_region_get_x=Y.spine_atlas_region_get_x;a._spine_atlas_region_get_y=Y.spine_atlas_region_get_y;a._spine_atlas_region_get_offset_x=Y.spine_atlas_region_get_offset_x;a._spine_atlas_region_get_offset_y=Y.spine_atlas_region_get_offset_y;a._spine_atlas_region_get_packed_width=Y.spine_atlas_region_get_packed_width; +a._spine_atlas_region_get_packed_height=Y.spine_atlas_region_get_packed_height;a._spine_atlas_region_get_original_width=Y.spine_atlas_region_get_original_width;a._spine_atlas_region_get_original_height=Y.spine_atlas_region_get_original_height;a._spine_atlas_region_get_rotate=Y.spine_atlas_region_get_rotate;a._spine_atlas_region_get_degrees=Y.spine_atlas_region_get_degrees;a._spine_atlas_region_get_splits=Y.spine_atlas_region_get_splits;a._spine_atlas_region_get_pads=Y.spine_atlas_region_get_pads; +a._spine_atlas_region_get_values=Y.spine_atlas_region_get_values;a._spine_atlas_region_set_page=Y.spine_atlas_region_set_page;a._spine_atlas_region_set_name=Y.spine_atlas_region_set_name;a._spine_atlas_region_set_index=Y.spine_atlas_region_set_index;a._spine_atlas_region_set_x=Y.spine_atlas_region_set_x;a._spine_atlas_region_set_y=Y.spine_atlas_region_set_y;a._spine_atlas_region_set_offset_x=Y.spine_atlas_region_set_offset_x;a._spine_atlas_region_set_offset_y=Y.spine_atlas_region_set_offset_y; +a._spine_atlas_region_set_packed_width=Y.spine_atlas_region_set_packed_width;a._spine_atlas_region_set_packed_height=Y.spine_atlas_region_set_packed_height;a._spine_atlas_region_set_original_width=Y.spine_atlas_region_set_original_width;a._spine_atlas_region_set_original_height=Y.spine_atlas_region_set_original_height;a._spine_atlas_region_set_rotate=Y.spine_atlas_region_set_rotate;a._spine_atlas_region_set_degrees=Y.spine_atlas_region_set_degrees;a._spine_atlas_region_set_splits=Y.spine_atlas_region_set_splits; +a._spine_atlas_region_set_pads=Y.spine_atlas_region_set_pads;a._spine_atlas_region_set_values=Y.spine_atlas_region_set_values;a._spine_atlas_region_get_u=Y.spine_atlas_region_get_u;a._spine_atlas_region_set_u=Y.spine_atlas_region_set_u;a._spine_atlas_region_get_v=Y.spine_atlas_region_get_v;a._spine_atlas_region_set_v=Y.spine_atlas_region_set_v;a._spine_atlas_region_get_u2=Y.spine_atlas_region_get_u2;a._spine_atlas_region_set_u2=Y.spine_atlas_region_set_u2;a._spine_atlas_region_get_v2=Y.spine_atlas_region_get_v2; +a._spine_atlas_region_set_v2=Y.spine_atlas_region_set_v2;a._spine_atlas_region_get_region_width=Y.spine_atlas_region_get_region_width;a._spine_atlas_region_set_region_width=Y.spine_atlas_region_set_region_width;a._spine_atlas_region_get_region_height=Y.spine_atlas_region_get_region_height;a._spine_atlas_region_set_region_height=Y.spine_atlas_region_set_region_height;a._spine_atlas_region_rtti=Y.spine_atlas_region_rtti;a._spine_constraint_data_dispose=Y.spine_constraint_data_dispose; +a._spine_constraint_data_get_rtti=Y.spine_constraint_data_get_rtti;a._spine_constraint_data_create_method=Y.spine_constraint_data_create_method;a._spine_constraint_data_get_name=Y.spine_constraint_data_get_name;a._spine_constraint_data_get_skin_required=Y.spine_constraint_data_get_skin_required;a._spine_constraint_data_rtti=Y.spine_constraint_data_rtti;a._spine_shear_x_timeline_create=Y.spine_shear_x_timeline_create;a._spine_shear_x_timeline_dispose=Y.spine_shear_x_timeline_dispose; +a._spine_shear_x_timeline_get_rtti=Y.spine_shear_x_timeline_get_rtti;a._spine_shear_x_timeline_apply=Y.spine_shear_x_timeline_apply;a._spine_shear_x_timeline_get_bone_index=Y.spine_shear_x_timeline_get_bone_index;a._spine_shear_x_timeline_set_bone_index=Y.spine_shear_x_timeline_set_bone_index;a._spine_shear_x_timeline_set_frame=Y.spine_shear_x_timeline_set_frame;a._spine_shear_x_timeline_get_curve_value=Y.spine_shear_x_timeline_get_curve_value;a._spine_shear_x_timeline_get_relative_value=Y.spine_shear_x_timeline_get_relative_value; +a._spine_shear_x_timeline_get_absolute_value_1=Y.spine_shear_x_timeline_get_absolute_value_1;a._spine_shear_x_timeline_get_absolute_value_2=Y.spine_shear_x_timeline_get_absolute_value_2;a._spine_shear_x_timeline_get_scale_value=Y.spine_shear_x_timeline_get_scale_value;a._spine_shear_x_timeline_set_linear=Y.spine_shear_x_timeline_set_linear;a._spine_shear_x_timeline_set_stepped=Y.spine_shear_x_timeline_set_stepped;a._spine_shear_x_timeline_set_bezier=Y.spine_shear_x_timeline_set_bezier; +a._spine_shear_x_timeline_get_bezier_value=Y.spine_shear_x_timeline_get_bezier_value;a._spine_shear_x_timeline_get_curves=Y.spine_shear_x_timeline_get_curves;a._spine_shear_x_timeline_get_frame_entries=Y.spine_shear_x_timeline_get_frame_entries;a._spine_shear_x_timeline_get_frame_count=Y.spine_shear_x_timeline_get_frame_count;a._spine_shear_x_timeline_get_frames=Y.spine_shear_x_timeline_get_frames;a._spine_shear_x_timeline_get_duration=Y.spine_shear_x_timeline_get_duration; +a._spine_shear_x_timeline_get_property_ids=Y.spine_shear_x_timeline_get_property_ids;a._spine_shear_x_timeline_rtti=Y.spine_shear_x_timeline_rtti;a._spine_from_scale_y_create=Y.spine_from_scale_y_create;a._spine_from_scale_y_dispose=Y.spine_from_scale_y_dispose;a._spine_from_scale_y_get_rtti=Y.spine_from_scale_y_get_rtti;a._spine_from_scale_y_value=Y.spine_from_scale_y_value;a._spine_from_scale_y_rtti=Y.spine_from_scale_y_rtti;a._spine_posed_active_dispose=Y.spine_posed_active_dispose; +a._spine_posed_active_is_active=Y.spine_posed_active_is_active;a._spine_posed_active_set_active=Y.spine_posed_active_set_active;a._spine_skeleton_data_create=Y.spine_skeleton_data_create;a._spine_skeleton_data_dispose=Y.spine_skeleton_data_dispose;a._spine_skeleton_data_find_bone=Y.spine_skeleton_data_find_bone;a._spine_skeleton_data_find_slot=Y.spine_skeleton_data_find_slot;a._spine_skeleton_data_find_skin=Y.spine_skeleton_data_find_skin;a._spine_skeleton_data_find_event=Y.spine_skeleton_data_find_event; +a._spine_skeleton_data_find_animation=Y.spine_skeleton_data_find_animation;a._spine_skeleton_data_get_name=Y.spine_skeleton_data_get_name;a._spine_skeleton_data_set_name=Y.spine_skeleton_data_set_name;a._spine_skeleton_data_get_bones=Y.spine_skeleton_data_get_bones;a._spine_skeleton_data_get_slots=Y.spine_skeleton_data_get_slots;a._spine_skeleton_data_get_skins=Y.spine_skeleton_data_get_skins;a._spine_skeleton_data_get_default_skin=Y.spine_skeleton_data_get_default_skin; +a._spine_skeleton_data_set_default_skin=Y.spine_skeleton_data_set_default_skin;a._spine_skeleton_data_get_events=Y.spine_skeleton_data_get_events;a._spine_skeleton_data_get_animations=Y.spine_skeleton_data_get_animations;a._spine_skeleton_data_get_constraints=Y.spine_skeleton_data_get_constraints;a._spine_skeleton_data_get_x=Y.spine_skeleton_data_get_x;a._spine_skeleton_data_set_x=Y.spine_skeleton_data_set_x;a._spine_skeleton_data_get_y=Y.spine_skeleton_data_get_y;a._spine_skeleton_data_set_y=Y.spine_skeleton_data_set_y; +a._spine_skeleton_data_get_width=Y.spine_skeleton_data_get_width;a._spine_skeleton_data_set_width=Y.spine_skeleton_data_set_width;a._spine_skeleton_data_get_height=Y.spine_skeleton_data_get_height;a._spine_skeleton_data_set_height=Y.spine_skeleton_data_set_height;a._spine_skeleton_data_get_reference_scale=Y.spine_skeleton_data_get_reference_scale;a._spine_skeleton_data_set_reference_scale=Y.spine_skeleton_data_set_reference_scale;a._spine_skeleton_data_get_version=Y.spine_skeleton_data_get_version; +a._spine_skeleton_data_set_version=Y.spine_skeleton_data_set_version;a._spine_skeleton_data_get_hash=Y.spine_skeleton_data_get_hash;a._spine_skeleton_data_set_hash=Y.spine_skeleton_data_set_hash;a._spine_skeleton_data_get_images_path=Y.spine_skeleton_data_get_images_path;a._spine_skeleton_data_set_images_path=Y.spine_skeleton_data_set_images_path;a._spine_skeleton_data_get_audio_path=Y.spine_skeleton_data_get_audio_path;a._spine_skeleton_data_set_audio_path=Y.spine_skeleton_data_set_audio_path; +a._spine_skeleton_data_get_fps=Y.spine_skeleton_data_get_fps;a._spine_skeleton_data_set_fps=Y.spine_skeleton_data_set_fps;a._spine_slider_create=Y.spine_slider_create;a._spine_slider_dispose=Y.spine_slider_dispose;a._spine_slider_get_rtti=Y.spine_slider_get_rtti;a._spine_slider_copy=Y.spine_slider_copy;a._spine_slider_update=Y.spine_slider_update;a._spine_slider_sort=Y.spine_slider_sort;a._spine_slider_is_source_active=Y.spine_slider_is_source_active;a._spine_slider_get_bone=Y.spine_slider_get_bone; +a._spine_slider_set_bone=Y.spine_slider_set_bone;a._spine_slider_get_data=Y.spine_slider_get_data;a._spine_slider_get_pose=Y.spine_slider_get_pose;a._spine_slider_get_applied_pose=Y.spine_slider_get_applied_pose;a._spine_slider_reset_constrained=Y.spine_slider_reset_constrained;a._spine_slider_constrained=Y.spine_slider_constrained;a._spine_slider_is_pose_equal_to_applied=Y.spine_slider_is_pose_equal_to_applied;a._spine_slider_is_active=Y.spine_slider_is_active;a._spine_slider_set_active=Y.spine_slider_set_active; +a._spine_slider_rtti=Y.spine_slider_rtti;a._spine_from_scale_x_create=Y.spine_from_scale_x_create;a._spine_from_scale_x_dispose=Y.spine_from_scale_x_dispose;a._spine_from_scale_x_get_rtti=Y.spine_from_scale_x_get_rtti;a._spine_from_scale_x_value=Y.spine_from_scale_x_value;a._spine_from_scale_x_rtti=Y.spine_from_scale_x_rtti;a._spine_rotate_timeline_create=Y.spine_rotate_timeline_create;a._spine_rotate_timeline_dispose=Y.spine_rotate_timeline_dispose;a._spine_rotate_timeline_get_rtti=Y.spine_rotate_timeline_get_rtti; +a._spine_rotate_timeline_apply=Y.spine_rotate_timeline_apply;a._spine_rotate_timeline_get_bone_index=Y.spine_rotate_timeline_get_bone_index;a._spine_rotate_timeline_set_bone_index=Y.spine_rotate_timeline_set_bone_index;a._spine_rotate_timeline_set_frame=Y.spine_rotate_timeline_set_frame;a._spine_rotate_timeline_get_curve_value=Y.spine_rotate_timeline_get_curve_value;a._spine_rotate_timeline_get_relative_value=Y.spine_rotate_timeline_get_relative_value; +a._spine_rotate_timeline_get_absolute_value_1=Y.spine_rotate_timeline_get_absolute_value_1;a._spine_rotate_timeline_get_absolute_value_2=Y.spine_rotate_timeline_get_absolute_value_2;a._spine_rotate_timeline_get_scale_value=Y.spine_rotate_timeline_get_scale_value;a._spine_rotate_timeline_set_linear=Y.spine_rotate_timeline_set_linear;a._spine_rotate_timeline_set_stepped=Y.spine_rotate_timeline_set_stepped;a._spine_rotate_timeline_set_bezier=Y.spine_rotate_timeline_set_bezier; +a._spine_rotate_timeline_get_bezier_value=Y.spine_rotate_timeline_get_bezier_value;a._spine_rotate_timeline_get_curves=Y.spine_rotate_timeline_get_curves;a._spine_rotate_timeline_get_frame_entries=Y.spine_rotate_timeline_get_frame_entries;a._spine_rotate_timeline_get_frame_count=Y.spine_rotate_timeline_get_frame_count;a._spine_rotate_timeline_get_frames=Y.spine_rotate_timeline_get_frames;a._spine_rotate_timeline_get_duration=Y.spine_rotate_timeline_get_duration; +a._spine_rotate_timeline_get_property_ids=Y.spine_rotate_timeline_get_property_ids;a._spine_rotate_timeline_rtti=Y.spine_rotate_timeline_rtti;a._spine_mesh_attachment_create=Y.spine_mesh_attachment_create;a._spine_mesh_attachment_dispose=Y.spine_mesh_attachment_dispose;a._spine_mesh_attachment_get_rtti=Y.spine_mesh_attachment_get_rtti;a._spine_mesh_attachment_compute_world_vertices_1=Y.spine_mesh_attachment_compute_world_vertices_1;a._spine_mesh_attachment_compute_world_vertices_2=Y.spine_mesh_attachment_compute_world_vertices_2; +a._spine_mesh_attachment_update_region=Y.spine_mesh_attachment_update_region;a._spine_mesh_attachment_get_hull_length=Y.spine_mesh_attachment_get_hull_length;a._spine_mesh_attachment_set_hull_length=Y.spine_mesh_attachment_set_hull_length;a._spine_mesh_attachment_get_region_u_vs=Y.spine_mesh_attachment_get_region_u_vs;a._spine_mesh_attachment_set_region_u_vs=Y.spine_mesh_attachment_set_region_u_vs;a._spine_mesh_attachment_get_u_vs=Y.spine_mesh_attachment_get_u_vs; +a._spine_mesh_attachment_get_triangles=Y.spine_mesh_attachment_get_triangles;a._spine_mesh_attachment_set_triangles=Y.spine_mesh_attachment_set_triangles;a._spine_mesh_attachment_get_color=Y.spine_mesh_attachment_get_color;a._spine_mesh_attachment_get_path=Y.spine_mesh_attachment_get_path;a._spine_mesh_attachment_set_path=Y.spine_mesh_attachment_set_path;a._spine_mesh_attachment_get_region=Y.spine_mesh_attachment_get_region;a._spine_mesh_attachment_set_region=Y.spine_mesh_attachment_set_region; +a._spine_mesh_attachment_get_sequence=Y.spine_mesh_attachment_get_sequence;a._spine_mesh_attachment_set_sequence=Y.spine_mesh_attachment_set_sequence;a._spine_mesh_attachment_get_parent_mesh=Y.spine_mesh_attachment_get_parent_mesh;a._spine_mesh_attachment_set_parent_mesh=Y.spine_mesh_attachment_set_parent_mesh;a._spine_mesh_attachment_get_edges=Y.spine_mesh_attachment_get_edges;a._spine_mesh_attachment_set_edges=Y.spine_mesh_attachment_set_edges;a._spine_mesh_attachment_get_width=Y.spine_mesh_attachment_get_width; +a._spine_mesh_attachment_set_width=Y.spine_mesh_attachment_set_width;a._spine_mesh_attachment_get_height=Y.spine_mesh_attachment_get_height;a._spine_mesh_attachment_set_height=Y.spine_mesh_attachment_set_height;a._spine_mesh_attachment_copy=Y.spine_mesh_attachment_copy;a._spine_mesh_attachment_new_linked_mesh=Y.spine_mesh_attachment_new_linked_mesh;a._spine_mesh_attachment_get_id=Y.spine_mesh_attachment_get_id;a._spine_mesh_attachment_get_bones=Y.spine_mesh_attachment_get_bones; +a._spine_mesh_attachment_set_bones=Y.spine_mesh_attachment_set_bones;a._spine_mesh_attachment_get_vertices=Y.spine_mesh_attachment_get_vertices;a._spine_mesh_attachment_set_vertices=Y.spine_mesh_attachment_set_vertices;a._spine_mesh_attachment_get_world_vertices_length=Y.spine_mesh_attachment_get_world_vertices_length;a._spine_mesh_attachment_set_world_vertices_length=Y.spine_mesh_attachment_set_world_vertices_length;a._spine_mesh_attachment_get_timeline_attachment=Y.spine_mesh_attachment_get_timeline_attachment; +a._spine_mesh_attachment_set_timeline_attachment=Y.spine_mesh_attachment_set_timeline_attachment;a._spine_mesh_attachment_copy_to=Y.spine_mesh_attachment_copy_to;a._spine_mesh_attachment_get_name=Y.spine_mesh_attachment_get_name;a._spine_mesh_attachment_get_ref_count=Y.spine_mesh_attachment_get_ref_count;a._spine_mesh_attachment_reference=Y.spine_mesh_attachment_reference;a._spine_mesh_attachment_dereference=Y.spine_mesh_attachment_dereference;a._spine_mesh_attachment_rtti=Y.spine_mesh_attachment_rtti; +a._spine_skeleton_bounds_create=Y.spine_skeleton_bounds_create;a._spine_skeleton_bounds_dispose=Y.spine_skeleton_bounds_dispose;a._spine_skeleton_bounds_update=Y.spine_skeleton_bounds_update;a._spine_skeleton_bounds_aabb_contains_point=Y.spine_skeleton_bounds_aabb_contains_point;a._spine_skeleton_bounds_aabb_intersects_segment=Y.spine_skeleton_bounds_aabb_intersects_segment;a._spine_skeleton_bounds_aabb_intersects_skeleton=Y.spine_skeleton_bounds_aabb_intersects_skeleton; +a._spine_skeleton_bounds_contains_point_1=Y.spine_skeleton_bounds_contains_point_1;a._spine_skeleton_bounds_contains_point_2=Y.spine_skeleton_bounds_contains_point_2;a._spine_skeleton_bounds_intersects_segment_1=Y.spine_skeleton_bounds_intersects_segment_1;a._spine_skeleton_bounds_intersects_segment_2=Y.spine_skeleton_bounds_intersects_segment_2;a._spine_skeleton_bounds_get_polygon=Y.spine_skeleton_bounds_get_polygon;a._spine_skeleton_bounds_get_bounding_box=Y.spine_skeleton_bounds_get_bounding_box; +a._spine_skeleton_bounds_get_polygons=Y.spine_skeleton_bounds_get_polygons;a._spine_skeleton_bounds_get_bounding_boxes=Y.spine_skeleton_bounds_get_bounding_boxes;a._spine_skeleton_bounds_get_min_x=Y.spine_skeleton_bounds_get_min_x;a._spine_skeleton_bounds_get_min_y=Y.spine_skeleton_bounds_get_min_y;a._spine_skeleton_bounds_get_max_x=Y.spine_skeleton_bounds_get_max_x;a._spine_skeleton_bounds_get_max_y=Y.spine_skeleton_bounds_get_max_y;a._spine_skeleton_bounds_get_width=Y.spine_skeleton_bounds_get_width; +a._spine_skeleton_bounds_get_height=Y.spine_skeleton_bounds_get_height;a._spine_atlas_page_create=Y.spine_atlas_page_create;a._spine_atlas_page_dispose=Y.spine_atlas_page_dispose;a._spine_atlas_page_get_name=Y.spine_atlas_page_get_name;a._spine_atlas_page_set_name=Y.spine_atlas_page_set_name;a._spine_atlas_page_get_texture_path=Y.spine_atlas_page_get_texture_path;a._spine_atlas_page_set_texture_path=Y.spine_atlas_page_set_texture_path;a._spine_atlas_page_get_format=Y.spine_atlas_page_get_format; +a._spine_atlas_page_set_format=Y.spine_atlas_page_set_format;a._spine_atlas_page_get_min_filter=Y.spine_atlas_page_get_min_filter;a._spine_atlas_page_set_min_filter=Y.spine_atlas_page_set_min_filter;a._spine_atlas_page_get_mag_filter=Y.spine_atlas_page_get_mag_filter;a._spine_atlas_page_set_mag_filter=Y.spine_atlas_page_set_mag_filter;a._spine_atlas_page_get_u_wrap=Y.spine_atlas_page_get_u_wrap;a._spine_atlas_page_set_u_wrap=Y.spine_atlas_page_set_u_wrap;a._spine_atlas_page_get_v_wrap=Y.spine_atlas_page_get_v_wrap; +a._spine_atlas_page_set_v_wrap=Y.spine_atlas_page_set_v_wrap;a._spine_atlas_page_get_width=Y.spine_atlas_page_get_width;a._spine_atlas_page_set_width=Y.spine_atlas_page_set_width;a._spine_atlas_page_get_height=Y.spine_atlas_page_get_height;a._spine_atlas_page_set_height=Y.spine_atlas_page_set_height;a._spine_atlas_page_get_pma=Y.spine_atlas_page_get_pma;a._spine_atlas_page_set_pma=Y.spine_atlas_page_set_pma;a._spine_atlas_page_get_index=Y.spine_atlas_page_get_index;a._spine_atlas_page_set_index=Y.spine_atlas_page_set_index; +a._spine_atlas_page_get_texture=Y.spine_atlas_page_get_texture;a._spine_atlas_page_set_texture=Y.spine_atlas_page_set_texture;a._spine_physics_constraint_inertia_timeline_create=Y.spine_physics_constraint_inertia_timeline_create;a._spine_physics_constraint_inertia_timeline_dispose=Y.spine_physics_constraint_inertia_timeline_dispose;a._spine_physics_constraint_inertia_timeline_get_rtti=Y.spine_physics_constraint_inertia_timeline_get_rtti;a._spine_physics_constraint_inertia_timeline_apply=Y.spine_physics_constraint_inertia_timeline_apply; +a._spine_physics_constraint_inertia_timeline_get_constraint_index=Y.spine_physics_constraint_inertia_timeline_get_constraint_index;a._spine_physics_constraint_inertia_timeline_set_constraint_index=Y.spine_physics_constraint_inertia_timeline_set_constraint_index;a._spine_physics_constraint_inertia_timeline_set_frame=Y.spine_physics_constraint_inertia_timeline_set_frame;a._spine_physics_constraint_inertia_timeline_get_curve_value=Y.spine_physics_constraint_inertia_timeline_get_curve_value; +a._spine_physics_constraint_inertia_timeline_get_relative_value=Y.spine_physics_constraint_inertia_timeline_get_relative_value;a._spine_physics_constraint_inertia_timeline_get_absolute_value_1=Y.spine_physics_constraint_inertia_timeline_get_absolute_value_1;a._spine_physics_constraint_inertia_timeline_get_absolute_value_2=Y.spine_physics_constraint_inertia_timeline_get_absolute_value_2;a._spine_physics_constraint_inertia_timeline_get_scale_value=Y.spine_physics_constraint_inertia_timeline_get_scale_value; +a._spine_physics_constraint_inertia_timeline_set_linear=Y.spine_physics_constraint_inertia_timeline_set_linear;a._spine_physics_constraint_inertia_timeline_set_stepped=Y.spine_physics_constraint_inertia_timeline_set_stepped;a._spine_physics_constraint_inertia_timeline_set_bezier=Y.spine_physics_constraint_inertia_timeline_set_bezier;a._spine_physics_constraint_inertia_timeline_get_bezier_value=Y.spine_physics_constraint_inertia_timeline_get_bezier_value; +a._spine_physics_constraint_inertia_timeline_get_curves=Y.spine_physics_constraint_inertia_timeline_get_curves;a._spine_physics_constraint_inertia_timeline_get_frame_entries=Y.spine_physics_constraint_inertia_timeline_get_frame_entries;a._spine_physics_constraint_inertia_timeline_get_frame_count=Y.spine_physics_constraint_inertia_timeline_get_frame_count;a._spine_physics_constraint_inertia_timeline_get_frames=Y.spine_physics_constraint_inertia_timeline_get_frames; +a._spine_physics_constraint_inertia_timeline_get_duration=Y.spine_physics_constraint_inertia_timeline_get_duration;a._spine_physics_constraint_inertia_timeline_get_property_ids=Y.spine_physics_constraint_inertia_timeline_get_property_ids;a._spine_physics_constraint_inertia_timeline_rtti=Y.spine_physics_constraint_inertia_timeline_rtti;a._spine_animation_state_data_create=Y.spine_animation_state_data_create;a._spine_animation_state_data_dispose=Y.spine_animation_state_data_dispose; +a._spine_animation_state_data_get_skeleton_data=Y.spine_animation_state_data_get_skeleton_data;a._spine_animation_state_data_get_default_mix=Y.spine_animation_state_data_get_default_mix;a._spine_animation_state_data_set_default_mix=Y.spine_animation_state_data_set_default_mix;a._spine_animation_state_data_set_mix_1=Y.spine_animation_state_data_set_mix_1;a._spine_animation_state_data_set_mix_2=Y.spine_animation_state_data_set_mix_2;a._spine_animation_state_data_get_mix=Y.spine_animation_state_data_get_mix; +a._spine_animation_state_data_clear=Y.spine_animation_state_data_clear;a._spine_shear_y_timeline_create=Y.spine_shear_y_timeline_create;a._spine_shear_y_timeline_dispose=Y.spine_shear_y_timeline_dispose;a._spine_shear_y_timeline_get_rtti=Y.spine_shear_y_timeline_get_rtti;a._spine_shear_y_timeline_apply=Y.spine_shear_y_timeline_apply;a._spine_shear_y_timeline_get_bone_index=Y.spine_shear_y_timeline_get_bone_index;a._spine_shear_y_timeline_set_bone_index=Y.spine_shear_y_timeline_set_bone_index; +a._spine_shear_y_timeline_set_frame=Y.spine_shear_y_timeline_set_frame;a._spine_shear_y_timeline_get_curve_value=Y.spine_shear_y_timeline_get_curve_value;a._spine_shear_y_timeline_get_relative_value=Y.spine_shear_y_timeline_get_relative_value;a._spine_shear_y_timeline_get_absolute_value_1=Y.spine_shear_y_timeline_get_absolute_value_1;a._spine_shear_y_timeline_get_absolute_value_2=Y.spine_shear_y_timeline_get_absolute_value_2;a._spine_shear_y_timeline_get_scale_value=Y.spine_shear_y_timeline_get_scale_value; +a._spine_shear_y_timeline_set_linear=Y.spine_shear_y_timeline_set_linear;a._spine_shear_y_timeline_set_stepped=Y.spine_shear_y_timeline_set_stepped;a._spine_shear_y_timeline_set_bezier=Y.spine_shear_y_timeline_set_bezier;a._spine_shear_y_timeline_get_bezier_value=Y.spine_shear_y_timeline_get_bezier_value;a._spine_shear_y_timeline_get_curves=Y.spine_shear_y_timeline_get_curves;a._spine_shear_y_timeline_get_frame_entries=Y.spine_shear_y_timeline_get_frame_entries; +a._spine_shear_y_timeline_get_frame_count=Y.spine_shear_y_timeline_get_frame_count;a._spine_shear_y_timeline_get_frames=Y.spine_shear_y_timeline_get_frames;a._spine_shear_y_timeline_get_duration=Y.spine_shear_y_timeline_get_duration;a._spine_shear_y_timeline_get_property_ids=Y.spine_shear_y_timeline_get_property_ids;a._spine_shear_y_timeline_rtti=Y.spine_shear_y_timeline_rtti;a._spine_event_data_create=Y.spine_event_data_create;a._spine_event_data_dispose=Y.spine_event_data_dispose; +a._spine_event_data_get_name=Y.spine_event_data_get_name;a._spine_event_data_get_int=Y.spine_event_data_get_int;a._spine_event_data_set_int=Y.spine_event_data_set_int;a._spine_event_data_get_float=Y.spine_event_data_get_float;a._spine_event_data_set_float=Y.spine_event_data_set_float;a._spine_event_data_get_string=Y.spine_event_data_get_string;a._spine_event_data_set_string=Y.spine_event_data_set_string;a._spine_event_data_get_audio_path=Y.spine_event_data_get_audio_path; +a._spine_event_data_set_audio_path=Y.spine_event_data_set_audio_path;a._spine_event_data_get_volume=Y.spine_event_data_get_volume;a._spine_event_data_set_volume=Y.spine_event_data_set_volume;a._spine_event_data_get_balance=Y.spine_event_data_get_balance;a._spine_event_data_set_balance=Y.spine_event_data_set_balance;a._spine_constraint_timeline1_dispose=Y.spine_constraint_timeline1_dispose;a._spine_constraint_timeline1_get_rtti=Y.spine_constraint_timeline1_get_rtti; +a._spine_constraint_timeline1_get_constraint_index=Y.spine_constraint_timeline1_get_constraint_index;a._spine_constraint_timeline1_set_constraint_index=Y.spine_constraint_timeline1_set_constraint_index;a._spine_constraint_timeline1_set_frame=Y.spine_constraint_timeline1_set_frame;a._spine_constraint_timeline1_get_curve_value=Y.spine_constraint_timeline1_get_curve_value;a._spine_constraint_timeline1_get_relative_value=Y.spine_constraint_timeline1_get_relative_value; +a._spine_constraint_timeline1_get_absolute_value_1=Y.spine_constraint_timeline1_get_absolute_value_1;a._spine_constraint_timeline1_get_absolute_value_2=Y.spine_constraint_timeline1_get_absolute_value_2;a._spine_constraint_timeline1_get_scale_value=Y.spine_constraint_timeline1_get_scale_value;a._spine_constraint_timeline1_set_linear=Y.spine_constraint_timeline1_set_linear;a._spine_constraint_timeline1_set_stepped=Y.spine_constraint_timeline1_set_stepped;a._spine_constraint_timeline1_set_bezier=Y.spine_constraint_timeline1_set_bezier; +a._spine_constraint_timeline1_get_bezier_value=Y.spine_constraint_timeline1_get_bezier_value;a._spine_constraint_timeline1_get_curves=Y.spine_constraint_timeline1_get_curves;a._spine_constraint_timeline1_apply=Y.spine_constraint_timeline1_apply;a._spine_constraint_timeline1_get_frame_entries=Y.spine_constraint_timeline1_get_frame_entries;a._spine_constraint_timeline1_get_frame_count=Y.spine_constraint_timeline1_get_frame_count;a._spine_constraint_timeline1_get_frames=Y.spine_constraint_timeline1_get_frames; +a._spine_constraint_timeline1_get_duration=Y.spine_constraint_timeline1_get_duration;a._spine_constraint_timeline1_get_property_ids=Y.spine_constraint_timeline1_get_property_ids;a._spine_constraint_timeline1_rtti=Y.spine_constraint_timeline1_rtti;a._spine_slider_data_create=Y.spine_slider_data_create;a._spine_slider_data_dispose=Y.spine_slider_data_dispose;a._spine_slider_data_get_rtti=Y.spine_slider_data_get_rtti;a._spine_slider_data_create_method=Y.spine_slider_data_create_method; +a._spine_slider_data_get_animation=Y.spine_slider_data_get_animation;a._spine_slider_data_set_animation=Y.spine_slider_data_set_animation;a._spine_slider_data_get_additive=Y.spine_slider_data_get_additive;a._spine_slider_data_set_additive=Y.spine_slider_data_set_additive;a._spine_slider_data_get_loop=Y.spine_slider_data_get_loop;a._spine_slider_data_set_loop=Y.spine_slider_data_set_loop;a._spine_slider_data_get_bone=Y.spine_slider_data_get_bone;a._spine_slider_data_set_bone=Y.spine_slider_data_set_bone; +a._spine_slider_data_get_property=Y.spine_slider_data_get_property;a._spine_slider_data_set_property=Y.spine_slider_data_set_property;a._spine_slider_data_get_scale=Y.spine_slider_data_get_scale;a._spine_slider_data_set_scale=Y.spine_slider_data_set_scale;a._spine_slider_data_get_offset=Y.spine_slider_data_get_offset;a._spine_slider_data_set_offset=Y.spine_slider_data_set_offset;a._spine_slider_data_get_local=Y.spine_slider_data_get_local;a._spine_slider_data_set_local=Y.spine_slider_data_set_local; +a._spine_slider_data_get_name=Y.spine_slider_data_get_name;a._spine_slider_data_get_skin_required=Y.spine_slider_data_get_skin_required;a._spine_slider_data_get_setup_pose=Y.spine_slider_data_get_setup_pose;a._spine_slider_data_set_skin_required=Y.spine_slider_data_set_skin_required;a._spine_slider_data_rtti=Y.spine_slider_data_rtti;a._malloc=Y.malloc;a._free=Y.free;var ha=Y._emscripten_stack_restore,ia=Y.emscripten_stack_get_current;a.wasmExports=Y; function Z(){0 toNativeUtf8(Allocator allocator) { + Pointer toNativeUtf8({Allocator allocator = malloc}) { final units = utf8.encode(this); final Pointer result = allocator(units.length + 1); final Uint8List nativeString = result.asTypedList(units.length + 1); diff --git a/spine-flutter/lib/generated/alpha_timeline.dart b/spine-flutter/lib/generated/alpha_timeline.dart index a5772f2a7..dc5ef8d82 100644 --- a/spine-flutter/lib/generated/alpha_timeline.dart +++ b/spine-flutter/lib/generated/alpha_timeline.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'curve_timeline1.dart'; diff --git a/spine-flutter/lib/generated/animation.dart b/spine-flutter/lib/generated/animation.dart index 8a604f6ba..73073f20e 100644 --- a/spine-flutter/lib/generated/animation.dart +++ b/spine-flutter/lib/generated/animation.dart @@ -29,8 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; -import 'package:ffi/ffi.dart'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'arrays.dart'; diff --git a/spine-flutter/lib/generated/animation_state.dart b/spine-flutter/lib/generated/animation_state.dart index e586263a3..7768a3ce7 100644 --- a/spine-flutter/lib/generated/animation_state.dart +++ b/spine-flutter/lib/generated/animation_state.dart @@ -29,8 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; -import 'package:ffi/ffi.dart'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'animation.dart'; diff --git a/spine-flutter/lib/generated/animation_state_data.dart b/spine-flutter/lib/generated/animation_state_data.dart index bfb89971c..5415ee9d3 100644 --- a/spine-flutter/lib/generated/animation_state_data.dart +++ b/spine-flutter/lib/generated/animation_state_data.dart @@ -29,8 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; -import 'package:ffi/ffi.dart'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'animation.dart'; diff --git a/spine-flutter/lib/generated/arrays.dart b/spine-flutter/lib/generated/arrays.dart index fc147cfd8..3677e58ed 100644 --- a/spine-flutter/lib/generated/arrays.dart +++ b/spine-flutter/lib/generated/arrays.dart @@ -29,8 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; -import 'package:ffi/ffi.dart'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import '../native_array.dart'; @@ -122,7 +121,22 @@ import 'update.dart'; /// ArrayFloat wrapper class ArrayFloat extends NativeArray { - ArrayFloat.fromPointer(Pointer super.ptr); + final bool _ownsMemory; + + ArrayFloat.fromPointer(Pointer super.ptr, {bool ownsMemory = false}) + : _ownsMemory = ownsMemory; + + /// Create a new empty array + factory ArrayFloat() { + final ptr = SpineBindings.bindings.spine_array_float_create(); + return ArrayFloat.fromPointer(ptr.cast(), ownsMemory: true); + } + + /// Create a new array with the specified initial capacity + factory ArrayFloat.withCapacity(int initialCapacity) { + final ptr = SpineBindings.bindings.spine_array_float_create_with_capacity(initialCapacity); + return ArrayFloat.fromPointer(ptr.cast(), ownsMemory: true); + } @override int get length { @@ -137,11 +151,69 @@ class ArrayFloat extends NativeArray { final buffer = SpineBindings.bindings.spine_array_float_buffer(nativePtr.cast()); return buffer.cast()[index]; } + + @override + set length(int newLength) { + SpineBindings.bindings.spine_array_float_set_size(nativePtr.cast(), newLength, 0.0); + } + + /// Adds a value to the end of this array. + @override + void add(double value) { + SpineBindings.bindings.spine_array_float_add(nativePtr.cast(), value); + } + + /// Removes all elements from this array. + @override + void clear() { + SpineBindings.bindings.spine_array_float_clear(nativePtr.cast()); + } + + /// Removes the element at the given index. + @override + double removeAt(int index) { + if (index < 0 || index >= length) { + throw RangeError.index(index, this, 'index'); + } + final value = this[index]; + SpineBindings.bindings.spine_array_float_remove_at(nativePtr.cast(), index); + return value; + } + + /// Ensures this array has at least the given capacity. + void ensureCapacity(int capacity) { + SpineBindings.bindings.spine_array_float_ensure_capacity(nativePtr.cast(), capacity); + } + + /// Dispose of the native array + /// Throws an error if the array was not created by this class (i.e., it was obtained from C) + void dispose() { + if (!_ownsMemory) { + throw StateError( + 'Cannot dispose ArrayFloat that was created from C. Only arrays created via factory constructors can be disposed.'); + } + SpineBindings.bindings.spine_array_float_dispose(nativePtr.cast()); + } } /// ArrayInt wrapper class ArrayInt extends NativeArray { - ArrayInt.fromPointer(Pointer super.ptr); + final bool _ownsMemory; + + ArrayInt.fromPointer(Pointer super.ptr, {bool ownsMemory = false}) + : _ownsMemory = ownsMemory; + + /// Create a new empty array + factory ArrayInt() { + final ptr = SpineBindings.bindings.spine_array_int_create(); + return ArrayInt.fromPointer(ptr.cast(), ownsMemory: true); + } + + /// Create a new array with the specified initial capacity + factory ArrayInt.withCapacity(int initialCapacity) { + final ptr = SpineBindings.bindings.spine_array_int_create_with_capacity(initialCapacity); + return ArrayInt.fromPointer(ptr.cast(), ownsMemory: true); + } @override int get length { @@ -156,11 +228,69 @@ class ArrayInt extends NativeArray { final buffer = SpineBindings.bindings.spine_array_int_buffer(nativePtr.cast()); return buffer.cast()[index]; } + + @override + set length(int newLength) { + SpineBindings.bindings.spine_array_int_set_size(nativePtr.cast(), newLength, 0); + } + + /// Adds a value to the end of this array. + @override + void add(int value) { + SpineBindings.bindings.spine_array_int_add(nativePtr.cast(), value); + } + + /// Removes all elements from this array. + @override + void clear() { + SpineBindings.bindings.spine_array_int_clear(nativePtr.cast()); + } + + /// Removes the element at the given index. + @override + int removeAt(int index) { + if (index < 0 || index >= length) { + throw RangeError.index(index, this, 'index'); + } + final value = this[index]; + SpineBindings.bindings.spine_array_int_remove_at(nativePtr.cast(), index); + return value; + } + + /// Ensures this array has at least the given capacity. + void ensureCapacity(int capacity) { + SpineBindings.bindings.spine_array_int_ensure_capacity(nativePtr.cast(), capacity); + } + + /// Dispose of the native array + /// Throws an error if the array was not created by this class (i.e., it was obtained from C) + void dispose() { + if (!_ownsMemory) { + throw StateError( + 'Cannot dispose ArrayInt that was created from C. Only arrays created via factory constructors can be disposed.'); + } + SpineBindings.bindings.spine_array_int_dispose(nativePtr.cast()); + } } /// ArrayUnsignedShort wrapper class ArrayUnsignedShort extends NativeArray { - ArrayUnsignedShort.fromPointer(Pointer super.ptr); + final bool _ownsMemory; + + ArrayUnsignedShort.fromPointer(Pointer super.ptr, {bool ownsMemory = false}) + : _ownsMemory = ownsMemory; + + /// Create a new empty array + factory ArrayUnsignedShort() { + final ptr = SpineBindings.bindings.spine_array_unsigned_short_create(); + return ArrayUnsignedShort.fromPointer(ptr.cast(), ownsMemory: true); + } + + /// Create a new array with the specified initial capacity + factory ArrayUnsignedShort.withCapacity(int initialCapacity) { + final ptr = SpineBindings.bindings.spine_array_unsigned_short_create_with_capacity(initialCapacity); + return ArrayUnsignedShort.fromPointer(ptr.cast(), ownsMemory: true); + } @override int get length { @@ -175,11 +305,69 @@ class ArrayUnsignedShort extends NativeArray { final buffer = SpineBindings.bindings.spine_array_unsigned_short_buffer(nativePtr.cast()); return buffer.cast()[index]; } + + @override + set length(int newLength) { + SpineBindings.bindings.spine_array_unsigned_short_set_size(nativePtr.cast(), newLength, 0); + } + + /// Adds a value to the end of this array. + @override + void add(int value) { + SpineBindings.bindings.spine_array_unsigned_short_add(nativePtr.cast(), value); + } + + /// Removes all elements from this array. + @override + void clear() { + SpineBindings.bindings.spine_array_unsigned_short_clear(nativePtr.cast()); + } + + /// Removes the element at the given index. + @override + int removeAt(int index) { + if (index < 0 || index >= length) { + throw RangeError.index(index, this, 'index'); + } + final value = this[index]; + SpineBindings.bindings.spine_array_unsigned_short_remove_at(nativePtr.cast(), index); + return value; + } + + /// Ensures this array has at least the given capacity. + void ensureCapacity(int capacity) { + SpineBindings.bindings.spine_array_unsigned_short_ensure_capacity(nativePtr.cast(), capacity); + } + + /// Dispose of the native array + /// Throws an error if the array was not created by this class (i.e., it was obtained from C) + void dispose() { + if (!_ownsMemory) { + throw StateError( + 'Cannot dispose ArrayUnsignedShort that was created from C. Only arrays created via factory constructors can be disposed.'); + } + SpineBindings.bindings.spine_array_unsigned_short_dispose(nativePtr.cast()); + } } /// ArrayPropertyId wrapper class ArrayPropertyId extends NativeArray { - ArrayPropertyId.fromPointer(Pointer super.ptr); + final bool _ownsMemory; + + ArrayPropertyId.fromPointer(Pointer super.ptr, {bool ownsMemory = false}) + : _ownsMemory = ownsMemory; + + /// Create a new empty array + factory ArrayPropertyId() { + final ptr = SpineBindings.bindings.spine_array_property_id_create(); + return ArrayPropertyId.fromPointer(ptr.cast(), ownsMemory: true); + } + + /// Create a new array with the specified initial capacity + factory ArrayPropertyId.withCapacity(int initialCapacity) { + final ptr = SpineBindings.bindings.spine_array_property_id_create_with_capacity(initialCapacity); + return ArrayPropertyId.fromPointer(ptr.cast(), ownsMemory: true); + } @override int get length { @@ -195,11 +383,69 @@ class ArrayPropertyId extends NativeArray { // NOTE: This will not compile due to C API bug - buffer() returns int instead of Pointer return buffer.cast()[index]; } + + @override + set length(int newLength) { + SpineBindings.bindings.spine_array_property_id_set_size(nativePtr.cast(), newLength, 0); + } + + /// Adds a value to the end of this array. + @override + void add(int value) { + SpineBindings.bindings.spine_array_property_id_add(nativePtr.cast(), value); + } + + /// Removes all elements from this array. + @override + void clear() { + SpineBindings.bindings.spine_array_property_id_clear(nativePtr.cast()); + } + + /// Removes the element at the given index. + @override + int removeAt(int index) { + if (index < 0 || index >= length) { + throw RangeError.index(index, this, 'index'); + } + final value = this[index]; + SpineBindings.bindings.spine_array_property_id_remove_at(nativePtr.cast(), index); + return value; + } + + /// Ensures this array has at least the given capacity. + void ensureCapacity(int capacity) { + SpineBindings.bindings.spine_array_property_id_ensure_capacity(nativePtr.cast(), capacity); + } + + /// Dispose of the native array + /// Throws an error if the array was not created by this class (i.e., it was obtained from C) + void dispose() { + if (!_ownsMemory) { + throw StateError( + 'Cannot dispose ArrayPropertyId that was created from C. Only arrays created via factory constructors can be disposed.'); + } + SpineBindings.bindings.spine_array_property_id_dispose(nativePtr.cast()); + } } /// ArrayAnimation wrapper class ArrayAnimation extends NativeArray { - ArrayAnimation.fromPointer(Pointer super.ptr); + final bool _ownsMemory; + + ArrayAnimation.fromPointer(Pointer super.ptr, {bool ownsMemory = false}) + : _ownsMemory = ownsMemory; + + /// Create a new empty array + factory ArrayAnimation() { + final ptr = SpineBindings.bindings.spine_array_animation_create(); + return ArrayAnimation.fromPointer(ptr.cast(), ownsMemory: true); + } + + /// Create a new array with the specified initial capacity + factory ArrayAnimation.withCapacity(int initialCapacity) { + final ptr = SpineBindings.bindings.spine_array_animation_create_with_capacity(initialCapacity); + return ArrayAnimation.fromPointer(ptr.cast(), ownsMemory: true); + } @override int get length { @@ -214,11 +460,70 @@ class ArrayAnimation extends NativeArray { final buffer = SpineBindings.bindings.spine_array_animation_buffer(nativePtr.cast()); return buffer[index].address == 0 ? null : Animation.fromPointer(buffer[index]); } + + @override + set length(int newLength) { + SpineBindings.bindings.spine_array_animation_set_size(nativePtr.cast(), newLength, Pointer.fromAddress(0)); + } + + /// Adds a value to the end of this array. + @override + void add(Animation? value) { + SpineBindings.bindings + .spine_array_animation_add(nativePtr.cast(), value?.nativePtr.cast() ?? Pointer.fromAddress(0)); + } + + /// Removes all elements from this array. + @override + void clear() { + SpineBindings.bindings.spine_array_animation_clear(nativePtr.cast()); + } + + /// Removes the element at the given index. + @override + Animation? removeAt(int index) { + if (index < 0 || index >= length) { + throw RangeError.index(index, this, 'index'); + } + final value = this[index]; + SpineBindings.bindings.spine_array_animation_remove_at(nativePtr.cast(), index); + return value; + } + + /// Ensures this array has at least the given capacity. + void ensureCapacity(int capacity) { + SpineBindings.bindings.spine_array_animation_ensure_capacity(nativePtr.cast(), capacity); + } + + /// Dispose of the native array + /// Throws an error if the array was not created by this class (i.e., it was obtained from C) + void dispose() { + if (!_ownsMemory) { + throw StateError( + 'Cannot dispose ArrayAnimation that was created from C. Only arrays created via factory constructors can be disposed.'); + } + SpineBindings.bindings.spine_array_animation_dispose(nativePtr.cast()); + } } /// ArrayAtlasPage wrapper class ArrayAtlasPage extends NativeArray { - ArrayAtlasPage.fromPointer(Pointer super.ptr); + final bool _ownsMemory; + + ArrayAtlasPage.fromPointer(Pointer super.ptr, {bool ownsMemory = false}) + : _ownsMemory = ownsMemory; + + /// Create a new empty array + factory ArrayAtlasPage() { + final ptr = SpineBindings.bindings.spine_array_atlas_page_create(); + return ArrayAtlasPage.fromPointer(ptr.cast(), ownsMemory: true); + } + + /// Create a new array with the specified initial capacity + factory ArrayAtlasPage.withCapacity(int initialCapacity) { + final ptr = SpineBindings.bindings.spine_array_atlas_page_create_with_capacity(initialCapacity); + return ArrayAtlasPage.fromPointer(ptr.cast(), ownsMemory: true); + } @override int get length { @@ -233,11 +538,70 @@ class ArrayAtlasPage extends NativeArray { final buffer = SpineBindings.bindings.spine_array_atlas_page_buffer(nativePtr.cast()); return buffer[index].address == 0 ? null : AtlasPage.fromPointer(buffer[index]); } + + @override + set length(int newLength) { + SpineBindings.bindings.spine_array_atlas_page_set_size(nativePtr.cast(), newLength, Pointer.fromAddress(0)); + } + + /// Adds a value to the end of this array. + @override + void add(AtlasPage? value) { + SpineBindings.bindings + .spine_array_atlas_page_add(nativePtr.cast(), value?.nativePtr.cast() ?? Pointer.fromAddress(0)); + } + + /// Removes all elements from this array. + @override + void clear() { + SpineBindings.bindings.spine_array_atlas_page_clear(nativePtr.cast()); + } + + /// Removes the element at the given index. + @override + AtlasPage? removeAt(int index) { + if (index < 0 || index >= length) { + throw RangeError.index(index, this, 'index'); + } + final value = this[index]; + SpineBindings.bindings.spine_array_atlas_page_remove_at(nativePtr.cast(), index); + return value; + } + + /// Ensures this array has at least the given capacity. + void ensureCapacity(int capacity) { + SpineBindings.bindings.spine_array_atlas_page_ensure_capacity(nativePtr.cast(), capacity); + } + + /// Dispose of the native array + /// Throws an error if the array was not created by this class (i.e., it was obtained from C) + void dispose() { + if (!_ownsMemory) { + throw StateError( + 'Cannot dispose ArrayAtlasPage that was created from C. Only arrays created via factory constructors can be disposed.'); + } + SpineBindings.bindings.spine_array_atlas_page_dispose(nativePtr.cast()); + } } /// ArrayAtlasRegion wrapper class ArrayAtlasRegion extends NativeArray { - ArrayAtlasRegion.fromPointer(Pointer super.ptr); + final bool _ownsMemory; + + ArrayAtlasRegion.fromPointer(Pointer super.ptr, {bool ownsMemory = false}) + : _ownsMemory = ownsMemory; + + /// Create a new empty array + factory ArrayAtlasRegion() { + final ptr = SpineBindings.bindings.spine_array_atlas_region_create(); + return ArrayAtlasRegion.fromPointer(ptr.cast(), ownsMemory: true); + } + + /// Create a new array with the specified initial capacity + factory ArrayAtlasRegion.withCapacity(int initialCapacity) { + final ptr = SpineBindings.bindings.spine_array_atlas_region_create_with_capacity(initialCapacity); + return ArrayAtlasRegion.fromPointer(ptr.cast(), ownsMemory: true); + } @override int get length { @@ -252,11 +616,70 @@ class ArrayAtlasRegion extends NativeArray { final buffer = SpineBindings.bindings.spine_array_atlas_region_buffer(nativePtr.cast()); return buffer[index].address == 0 ? null : AtlasRegion.fromPointer(buffer[index]); } + + @override + set length(int newLength) { + SpineBindings.bindings.spine_array_atlas_region_set_size(nativePtr.cast(), newLength, Pointer.fromAddress(0)); + } + + /// Adds a value to the end of this array. + @override + void add(AtlasRegion? value) { + SpineBindings.bindings + .spine_array_atlas_region_add(nativePtr.cast(), value?.nativePtr.cast() ?? Pointer.fromAddress(0)); + } + + /// Removes all elements from this array. + @override + void clear() { + SpineBindings.bindings.spine_array_atlas_region_clear(nativePtr.cast()); + } + + /// Removes the element at the given index. + @override + AtlasRegion? removeAt(int index) { + if (index < 0 || index >= length) { + throw RangeError.index(index, this, 'index'); + } + final value = this[index]; + SpineBindings.bindings.spine_array_atlas_region_remove_at(nativePtr.cast(), index); + return value; + } + + /// Ensures this array has at least the given capacity. + void ensureCapacity(int capacity) { + SpineBindings.bindings.spine_array_atlas_region_ensure_capacity(nativePtr.cast(), capacity); + } + + /// Dispose of the native array + /// Throws an error if the array was not created by this class (i.e., it was obtained from C) + void dispose() { + if (!_ownsMemory) { + throw StateError( + 'Cannot dispose ArrayAtlasRegion that was created from C. Only arrays created via factory constructors can be disposed.'); + } + SpineBindings.bindings.spine_array_atlas_region_dispose(nativePtr.cast()); + } } /// ArrayAttachment wrapper class ArrayAttachment extends NativeArray { - ArrayAttachment.fromPointer(Pointer super.ptr); + final bool _ownsMemory; + + ArrayAttachment.fromPointer(Pointer super.ptr, {bool ownsMemory = false}) + : _ownsMemory = ownsMemory; + + /// Create a new empty array + factory ArrayAttachment() { + final ptr = SpineBindings.bindings.spine_array_attachment_create(); + return ArrayAttachment.fromPointer(ptr.cast(), ownsMemory: true); + } + + /// Create a new array with the specified initial capacity + factory ArrayAttachment.withCapacity(int initialCapacity) { + final ptr = SpineBindings.bindings.spine_array_attachment_create_with_capacity(initialCapacity); + return ArrayAttachment.fromPointer(ptr.cast(), ownsMemory: true); + } @override int get length { @@ -289,11 +712,70 @@ class ArrayAttachment extends NativeArray { throw UnsupportedError('Unknown concrete type: $className for abstract class Attachment'); } } + + @override + set length(int newLength) { + SpineBindings.bindings.spine_array_attachment_set_size(nativePtr.cast(), newLength, Pointer.fromAddress(0)); + } + + /// Adds a value to the end of this array. + @override + void add(Attachment? value) { + SpineBindings.bindings + .spine_array_attachment_add(nativePtr.cast(), value?.nativePtr.cast() ?? Pointer.fromAddress(0)); + } + + /// Removes all elements from this array. + @override + void clear() { + SpineBindings.bindings.spine_array_attachment_clear(nativePtr.cast()); + } + + /// Removes the element at the given index. + @override + Attachment? removeAt(int index) { + if (index < 0 || index >= length) { + throw RangeError.index(index, this, 'index'); + } + final value = this[index]; + SpineBindings.bindings.spine_array_attachment_remove_at(nativePtr.cast(), index); + return value; + } + + /// Ensures this array has at least the given capacity. + void ensureCapacity(int capacity) { + SpineBindings.bindings.spine_array_attachment_ensure_capacity(nativePtr.cast(), capacity); + } + + /// Dispose of the native array + /// Throws an error if the array was not created by this class (i.e., it was obtained from C) + void dispose() { + if (!_ownsMemory) { + throw StateError( + 'Cannot dispose ArrayAttachment that was created from C. Only arrays created via factory constructors can be disposed.'); + } + SpineBindings.bindings.spine_array_attachment_dispose(nativePtr.cast()); + } } /// ArrayBone wrapper class ArrayBone extends NativeArray { - ArrayBone.fromPointer(Pointer super.ptr); + final bool _ownsMemory; + + ArrayBone.fromPointer(Pointer super.ptr, {bool ownsMemory = false}) + : _ownsMemory = ownsMemory; + + /// Create a new empty array + factory ArrayBone() { + final ptr = SpineBindings.bindings.spine_array_bone_create(); + return ArrayBone.fromPointer(ptr.cast(), ownsMemory: true); + } + + /// Create a new array with the specified initial capacity + factory ArrayBone.withCapacity(int initialCapacity) { + final ptr = SpineBindings.bindings.spine_array_bone_create_with_capacity(initialCapacity); + return ArrayBone.fromPointer(ptr.cast(), ownsMemory: true); + } @override int get length { @@ -308,11 +790,69 @@ class ArrayBone extends NativeArray { final buffer = SpineBindings.bindings.spine_array_bone_buffer(nativePtr.cast()); return buffer[index].address == 0 ? null : Bone.fromPointer(buffer[index]); } + + @override + set length(int newLength) { + SpineBindings.bindings.spine_array_bone_set_size(nativePtr.cast(), newLength, Pointer.fromAddress(0)); + } + + /// Adds a value to the end of this array. + @override + void add(Bone? value) { + SpineBindings.bindings.spine_array_bone_add(nativePtr.cast(), value?.nativePtr.cast() ?? Pointer.fromAddress(0)); + } + + /// Removes all elements from this array. + @override + void clear() { + SpineBindings.bindings.spine_array_bone_clear(nativePtr.cast()); + } + + /// Removes the element at the given index. + @override + Bone? removeAt(int index) { + if (index < 0 || index >= length) { + throw RangeError.index(index, this, 'index'); + } + final value = this[index]; + SpineBindings.bindings.spine_array_bone_remove_at(nativePtr.cast(), index); + return value; + } + + /// Ensures this array has at least the given capacity. + void ensureCapacity(int capacity) { + SpineBindings.bindings.spine_array_bone_ensure_capacity(nativePtr.cast(), capacity); + } + + /// Dispose of the native array + /// Throws an error if the array was not created by this class (i.e., it was obtained from C) + void dispose() { + if (!_ownsMemory) { + throw StateError( + 'Cannot dispose ArrayBone that was created from C. Only arrays created via factory constructors can be disposed.'); + } + SpineBindings.bindings.spine_array_bone_dispose(nativePtr.cast()); + } } /// ArrayBoneData wrapper class ArrayBoneData extends NativeArray { - ArrayBoneData.fromPointer(Pointer super.ptr); + final bool _ownsMemory; + + ArrayBoneData.fromPointer(Pointer super.ptr, {bool ownsMemory = false}) + : _ownsMemory = ownsMemory; + + /// Create a new empty array + factory ArrayBoneData() { + final ptr = SpineBindings.bindings.spine_array_bone_data_create(); + return ArrayBoneData.fromPointer(ptr.cast(), ownsMemory: true); + } + + /// Create a new array with the specified initial capacity + factory ArrayBoneData.withCapacity(int initialCapacity) { + final ptr = SpineBindings.bindings.spine_array_bone_data_create_with_capacity(initialCapacity); + return ArrayBoneData.fromPointer(ptr.cast(), ownsMemory: true); + } @override int get length { @@ -327,11 +867,70 @@ class ArrayBoneData extends NativeArray { final buffer = SpineBindings.bindings.spine_array_bone_data_buffer(nativePtr.cast()); return buffer[index].address == 0 ? null : BoneData.fromPointer(buffer[index]); } + + @override + set length(int newLength) { + SpineBindings.bindings.spine_array_bone_data_set_size(nativePtr.cast(), newLength, Pointer.fromAddress(0)); + } + + /// Adds a value to the end of this array. + @override + void add(BoneData? value) { + SpineBindings.bindings + .spine_array_bone_data_add(nativePtr.cast(), value?.nativePtr.cast() ?? Pointer.fromAddress(0)); + } + + /// Removes all elements from this array. + @override + void clear() { + SpineBindings.bindings.spine_array_bone_data_clear(nativePtr.cast()); + } + + /// Removes the element at the given index. + @override + BoneData? removeAt(int index) { + if (index < 0 || index >= length) { + throw RangeError.index(index, this, 'index'); + } + final value = this[index]; + SpineBindings.bindings.spine_array_bone_data_remove_at(nativePtr.cast(), index); + return value; + } + + /// Ensures this array has at least the given capacity. + void ensureCapacity(int capacity) { + SpineBindings.bindings.spine_array_bone_data_ensure_capacity(nativePtr.cast(), capacity); + } + + /// Dispose of the native array + /// Throws an error if the array was not created by this class (i.e., it was obtained from C) + void dispose() { + if (!_ownsMemory) { + throw StateError( + 'Cannot dispose ArrayBoneData that was created from C. Only arrays created via factory constructors can be disposed.'); + } + SpineBindings.bindings.spine_array_bone_data_dispose(nativePtr.cast()); + } } /// ArrayBonePose wrapper class ArrayBonePose extends NativeArray { - ArrayBonePose.fromPointer(Pointer super.ptr); + final bool _ownsMemory; + + ArrayBonePose.fromPointer(Pointer super.ptr, {bool ownsMemory = false}) + : _ownsMemory = ownsMemory; + + /// Create a new empty array + factory ArrayBonePose() { + final ptr = SpineBindings.bindings.spine_array_bone_pose_create(); + return ArrayBonePose.fromPointer(ptr.cast(), ownsMemory: true); + } + + /// Create a new array with the specified initial capacity + factory ArrayBonePose.withCapacity(int initialCapacity) { + final ptr = SpineBindings.bindings.spine_array_bone_pose_create_with_capacity(initialCapacity); + return ArrayBonePose.fromPointer(ptr.cast(), ownsMemory: true); + } @override int get length { @@ -346,11 +945,71 @@ class ArrayBonePose extends NativeArray { final buffer = SpineBindings.bindings.spine_array_bone_pose_buffer(nativePtr.cast()); return buffer[index].address == 0 ? null : BonePose.fromPointer(buffer[index]); } + + @override + set length(int newLength) { + SpineBindings.bindings.spine_array_bone_pose_set_size(nativePtr.cast(), newLength, Pointer.fromAddress(0)); + } + + /// Adds a value to the end of this array. + @override + void add(BonePose? value) { + SpineBindings.bindings + .spine_array_bone_pose_add(nativePtr.cast(), value?.nativePtr.cast() ?? Pointer.fromAddress(0)); + } + + /// Removes all elements from this array. + @override + void clear() { + SpineBindings.bindings.spine_array_bone_pose_clear(nativePtr.cast()); + } + + /// Removes the element at the given index. + @override + BonePose? removeAt(int index) { + if (index < 0 || index >= length) { + throw RangeError.index(index, this, 'index'); + } + final value = this[index]; + SpineBindings.bindings.spine_array_bone_pose_remove_at(nativePtr.cast(), index); + return value; + } + + /// Ensures this array has at least the given capacity. + void ensureCapacity(int capacity) { + SpineBindings.bindings.spine_array_bone_pose_ensure_capacity(nativePtr.cast(), capacity); + } + + /// Dispose of the native array + /// Throws an error if the array was not created by this class (i.e., it was obtained from C) + void dispose() { + if (!_ownsMemory) { + throw StateError( + 'Cannot dispose ArrayBonePose that was created from C. Only arrays created via factory constructors can be disposed.'); + } + SpineBindings.bindings.spine_array_bone_pose_dispose(nativePtr.cast()); + } } /// ArrayBoundingBoxAttachment wrapper class ArrayBoundingBoxAttachment extends NativeArray { - ArrayBoundingBoxAttachment.fromPointer(Pointer super.ptr); + final bool _ownsMemory; + + ArrayBoundingBoxAttachment.fromPointer(Pointer super.ptr, + {bool ownsMemory = false}) + : _ownsMemory = ownsMemory; + + /// Create a new empty array + factory ArrayBoundingBoxAttachment() { + final ptr = SpineBindings.bindings.spine_array_bounding_box_attachment_create(); + return ArrayBoundingBoxAttachment.fromPointer(ptr.cast(), ownsMemory: true); + } + + /// Create a new array with the specified initial capacity + factory ArrayBoundingBoxAttachment.withCapacity(int initialCapacity) { + final ptr = SpineBindings.bindings.spine_array_bounding_box_attachment_create_with_capacity(initialCapacity); + return ArrayBoundingBoxAttachment.fromPointer(ptr.cast(), ownsMemory: true); + } @override int get length { @@ -365,11 +1024,71 @@ class ArrayBoundingBoxAttachment extends NativeArray { final buffer = SpineBindings.bindings.spine_array_bounding_box_attachment_buffer(nativePtr.cast()); return buffer[index].address == 0 ? null : BoundingBoxAttachment.fromPointer(buffer[index]); } + + @override + set length(int newLength) { + SpineBindings.bindings + .spine_array_bounding_box_attachment_set_size(nativePtr.cast(), newLength, Pointer.fromAddress(0)); + } + + /// Adds a value to the end of this array. + @override + void add(BoundingBoxAttachment? value) { + SpineBindings.bindings + .spine_array_bounding_box_attachment_add(nativePtr.cast(), value?.nativePtr.cast() ?? Pointer.fromAddress(0)); + } + + /// Removes all elements from this array. + @override + void clear() { + SpineBindings.bindings.spine_array_bounding_box_attachment_clear(nativePtr.cast()); + } + + /// Removes the element at the given index. + @override + BoundingBoxAttachment? removeAt(int index) { + if (index < 0 || index >= length) { + throw RangeError.index(index, this, 'index'); + } + final value = this[index]; + SpineBindings.bindings.spine_array_bounding_box_attachment_remove_at(nativePtr.cast(), index); + return value; + } + + /// Ensures this array has at least the given capacity. + void ensureCapacity(int capacity) { + SpineBindings.bindings.spine_array_bounding_box_attachment_ensure_capacity(nativePtr.cast(), capacity); + } + + /// Dispose of the native array + /// Throws an error if the array was not created by this class (i.e., it was obtained from C) + void dispose() { + if (!_ownsMemory) { + throw StateError( + 'Cannot dispose ArrayBoundingBoxAttachment that was created from C. Only arrays created via factory constructors can be disposed.'); + } + SpineBindings.bindings.spine_array_bounding_box_attachment_dispose(nativePtr.cast()); + } } /// ArrayConstraint wrapper class ArrayConstraint extends NativeArray { - ArrayConstraint.fromPointer(Pointer super.ptr); + final bool _ownsMemory; + + ArrayConstraint.fromPointer(Pointer super.ptr, {bool ownsMemory = false}) + : _ownsMemory = ownsMemory; + + /// Create a new empty array + factory ArrayConstraint() { + final ptr = SpineBindings.bindings.spine_array_constraint_create(); + return ArrayConstraint.fromPointer(ptr.cast(), ownsMemory: true); + } + + /// Create a new array with the specified initial capacity + factory ArrayConstraint.withCapacity(int initialCapacity) { + final ptr = SpineBindings.bindings.spine_array_constraint_create_with_capacity(initialCapacity); + return ArrayConstraint.fromPointer(ptr.cast(), ownsMemory: true); + } @override int get length { @@ -400,11 +1119,70 @@ class ArrayConstraint extends NativeArray { throw UnsupportedError('Unknown concrete type: $className for abstract class Constraint'); } } + + @override + set length(int newLength) { + SpineBindings.bindings.spine_array_constraint_set_size(nativePtr.cast(), newLength, Pointer.fromAddress(0)); + } + + /// Adds a value to the end of this array. + @override + void add(Constraint? value) { + SpineBindings.bindings + .spine_array_constraint_add(nativePtr.cast(), value?.nativePtr.cast() ?? Pointer.fromAddress(0)); + } + + /// Removes all elements from this array. + @override + void clear() { + SpineBindings.bindings.spine_array_constraint_clear(nativePtr.cast()); + } + + /// Removes the element at the given index. + @override + Constraint? removeAt(int index) { + if (index < 0 || index >= length) { + throw RangeError.index(index, this, 'index'); + } + final value = this[index]; + SpineBindings.bindings.spine_array_constraint_remove_at(nativePtr.cast(), index); + return value; + } + + /// Ensures this array has at least the given capacity. + void ensureCapacity(int capacity) { + SpineBindings.bindings.spine_array_constraint_ensure_capacity(nativePtr.cast(), capacity); + } + + /// Dispose of the native array + /// Throws an error if the array was not created by this class (i.e., it was obtained from C) + void dispose() { + if (!_ownsMemory) { + throw StateError( + 'Cannot dispose ArrayConstraint that was created from C. Only arrays created via factory constructors can be disposed.'); + } + SpineBindings.bindings.spine_array_constraint_dispose(nativePtr.cast()); + } } /// ArrayConstraintData wrapper class ArrayConstraintData extends NativeArray { - ArrayConstraintData.fromPointer(Pointer super.ptr); + final bool _ownsMemory; + + ArrayConstraintData.fromPointer(Pointer super.ptr, {bool ownsMemory = false}) + : _ownsMemory = ownsMemory; + + /// Create a new empty array + factory ArrayConstraintData() { + final ptr = SpineBindings.bindings.spine_array_constraint_data_create(); + return ArrayConstraintData.fromPointer(ptr.cast(), ownsMemory: true); + } + + /// Create a new array with the specified initial capacity + factory ArrayConstraintData.withCapacity(int initialCapacity) { + final ptr = SpineBindings.bindings.spine_array_constraint_data_create_with_capacity(initialCapacity); + return ArrayConstraintData.fromPointer(ptr.cast(), ownsMemory: true); + } @override int get length { @@ -435,11 +1213,70 @@ class ArrayConstraintData extends NativeArray { throw UnsupportedError('Unknown concrete type: $className for abstract class ConstraintData'); } } + + @override + set length(int newLength) { + SpineBindings.bindings.spine_array_constraint_data_set_size(nativePtr.cast(), newLength, Pointer.fromAddress(0)); + } + + /// Adds a value to the end of this array. + @override + void add(ConstraintData? value) { + SpineBindings.bindings + .spine_array_constraint_data_add(nativePtr.cast(), value?.nativePtr.cast() ?? Pointer.fromAddress(0)); + } + + /// Removes all elements from this array. + @override + void clear() { + SpineBindings.bindings.spine_array_constraint_data_clear(nativePtr.cast()); + } + + /// Removes the element at the given index. + @override + ConstraintData? removeAt(int index) { + if (index < 0 || index >= length) { + throw RangeError.index(index, this, 'index'); + } + final value = this[index]; + SpineBindings.bindings.spine_array_constraint_data_remove_at(nativePtr.cast(), index); + return value; + } + + /// Ensures this array has at least the given capacity. + void ensureCapacity(int capacity) { + SpineBindings.bindings.spine_array_constraint_data_ensure_capacity(nativePtr.cast(), capacity); + } + + /// Dispose of the native array + /// Throws an error if the array was not created by this class (i.e., it was obtained from C) + void dispose() { + if (!_ownsMemory) { + throw StateError( + 'Cannot dispose ArrayConstraintData that was created from C. Only arrays created via factory constructors can be disposed.'); + } + SpineBindings.bindings.spine_array_constraint_data_dispose(nativePtr.cast()); + } } /// ArrayEvent wrapper class ArrayEvent extends NativeArray { - ArrayEvent.fromPointer(Pointer super.ptr); + final bool _ownsMemory; + + ArrayEvent.fromPointer(Pointer super.ptr, {bool ownsMemory = false}) + : _ownsMemory = ownsMemory; + + /// Create a new empty array + factory ArrayEvent() { + final ptr = SpineBindings.bindings.spine_array_event_create(); + return ArrayEvent.fromPointer(ptr.cast(), ownsMemory: true); + } + + /// Create a new array with the specified initial capacity + factory ArrayEvent.withCapacity(int initialCapacity) { + final ptr = SpineBindings.bindings.spine_array_event_create_with_capacity(initialCapacity); + return ArrayEvent.fromPointer(ptr.cast(), ownsMemory: true); + } @override int get length { @@ -454,11 +1291,69 @@ class ArrayEvent extends NativeArray { final buffer = SpineBindings.bindings.spine_array_event_buffer(nativePtr.cast()); return buffer[index].address == 0 ? null : Event.fromPointer(buffer[index]); } + + @override + set length(int newLength) { + SpineBindings.bindings.spine_array_event_set_size(nativePtr.cast(), newLength, Pointer.fromAddress(0)); + } + + /// Adds a value to the end of this array. + @override + void add(Event? value) { + SpineBindings.bindings.spine_array_event_add(nativePtr.cast(), value?.nativePtr.cast() ?? Pointer.fromAddress(0)); + } + + /// Removes all elements from this array. + @override + void clear() { + SpineBindings.bindings.spine_array_event_clear(nativePtr.cast()); + } + + /// Removes the element at the given index. + @override + Event? removeAt(int index) { + if (index < 0 || index >= length) { + throw RangeError.index(index, this, 'index'); + } + final value = this[index]; + SpineBindings.bindings.spine_array_event_remove_at(nativePtr.cast(), index); + return value; + } + + /// Ensures this array has at least the given capacity. + void ensureCapacity(int capacity) { + SpineBindings.bindings.spine_array_event_ensure_capacity(nativePtr.cast(), capacity); + } + + /// Dispose of the native array + /// Throws an error if the array was not created by this class (i.e., it was obtained from C) + void dispose() { + if (!_ownsMemory) { + throw StateError( + 'Cannot dispose ArrayEvent that was created from C. Only arrays created via factory constructors can be disposed.'); + } + SpineBindings.bindings.spine_array_event_dispose(nativePtr.cast()); + } } /// ArrayEventData wrapper class ArrayEventData extends NativeArray { - ArrayEventData.fromPointer(Pointer super.ptr); + final bool _ownsMemory; + + ArrayEventData.fromPointer(Pointer super.ptr, {bool ownsMemory = false}) + : _ownsMemory = ownsMemory; + + /// Create a new empty array + factory ArrayEventData() { + final ptr = SpineBindings.bindings.spine_array_event_data_create(); + return ArrayEventData.fromPointer(ptr.cast(), ownsMemory: true); + } + + /// Create a new array with the specified initial capacity + factory ArrayEventData.withCapacity(int initialCapacity) { + final ptr = SpineBindings.bindings.spine_array_event_data_create_with_capacity(initialCapacity); + return ArrayEventData.fromPointer(ptr.cast(), ownsMemory: true); + } @override int get length { @@ -473,11 +1368,70 @@ class ArrayEventData extends NativeArray { final buffer = SpineBindings.bindings.spine_array_event_data_buffer(nativePtr.cast()); return buffer[index].address == 0 ? null : EventData.fromPointer(buffer[index]); } + + @override + set length(int newLength) { + SpineBindings.bindings.spine_array_event_data_set_size(nativePtr.cast(), newLength, Pointer.fromAddress(0)); + } + + /// Adds a value to the end of this array. + @override + void add(EventData? value) { + SpineBindings.bindings + .spine_array_event_data_add(nativePtr.cast(), value?.nativePtr.cast() ?? Pointer.fromAddress(0)); + } + + /// Removes all elements from this array. + @override + void clear() { + SpineBindings.bindings.spine_array_event_data_clear(nativePtr.cast()); + } + + /// Removes the element at the given index. + @override + EventData? removeAt(int index) { + if (index < 0 || index >= length) { + throw RangeError.index(index, this, 'index'); + } + final value = this[index]; + SpineBindings.bindings.spine_array_event_data_remove_at(nativePtr.cast(), index); + return value; + } + + /// Ensures this array has at least the given capacity. + void ensureCapacity(int capacity) { + SpineBindings.bindings.spine_array_event_data_ensure_capacity(nativePtr.cast(), capacity); + } + + /// Dispose of the native array + /// Throws an error if the array was not created by this class (i.e., it was obtained from C) + void dispose() { + if (!_ownsMemory) { + throw StateError( + 'Cannot dispose ArrayEventData that was created from C. Only arrays created via factory constructors can be disposed.'); + } + SpineBindings.bindings.spine_array_event_data_dispose(nativePtr.cast()); + } } /// ArrayFromProperty wrapper class ArrayFromProperty extends NativeArray { - ArrayFromProperty.fromPointer(Pointer super.ptr); + final bool _ownsMemory; + + ArrayFromProperty.fromPointer(Pointer super.ptr, {bool ownsMemory = false}) + : _ownsMemory = ownsMemory; + + /// Create a new empty array + factory ArrayFromProperty() { + final ptr = SpineBindings.bindings.spine_array_from_property_create(); + return ArrayFromProperty.fromPointer(ptr.cast(), ownsMemory: true); + } + + /// Create a new array with the specified initial capacity + factory ArrayFromProperty.withCapacity(int initialCapacity) { + final ptr = SpineBindings.bindings.spine_array_from_property_create_with_capacity(initialCapacity); + return ArrayFromProperty.fromPointer(ptr.cast(), ownsMemory: true); + } @override int get length { @@ -510,11 +1464,71 @@ class ArrayFromProperty extends NativeArray { throw UnsupportedError('Unknown concrete type: $className for abstract class FromProperty'); } } + + @override + set length(int newLength) { + SpineBindings.bindings.spine_array_from_property_set_size(nativePtr.cast(), newLength, Pointer.fromAddress(0)); + } + + /// Adds a value to the end of this array. + @override + void add(FromProperty? value) { + SpineBindings.bindings + .spine_array_from_property_add(nativePtr.cast(), value?.nativePtr.cast() ?? Pointer.fromAddress(0)); + } + + /// Removes all elements from this array. + @override + void clear() { + SpineBindings.bindings.spine_array_from_property_clear(nativePtr.cast()); + } + + /// Removes the element at the given index. + @override + FromProperty? removeAt(int index) { + if (index < 0 || index >= length) { + throw RangeError.index(index, this, 'index'); + } + final value = this[index]; + SpineBindings.bindings.spine_array_from_property_remove_at(nativePtr.cast(), index); + return value; + } + + /// Ensures this array has at least the given capacity. + void ensureCapacity(int capacity) { + SpineBindings.bindings.spine_array_from_property_ensure_capacity(nativePtr.cast(), capacity); + } + + /// Dispose of the native array + /// Throws an error if the array was not created by this class (i.e., it was obtained from C) + void dispose() { + if (!_ownsMemory) { + throw StateError( + 'Cannot dispose ArrayFromProperty that was created from C. Only arrays created via factory constructors can be disposed.'); + } + SpineBindings.bindings.spine_array_from_property_dispose(nativePtr.cast()); + } } /// ArrayPhysicsConstraint wrapper class ArrayPhysicsConstraint extends NativeArray { - ArrayPhysicsConstraint.fromPointer(Pointer super.ptr); + final bool _ownsMemory; + + ArrayPhysicsConstraint.fromPointer(Pointer super.ptr, + {bool ownsMemory = false}) + : _ownsMemory = ownsMemory; + + /// Create a new empty array + factory ArrayPhysicsConstraint() { + final ptr = SpineBindings.bindings.spine_array_physics_constraint_create(); + return ArrayPhysicsConstraint.fromPointer(ptr.cast(), ownsMemory: true); + } + + /// Create a new array with the specified initial capacity + factory ArrayPhysicsConstraint.withCapacity(int initialCapacity) { + final ptr = SpineBindings.bindings.spine_array_physics_constraint_create_with_capacity(initialCapacity); + return ArrayPhysicsConstraint.fromPointer(ptr.cast(), ownsMemory: true); + } @override int get length { @@ -529,11 +1543,70 @@ class ArrayPhysicsConstraint extends NativeArray { final buffer = SpineBindings.bindings.spine_array_physics_constraint_buffer(nativePtr.cast()); return buffer[index].address == 0 ? null : PhysicsConstraint.fromPointer(buffer[index]); } + + @override + set length(int newLength) { + SpineBindings.bindings.spine_array_physics_constraint_set_size(nativePtr.cast(), newLength, Pointer.fromAddress(0)); + } + + /// Adds a value to the end of this array. + @override + void add(PhysicsConstraint? value) { + SpineBindings.bindings + .spine_array_physics_constraint_add(nativePtr.cast(), value?.nativePtr.cast() ?? Pointer.fromAddress(0)); + } + + /// Removes all elements from this array. + @override + void clear() { + SpineBindings.bindings.spine_array_physics_constraint_clear(nativePtr.cast()); + } + + /// Removes the element at the given index. + @override + PhysicsConstraint? removeAt(int index) { + if (index < 0 || index >= length) { + throw RangeError.index(index, this, 'index'); + } + final value = this[index]; + SpineBindings.bindings.spine_array_physics_constraint_remove_at(nativePtr.cast(), index); + return value; + } + + /// Ensures this array has at least the given capacity. + void ensureCapacity(int capacity) { + SpineBindings.bindings.spine_array_physics_constraint_ensure_capacity(nativePtr.cast(), capacity); + } + + /// Dispose of the native array + /// Throws an error if the array was not created by this class (i.e., it was obtained from C) + void dispose() { + if (!_ownsMemory) { + throw StateError( + 'Cannot dispose ArrayPhysicsConstraint that was created from C. Only arrays created via factory constructors can be disposed.'); + } + SpineBindings.bindings.spine_array_physics_constraint_dispose(nativePtr.cast()); + } } /// ArrayPolygon wrapper class ArrayPolygon extends NativeArray { - ArrayPolygon.fromPointer(Pointer super.ptr); + final bool _ownsMemory; + + ArrayPolygon.fromPointer(Pointer super.ptr, {bool ownsMemory = false}) + : _ownsMemory = ownsMemory; + + /// Create a new empty array + factory ArrayPolygon() { + final ptr = SpineBindings.bindings.spine_array_polygon_create(); + return ArrayPolygon.fromPointer(ptr.cast(), ownsMemory: true); + } + + /// Create a new array with the specified initial capacity + factory ArrayPolygon.withCapacity(int initialCapacity) { + final ptr = SpineBindings.bindings.spine_array_polygon_create_with_capacity(initialCapacity); + return ArrayPolygon.fromPointer(ptr.cast(), ownsMemory: true); + } @override int get length { @@ -548,11 +1621,69 @@ class ArrayPolygon extends NativeArray { final buffer = SpineBindings.bindings.spine_array_polygon_buffer(nativePtr.cast()); return buffer[index].address == 0 ? null : Polygon.fromPointer(buffer[index]); } + + @override + set length(int newLength) { + SpineBindings.bindings.spine_array_polygon_set_size(nativePtr.cast(), newLength, Pointer.fromAddress(0)); + } + + /// Adds a value to the end of this array. + @override + void add(Polygon? value) { + SpineBindings.bindings.spine_array_polygon_add(nativePtr.cast(), value?.nativePtr.cast() ?? Pointer.fromAddress(0)); + } + + /// Removes all elements from this array. + @override + void clear() { + SpineBindings.bindings.spine_array_polygon_clear(nativePtr.cast()); + } + + /// Removes the element at the given index. + @override + Polygon? removeAt(int index) { + if (index < 0 || index >= length) { + throw RangeError.index(index, this, 'index'); + } + final value = this[index]; + SpineBindings.bindings.spine_array_polygon_remove_at(nativePtr.cast(), index); + return value; + } + + /// Ensures this array has at least the given capacity. + void ensureCapacity(int capacity) { + SpineBindings.bindings.spine_array_polygon_ensure_capacity(nativePtr.cast(), capacity); + } + + /// Dispose of the native array + /// Throws an error if the array was not created by this class (i.e., it was obtained from C) + void dispose() { + if (!_ownsMemory) { + throw StateError( + 'Cannot dispose ArrayPolygon that was created from C. Only arrays created via factory constructors can be disposed.'); + } + SpineBindings.bindings.spine_array_polygon_dispose(nativePtr.cast()); + } } /// ArraySkin wrapper class ArraySkin extends NativeArray { - ArraySkin.fromPointer(Pointer super.ptr); + final bool _ownsMemory; + + ArraySkin.fromPointer(Pointer super.ptr, {bool ownsMemory = false}) + : _ownsMemory = ownsMemory; + + /// Create a new empty array + factory ArraySkin() { + final ptr = SpineBindings.bindings.spine_array_skin_create(); + return ArraySkin.fromPointer(ptr.cast(), ownsMemory: true); + } + + /// Create a new array with the specified initial capacity + factory ArraySkin.withCapacity(int initialCapacity) { + final ptr = SpineBindings.bindings.spine_array_skin_create_with_capacity(initialCapacity); + return ArraySkin.fromPointer(ptr.cast(), ownsMemory: true); + } @override int get length { @@ -567,11 +1698,69 @@ class ArraySkin extends NativeArray { final buffer = SpineBindings.bindings.spine_array_skin_buffer(nativePtr.cast()); return buffer[index].address == 0 ? null : Skin.fromPointer(buffer[index]); } + + @override + set length(int newLength) { + SpineBindings.bindings.spine_array_skin_set_size(nativePtr.cast(), newLength, Pointer.fromAddress(0)); + } + + /// Adds a value to the end of this array. + @override + void add(Skin? value) { + SpineBindings.bindings.spine_array_skin_add(nativePtr.cast(), value?.nativePtr.cast() ?? Pointer.fromAddress(0)); + } + + /// Removes all elements from this array. + @override + void clear() { + SpineBindings.bindings.spine_array_skin_clear(nativePtr.cast()); + } + + /// Removes the element at the given index. + @override + Skin? removeAt(int index) { + if (index < 0 || index >= length) { + throw RangeError.index(index, this, 'index'); + } + final value = this[index]; + SpineBindings.bindings.spine_array_skin_remove_at(nativePtr.cast(), index); + return value; + } + + /// Ensures this array has at least the given capacity. + void ensureCapacity(int capacity) { + SpineBindings.bindings.spine_array_skin_ensure_capacity(nativePtr.cast(), capacity); + } + + /// Dispose of the native array + /// Throws an error if the array was not created by this class (i.e., it was obtained from C) + void dispose() { + if (!_ownsMemory) { + throw StateError( + 'Cannot dispose ArraySkin that was created from C. Only arrays created via factory constructors can be disposed.'); + } + SpineBindings.bindings.spine_array_skin_dispose(nativePtr.cast()); + } } /// ArraySlot wrapper class ArraySlot extends NativeArray { - ArraySlot.fromPointer(Pointer super.ptr); + final bool _ownsMemory; + + ArraySlot.fromPointer(Pointer super.ptr, {bool ownsMemory = false}) + : _ownsMemory = ownsMemory; + + /// Create a new empty array + factory ArraySlot() { + final ptr = SpineBindings.bindings.spine_array_slot_create(); + return ArraySlot.fromPointer(ptr.cast(), ownsMemory: true); + } + + /// Create a new array with the specified initial capacity + factory ArraySlot.withCapacity(int initialCapacity) { + final ptr = SpineBindings.bindings.spine_array_slot_create_with_capacity(initialCapacity); + return ArraySlot.fromPointer(ptr.cast(), ownsMemory: true); + } @override int get length { @@ -586,11 +1775,69 @@ class ArraySlot extends NativeArray { final buffer = SpineBindings.bindings.spine_array_slot_buffer(nativePtr.cast()); return buffer[index].address == 0 ? null : Slot.fromPointer(buffer[index]); } + + @override + set length(int newLength) { + SpineBindings.bindings.spine_array_slot_set_size(nativePtr.cast(), newLength, Pointer.fromAddress(0)); + } + + /// Adds a value to the end of this array. + @override + void add(Slot? value) { + SpineBindings.bindings.spine_array_slot_add(nativePtr.cast(), value?.nativePtr.cast() ?? Pointer.fromAddress(0)); + } + + /// Removes all elements from this array. + @override + void clear() { + SpineBindings.bindings.spine_array_slot_clear(nativePtr.cast()); + } + + /// Removes the element at the given index. + @override + Slot? removeAt(int index) { + if (index < 0 || index >= length) { + throw RangeError.index(index, this, 'index'); + } + final value = this[index]; + SpineBindings.bindings.spine_array_slot_remove_at(nativePtr.cast(), index); + return value; + } + + /// Ensures this array has at least the given capacity. + void ensureCapacity(int capacity) { + SpineBindings.bindings.spine_array_slot_ensure_capacity(nativePtr.cast(), capacity); + } + + /// Dispose of the native array + /// Throws an error if the array was not created by this class (i.e., it was obtained from C) + void dispose() { + if (!_ownsMemory) { + throw StateError( + 'Cannot dispose ArraySlot that was created from C. Only arrays created via factory constructors can be disposed.'); + } + SpineBindings.bindings.spine_array_slot_dispose(nativePtr.cast()); + } } /// ArraySlotData wrapper class ArraySlotData extends NativeArray { - ArraySlotData.fromPointer(Pointer super.ptr); + final bool _ownsMemory; + + ArraySlotData.fromPointer(Pointer super.ptr, {bool ownsMemory = false}) + : _ownsMemory = ownsMemory; + + /// Create a new empty array + factory ArraySlotData() { + final ptr = SpineBindings.bindings.spine_array_slot_data_create(); + return ArraySlotData.fromPointer(ptr.cast(), ownsMemory: true); + } + + /// Create a new array with the specified initial capacity + factory ArraySlotData.withCapacity(int initialCapacity) { + final ptr = SpineBindings.bindings.spine_array_slot_data_create_with_capacity(initialCapacity); + return ArraySlotData.fromPointer(ptr.cast(), ownsMemory: true); + } @override int get length { @@ -605,11 +1852,70 @@ class ArraySlotData extends NativeArray { final buffer = SpineBindings.bindings.spine_array_slot_data_buffer(nativePtr.cast()); return buffer[index].address == 0 ? null : SlotData.fromPointer(buffer[index]); } + + @override + set length(int newLength) { + SpineBindings.bindings.spine_array_slot_data_set_size(nativePtr.cast(), newLength, Pointer.fromAddress(0)); + } + + /// Adds a value to the end of this array. + @override + void add(SlotData? value) { + SpineBindings.bindings + .spine_array_slot_data_add(nativePtr.cast(), value?.nativePtr.cast() ?? Pointer.fromAddress(0)); + } + + /// Removes all elements from this array. + @override + void clear() { + SpineBindings.bindings.spine_array_slot_data_clear(nativePtr.cast()); + } + + /// Removes the element at the given index. + @override + SlotData? removeAt(int index) { + if (index < 0 || index >= length) { + throw RangeError.index(index, this, 'index'); + } + final value = this[index]; + SpineBindings.bindings.spine_array_slot_data_remove_at(nativePtr.cast(), index); + return value; + } + + /// Ensures this array has at least the given capacity. + void ensureCapacity(int capacity) { + SpineBindings.bindings.spine_array_slot_data_ensure_capacity(nativePtr.cast(), capacity); + } + + /// Dispose of the native array + /// Throws an error if the array was not created by this class (i.e., it was obtained from C) + void dispose() { + if (!_ownsMemory) { + throw StateError( + 'Cannot dispose ArraySlotData that was created from C. Only arrays created via factory constructors can be disposed.'); + } + SpineBindings.bindings.spine_array_slot_data_dispose(nativePtr.cast()); + } } /// ArrayTextureRegion wrapper class ArrayTextureRegion extends NativeArray { - ArrayTextureRegion.fromPointer(Pointer super.ptr); + final bool _ownsMemory; + + ArrayTextureRegion.fromPointer(Pointer super.ptr, {bool ownsMemory = false}) + : _ownsMemory = ownsMemory; + + /// Create a new empty array + factory ArrayTextureRegion() { + final ptr = SpineBindings.bindings.spine_array_texture_region_create(); + return ArrayTextureRegion.fromPointer(ptr.cast(), ownsMemory: true); + } + + /// Create a new array with the specified initial capacity + factory ArrayTextureRegion.withCapacity(int initialCapacity) { + final ptr = SpineBindings.bindings.spine_array_texture_region_create_with_capacity(initialCapacity); + return ArrayTextureRegion.fromPointer(ptr.cast(), ownsMemory: true); + } @override int get length { @@ -624,11 +1930,70 @@ class ArrayTextureRegion extends NativeArray { final buffer = SpineBindings.bindings.spine_array_texture_region_buffer(nativePtr.cast()); return buffer[index].address == 0 ? null : TextureRegion.fromPointer(buffer[index]); } + + @override + set length(int newLength) { + SpineBindings.bindings.spine_array_texture_region_set_size(nativePtr.cast(), newLength, Pointer.fromAddress(0)); + } + + /// Adds a value to the end of this array. + @override + void add(TextureRegion? value) { + SpineBindings.bindings + .spine_array_texture_region_add(nativePtr.cast(), value?.nativePtr.cast() ?? Pointer.fromAddress(0)); + } + + /// Removes all elements from this array. + @override + void clear() { + SpineBindings.bindings.spine_array_texture_region_clear(nativePtr.cast()); + } + + /// Removes the element at the given index. + @override + TextureRegion? removeAt(int index) { + if (index < 0 || index >= length) { + throw RangeError.index(index, this, 'index'); + } + final value = this[index]; + SpineBindings.bindings.spine_array_texture_region_remove_at(nativePtr.cast(), index); + return value; + } + + /// Ensures this array has at least the given capacity. + void ensureCapacity(int capacity) { + SpineBindings.bindings.spine_array_texture_region_ensure_capacity(nativePtr.cast(), capacity); + } + + /// Dispose of the native array + /// Throws an error if the array was not created by this class (i.e., it was obtained from C) + void dispose() { + if (!_ownsMemory) { + throw StateError( + 'Cannot dispose ArrayTextureRegion that was created from C. Only arrays created via factory constructors can be disposed.'); + } + SpineBindings.bindings.spine_array_texture_region_dispose(nativePtr.cast()); + } } /// ArrayTimeline wrapper class ArrayTimeline extends NativeArray { - ArrayTimeline.fromPointer(Pointer super.ptr); + final bool _ownsMemory; + + ArrayTimeline.fromPointer(Pointer super.ptr, {bool ownsMemory = false}) + : _ownsMemory = ownsMemory; + + /// Create a new empty array + factory ArrayTimeline() { + final ptr = SpineBindings.bindings.spine_array_timeline_create(); + return ArrayTimeline.fromPointer(ptr.cast(), ownsMemory: true); + } + + /// Create a new array with the specified initial capacity + factory ArrayTimeline.withCapacity(int initialCapacity) { + final ptr = SpineBindings.bindings.spine_array_timeline_create_with_capacity(initialCapacity); + return ArrayTimeline.fromPointer(ptr.cast(), ownsMemory: true); + } @override int get length { @@ -721,11 +2086,70 @@ class ArrayTimeline extends NativeArray { throw UnsupportedError('Unknown concrete type: $className for abstract class Timeline'); } } + + @override + set length(int newLength) { + SpineBindings.bindings.spine_array_timeline_set_size(nativePtr.cast(), newLength, Pointer.fromAddress(0)); + } + + /// Adds a value to the end of this array. + @override + void add(Timeline? value) { + SpineBindings.bindings + .spine_array_timeline_add(nativePtr.cast(), value?.nativePtr.cast() ?? Pointer.fromAddress(0)); + } + + /// Removes all elements from this array. + @override + void clear() { + SpineBindings.bindings.spine_array_timeline_clear(nativePtr.cast()); + } + + /// Removes the element at the given index. + @override + Timeline? removeAt(int index) { + if (index < 0 || index >= length) { + throw RangeError.index(index, this, 'index'); + } + final value = this[index]; + SpineBindings.bindings.spine_array_timeline_remove_at(nativePtr.cast(), index); + return value; + } + + /// Ensures this array has at least the given capacity. + void ensureCapacity(int capacity) { + SpineBindings.bindings.spine_array_timeline_ensure_capacity(nativePtr.cast(), capacity); + } + + /// Dispose of the native array + /// Throws an error if the array was not created by this class (i.e., it was obtained from C) + void dispose() { + if (!_ownsMemory) { + throw StateError( + 'Cannot dispose ArrayTimeline that was created from C. Only arrays created via factory constructors can be disposed.'); + } + SpineBindings.bindings.spine_array_timeline_dispose(nativePtr.cast()); + } } /// ArrayToProperty wrapper class ArrayToProperty extends NativeArray { - ArrayToProperty.fromPointer(Pointer super.ptr); + final bool _ownsMemory; + + ArrayToProperty.fromPointer(Pointer super.ptr, {bool ownsMemory = false}) + : _ownsMemory = ownsMemory; + + /// Create a new empty array + factory ArrayToProperty() { + final ptr = SpineBindings.bindings.spine_array_to_property_create(); + return ArrayToProperty.fromPointer(ptr.cast(), ownsMemory: true); + } + + /// Create a new array with the specified initial capacity + factory ArrayToProperty.withCapacity(int initialCapacity) { + final ptr = SpineBindings.bindings.spine_array_to_property_create_with_capacity(initialCapacity); + return ArrayToProperty.fromPointer(ptr.cast(), ownsMemory: true); + } @override int get length { @@ -758,11 +2182,70 @@ class ArrayToProperty extends NativeArray { throw UnsupportedError('Unknown concrete type: $className for abstract class ToProperty'); } } + + @override + set length(int newLength) { + SpineBindings.bindings.spine_array_to_property_set_size(nativePtr.cast(), newLength, Pointer.fromAddress(0)); + } + + /// Adds a value to the end of this array. + @override + void add(ToProperty? value) { + SpineBindings.bindings + .spine_array_to_property_add(nativePtr.cast(), value?.nativePtr.cast() ?? Pointer.fromAddress(0)); + } + + /// Removes all elements from this array. + @override + void clear() { + SpineBindings.bindings.spine_array_to_property_clear(nativePtr.cast()); + } + + /// Removes the element at the given index. + @override + ToProperty? removeAt(int index) { + if (index < 0 || index >= length) { + throw RangeError.index(index, this, 'index'); + } + final value = this[index]; + SpineBindings.bindings.spine_array_to_property_remove_at(nativePtr.cast(), index); + return value; + } + + /// Ensures this array has at least the given capacity. + void ensureCapacity(int capacity) { + SpineBindings.bindings.spine_array_to_property_ensure_capacity(nativePtr.cast(), capacity); + } + + /// Dispose of the native array + /// Throws an error if the array was not created by this class (i.e., it was obtained from C) + void dispose() { + if (!_ownsMemory) { + throw StateError( + 'Cannot dispose ArrayToProperty that was created from C. Only arrays created via factory constructors can be disposed.'); + } + SpineBindings.bindings.spine_array_to_property_dispose(nativePtr.cast()); + } } /// ArrayTrackEntry wrapper class ArrayTrackEntry extends NativeArray { - ArrayTrackEntry.fromPointer(Pointer super.ptr); + final bool _ownsMemory; + + ArrayTrackEntry.fromPointer(Pointer super.ptr, {bool ownsMemory = false}) + : _ownsMemory = ownsMemory; + + /// Create a new empty array + factory ArrayTrackEntry() { + final ptr = SpineBindings.bindings.spine_array_track_entry_create(); + return ArrayTrackEntry.fromPointer(ptr.cast(), ownsMemory: true); + } + + /// Create a new array with the specified initial capacity + factory ArrayTrackEntry.withCapacity(int initialCapacity) { + final ptr = SpineBindings.bindings.spine_array_track_entry_create_with_capacity(initialCapacity); + return ArrayTrackEntry.fromPointer(ptr.cast(), ownsMemory: true); + } @override int get length { @@ -777,11 +2260,70 @@ class ArrayTrackEntry extends NativeArray { final buffer = SpineBindings.bindings.spine_array_track_entry_buffer(nativePtr.cast()); return buffer[index].address == 0 ? null : TrackEntry.fromPointer(buffer[index]); } + + @override + set length(int newLength) { + SpineBindings.bindings.spine_array_track_entry_set_size(nativePtr.cast(), newLength, Pointer.fromAddress(0)); + } + + /// Adds a value to the end of this array. + @override + void add(TrackEntry? value) { + SpineBindings.bindings + .spine_array_track_entry_add(nativePtr.cast(), value?.nativePtr.cast() ?? Pointer.fromAddress(0)); + } + + /// Removes all elements from this array. + @override + void clear() { + SpineBindings.bindings.spine_array_track_entry_clear(nativePtr.cast()); + } + + /// Removes the element at the given index. + @override + TrackEntry? removeAt(int index) { + if (index < 0 || index >= length) { + throw RangeError.index(index, this, 'index'); + } + final value = this[index]; + SpineBindings.bindings.spine_array_track_entry_remove_at(nativePtr.cast(), index); + return value; + } + + /// Ensures this array has at least the given capacity. + void ensureCapacity(int capacity) { + SpineBindings.bindings.spine_array_track_entry_ensure_capacity(nativePtr.cast(), capacity); + } + + /// Dispose of the native array + /// Throws an error if the array was not created by this class (i.e., it was obtained from C) + void dispose() { + if (!_ownsMemory) { + throw StateError( + 'Cannot dispose ArrayTrackEntry that was created from C. Only arrays created via factory constructors can be disposed.'); + } + SpineBindings.bindings.spine_array_track_entry_dispose(nativePtr.cast()); + } } /// ArrayUpdate wrapper class ArrayUpdate extends NativeArray { - ArrayUpdate.fromPointer(Pointer super.ptr); + final bool _ownsMemory; + + ArrayUpdate.fromPointer(Pointer super.ptr, {bool ownsMemory = false}) + : _ownsMemory = ownsMemory; + + /// Create a new empty array + factory ArrayUpdate() { + final ptr = SpineBindings.bindings.spine_array_update_create(); + return ArrayUpdate.fromPointer(ptr.cast(), ownsMemory: true); + } + + /// Create a new array with the specified initial capacity + factory ArrayUpdate.withCapacity(int initialCapacity) { + final ptr = SpineBindings.bindings.spine_array_update_create_with_capacity(initialCapacity); + return ArrayUpdate.fromPointer(ptr.cast(), ownsMemory: true); + } @override int get length { @@ -816,4 +2358,47 @@ class ArrayUpdate extends NativeArray { throw UnsupportedError('Unknown concrete type: $className for abstract class Update'); } } + + @override + set length(int newLength) { + SpineBindings.bindings.spine_array_update_set_size(nativePtr.cast(), newLength, Pointer.fromAddress(0)); + } + + /// Adds a value to the end of this array. + @override + void add(Update? value) { + SpineBindings.bindings.spine_array_update_add(nativePtr.cast(), value?.nativePtr.cast() ?? Pointer.fromAddress(0)); + } + + /// Removes all elements from this array. + @override + void clear() { + SpineBindings.bindings.spine_array_update_clear(nativePtr.cast()); + } + + /// Removes the element at the given index. + @override + Update? removeAt(int index) { + if (index < 0 || index >= length) { + throw RangeError.index(index, this, 'index'); + } + final value = this[index]; + SpineBindings.bindings.spine_array_update_remove_at(nativePtr.cast(), index); + return value; + } + + /// Ensures this array has at least the given capacity. + void ensureCapacity(int capacity) { + SpineBindings.bindings.spine_array_update_ensure_capacity(nativePtr.cast(), capacity); + } + + /// Dispose of the native array + /// Throws an error if the array was not created by this class (i.e., it was obtained from C) + void dispose() { + if (!_ownsMemory) { + throw StateError( + 'Cannot dispose ArrayUpdate that was created from C. Only arrays created via factory constructors can be disposed.'); + } + SpineBindings.bindings.spine_array_update_dispose(nativePtr.cast()); + } } diff --git a/spine-flutter/lib/generated/atlas.dart b/spine-flutter/lib/generated/atlas.dart index 012a9e1f3..f65d35ede 100644 --- a/spine-flutter/lib/generated/atlas.dart +++ b/spine-flutter/lib/generated/atlas.dart @@ -29,8 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; -import 'package:ffi/ffi.dart'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'arrays.dart'; diff --git a/spine-flutter/lib/generated/atlas_attachment_loader.dart b/spine-flutter/lib/generated/atlas_attachment_loader.dart index bb22eec8e..7ee453280 100644 --- a/spine-flutter/lib/generated/atlas_attachment_loader.dart +++ b/spine-flutter/lib/generated/atlas_attachment_loader.dart @@ -29,8 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; -import 'package:ffi/ffi.dart'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'atlas.dart'; diff --git a/spine-flutter/lib/generated/atlas_page.dart b/spine-flutter/lib/generated/atlas_page.dart index f3a466acb..dbd97261e 100644 --- a/spine-flutter/lib/generated/atlas_page.dart +++ b/spine-flutter/lib/generated/atlas_page.dart @@ -29,8 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; -import 'package:ffi/ffi.dart'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'format.dart'; diff --git a/spine-flutter/lib/generated/atlas_region.dart b/spine-flutter/lib/generated/atlas_region.dart index 122296d30..e79fbe22e 100644 --- a/spine-flutter/lib/generated/atlas_region.dart +++ b/spine-flutter/lib/generated/atlas_region.dart @@ -29,8 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; -import 'package:ffi/ffi.dart'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'arrays.dart'; diff --git a/spine-flutter/lib/generated/attachment.dart b/spine-flutter/lib/generated/attachment.dart index f6658cd9c..2296ad524 100644 --- a/spine-flutter/lib/generated/attachment.dart +++ b/spine-flutter/lib/generated/attachment.dart @@ -29,8 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; -import 'package:ffi/ffi.dart'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'rtti.dart'; diff --git a/spine-flutter/lib/generated/attachment_loader.dart b/spine-flutter/lib/generated/attachment_loader.dart index ca1187678..bb63bf40b 100644 --- a/spine-flutter/lib/generated/attachment_loader.dart +++ b/spine-flutter/lib/generated/attachment_loader.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'bounding_box_attachment.dart'; import 'clipping_attachment.dart'; import 'mesh_attachment.dart'; diff --git a/spine-flutter/lib/generated/attachment_timeline.dart b/spine-flutter/lib/generated/attachment_timeline.dart index 2376d3888..c358f594f 100644 --- a/spine-flutter/lib/generated/attachment_timeline.dart +++ b/spine-flutter/lib/generated/attachment_timeline.dart @@ -29,8 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; -import 'package:ffi/ffi.dart'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'slot_timeline.dart'; diff --git a/spine-flutter/lib/generated/bone.dart b/spine-flutter/lib/generated/bone.dart index 952ac3a89..94fa22d2c 100644 --- a/spine-flutter/lib/generated/bone.dart +++ b/spine-flutter/lib/generated/bone.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'rtti.dart'; diff --git a/spine-flutter/lib/generated/bone_data.dart b/spine-flutter/lib/generated/bone_data.dart index 061fa4799..3834bdd98 100644 --- a/spine-flutter/lib/generated/bone_data.dart +++ b/spine-flutter/lib/generated/bone_data.dart @@ -29,8 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; -import 'package:ffi/ffi.dart'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'bone_local.dart'; diff --git a/spine-flutter/lib/generated/bone_local.dart b/spine-flutter/lib/generated/bone_local.dart index 5b58bacc6..b1319f941 100644 --- a/spine-flutter/lib/generated/bone_local.dart +++ b/spine-flutter/lib/generated/bone_local.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'inherit.dart'; diff --git a/spine-flutter/lib/generated/bone_pose.dart b/spine-flutter/lib/generated/bone_pose.dart index e1957af5b..6689d875f 100644 --- a/spine-flutter/lib/generated/bone_pose.dart +++ b/spine-flutter/lib/generated/bone_pose.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'rtti.dart'; diff --git a/spine-flutter/lib/generated/bone_timeline.dart b/spine-flutter/lib/generated/bone_timeline.dart index 406c7e4d4..890326e02 100644 --- a/spine-flutter/lib/generated/bone_timeline.dart +++ b/spine-flutter/lib/generated/bone_timeline.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import '../spine_bindings.dart'; import 'rtti.dart'; diff --git a/spine-flutter/lib/generated/bone_timeline1.dart b/spine-flutter/lib/generated/bone_timeline1.dart index e328c3b4a..1a2922ae1 100644 --- a/spine-flutter/lib/generated/bone_timeline1.dart +++ b/spine-flutter/lib/generated/bone_timeline1.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'bone_timeline.dart'; diff --git a/spine-flutter/lib/generated/bone_timeline2.dart b/spine-flutter/lib/generated/bone_timeline2.dart index ca5de3cba..59444aba1 100644 --- a/spine-flutter/lib/generated/bone_timeline2.dart +++ b/spine-flutter/lib/generated/bone_timeline2.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'bone_timeline.dart'; diff --git a/spine-flutter/lib/generated/bounding_box_attachment.dart b/spine-flutter/lib/generated/bounding_box_attachment.dart index f07f3afac..58f9259b1 100644 --- a/spine-flutter/lib/generated/bounding_box_attachment.dart +++ b/spine-flutter/lib/generated/bounding_box_attachment.dart @@ -29,8 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; -import 'package:ffi/ffi.dart'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'color.dart'; diff --git a/spine-flutter/lib/generated/clipping_attachment.dart b/spine-flutter/lib/generated/clipping_attachment.dart index ae4f4341c..3e98cf436 100644 --- a/spine-flutter/lib/generated/clipping_attachment.dart +++ b/spine-flutter/lib/generated/clipping_attachment.dart @@ -29,8 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; -import 'package:ffi/ffi.dart'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'color.dart'; diff --git a/spine-flutter/lib/generated/color.dart b/spine-flutter/lib/generated/color.dart index e6555c41a..98d6b2fd0 100644 --- a/spine-flutter/lib/generated/color.dart +++ b/spine-flutter/lib/generated/color.dart @@ -29,8 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; -import 'package:ffi/ffi.dart'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; diff --git a/spine-flutter/lib/generated/constraint.dart b/spine-flutter/lib/generated/constraint.dart index 7c6f9da69..cc6ffcb84 100644 --- a/spine-flutter/lib/generated/constraint.dart +++ b/spine-flutter/lib/generated/constraint.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import '../spine_bindings.dart'; import 'rtti.dart'; import 'constraint_data.dart'; diff --git a/spine-flutter/lib/generated/constraint_data.dart b/spine-flutter/lib/generated/constraint_data.dart index aeb1992a8..2e0770618 100644 --- a/spine-flutter/lib/generated/constraint_data.dart +++ b/spine-flutter/lib/generated/constraint_data.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import '../spine_bindings.dart'; import 'rtti.dart'; import 'constraint.dart'; diff --git a/spine-flutter/lib/generated/constraint_timeline.dart b/spine-flutter/lib/generated/constraint_timeline.dart index fe477b3a6..67d000f33 100644 --- a/spine-flutter/lib/generated/constraint_timeline.dart +++ b/spine-flutter/lib/generated/constraint_timeline.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import '../spine_bindings.dart'; import 'rtti.dart'; diff --git a/spine-flutter/lib/generated/constraint_timeline1.dart b/spine-flutter/lib/generated/constraint_timeline1.dart index 306d8a9d9..cdddfbcfa 100644 --- a/spine-flutter/lib/generated/constraint_timeline1.dart +++ b/spine-flutter/lib/generated/constraint_timeline1.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'constraint_timeline.dart'; diff --git a/spine-flutter/lib/generated/curve_timeline.dart b/spine-flutter/lib/generated/curve_timeline.dart index 5a80f47e8..4f72bfcf9 100644 --- a/spine-flutter/lib/generated/curve_timeline.dart +++ b/spine-flutter/lib/generated/curve_timeline.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'arrays.dart'; diff --git a/spine-flutter/lib/generated/curve_timeline1.dart b/spine-flutter/lib/generated/curve_timeline1.dart index 4232abe9b..d3f3a2f36 100644 --- a/spine-flutter/lib/generated/curve_timeline1.dart +++ b/spine-flutter/lib/generated/curve_timeline1.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'curve_timeline.dart'; diff --git a/spine-flutter/lib/generated/deform_timeline.dart b/spine-flutter/lib/generated/deform_timeline.dart index d243311b3..ecd11e5f9 100644 --- a/spine-flutter/lib/generated/deform_timeline.dart +++ b/spine-flutter/lib/generated/deform_timeline.dart @@ -29,8 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; -import 'package:ffi/ffi.dart'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'arrays.dart'; diff --git a/spine-flutter/lib/generated/draw_order_timeline.dart b/spine-flutter/lib/generated/draw_order_timeline.dart index 11415d088..5a33498a5 100644 --- a/spine-flutter/lib/generated/draw_order_timeline.dart +++ b/spine-flutter/lib/generated/draw_order_timeline.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'arrays.dart'; diff --git a/spine-flutter/lib/generated/event.dart b/spine-flutter/lib/generated/event.dart index 041d7af1a..17a672431 100644 --- a/spine-flutter/lib/generated/event.dart +++ b/spine-flutter/lib/generated/event.dart @@ -29,8 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; -import 'package:ffi/ffi.dart'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'event_data.dart'; diff --git a/spine-flutter/lib/generated/event_data.dart b/spine-flutter/lib/generated/event_data.dart index 90f58fbb6..45e51c6b6 100644 --- a/spine-flutter/lib/generated/event_data.dart +++ b/spine-flutter/lib/generated/event_data.dart @@ -29,8 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; -import 'package:ffi/ffi.dart'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; diff --git a/spine-flutter/lib/generated/event_queue_entry.dart b/spine-flutter/lib/generated/event_queue_entry.dart index 7889081f6..2c3bc9591 100644 --- a/spine-flutter/lib/generated/event_queue_entry.dart +++ b/spine-flutter/lib/generated/event_queue_entry.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'event.dart'; diff --git a/spine-flutter/lib/generated/event_timeline.dart b/spine-flutter/lib/generated/event_timeline.dart index 48e2917b1..5a1c41ca5 100644 --- a/spine-flutter/lib/generated/event_timeline.dart +++ b/spine-flutter/lib/generated/event_timeline.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'arrays.dart'; diff --git a/spine-flutter/lib/generated/from_property.dart b/spine-flutter/lib/generated/from_property.dart index ec5d7909b..ff85ac5fb 100644 --- a/spine-flutter/lib/generated/from_property.dart +++ b/spine-flutter/lib/generated/from_property.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'rtti.dart'; diff --git a/spine-flutter/lib/generated/from_rotate.dart b/spine-flutter/lib/generated/from_rotate.dart index 8b4bfad0e..736223ba7 100644 --- a/spine-flutter/lib/generated/from_rotate.dart +++ b/spine-flutter/lib/generated/from_rotate.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'from_property.dart'; diff --git a/spine-flutter/lib/generated/from_scale_x.dart b/spine-flutter/lib/generated/from_scale_x.dart index f852b3d72..b3dae0d08 100644 --- a/spine-flutter/lib/generated/from_scale_x.dart +++ b/spine-flutter/lib/generated/from_scale_x.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'from_property.dart'; diff --git a/spine-flutter/lib/generated/from_scale_y.dart b/spine-flutter/lib/generated/from_scale_y.dart index 975c9f399..dd275388c 100644 --- a/spine-flutter/lib/generated/from_scale_y.dart +++ b/spine-flutter/lib/generated/from_scale_y.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'from_property.dart'; diff --git a/spine-flutter/lib/generated/from_shear_y.dart b/spine-flutter/lib/generated/from_shear_y.dart index 00e023bd4..0c05de818 100644 --- a/spine-flutter/lib/generated/from_shear_y.dart +++ b/spine-flutter/lib/generated/from_shear_y.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'from_property.dart'; diff --git a/spine-flutter/lib/generated/from_x.dart b/spine-flutter/lib/generated/from_x.dart index 64935354a..6ac332ca6 100644 --- a/spine-flutter/lib/generated/from_x.dart +++ b/spine-flutter/lib/generated/from_x.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'from_property.dart'; diff --git a/spine-flutter/lib/generated/from_y.dart b/spine-flutter/lib/generated/from_y.dart index 5a890485c..8a3627a69 100644 --- a/spine-flutter/lib/generated/from_y.dart +++ b/spine-flutter/lib/generated/from_y.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'from_property.dart'; diff --git a/spine-flutter/lib/generated/ik_constraint.dart b/spine-flutter/lib/generated/ik_constraint.dart index 09d2eeb7a..57cfc8050 100644 --- a/spine-flutter/lib/generated/ik_constraint.dart +++ b/spine-flutter/lib/generated/ik_constraint.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'rtti.dart'; diff --git a/spine-flutter/lib/generated/ik_constraint_data.dart b/spine-flutter/lib/generated/ik_constraint_data.dart index db2e1ccf9..ec53e4675 100644 --- a/spine-flutter/lib/generated/ik_constraint_data.dart +++ b/spine-flutter/lib/generated/ik_constraint_data.dart @@ -29,8 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; -import 'package:ffi/ffi.dart'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'rtti.dart'; diff --git a/spine-flutter/lib/generated/ik_constraint_pose.dart b/spine-flutter/lib/generated/ik_constraint_pose.dart index 9b4a230db..b02d17ae9 100644 --- a/spine-flutter/lib/generated/ik_constraint_pose.dart +++ b/spine-flutter/lib/generated/ik_constraint_pose.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; diff --git a/spine-flutter/lib/generated/ik_constraint_timeline.dart b/spine-flutter/lib/generated/ik_constraint_timeline.dart index 7e1937cb8..9e967a781 100644 --- a/spine-flutter/lib/generated/ik_constraint_timeline.dart +++ b/spine-flutter/lib/generated/ik_constraint_timeline.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'constraint_timeline.dart'; diff --git a/spine-flutter/lib/generated/inherit_timeline.dart b/spine-flutter/lib/generated/inherit_timeline.dart index 4f50e65bf..d6f459bd4 100644 --- a/spine-flutter/lib/generated/inherit_timeline.dart +++ b/spine-flutter/lib/generated/inherit_timeline.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'bone_timeline.dart'; diff --git a/spine-flutter/lib/generated/linked_mesh.dart b/spine-flutter/lib/generated/linked_mesh.dart index 7d8be896c..af047e733 100644 --- a/spine-flutter/lib/generated/linked_mesh.dart +++ b/spine-flutter/lib/generated/linked_mesh.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; /// LinkedMesh wrapper abstract class LinkedMesh { diff --git a/spine-flutter/lib/generated/mesh_attachment.dart b/spine-flutter/lib/generated/mesh_attachment.dart index 886ca91e0..9fb0bf606 100644 --- a/spine-flutter/lib/generated/mesh_attachment.dart +++ b/spine-flutter/lib/generated/mesh_attachment.dart @@ -29,8 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; -import 'package:ffi/ffi.dart'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'arrays.dart'; diff --git a/spine-flutter/lib/generated/path_attachment.dart b/spine-flutter/lib/generated/path_attachment.dart index 8c9f1bbee..553f2fd4d 100644 --- a/spine-flutter/lib/generated/path_attachment.dart +++ b/spine-flutter/lib/generated/path_attachment.dart @@ -29,8 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; -import 'package:ffi/ffi.dart'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'arrays.dart'; diff --git a/spine-flutter/lib/generated/path_constraint.dart b/spine-flutter/lib/generated/path_constraint.dart index 9a1b1a3d2..f140bbccd 100644 --- a/spine-flutter/lib/generated/path_constraint.dart +++ b/spine-flutter/lib/generated/path_constraint.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'rtti.dart'; diff --git a/spine-flutter/lib/generated/path_constraint_data.dart b/spine-flutter/lib/generated/path_constraint_data.dart index 7aa41a872..917a0565b 100644 --- a/spine-flutter/lib/generated/path_constraint_data.dart +++ b/spine-flutter/lib/generated/path_constraint_data.dart @@ -29,8 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; -import 'package:ffi/ffi.dart'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'rtti.dart'; diff --git a/spine-flutter/lib/generated/path_constraint_mix_timeline.dart b/spine-flutter/lib/generated/path_constraint_mix_timeline.dart index b129fba36..f2f3e269f 100644 --- a/spine-flutter/lib/generated/path_constraint_mix_timeline.dart +++ b/spine-flutter/lib/generated/path_constraint_mix_timeline.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'constraint_timeline.dart'; diff --git a/spine-flutter/lib/generated/path_constraint_pose.dart b/spine-flutter/lib/generated/path_constraint_pose.dart index 7b0a9065f..a843aed0a 100644 --- a/spine-flutter/lib/generated/path_constraint_pose.dart +++ b/spine-flutter/lib/generated/path_constraint_pose.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; diff --git a/spine-flutter/lib/generated/path_constraint_position_timeline.dart b/spine-flutter/lib/generated/path_constraint_position_timeline.dart index 5b8c25501..6057ad671 100644 --- a/spine-flutter/lib/generated/path_constraint_position_timeline.dart +++ b/spine-flutter/lib/generated/path_constraint_position_timeline.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'constraint_timeline1.dart'; diff --git a/spine-flutter/lib/generated/path_constraint_spacing_timeline.dart b/spine-flutter/lib/generated/path_constraint_spacing_timeline.dart index 8c5c09660..0b7dc6e67 100644 --- a/spine-flutter/lib/generated/path_constraint_spacing_timeline.dart +++ b/spine-flutter/lib/generated/path_constraint_spacing_timeline.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'constraint_timeline1.dart'; diff --git a/spine-flutter/lib/generated/physics_constraint.dart b/spine-flutter/lib/generated/physics_constraint.dart index e9831a3c6..6d57a039f 100644 --- a/spine-flutter/lib/generated/physics_constraint.dart +++ b/spine-flutter/lib/generated/physics_constraint.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'rtti.dart'; diff --git a/spine-flutter/lib/generated/physics_constraint_damping_timeline.dart b/spine-flutter/lib/generated/physics_constraint_damping_timeline.dart index 6fe67dea0..5f3da22f6 100644 --- a/spine-flutter/lib/generated/physics_constraint_damping_timeline.dart +++ b/spine-flutter/lib/generated/physics_constraint_damping_timeline.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'physics_constraint_timeline.dart'; diff --git a/spine-flutter/lib/generated/physics_constraint_data.dart b/spine-flutter/lib/generated/physics_constraint_data.dart index 04c136f69..035c6d32a 100644 --- a/spine-flutter/lib/generated/physics_constraint_data.dart +++ b/spine-flutter/lib/generated/physics_constraint_data.dart @@ -29,8 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; -import 'package:ffi/ffi.dart'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'rtti.dart'; diff --git a/spine-flutter/lib/generated/physics_constraint_gravity_timeline.dart b/spine-flutter/lib/generated/physics_constraint_gravity_timeline.dart index 3b5a45e22..2745dd256 100644 --- a/spine-flutter/lib/generated/physics_constraint_gravity_timeline.dart +++ b/spine-flutter/lib/generated/physics_constraint_gravity_timeline.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'physics_constraint_timeline.dart'; diff --git a/spine-flutter/lib/generated/physics_constraint_inertia_timeline.dart b/spine-flutter/lib/generated/physics_constraint_inertia_timeline.dart index 95987dcfc..5c1c33205 100644 --- a/spine-flutter/lib/generated/physics_constraint_inertia_timeline.dart +++ b/spine-flutter/lib/generated/physics_constraint_inertia_timeline.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'physics_constraint_timeline.dart'; diff --git a/spine-flutter/lib/generated/physics_constraint_mass_timeline.dart b/spine-flutter/lib/generated/physics_constraint_mass_timeline.dart index 0b232541c..ad1ce0020 100644 --- a/spine-flutter/lib/generated/physics_constraint_mass_timeline.dart +++ b/spine-flutter/lib/generated/physics_constraint_mass_timeline.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'physics_constraint_timeline.dart'; diff --git a/spine-flutter/lib/generated/physics_constraint_mix_timeline.dart b/spine-flutter/lib/generated/physics_constraint_mix_timeline.dart index 02fefba82..fe66c1663 100644 --- a/spine-flutter/lib/generated/physics_constraint_mix_timeline.dart +++ b/spine-flutter/lib/generated/physics_constraint_mix_timeline.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'physics_constraint_timeline.dart'; diff --git a/spine-flutter/lib/generated/physics_constraint_pose.dart b/spine-flutter/lib/generated/physics_constraint_pose.dart index e0a602452..eec71411e 100644 --- a/spine-flutter/lib/generated/physics_constraint_pose.dart +++ b/spine-flutter/lib/generated/physics_constraint_pose.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; diff --git a/spine-flutter/lib/generated/physics_constraint_reset_timeline.dart b/spine-flutter/lib/generated/physics_constraint_reset_timeline.dart index 2e995bf60..487882a30 100644 --- a/spine-flutter/lib/generated/physics_constraint_reset_timeline.dart +++ b/spine-flutter/lib/generated/physics_constraint_reset_timeline.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'constraint_timeline.dart'; diff --git a/spine-flutter/lib/generated/physics_constraint_strength_timeline.dart b/spine-flutter/lib/generated/physics_constraint_strength_timeline.dart index 7139605e9..7bc7dd3ae 100644 --- a/spine-flutter/lib/generated/physics_constraint_strength_timeline.dart +++ b/spine-flutter/lib/generated/physics_constraint_strength_timeline.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'physics_constraint_timeline.dart'; diff --git a/spine-flutter/lib/generated/physics_constraint_timeline.dart b/spine-flutter/lib/generated/physics_constraint_timeline.dart index 19670ba16..69e4d401f 100644 --- a/spine-flutter/lib/generated/physics_constraint_timeline.dart +++ b/spine-flutter/lib/generated/physics_constraint_timeline.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'constraint_timeline.dart'; diff --git a/spine-flutter/lib/generated/physics_constraint_wind_timeline.dart b/spine-flutter/lib/generated/physics_constraint_wind_timeline.dart index fcd084e5b..8af801df8 100644 --- a/spine-flutter/lib/generated/physics_constraint_wind_timeline.dart +++ b/spine-flutter/lib/generated/physics_constraint_wind_timeline.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'physics_constraint_timeline.dart'; diff --git a/spine-flutter/lib/generated/point_attachment.dart b/spine-flutter/lib/generated/point_attachment.dart index ae794e322..d271cb7e6 100644 --- a/spine-flutter/lib/generated/point_attachment.dart +++ b/spine-flutter/lib/generated/point_attachment.dart @@ -29,8 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; -import 'package:ffi/ffi.dart'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'attachment.dart'; diff --git a/spine-flutter/lib/generated/polygon.dart b/spine-flutter/lib/generated/polygon.dart index d55971820..6ba9b2d74 100644 --- a/spine-flutter/lib/generated/polygon.dart +++ b/spine-flutter/lib/generated/polygon.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'arrays.dart'; diff --git a/spine-flutter/lib/generated/posed.dart b/spine-flutter/lib/generated/posed.dart index 26db970be..3a52136e7 100644 --- a/spine-flutter/lib/generated/posed.dart +++ b/spine-flutter/lib/generated/posed.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; /// Posed wrapper abstract class Posed { diff --git a/spine-flutter/lib/generated/posed_active.dart b/spine-flutter/lib/generated/posed_active.dart index a0a917625..55f5183f9 100644 --- a/spine-flutter/lib/generated/posed_active.dart +++ b/spine-flutter/lib/generated/posed_active.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; diff --git a/spine-flutter/lib/generated/posed_data.dart b/spine-flutter/lib/generated/posed_data.dart index fc3e907af..294c0610a 100644 --- a/spine-flutter/lib/generated/posed_data.dart +++ b/spine-flutter/lib/generated/posed_data.dart @@ -29,8 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; -import 'package:ffi/ffi.dart'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; diff --git a/spine-flutter/lib/generated/region_attachment.dart b/spine-flutter/lib/generated/region_attachment.dart index 4c2934596..a6b7167ff 100644 --- a/spine-flutter/lib/generated/region_attachment.dart +++ b/spine-flutter/lib/generated/region_attachment.dart @@ -29,8 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; -import 'package:ffi/ffi.dart'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'arrays.dart'; diff --git a/spine-flutter/lib/generated/render_command.dart b/spine-flutter/lib/generated/render_command.dart index 02181db46..4e27cf4cb 100644 --- a/spine-flutter/lib/generated/render_command.dart +++ b/spine-flutter/lib/generated/render_command.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'blend_mode.dart'; diff --git a/spine-flutter/lib/generated/rgb2_timeline.dart b/spine-flutter/lib/generated/rgb2_timeline.dart index d9f4cbc1e..c9e2f1138 100644 --- a/spine-flutter/lib/generated/rgb2_timeline.dart +++ b/spine-flutter/lib/generated/rgb2_timeline.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'slot_curve_timeline.dart'; diff --git a/spine-flutter/lib/generated/rgb_timeline.dart b/spine-flutter/lib/generated/rgb_timeline.dart index 736b595de..54716707a 100644 --- a/spine-flutter/lib/generated/rgb_timeline.dart +++ b/spine-flutter/lib/generated/rgb_timeline.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'slot_curve_timeline.dart'; diff --git a/spine-flutter/lib/generated/rgba2_timeline.dart b/spine-flutter/lib/generated/rgba2_timeline.dart index 8da87ed6c..21fb1bb8c 100644 --- a/spine-flutter/lib/generated/rgba2_timeline.dart +++ b/spine-flutter/lib/generated/rgba2_timeline.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'slot_curve_timeline.dart'; diff --git a/spine-flutter/lib/generated/rgba_timeline.dart b/spine-flutter/lib/generated/rgba_timeline.dart index 661ec7900..976601828 100644 --- a/spine-flutter/lib/generated/rgba_timeline.dart +++ b/spine-flutter/lib/generated/rgba_timeline.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'slot_curve_timeline.dart'; diff --git a/spine-flutter/lib/generated/rotate_timeline.dart b/spine-flutter/lib/generated/rotate_timeline.dart index 74920c3ea..82c3e53ab 100644 --- a/spine-flutter/lib/generated/rotate_timeline.dart +++ b/spine-flutter/lib/generated/rotate_timeline.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'bone_timeline1.dart'; diff --git a/spine-flutter/lib/generated/rtti.dart b/spine-flutter/lib/generated/rtti.dart index 3d17264d4..b1aa0f4d6 100644 --- a/spine-flutter/lib/generated/rtti.dart +++ b/spine-flutter/lib/generated/rtti.dart @@ -29,8 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; -import 'package:ffi/ffi.dart'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; diff --git a/spine-flutter/lib/generated/scale_timeline.dart b/spine-flutter/lib/generated/scale_timeline.dart index fc857b870..4ea788607 100644 --- a/spine-flutter/lib/generated/scale_timeline.dart +++ b/spine-flutter/lib/generated/scale_timeline.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'bone_timeline2.dart'; diff --git a/spine-flutter/lib/generated/scale_x_timeline.dart b/spine-flutter/lib/generated/scale_x_timeline.dart index 1ddea169c..47c6f9d60 100644 --- a/spine-flutter/lib/generated/scale_x_timeline.dart +++ b/spine-flutter/lib/generated/scale_x_timeline.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'bone_timeline1.dart'; diff --git a/spine-flutter/lib/generated/scale_y_timeline.dart b/spine-flutter/lib/generated/scale_y_timeline.dart index ae2316216..db0189d55 100644 --- a/spine-flutter/lib/generated/scale_y_timeline.dart +++ b/spine-flutter/lib/generated/scale_y_timeline.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'bone_timeline1.dart'; diff --git a/spine-flutter/lib/generated/sequence.dart b/spine-flutter/lib/generated/sequence.dart index 6d785cc3e..c55f4f0c5 100644 --- a/spine-flutter/lib/generated/sequence.dart +++ b/spine-flutter/lib/generated/sequence.dart @@ -29,8 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; -import 'package:ffi/ffi.dart'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'arrays.dart'; diff --git a/spine-flutter/lib/generated/sequence_timeline.dart b/spine-flutter/lib/generated/sequence_timeline.dart index d61ba2544..9c1666c8f 100644 --- a/spine-flutter/lib/generated/sequence_timeline.dart +++ b/spine-flutter/lib/generated/sequence_timeline.dart @@ -29,8 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; -import 'package:ffi/ffi.dart'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'attachment.dart'; diff --git a/spine-flutter/lib/generated/shear_timeline.dart b/spine-flutter/lib/generated/shear_timeline.dart index ddc6d1d74..768a58bea 100644 --- a/spine-flutter/lib/generated/shear_timeline.dart +++ b/spine-flutter/lib/generated/shear_timeline.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'bone_timeline2.dart'; diff --git a/spine-flutter/lib/generated/shear_x_timeline.dart b/spine-flutter/lib/generated/shear_x_timeline.dart index c0f7fbb7a..ce55c61ab 100644 --- a/spine-flutter/lib/generated/shear_x_timeline.dart +++ b/spine-flutter/lib/generated/shear_x_timeline.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'bone_timeline1.dart'; diff --git a/spine-flutter/lib/generated/shear_y_timeline.dart b/spine-flutter/lib/generated/shear_y_timeline.dart index 286720514..17637a3f2 100644 --- a/spine-flutter/lib/generated/shear_y_timeline.dart +++ b/spine-flutter/lib/generated/shear_y_timeline.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'bone_timeline1.dart'; diff --git a/spine-flutter/lib/generated/skeleton.dart b/spine-flutter/lib/generated/skeleton.dart index 3b0b80c00..08c5293e1 100644 --- a/spine-flutter/lib/generated/skeleton.dart +++ b/spine-flutter/lib/generated/skeleton.dart @@ -29,8 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; -import 'package:ffi/ffi.dart'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'arrays.dart'; diff --git a/spine-flutter/lib/generated/skeleton_binary.dart b/spine-flutter/lib/generated/skeleton_binary.dart index 8b84c85ab..356ae474e 100644 --- a/spine-flutter/lib/generated/skeleton_binary.dart +++ b/spine-flutter/lib/generated/skeleton_binary.dart @@ -29,8 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; -import 'package:ffi/ffi.dart'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'atlas.dart'; diff --git a/spine-flutter/lib/generated/skeleton_bounds.dart b/spine-flutter/lib/generated/skeleton_bounds.dart index 0f5253a73..30332ee23 100644 --- a/spine-flutter/lib/generated/skeleton_bounds.dart +++ b/spine-flutter/lib/generated/skeleton_bounds.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'arrays.dart'; diff --git a/spine-flutter/lib/generated/skeleton_clipping.dart b/spine-flutter/lib/generated/skeleton_clipping.dart index a3a5730d0..9e8b8cdf5 100644 --- a/spine-flutter/lib/generated/skeleton_clipping.dart +++ b/spine-flutter/lib/generated/skeleton_clipping.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'arrays.dart'; diff --git a/spine-flutter/lib/generated/skeleton_data.dart b/spine-flutter/lib/generated/skeleton_data.dart index b5cd1febc..e5bca8030 100644 --- a/spine-flutter/lib/generated/skeleton_data.dart +++ b/spine-flutter/lib/generated/skeleton_data.dart @@ -29,8 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; -import 'package:ffi/ffi.dart'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'animation.dart'; diff --git a/spine-flutter/lib/generated/skeleton_json.dart b/spine-flutter/lib/generated/skeleton_json.dart index 5e24d857d..d69026c6f 100644 --- a/spine-flutter/lib/generated/skeleton_json.dart +++ b/spine-flutter/lib/generated/skeleton_json.dart @@ -29,8 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; -import 'package:ffi/ffi.dart'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'atlas.dart'; diff --git a/spine-flutter/lib/generated/skeleton_renderer.dart b/spine-flutter/lib/generated/skeleton_renderer.dart index 1f2290f44..e8dc7f6e3 100644 --- a/spine-flutter/lib/generated/skeleton_renderer.dart +++ b/spine-flutter/lib/generated/skeleton_renderer.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'render_command.dart'; diff --git a/spine-flutter/lib/generated/skin.dart b/spine-flutter/lib/generated/skin.dart index 2cc90c7f9..0ba10e558 100644 --- a/spine-flutter/lib/generated/skin.dart +++ b/spine-flutter/lib/generated/skin.dart @@ -29,8 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; -import 'package:ffi/ffi.dart'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'arrays.dart'; diff --git a/spine-flutter/lib/generated/slider.dart b/spine-flutter/lib/generated/slider.dart index 7d7284dd0..19144e378 100644 --- a/spine-flutter/lib/generated/slider.dart +++ b/spine-flutter/lib/generated/slider.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'rtti.dart'; diff --git a/spine-flutter/lib/generated/slider_data.dart b/spine-flutter/lib/generated/slider_data.dart index d797430a6..1bcc69e15 100644 --- a/spine-flutter/lib/generated/slider_data.dart +++ b/spine-flutter/lib/generated/slider_data.dart @@ -29,8 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; -import 'package:ffi/ffi.dart'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'rtti.dart'; diff --git a/spine-flutter/lib/generated/slider_mix_timeline.dart b/spine-flutter/lib/generated/slider_mix_timeline.dart index 8e9d64f38..2c0ab30e5 100644 --- a/spine-flutter/lib/generated/slider_mix_timeline.dart +++ b/spine-flutter/lib/generated/slider_mix_timeline.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'constraint_timeline1.dart'; diff --git a/spine-flutter/lib/generated/slider_pose.dart b/spine-flutter/lib/generated/slider_pose.dart index 771a42078..862bbf486 100644 --- a/spine-flutter/lib/generated/slider_pose.dart +++ b/spine-flutter/lib/generated/slider_pose.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; diff --git a/spine-flutter/lib/generated/slider_timeline.dart b/spine-flutter/lib/generated/slider_timeline.dart index d31799f54..beb02cdb9 100644 --- a/spine-flutter/lib/generated/slider_timeline.dart +++ b/spine-flutter/lib/generated/slider_timeline.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'constraint_timeline1.dart'; diff --git a/spine-flutter/lib/generated/slot.dart b/spine-flutter/lib/generated/slot.dart index 41f6891d8..2bf75c176 100644 --- a/spine-flutter/lib/generated/slot.dart +++ b/spine-flutter/lib/generated/slot.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'bone.dart'; diff --git a/spine-flutter/lib/generated/slot_curve_timeline.dart b/spine-flutter/lib/generated/slot_curve_timeline.dart index 809d92476..fbf5c453c 100644 --- a/spine-flutter/lib/generated/slot_curve_timeline.dart +++ b/spine-flutter/lib/generated/slot_curve_timeline.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'curve_timeline.dart'; diff --git a/spine-flutter/lib/generated/slot_data.dart b/spine-flutter/lib/generated/slot_data.dart index eb0654e64..9b756d20b 100644 --- a/spine-flutter/lib/generated/slot_data.dart +++ b/spine-flutter/lib/generated/slot_data.dart @@ -29,8 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; -import 'package:ffi/ffi.dart'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'blend_mode.dart'; diff --git a/spine-flutter/lib/generated/slot_pose.dart b/spine-flutter/lib/generated/slot_pose.dart index 8451f9767..0037c09ef 100644 --- a/spine-flutter/lib/generated/slot_pose.dart +++ b/spine-flutter/lib/generated/slot_pose.dart @@ -29,8 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; -import 'package:ffi/ffi.dart'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'arrays.dart'; diff --git a/spine-flutter/lib/generated/slot_timeline.dart b/spine-flutter/lib/generated/slot_timeline.dart index e02905523..7bd30e184 100644 --- a/spine-flutter/lib/generated/slot_timeline.dart +++ b/spine-flutter/lib/generated/slot_timeline.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import '../spine_bindings.dart'; import 'rtti.dart'; diff --git a/spine-flutter/lib/generated/spine_dart_bindings_generated.dart b/spine-flutter/lib/generated/spine_dart_bindings_generated.dart index c6e6ac148..3e1cdc417 100644 --- a/spine-flutter/lib/generated/spine_dart_bindings_generated.dart +++ b/spine-flutter/lib/generated/spine_dart_bindings_generated.dart @@ -6,7 +6,7 @@ // // Generated by `package:ffigen`. // ignore_for_file: type=lint -import '../../ffi_proxy.dart' as ffi; +import '../ffi_proxy.dart' as ffi; /// Bindings for Spine C headers. /// @@ -7710,104 +7710,117 @@ class SpineDartBindings { _spine_skin_entry_get_attachmentPtr.asFunction(); /// Skeleton functions - spine_bounds spine_skeleton_get_bounds( + void spine_skeleton_get_bounds( spine_skeleton skeleton, + spine_array_float output, ) { return _spine_skeleton_get_bounds( skeleton, + output, ); } late final _spine_skeleton_get_boundsPtr = - _lookup>('spine_skeleton_get_bounds'); + _lookup>('spine_skeleton_get_bounds'); late final _spine_skeleton_get_bounds = - _spine_skeleton_get_boundsPtr.asFunction(); + _spine_skeleton_get_boundsPtr.asFunction(); - spine_vector spine_skeleton_get_position_v( + void spine_skeleton_get_position_v( spine_skeleton skeleton, + spine_array_float output, ) { return _spine_skeleton_get_position_v( skeleton, + output, ); } late final _spine_skeleton_get_position_vPtr = - _lookup>('spine_skeleton_get_position_v'); + _lookup>( + 'spine_skeleton_get_position_v'); late final _spine_skeleton_get_position_v = - _spine_skeleton_get_position_vPtr.asFunction(); + _spine_skeleton_get_position_vPtr.asFunction(); /// BonePose functions - spine_vector spine_bone_pose_world_to_local_v( + void spine_bone_pose_world_to_local_v( spine_bone_pose self, double world_x, double world_y, + spine_array_float output, ) { return _spine_bone_pose_world_to_local_v( self, world_x, world_y, + output, ); } late final _spine_bone_pose_world_to_local_vPtr = - _lookup>( + _lookup>( 'spine_bone_pose_world_to_local_v'); - late final _spine_bone_pose_world_to_local_v = - _spine_bone_pose_world_to_local_vPtr.asFunction(); + late final _spine_bone_pose_world_to_local_v = _spine_bone_pose_world_to_local_vPtr + .asFunction(); - spine_vector spine_bone_pose_local_to_world_v( + void spine_bone_pose_local_to_world_v( spine_bone_pose self, double local_x, double local_y, + spine_array_float output, ) { return _spine_bone_pose_local_to_world_v( self, local_x, local_y, + output, ); } late final _spine_bone_pose_local_to_world_vPtr = - _lookup>( + _lookup>( 'spine_bone_pose_local_to_world_v'); - late final _spine_bone_pose_local_to_world_v = - _spine_bone_pose_local_to_world_vPtr.asFunction(); + late final _spine_bone_pose_local_to_world_v = _spine_bone_pose_local_to_world_vPtr + .asFunction(); - spine_vector spine_bone_pose_world_to_parent_v( + void spine_bone_pose_world_to_parent_v( spine_bone_pose self, double world_x, double world_y, + spine_array_float output, ) { return _spine_bone_pose_world_to_parent_v( self, world_x, world_y, + output, ); } late final _spine_bone_pose_world_to_parent_vPtr = - _lookup>( + _lookup>( 'spine_bone_pose_world_to_parent_v'); - late final _spine_bone_pose_world_to_parent_v = - _spine_bone_pose_world_to_parent_vPtr.asFunction(); + late final _spine_bone_pose_world_to_parent_v = _spine_bone_pose_world_to_parent_vPtr + .asFunction(); - spine_vector spine_bone_pose_parent_to_world_v( + void spine_bone_pose_parent_to_world_v( spine_bone_pose self, double parent_x, double parent_y, + spine_array_float output, ) { return _spine_bone_pose_parent_to_world_v( self, parent_x, parent_y, + output, ); } late final _spine_bone_pose_parent_to_world_vPtr = - _lookup>( + _lookup>( 'spine_bone_pose_parent_to_world_v'); - late final _spine_bone_pose_parent_to_world_v = - _spine_bone_pose_parent_to_world_vPtr.asFunction(); + late final _spine_bone_pose_parent_to_world_v = _spine_bone_pose_parent_to_world_vPtr + .asFunction(); spine_alpha_timeline spine_alpha_timeline_create( int frameCount, @@ -39937,634 +39950,254 @@ class SpineDartBindings { /// mbstate_t is an opaque object to keep conversion state, during multibyte /// stream conversions. The content must not be referenced by user programs. -final class __mbstate_t extends ffi.Union { - @ffi.Array.multi([128]) - external ffi.Array __mbstate8; - - /// for alignment - @ffi.LongLong() - external int _mbstateL; -} - -final class spine_alpha_timeline_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_animation_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_animation_state_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_animation_state_data_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_atlas_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_atlas_attachment_loader_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_atlas_page_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_atlas_region_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_attachment_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_attachment_loader_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_attachment_timeline_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_bone_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_bone_data_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_bone_local_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_bone_pose_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_bone_timeline_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_bone_timeline1_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_bone_timeline2_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_bounding_box_attachment_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_clipping_attachment_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_color_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_constraint_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_constraint_data_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_constraint_timeline_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_constraint_timeline1_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_curve_timeline_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_curve_timeline1_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_deform_timeline_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_draw_order_timeline_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_event_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_event_data_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_event_queue_entry_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_event_timeline_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_from_property_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_from_rotate_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_from_scale_x_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_from_scale_y_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_from_shear_y_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_from_x_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_from_y_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_ik_constraint_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_ik_constraint_data_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_ik_constraint_pose_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_ik_constraint_timeline_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_inherit_timeline_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_linked_mesh_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_mesh_attachment_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_path_attachment_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_path_constraint_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_path_constraint_data_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_path_constraint_mix_timeline_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_path_constraint_pose_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_path_constraint_position_timeline_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_path_constraint_spacing_timeline_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_physics_constraint_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_physics_constraint_damping_timeline_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_physics_constraint_data_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_physics_constraint_gravity_timeline_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_physics_constraint_inertia_timeline_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_physics_constraint_mass_timeline_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_physics_constraint_mix_timeline_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_physics_constraint_pose_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_physics_constraint_reset_timeline_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_physics_constraint_strength_timeline_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_physics_constraint_timeline_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_physics_constraint_wind_timeline_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_point_attachment_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_polygon_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_posed_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_posed_active_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_posed_data_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_region_attachment_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_render_command_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_rgb2_timeline_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_rgba2_timeline_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_rgba_timeline_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_rgb_timeline_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_rotate_timeline_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_rtti_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_scale_timeline_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_scale_x_timeline_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_scale_y_timeline_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_sequence_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_sequence_timeline_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_shear_timeline_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_shear_x_timeline_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_shear_y_timeline_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_skeleton_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_skeleton_binary_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_skeleton_bounds_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_skeleton_clipping_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_skeleton_data_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_skeleton_json_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_skeleton_renderer_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_skin_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_slider_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_slider_data_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_slider_mix_timeline_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_slider_pose_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_slider_timeline_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_slot_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_slot_curve_timeline_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_slot_data_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_slot_pose_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_slot_timeline_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_texture_region_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_timeline_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_to_property_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_to_rotate_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_to_scale_x_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_to_scale_y_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_to_shear_y_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_to_x_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_to_y_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_track_entry_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_transform_constraint_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_transform_constraint_data_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_transform_constraint_pose_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_transform_constraint_timeline_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_translate_timeline_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_translate_x_timeline_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_translate_y_timeline_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_update_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_vertex_attachment_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} + +final class spine_alpha_timeline_wrapper extends ffi.Opaque {} + +final class spine_animation_wrapper extends ffi.Opaque {} + +final class spine_animation_state_wrapper extends ffi.Opaque {} + +final class spine_animation_state_data_wrapper extends ffi.Opaque {} + +final class spine_atlas_wrapper extends ffi.Opaque {} + +final class spine_atlas_attachment_loader_wrapper extends ffi.Opaque {} + +final class spine_atlas_page_wrapper extends ffi.Opaque {} + +final class spine_atlas_region_wrapper extends ffi.Opaque {} + +final class spine_attachment_wrapper extends ffi.Opaque {} + +final class spine_attachment_loader_wrapper extends ffi.Opaque {} + +final class spine_attachment_timeline_wrapper extends ffi.Opaque {} + +final class spine_bone_wrapper extends ffi.Opaque {} + +final class spine_bone_data_wrapper extends ffi.Opaque {} + +final class spine_bone_local_wrapper extends ffi.Opaque {} + +final class spine_bone_pose_wrapper extends ffi.Opaque {} + +final class spine_bone_timeline_wrapper extends ffi.Opaque {} + +final class spine_bone_timeline1_wrapper extends ffi.Opaque {} + +final class spine_bone_timeline2_wrapper extends ffi.Opaque {} + +final class spine_bounding_box_attachment_wrapper extends ffi.Opaque {} + +final class spine_clipping_attachment_wrapper extends ffi.Opaque {} + +final class spine_color_wrapper extends ffi.Opaque {} + +final class spine_constraint_wrapper extends ffi.Opaque {} + +final class spine_constraint_data_wrapper extends ffi.Opaque {} + +final class spine_constraint_timeline_wrapper extends ffi.Opaque {} + +final class spine_constraint_timeline1_wrapper extends ffi.Opaque {} + +final class spine_curve_timeline_wrapper extends ffi.Opaque {} + +final class spine_curve_timeline1_wrapper extends ffi.Opaque {} + +final class spine_deform_timeline_wrapper extends ffi.Opaque {} + +final class spine_draw_order_timeline_wrapper extends ffi.Opaque {} + +final class spine_event_wrapper extends ffi.Opaque {} + +final class spine_event_data_wrapper extends ffi.Opaque {} + +final class spine_event_queue_entry_wrapper extends ffi.Opaque {} + +final class spine_event_timeline_wrapper extends ffi.Opaque {} + +final class spine_from_property_wrapper extends ffi.Opaque {} + +final class spine_from_rotate_wrapper extends ffi.Opaque {} + +final class spine_from_scale_x_wrapper extends ffi.Opaque {} + +final class spine_from_scale_y_wrapper extends ffi.Opaque {} + +final class spine_from_shear_y_wrapper extends ffi.Opaque {} + +final class spine_from_x_wrapper extends ffi.Opaque {} + +final class spine_from_y_wrapper extends ffi.Opaque {} + +final class spine_ik_constraint_wrapper extends ffi.Opaque {} + +final class spine_ik_constraint_data_wrapper extends ffi.Opaque {} + +final class spine_ik_constraint_pose_wrapper extends ffi.Opaque {} + +final class spine_ik_constraint_timeline_wrapper extends ffi.Opaque {} + +final class spine_inherit_timeline_wrapper extends ffi.Opaque {} + +final class spine_linked_mesh_wrapper extends ffi.Opaque {} + +final class spine_mesh_attachment_wrapper extends ffi.Opaque {} + +final class spine_path_attachment_wrapper extends ffi.Opaque {} + +final class spine_path_constraint_wrapper extends ffi.Opaque {} + +final class spine_path_constraint_data_wrapper extends ffi.Opaque {} + +final class spine_path_constraint_mix_timeline_wrapper extends ffi.Opaque {} + +final class spine_path_constraint_pose_wrapper extends ffi.Opaque {} + +final class spine_path_constraint_position_timeline_wrapper extends ffi.Opaque {} + +final class spine_path_constraint_spacing_timeline_wrapper extends ffi.Opaque {} + +final class spine_physics_constraint_wrapper extends ffi.Opaque {} + +final class spine_physics_constraint_damping_timeline_wrapper extends ffi.Opaque {} + +final class spine_physics_constraint_data_wrapper extends ffi.Opaque {} + +final class spine_physics_constraint_gravity_timeline_wrapper extends ffi.Opaque {} + +final class spine_physics_constraint_inertia_timeline_wrapper extends ffi.Opaque {} + +final class spine_physics_constraint_mass_timeline_wrapper extends ffi.Opaque {} + +final class spine_physics_constraint_mix_timeline_wrapper extends ffi.Opaque {} + +final class spine_physics_constraint_pose_wrapper extends ffi.Opaque {} + +final class spine_physics_constraint_reset_timeline_wrapper extends ffi.Opaque {} + +final class spine_physics_constraint_strength_timeline_wrapper extends ffi.Opaque {} + +final class spine_physics_constraint_timeline_wrapper extends ffi.Opaque {} + +final class spine_physics_constraint_wind_timeline_wrapper extends ffi.Opaque {} + +final class spine_point_attachment_wrapper extends ffi.Opaque {} + +final class spine_polygon_wrapper extends ffi.Opaque {} + +final class spine_posed_wrapper extends ffi.Opaque {} + +final class spine_posed_active_wrapper extends ffi.Opaque {} + +final class spine_posed_data_wrapper extends ffi.Opaque {} + +final class spine_region_attachment_wrapper extends ffi.Opaque {} + +final class spine_render_command_wrapper extends ffi.Opaque {} + +final class spine_rgb2_timeline_wrapper extends ffi.Opaque {} + +final class spine_rgba2_timeline_wrapper extends ffi.Opaque {} + +final class spine_rgba_timeline_wrapper extends ffi.Opaque {} + +final class spine_rgb_timeline_wrapper extends ffi.Opaque {} + +final class spine_rotate_timeline_wrapper extends ffi.Opaque {} + +final class spine_rtti_wrapper extends ffi.Opaque {} + +final class spine_scale_timeline_wrapper extends ffi.Opaque {} + +final class spine_scale_x_timeline_wrapper extends ffi.Opaque {} + +final class spine_scale_y_timeline_wrapper extends ffi.Opaque {} + +final class spine_sequence_wrapper extends ffi.Opaque {} + +final class spine_sequence_timeline_wrapper extends ffi.Opaque {} + +final class spine_shear_timeline_wrapper extends ffi.Opaque {} + +final class spine_shear_x_timeline_wrapper extends ffi.Opaque {} + +final class spine_shear_y_timeline_wrapper extends ffi.Opaque {} + +final class spine_skeleton_wrapper extends ffi.Opaque {} + +final class spine_skeleton_binary_wrapper extends ffi.Opaque {} + +final class spine_skeleton_bounds_wrapper extends ffi.Opaque {} + +final class spine_skeleton_clipping_wrapper extends ffi.Opaque {} + +final class spine_skeleton_data_wrapper extends ffi.Opaque {} + +final class spine_skeleton_json_wrapper extends ffi.Opaque {} + +final class spine_skeleton_renderer_wrapper extends ffi.Opaque {} + +final class spine_skin_wrapper extends ffi.Opaque {} + +final class spine_slider_wrapper extends ffi.Opaque {} + +final class spine_slider_data_wrapper extends ffi.Opaque {} + +final class spine_slider_mix_timeline_wrapper extends ffi.Opaque {} + +final class spine_slider_pose_wrapper extends ffi.Opaque {} + +final class spine_slider_timeline_wrapper extends ffi.Opaque {} + +final class spine_slot_wrapper extends ffi.Opaque {} + +final class spine_slot_curve_timeline_wrapper extends ffi.Opaque {} + +final class spine_slot_data_wrapper extends ffi.Opaque {} + +final class spine_slot_pose_wrapper extends ffi.Opaque {} + +final class spine_slot_timeline_wrapper extends ffi.Opaque {} + +final class spine_texture_region_wrapper extends ffi.Opaque {} + +final class spine_timeline_wrapper extends ffi.Opaque {} + +final class spine_to_property_wrapper extends ffi.Opaque {} + +final class spine_to_rotate_wrapper extends ffi.Opaque {} + +final class spine_to_scale_x_wrapper extends ffi.Opaque {} + +final class spine_to_scale_y_wrapper extends ffi.Opaque {} + +final class spine_to_shear_y_wrapper extends ffi.Opaque {} + +final class spine_to_x_wrapper extends ffi.Opaque {} + +final class spine_to_y_wrapper extends ffi.Opaque {} + +final class spine_track_entry_wrapper extends ffi.Opaque {} + +final class spine_transform_constraint_wrapper extends ffi.Opaque {} + +final class spine_transform_constraint_data_wrapper extends ffi.Opaque {} + +final class spine_transform_constraint_pose_wrapper extends ffi.Opaque {} + +final class spine_transform_constraint_timeline_wrapper extends ffi.Opaque {} + +final class spine_translate_timeline_wrapper extends ffi.Opaque {} + +final class spine_translate_x_timeline_wrapper extends ffi.Opaque {} + +final class spine_translate_y_timeline_wrapper extends ffi.Opaque {} + +final class spine_update_wrapper extends ffi.Opaque {} + +final class spine_vertex_attachment_wrapper extends ffi.Opaque {} abstract class spine_attachment_type { static const int SPINE_ATTACHMENT_TYPE_REGION = 0; @@ -40708,140 +40341,59 @@ abstract class spine_texture_wrap { static const int SPINE_TEXTURE_WRAP_REPEAT = 2; } -final class spine_array_float_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} +final class spine_array_float_wrapper extends ffi.Opaque {} -final class spine_array_int_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} +final class spine_array_int_wrapper extends ffi.Opaque {} -final class spine_array_unsigned_short_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} +final class spine_array_unsigned_short_wrapper extends ffi.Opaque {} -final class spine_array_property_id_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} +final class spine_array_property_id_wrapper extends ffi.Opaque {} -final class spine_array_animation_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} +final class spine_array_animation_wrapper extends ffi.Opaque {} -final class spine_array_atlas_page_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} +final class spine_array_atlas_page_wrapper extends ffi.Opaque {} -final class spine_array_atlas_region_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} +final class spine_array_atlas_region_wrapper extends ffi.Opaque {} -final class spine_array_attachment_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} +final class spine_array_attachment_wrapper extends ffi.Opaque {} -final class spine_array_bone_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} +final class spine_array_bone_wrapper extends ffi.Opaque {} -final class spine_array_bone_data_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} +final class spine_array_bone_data_wrapper extends ffi.Opaque {} -final class spine_array_bone_pose_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} +final class spine_array_bone_pose_wrapper extends ffi.Opaque {} -final class spine_array_bounding_box_attachment_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} +final class spine_array_bounding_box_attachment_wrapper extends ffi.Opaque {} -final class spine_array_constraint_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} +final class spine_array_constraint_wrapper extends ffi.Opaque {} -final class spine_array_constraint_data_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} +final class spine_array_constraint_data_wrapper extends ffi.Opaque {} -final class spine_array_event_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} +final class spine_array_event_wrapper extends ffi.Opaque {} -final class spine_array_event_data_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} +final class spine_array_event_data_wrapper extends ffi.Opaque {} -final class spine_array_from_property_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} +final class spine_array_from_property_wrapper extends ffi.Opaque {} -final class spine_array_physics_constraint_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} +final class spine_array_physics_constraint_wrapper extends ffi.Opaque {} -final class spine_array_polygon_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} +final class spine_array_polygon_wrapper extends ffi.Opaque {} -final class spine_array_skin_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} +final class spine_array_skin_wrapper extends ffi.Opaque {} -final class spine_array_slot_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} +final class spine_array_slot_wrapper extends ffi.Opaque {} -final class spine_array_slot_data_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} +final class spine_array_slot_data_wrapper extends ffi.Opaque {} -final class spine_array_texture_region_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} +final class spine_array_texture_region_wrapper extends ffi.Opaque {} -final class spine_array_timeline_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} +final class spine_array_timeline_wrapper extends ffi.Opaque {} -final class spine_array_to_property_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} +final class spine_array_to_property_wrapper extends ffi.Opaque {} -final class spine_array_track_entry_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} +final class spine_array_track_entry_wrapper extends ffi.Opaque {} -final class spine_array_update_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} +final class spine_array_update_wrapper extends ffi.Opaque {} typedef spine_array_float = ffi.Pointer; typedef spine_array_int = ffi.Pointer; @@ -40899,64 +40451,19 @@ typedef spine_bone_local = ffi.Pointer; typedef spine_atlas = ffi.Pointer; typedef spine_skeleton_data = ffi.Pointer; -final class spine_atlas_result_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} +final class spine_atlas_result_wrapper extends ffi.Opaque {} -final class spine_skeleton_data_result_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} +final class spine_skeleton_data_result_wrapper extends ffi.Opaque {} -final class spine_skeleton_drawable_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} +final class spine_skeleton_drawable_wrapper extends ffi.Opaque {} -final class spine_animation_state_events_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} +final class spine_animation_state_events_wrapper extends ffi.Opaque {} -final class spine_skin_entry_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} +final class spine_skin_entry_wrapper extends ffi.Opaque {} -final class spine_skin_entries_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} +final class spine_skin_entries_wrapper extends ffi.Opaque {} -final class spine_texture_loader_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -/// Bounds struct -final class spine_bounds extends ffi.Struct { - @ffi.Float() - external double x; - - @ffi.Float() - external double y; - - @ffi.Float() - external double width; - - @ffi.Float() - external double height; -} - -/// Vector struct -final class spine_vector extends ffi.Struct { - @ffi.Float() - external double x; - - @ffi.Float() - external double y; -} +final class spine_texture_loader_wrapper extends ffi.Opaque {} typedef spine_atlas_result = ffi.Pointer; diff --git a/spine-flutter/lib/generated/texture_region.dart b/spine-flutter/lib/generated/texture_region.dart index 9014c9ee1..3df91d574 100644 --- a/spine-flutter/lib/generated/texture_region.dart +++ b/spine-flutter/lib/generated/texture_region.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'rtti.dart'; diff --git a/spine-flutter/lib/generated/timeline.dart b/spine-flutter/lib/generated/timeline.dart index d3264115b..9d5cdbebf 100644 --- a/spine-flutter/lib/generated/timeline.dart +++ b/spine-flutter/lib/generated/timeline.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'rtti.dart'; diff --git a/spine-flutter/lib/generated/to_property.dart b/spine-flutter/lib/generated/to_property.dart index 8b80952ba..d64ad7291 100644 --- a/spine-flutter/lib/generated/to_property.dart +++ b/spine-flutter/lib/generated/to_property.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'rtti.dart'; diff --git a/spine-flutter/lib/generated/to_rotate.dart b/spine-flutter/lib/generated/to_rotate.dart index f995afa7e..e56f37155 100644 --- a/spine-flutter/lib/generated/to_rotate.dart +++ b/spine-flutter/lib/generated/to_rotate.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'to_property.dart'; diff --git a/spine-flutter/lib/generated/to_scale_x.dart b/spine-flutter/lib/generated/to_scale_x.dart index 8a4dd8896..c4697d049 100644 --- a/spine-flutter/lib/generated/to_scale_x.dart +++ b/spine-flutter/lib/generated/to_scale_x.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'to_property.dart'; diff --git a/spine-flutter/lib/generated/to_scale_y.dart b/spine-flutter/lib/generated/to_scale_y.dart index 244ed8f18..f472dd5cf 100644 --- a/spine-flutter/lib/generated/to_scale_y.dart +++ b/spine-flutter/lib/generated/to_scale_y.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'to_property.dart'; diff --git a/spine-flutter/lib/generated/to_shear_y.dart b/spine-flutter/lib/generated/to_shear_y.dart index a19272c79..af8f41f15 100644 --- a/spine-flutter/lib/generated/to_shear_y.dart +++ b/spine-flutter/lib/generated/to_shear_y.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'to_property.dart'; diff --git a/spine-flutter/lib/generated/to_x.dart b/spine-flutter/lib/generated/to_x.dart index 6def4fb43..db8172b56 100644 --- a/spine-flutter/lib/generated/to_x.dart +++ b/spine-flutter/lib/generated/to_x.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'to_property.dart'; diff --git a/spine-flutter/lib/generated/to_y.dart b/spine-flutter/lib/generated/to_y.dart index 248d8cd59..85a4e8d2a 100644 --- a/spine-flutter/lib/generated/to_y.dart +++ b/spine-flutter/lib/generated/to_y.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'to_property.dart'; diff --git a/spine-flutter/lib/generated/track_entry.dart b/spine-flutter/lib/generated/track_entry.dart index e5a503c28..bacd3b6cf 100644 --- a/spine-flutter/lib/generated/track_entry.dart +++ b/spine-flutter/lib/generated/track_entry.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'animation.dart'; diff --git a/spine-flutter/lib/generated/transform_constraint.dart b/spine-flutter/lib/generated/transform_constraint.dart index bbc35cb4e..281390c3a 100644 --- a/spine-flutter/lib/generated/transform_constraint.dart +++ b/spine-flutter/lib/generated/transform_constraint.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'rtti.dart'; diff --git a/spine-flutter/lib/generated/transform_constraint_data.dart b/spine-flutter/lib/generated/transform_constraint_data.dart index cefe8c55d..c637f0a73 100644 --- a/spine-flutter/lib/generated/transform_constraint_data.dart +++ b/spine-flutter/lib/generated/transform_constraint_data.dart @@ -29,8 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; -import 'package:ffi/ffi.dart'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'rtti.dart'; diff --git a/spine-flutter/lib/generated/transform_constraint_pose.dart b/spine-flutter/lib/generated/transform_constraint_pose.dart index 6f9496c69..365c5ff3c 100644 --- a/spine-flutter/lib/generated/transform_constraint_pose.dart +++ b/spine-flutter/lib/generated/transform_constraint_pose.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; diff --git a/spine-flutter/lib/generated/transform_constraint_timeline.dart b/spine-flutter/lib/generated/transform_constraint_timeline.dart index b4acd74db..0fdad5fb1 100644 --- a/spine-flutter/lib/generated/transform_constraint_timeline.dart +++ b/spine-flutter/lib/generated/transform_constraint_timeline.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'constraint_timeline.dart'; diff --git a/spine-flutter/lib/generated/translate_timeline.dart b/spine-flutter/lib/generated/translate_timeline.dart index ba36bd27c..68ef342f4 100644 --- a/spine-flutter/lib/generated/translate_timeline.dart +++ b/spine-flutter/lib/generated/translate_timeline.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'bone_timeline2.dart'; diff --git a/spine-flutter/lib/generated/translate_x_timeline.dart b/spine-flutter/lib/generated/translate_x_timeline.dart index 8a10cf4cb..7c3a41844 100644 --- a/spine-flutter/lib/generated/translate_x_timeline.dart +++ b/spine-flutter/lib/generated/translate_x_timeline.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'bone_timeline1.dart'; diff --git a/spine-flutter/lib/generated/translate_y_timeline.dart b/spine-flutter/lib/generated/translate_y_timeline.dart index 540a18349..a24f2830c 100644 --- a/spine-flutter/lib/generated/translate_y_timeline.dart +++ b/spine-flutter/lib/generated/translate_y_timeline.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'bone_timeline1.dart'; diff --git a/spine-flutter/lib/generated/update.dart b/spine-flutter/lib/generated/update.dart index 033e9bf15..f69648fc0 100644 --- a/spine-flutter/lib/generated/update.dart +++ b/spine-flutter/lib/generated/update.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import '../spine_bindings.dart'; import 'rtti.dart'; import 'physics.dart'; diff --git a/spine-flutter/lib/generated/vertex_attachment.dart b/spine-flutter/lib/generated/vertex_attachment.dart index c8e4df9f5..833d04235 100644 --- a/spine-flutter/lib/generated/vertex_attachment.dart +++ b/spine-flutter/lib/generated/vertex_attachment.dart @@ -29,8 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; -import 'package:ffi/ffi.dart'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'arrays.dart'; diff --git a/spine-flutter/lib/io_stub.dart b/spine-flutter/lib/io_stub.dart new file mode 100644 index 000000000..70bad8c7e --- /dev/null +++ b/spine-flutter/lib/io_stub.dart @@ -0,0 +1,16 @@ +import 'dart:typed_data'; + +/// Stub File class for web platform +class File { + final String path; + + File(this.path); + + Future readAsBytes() async { + throw UnsupportedError('File operations are not supported on web. Use fromAsset or fromHttp instead.'); + } + + Future readAsString() async { + throw UnsupportedError('File operations are not supported on web. Use fromAsset or fromHttp instead.'); + } +} diff --git a/spine-flutter/lib/malloc_native.dart b/spine-flutter/lib/malloc_native.dart new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/spine-flutter/lib/malloc_native.dart @@ -0,0 +1 @@ + diff --git a/spine-flutter/lib/malloc_web.dart b/spine-flutter/lib/malloc_web.dart new file mode 100644 index 000000000..8efaf35cd --- /dev/null +++ b/spine-flutter/lib/malloc_web.dart @@ -0,0 +1,11 @@ +import 'web_ffi/web_ffi.dart'; +import 'web_ffi/web_ffi_modules.dart'; + +/// Web implementation of malloc that uses the Memory allocator +/// Memory.global will be set when the DynamicLibrary is loaded +Allocator get malloc { + if (Memory.global == null) { + throw StateError('Memory.global is not initialized. Make sure spine is initialized before using malloc.'); + } + return Memory.global!; +} diff --git a/spine-flutter/lib/native_array.dart b/spine-flutter/lib/native_array.dart index 9144a5509..6c389ba1b 100644 --- a/spine-flutter/lib/native_array.dart +++ b/spine-flutter/lib/native_array.dart @@ -27,7 +27,7 @@ // SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. // *****************************************************************************/ -import 'dart:ffi'; +import 'ffi_proxy.dart'; import 'dart:collection'; /// Base class for native spine arrays. @@ -55,7 +55,7 @@ abstract class NativeArray extends ListBase { /// Set the element at the given index. /// For read-only arrays, this will throw an UnsupportedError. - /// Must be implemented by subclasses. + /// Must be implemented by subclasses that support modification. @override void operator []=(int index, T value) { throw UnsupportedError('This array is read-only'); @@ -63,7 +63,7 @@ abstract class NativeArray extends ListBase { /// Sets the length of the list. /// For read-only arrays, this will throw an UnsupportedError. - /// Must be implemented by subclasses. + /// Must be implemented by subclasses that support modification. @override set length(int newLength) { throw UnsupportedError('This array is read-only'); diff --git a/spine-flutter/lib/spine_dart.dart b/spine-flutter/lib/spine_dart.dart index f026a1be4..fbb1436df 100644 --- a/spine-flutter/lib/spine_dart.dart +++ b/spine-flutter/lib/spine_dart.dart @@ -26,12 +26,13 @@ /// THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. library; +import 'package:spine_flutter/generated/arrays.dart'; + import 'generated/spine_dart_bindings_generated.dart'; import 'spine_bindings.dart'; -import 'spine_dart_init.dart' if (dart.library.html) 'spine_flutter_init_web.dart'; -import 'dart:ffi'; +import 'spine_dart_init.dart' if (dart.library.html) 'spine_dart_init_web.dart'; +import 'ffi_proxy.dart'; import 'dart:typed_data'; -import 'package:ffi/ffi.dart'; import 'generated/atlas.dart'; import 'generated/skeleton_data.dart'; import 'generated/skin.dart'; @@ -346,40 +347,59 @@ class Vector { extension SkeletonExtensions on Skeleton { /// Get the axis-aligned bounding box (AABB) containing all world vertices of the skeleton Bounds get bounds { - final spineBounds = SpineBindings.bindings.spine_skeleton_get_bounds(nativePtr.cast()); - return Bounds( - x: spineBounds.x, - y: spineBounds.y, - width: spineBounds.width, - height: spineBounds.height, + final output = ArrayFloat(); + SpineBindings.bindings.spine_skeleton_get_bounds(nativePtr.cast(), output.nativePtr.cast()); + final bounds = Bounds( + x: output[0], + y: output[1], + width: output[2], + height: output[3], ); + output.dispose(); + return bounds; } Vector getPosition() { - final position = SpineBindings.bindings.spine_skeleton_get_position_v(nativePtr.cast()); - return Vector(x: position.x, y: position.y); + final output = ArrayFloat.withCapacity(2); + SpineBindings.bindings.spine_skeleton_get_position_v(nativePtr.cast(), output.nativePtr.cast()); + final position = Vector(x: output[0], y: output[1]); + output.dispose(); + return position; } } extension BonePoseExtensions on BonePose { Vector worldToLocal(double worldX, double worldY) { - final result = SpineBindings.bindings.spine_bone_pose_world_to_local_v(nativePtr.cast(), worldX, worldY); - return Vector(x: result.x, y: result.y); + final output = ArrayFloat.withCapacity(2); + SpineBindings.bindings.spine_bone_pose_world_to_local_v(nativePtr.cast(), worldX, worldY, output.nativePtr.cast()); + final vector = Vector(x: output[0], y: output[1]); + output.dispose(); + return vector; } Vector localToWorld(double localX, double localY) { - final result = SpineBindings.bindings.spine_bone_pose_local_to_world_v(nativePtr.cast(), localX, localY); - return Vector(x: result.x, y: result.y); + final output = ArrayFloat.withCapacity(2); + SpineBindings.bindings.spine_bone_pose_local_to_world_v(nativePtr.cast(), localX, localY, output.nativePtr.cast()); + final vector = Vector(x: output[0], y: output[1]); + output.dispose(); + return vector; } Vector worldToParent(double worldX, double worldY) { - final result = SpineBindings.bindings.spine_bone_pose_world_to_parent_v(nativePtr.cast(), worldX, worldY); - return Vector(x: result.x, y: result.y); + final output = ArrayFloat.withCapacity(2); + SpineBindings.bindings.spine_bone_pose_world_to_parent_v(nativePtr.cast(), worldX, worldY, output.nativePtr.cast()); + final vector = Vector(x: output[0], y: output[1]); + output.dispose(); + return vector; } Vector parentToWorld(double parentX, double parentY) { - final result = SpineBindings.bindings.spine_bone_pose_parent_to_world_v(nativePtr.cast(), parentX, parentY); - return Vector(x: result.x, y: result.y); + final output = ArrayFloat.withCapacity(2); + SpineBindings.bindings + .spine_bone_pose_parent_to_world_v(nativePtr.cast(), parentX, parentY, output.nativePtr.cast()); + final vector = Vector(x: output[0], y: output[1]); + output.dispose(); + return vector; } } diff --git a/spine-flutter/lib/spine_dart_init_web.dart b/spine-flutter/lib/spine_dart_init_web.dart index cd1bb5745..3382796c2 100644 --- a/spine-flutter/lib/spine_dart_init_web.dart +++ b/spine-flutter/lib/spine_dart_init_web.dart @@ -1,37 +1,39 @@ -/// -/// Spine Runtimes License Agreement -/// Last updated April 5, 2025. Replaces all prior versions. -/// -/// Copyright (c) 2013-2025, Esoteric Software LLC -/// -/// Integration of the Spine Runtimes into software or otherwise creating -/// derivative works of the Spine Runtimes is permitted under the terms and -/// conditions of Section 2 of the Spine Editor License Agreement: -/// http://esotericsoftware.com/spine-editor-license -/// -/// Otherwise, it is permitted to integrate the Spine Runtimes into software -/// or otherwise create derivative works of the Spine Runtimes (collectively, -/// "Products"), provided that each user of the Products must obtain their own -/// Spine Editor license and redistribution of the Products in any form must -/// include this license and copyright notice. -/// -/// THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY -/// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -/// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -/// DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY -/// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -/// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, -/// BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND -/// ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -/// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -/// THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -/// +// +// Spine Runtimes License Agreement +// Last updated April 5, 2025. Replaces all prior versions. +// +// Copyright (c) 2013-2025, Esoteric Software LLC +// +// Integration of the Spine Runtimes into software or otherwise creating +// derivative works of the Spine Runtimes is permitted under the terms and +// conditions of Section 2 of the Spine Editor License Agreement: +// http://esotericsoftware.com/spine-editor-license +// +// Otherwise, it is permitted to integrate the Spine Runtimes into software +// or otherwise create derivative works of the Spine Runtimes (collectively, +// "Products"), provided that each user of the Products must obtain their own +// Spine Editor license and redistribution of the Products in any form must +// include this license and copyright notice. +// +// THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +// DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY +// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, +// BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND +// ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +// THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// + +// AUTO GENERATED FILE, DO NOT EDIT. // ignore_for_file: type_argument_not_matching_bounds import 'package:flutter/services.dart'; import 'package:inject_js/inject_js.dart' as js; -import 'package:web_ffi_fork/web_ffi.dart'; -import 'package:web_ffi_fork/web_ffi_modules.dart'; +import 'web_ffi/web_ffi.dart'; +import 'web_ffi/web_ffi_modules.dart'; import 'generated/spine_dart_bindings_generated.dart'; @@ -48,45 +50,164 @@ Future initSpineDartFFI(bool useStaticLinkage) async { if (_module == null) { Memory.init(); - registerOpaqueType(); - registerOpaqueType(); - registerOpaqueType(); - registerOpaqueType(); - registerOpaqueType(); - registerOpaqueType(); - registerOpaqueType(); - registerOpaqueType(); - registerOpaqueType(); - registerOpaqueType(); - registerOpaqueType(); - registerOpaqueType(); - registerOpaqueType(); - registerOpaqueType(); - registerOpaqueType(); - registerOpaqueType(); - registerOpaqueType(); - registerOpaqueType(); - registerOpaqueType(); - registerOpaqueType(); - registerOpaqueType(); - registerOpaqueType(); - registerOpaqueType(); - registerOpaqueType(); - registerOpaqueType(); - registerOpaqueType(); + registerOpaqueType(); registerOpaqueType(); registerOpaqueType(); - registerOpaqueType(); - registerOpaqueType(); - registerOpaqueType(); + registerOpaqueType(); registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); registerOpaqueType(); - registerOpaqueType(); - registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); registerOpaqueType(); - registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); await js.importLibrary('assets/packages/spine_flutter/lib/assets/libspine_flutter.js'); Uint8List wasmBinaries = (await rootBundle.load( diff --git a/spine-flutter/lib/spine_flutter.dart b/spine-flutter/lib/spine_flutter.dart index 88b65a6f5..93c42e1b8 100644 --- a/spine-flutter/lib/spine_flutter.dart +++ b/spine-flutter/lib/spine_flutter.dart @@ -5,8 +5,8 @@ export 'spine_widget.dart'; export 'raw_image_provider.dart'; import 'dart:convert' as convert; -import 'dart:ffi'; -import 'dart:io'; +import 'ffi_proxy.dart'; +import 'dart:io' if (dart.library.html) 'io_stub.dart'; import 'dart:typed_data'; import 'dart:ui'; @@ -87,6 +87,9 @@ class AtlasFlutter extends Atlas { /// Loads an [AtlasFlutter] from the file [atlasFileName]. static Future fromFile(String atlasFileName) async { + if (kIsWeb) { + throw UnsupportedError('File operations are not supported on web. Use fromAsset or fromHttp instead.'); + } return _load(atlasFileName, (file) => File(file).readAsBytes()); } @@ -139,6 +142,9 @@ class SkeletonDataFlutter extends SkeletonData { /// /// Throws an [Exception] in case the skeleton data could not be loaded. static Future fromFile(AtlasFlutter atlasFlutter, String skeletonFile) async { + if (kIsWeb) { + throw UnsupportedError('File operations are not supported on web. Use fromAsset or fromHttp instead.'); + } if (skeletonFile.endsWith(".json")) { final jsonData = await File(skeletonFile).readAsString(); final skeletonData = loadSkeletonDataJson(atlasFlutter, jsonData, path: skeletonFile); @@ -320,6 +326,9 @@ class SkeletonDrawableFlutter extends SkeletonDrawable { /// /// Throws an exception in case the data could not be loaded. static Future fromFile(String atlasFile, String skeletonFile) async { + if (kIsWeb) { + throw UnsupportedError('File operations are not supported on web. Use fromAsset or fromHttp instead.'); + } final atlasFlutter = await AtlasFlutter.fromFile(atlasFile); final skeletonDataFlutter = await SkeletonDataFlutter.fromFile(atlasFlutter, skeletonFile); return SkeletonDrawableFlutter(atlasFlutter, skeletonDataFlutter, true); diff --git a/spine-flutter/lib/web_ffi/ffi/extensions.dart b/spine-flutter/lib/web_ffi/ffi/extensions.dart new file mode 100755 index 000000000..0234e5c94 --- /dev/null +++ b/spine-flutter/lib/web_ffi/ffi/extensions.dart @@ -0,0 +1,253 @@ +import 'dart:typed_data'; +import 'types.dart'; + +import '../modules/memory.dart'; +import '../modules/module.dart'; +import '../internal/marshaller.dart'; + +import '../web_ffi_meta.dart'; + +/// Extension on [Pointer] specialized for the type argument [NativeFunction]. +extension NativeFunctionPointer on Pointer> { + /// Convert to Dart function, automatically marshalling the arguments and return value. + /// + /// There are several rules that apply for the return type of `DF`, see + /// the list of [allowed return types](https://github.com/EPNW/web_ffi/blob/master/return_types.md). + /// If marshalling failes, a [MarshallingException] is thrown. + /// + /// If this is called on a pointer that does not point to a function, + /// a [ArgumentError](https://api.dart.dev/stable/dart-core/ArgumentError-class.html) is thrown. + DF asFunction() { + WasmSymbol symbol = symbolByAddress(boundMemory, address); + if (symbol is FunctionDescription) { + return marshall(symbol.function, boundMemory); + } else { + throw ArgumentError('No function at address $address was found (but a global symbol)!'); + } + } +} + +extension DynamicLibraryExtension on DynamicLibrary { + /// Helper that combines lookup and cast to a Dart function. + /// + /// This simply calles [DynamicLibrary.lookup] and [NativeFunctionPointer.asFunction] + /// internally, so see this two methods for additional insights. + F lookupFunction(String name) => + this.lookup>(name).asFunction(); +} + +/// Extension on [Allocator] to provide allocation with [NativeType]. +extension AllocatorAlloc on Allocator { + /// Allocates `sizeOf() * count` bytes of memory using [Allocator.allocate]. + /// + /// Since this calls [sizeOf] internally, an exception will be thrown if this + /// method is called with an @[unsized] type or before [Memory.init] was called. + Pointer call([int count = 1]) => allocate(sizeOf() * count); +} + +/// Extension on [Pointer] specialized for the type argument [Float]. +extension FloatPointer on Pointer { + /// The float at address. + double get value => this[0]; + void set value(double value) => this[0] = value; + + /// Creates a typed list view backed by memory in the address space. + /// + /// The returned view will allow access to the memory range + /// from address to `address + size * length`. + Float32List asTypedList(int length) => boundMemory.buffer.asFloat32List(address, length); + + /// The float at `address + size * index`. + double operator [](int index) => viewSingle(index).getFloat32(0, Memory.endianess); + void operator []=(int index, double value) => viewSingle(index).setFloat32(0, value, Memory.endianess); +} + +/// Extension on [Pointer] specialized for the type argument [Double]. +extension DoublePointer on Pointer { + /// The double at address. + double get value => this[0]; + void set value(double value) => this[0] = value; + + /// Creates a typed list view backed by memory in the address space. + /// + /// The returned view will allow access to the memory range + /// from address to `address + size * length`. + Float64List asTypedList(int length) => boundMemory.buffer.asFloat64List(address, length); + + /// The double at `address + size * index`. + double operator [](int index) => viewSingle(index).getFloat64(0, Memory.endianess); + void operator []=(int index, double value) => viewSingle(index).setFloat64(0, value, Memory.endianess); +} + +/// Extension on [Pointer] specialized for the type argument [Int8]. +extension Int8Pointer on Pointer { + /// The 8-bit integer at `address`. + int get value => this[0]; + void set value(int value) => this[0] = value; + + /// Creates a typed list view backed by memory in the address space. + /// + /// The returned view will allow access to the memory range + /// from address to `address + size * length`. + Int8List asTypedList(int length) => boundMemory.buffer.asInt8List(address, length); + + /// The 8-bit integer at `address + size * index`. + int operator [](int index) => viewSingle(index).getInt8(0); + void operator []=(int index, int value) => viewSingle(index).setInt8(0, value); +} + +/// Extension on [Pointer] specialized for the type argument [Int16]. +extension Int16Pointer on Pointer { + /// The 16-bit integer at `address`. + int get value => this[0]; + void set value(int value) => this[0] = value; + + /// Creates a typed list view backed by memory in the address space. + /// + /// The returned view will allow access to the memory range + /// from address to `address + size * length`. + Int16List asTypedList(int length) => boundMemory.buffer.asInt16List(address, length); + + /// The 16-bit integer at `address + size * index`. + int operator [](int index) => viewSingle(index).getInt16(0, Memory.endianess); + void operator []=(int index, int value) => viewSingle(index).setInt16(0, value, Memory.endianess); +} + +/// Extension on [Pointer] specialized for the type argument [Int32]. +extension Int32Pointer on Pointer { + /// The 32-bit integer at `address`. + int get value => this[0]; + void set value(int value) => this[0] = value; + + /// Creates a typed list view backed by memory in the address space. + /// + /// The returned view will allow access to the memory range + /// from address to `address + size * length`. + Int32List asTypedList(int length) => boundMemory.buffer.asInt32List(address, length); + + /// The 32-bit integer at `address + size * index`. + int operator [](int index) => viewSingle(index).getInt32(0, Memory.endianess); + void operator []=(int index, int value) => viewSingle(index).setInt32(0, value, Memory.endianess); +} + +/// Extension on [Pointer] specialized for the type argument [Int64]. +extension Int64Pointer on Pointer { + /// The 64-bit integer at `address`. + int get value => this[0]; + void set value(int value) => this[0] = value; + + /// Creates a typed list view backed by memory in the address space. + /// + /// The returned view will allow access to the memory range + /// from address to `address + size * length`. + Int64List asTypedList(int length) => boundMemory.buffer.asInt64List(address, length); + + /// The 64-bit integer at `address + size * index`. + int operator [](int index) => viewSingle(index).getInt64(0, Memory.endianess); + void operator []=(int index, int value) => viewSingle(index).setInt64(0, value, Memory.endianess); +} + +/// Extension on [Pointer] specialized for the type argument [Uint8]. +extension Uint8Pointer on Pointer { + /// The 8-bit unsigned integer at `address`. + int get value => this[0]; + void set value(int value) => this[0] = value; + + /// Creates a typed list view backed by memory in the address space. + /// + /// The returned view will allow access to the memory range + /// from address to `address + size * length`. + Uint8List asTypedList(int length) => boundMemory.buffer.asUint8List(address, length); + + /// The 8-bit unsigned integer at `address + size * index`. + int operator [](int index) => viewSingle(index).getUint8(0); + void operator []=(int index, int value) => viewSingle(index).setUint8(0, value); +} + +/// Extension on [Pointer] specialized for the type argument [Uint16]. +extension Uint16Pointer on Pointer { + /// The 16-bit unsigned integer at `address`. + int get value => this[0]; + void set value(int value) => this[0] = value; + + /// Creates a typed list view backed by memory in the address space. + /// + /// The returned view will allow access to the memory range + /// from address to `address + size * length`. + Uint16List asTypedList(int length) => boundMemory.buffer.asUint16List(address, length); + + /// The 16-bit unsigned integer at `address + size * index`. + int operator [](int index) => viewSingle(index).getUint16(0, Memory.endianess); + void operator []=(int index, int value) => viewSingle(index).setUint16(0, value, Memory.endianess); +} + +/// Extension on [Pointer] specialized for the type argument [Uint32]. +extension Uint32Pointer on Pointer { + /// The 32-bit unsigned integer at `address`. + int get value => this[0]; + void set value(int value) => this[0] = value; + + /// Creates a typed list view backed by memory in the address space. + /// + /// The returned view will allow access to the memory range + /// from address to `address + size * length`. + Uint32List asTypedList(int length) => boundMemory.buffer.asUint32List(address, length); + + /// The 32-bit unsigned integer at `address + size * index`. + int operator [](int index) => viewSingle(index).getUint32(0, Memory.endianess); + void operator []=(int index, int value) => viewSingle(index).setUint32(0, value, Memory.endianess); +} + +/// Extension on [Pointer] specialized for the type argument [Uint64]. +extension Uint64Pointer on Pointer { + /// The 64-bit unsigned integer at `address`. + int get value => this[0]; + void set value(int value) => this[0] = value; + + /// Creates a typed list view backed by memory in the address space. + /// + /// The returned view will allow access to the memory range + /// from address to `address + size * length`. + Uint64List asTypedList(int length) => boundMemory.buffer.asUint64List(address, length); + + /// The 64-bit unsigned integer at `address + size * index`. + int operator [](int index) => viewSingle(index).getUint64(0, Memory.endianess); + void operator []=(int index, int value) => viewSingle(index).setUint64(0, value, Memory.endianess); +} + +/// Extension on [Pointer] specialized for the type argument [IntPtr]. +extension IntPtrPointer on Pointer { + /// The 32-bit or 64-bit value at `address`. + int get value => this[0]; + void set value(int value) => this[0] = value; + + /// Returns `true` if the size of a pointer is 64-bit, `false` otherwise. + @extra + bool get is64Bit => size == 8; + + /// The 32-bit or 64-bit integer at `address + size * index`. + int operator [](int index) => + is64Bit ? viewSingle(index).getUint64(0, Memory.endianess) : viewSingle(index).getUint32(0, Memory.endianess); + void operator []=(int index, int value) => is64Bit + ? viewSingle(index).setUint64(0, value, Memory.endianess) + : viewSingle(index).setUint32(0, value, Memory.endianess); +} + +/// Extension on [Pointer] specialized for the type argument [Pointer]. +extension PointerPointer on Pointer> { + /// The pointer at `address`. + Pointer get value => this[0]; + void set value(Pointer value) => this[0] = value; + + /// Returns `true` if the size of a pointer is 64-bit, `false` otherwise. + @extra + bool get is64Bit => size == 8; + + /// The pointer at `address + size * index`. + Pointer operator [](int index) => new Pointer.fromAddress( + is64Bit ? viewSingle(index).getUint64(0, Memory.endianess) : viewSingle(index).getUint32(0, Memory.endianess), + boundMemory); + void operator []=(int index, Pointer value) => is64Bit + ? viewSingle(index).setUint64(0, value.address, Memory.endianess) + : viewSingle(index).setUint32(0, value.address, Memory.endianess); +} diff --git a/spine-flutter/lib/web_ffi/ffi/types.dart b/spine-flutter/lib/web_ffi/ffi/types.dart new file mode 100755 index 000000000..322a6d2b0 --- /dev/null +++ b/spine-flutter/lib/web_ffi/ffi/types.dart @@ -0,0 +1,418 @@ +import 'dart:typed_data'; +import 'package:meta/meta.dart'; + +import '../modules/module.dart'; +import '../modules/memory.dart'; +import '../modules/null_memory.dart'; + +import '../internal/type_utils.dart'; + +import '../web_ffi_meta.dart'; + +/// Represents a pointer into the native C memory corresponding to "NULL", +/// e.g. a pointer with address 0. +/// +/// You can compare any other pointer with this pointer using == to check +/// if it's also an nullpointer. +/// +/// Any other operation than comparing (e.g. calling [Pointer.cast]) +/// will result in exceptions. +final Pointer nullptr = new Pointer._null(); + +/// Number of bytes used by native type T. +/// +/// MUST NOT be called with types annoteted with @[unsized] or +/// before [Memory.init()] was called or else an exception will be thrown. +int sizeOf() { + int? size; + if (isPointerType()) { + size = sizeMap[IntPtr]; + } else { + size = sizeMap[T]; + } + if (size != null) { + return size; + } else { + throw new ArgumentError('The type $T is not known!'); + } +} + +bool _isUnsizedType() { + return isNativeFunctionType() || isVoidType(); +} + +/// [NativeType]'s subtypes represent a native type in C. +/// +/// [NativeType]'s subtypes (except [Pointer]) are not constructible +/// in the Dart code and serve purely as markers in type signatures. +@sealed +@notConstructible +class NativeType { + const NativeType(); +} + +/// Represents a native 64 bit double in C. +/// +/// Double is not constructible in the Dart code and serves +/// purely as marker in type signatures. +@sealed +@notConstructible +class Double extends NativeType { + const Double(); +} + +/// Represents a native 32 bit float in C. +/// +/// Float is not constructible in the Dart code and serves +/// purely as marker in type signatures. +@sealed +@notConstructible +class Float extends NativeType { + const Float(); +} + +/// Represents a native signed 8 bit integer in C. +/// +/// Int8 is not constructible in the Dart code and serves +/// purely as marker in type signatures. +@sealed +@notConstructible +class Int8 extends NativeType { + const Int8(); +} + +/// Represents a native signed 16 bit integer in C. +/// +/// Int16 is not constructible in the Dart code and serves +/// purely as marker in type signatures. +@sealed +@notConstructible +class Int16 extends NativeType { + const Int16(); +} + +/// Represents a native signed 32 bit integer in C. +/// +/// Int32 is not constructible in the Dart code and serves +/// purely as marker in type signatures. +@sealed +@notConstructible +class Int32 extends NativeType { + const Int32(); +} + +/// Represents a native signed 64 bit integer in C. +/// +/// Int64 is not constructible in the Dart code and serves +/// purely as marker in type signatures. +@sealed +@notConstructible +class Int64 extends NativeType { + const Int64(); +} + +/// Alias for Int64 (long long in C) +class LongLong extends Int64 { + const LongLong(); +} + +/// Represents a native unsigned 8 bit integer in C. +/// +/// Uint8 is not constructible in the Dart code and serves +/// purely as marker in type signatures. +@sealed +@notConstructible +class Uint8 extends NativeType { + const Uint8(); +} + +/// Alias for [Uint8] +/// Use Uint8 directly as typedef only works for function types +class UnsignedChar extends Uint8 { + const UnsignedChar(); +} + +/// Represents a native unsigned 16 bit integer in C. +/// +/// Uint16 is not constructible in the Dart code and serves +/// purely as marker in type signatures. +@sealed +@notConstructible +class Uint16 extends NativeType { + const Uint16(); +} + +/// Alias for [Uint16] +/// Use Uint16 directly as typedef only works for function types +class UnsignedShort extends Uint16 { + const UnsignedShort(); +} + +/// Represents a native unsigned 32 bit integer in C. +/// +/// Uint32 is not constructible in the Dart code and serves +/// purely as marker in type signatures. +@sealed +@notConstructible +class Uint32 extends NativeType { + const Uint32(); +} + +/// Represents a native unsigned 64 bit integer in C. +/// +/// Uint64 is not constructible in the Dart code and serves +/// purely as marker in type signatures. +@sealed +@notConstructible +class Uint64 extends NativeType { + const Uint64(); +} + +/// Represents a native pointer-sized integer in C. +/// +/// IntPtr is not constructible in the Dart code and serves +/// purely as marker in type signatures. +@sealed +@notConstructible +class IntPtr extends NativeType {} + +/// Represents a native integer in C. +/// +/// The size is ABI-specific. For common platforms, this is usually 4 bytes +/// on 32-bit architectures and 8 bytes on 64-bit architectures. +@sealed +@notConstructible +class Int extends NativeType {} + +/// Represents a native size_t in C. +/// +/// The size is ABI-specific, typically same as pointer size. +@sealed +@notConstructible +class Size extends NativeType {} + +/// Represents a native bool in C. +/// +/// The size is typically 1 byte. +@sealed +@notConstructible +class Bool extends NativeType {} + +/// Represents a function type in C. +/// +/// NativeFunction is not constructible in the Dart code and serves +/// purely as marker in type signatures. +@sealed +@notConstructible +@unsized +class NativeFunction extends NativeType {} + +/// Opaque's subtypes represent opaque types in C. +/// +/// Classes that extend Opaque MUST NOT have a type argument! +/// +/// Opaque's subtypes are not constructible in the Dart code and serve +/// purely as markers in type signatures. +@noGeneric +@notConstructible +class Opaque extends NativeType {} + +/// Represents a void type in C. +/// +/// Void is not constructible in the Dart code and serves +/// purely as marker in type signatures. +@sealed +@notConstructible +@unsized +class Void extends NativeType {} + +/// Represents a char type in C +/// +/// Char is not constructible in the Dart code and serves +/// purely as a marker in type signatures +@sealed +@notConstructible +class Char extends Int8 { + const Char(); +} + +/// Represents a pointer into the native C memory. Cannot be extended. +@sealed +class Pointer extends NativeType { + //static Pointer> fromFunction(Function f, + // [Object? exceptionalReturn]) => + // throw new UnimplementedError(); + + /// Access to the raw pointer value. + final int address; + + /// The [Memory] object this pointer is bound to. + /// + /// The `Memory` object backs this pointer, if the value of + /// this pointer is accessed. + @extra + final Memory boundMemory; + + /// How much memory in bytes the type this pointer points to occupies, + /// or `null` for @[unsized] types. + @extra + final int? size; + + factory Pointer._null() { + return new Pointer._(0, new NullMemory(), null); + } + + /// Constructs a pointer from an address. + /// + /// The optional parameter `bindTo` can be ommited, if and only if + /// [Memory.global] is set, which is then used as `Memory` to bind to. + factory Pointer.fromAddress(int ptr, [Memory? bindTo]) { + bindTo = Memory.global; + Memory m; + if (bindTo != null) { + m = bindTo; + } else { + throw new StateError('No global memory set and no explcity memory to bind to given!'); + } + return new Pointer._(ptr, m, _isUnsizedType() ? null : sizeOf()); + } + + Pointer._(this.address, this.boundMemory, this.size); + + /// Casts this pointer to an other type. + Pointer cast() => + new Pointer._(address, boundMemory, _isUnsizedType() ? null : sizeOf()); + + /// Pointer arithmetic (takes element size into account). + /// + /// Throws an [UnsupportedError] if called on a pointer with an @[unsized] + /// type argument. + Pointer elementAt(int index) { + int? s = size; + if (s != null) { + return new Pointer._(address + index * s, boundMemory, s); + } else { + throw new UnsupportedError('elementAt is not supported for unsized types!'); + } + } + + /// The hash code for a Pointer only depends on its address. + @override + int get hashCode => address; + + /// Two pointers are equal if their address is the same, independently + /// of their type argument and of the memory they are bound to. + @override + bool operator ==(Object other) => (other is Pointer && other.address == address); + + /// Returns a view of a single element at [index] (takes element + /// size into account). + /// + /// Any modifications to the data will also alter the [Memory] object. + /// + /// Throws an [UnsupportedError] if called on a pointer with an @[unsized] + /// type argument. + @extra + ByteData viewSingle(int index) { + int? s = size; + if (s != null) { + return boundMemory.buffer.asByteData(address + index * s, s); + } else { + throw new UnsupportedError('viewSingle is not supported for unsized types!'); + } + } +} + +/// Represents a dynamically loaded C library. +class DynamicLibrary { + @extra + final Memory boundMemory; + + /// Creates a new instance based on the given module. + /// + /// While for each [DynamicLibrary] a new [Memory] object is + /// created, the [Memory] objects share the backing memory if + /// they are created based on the same module. + /// + /// The [registerMode] parameter can be used to control if the + /// newly created [Memory] object should be registered as + /// [Memory.global]. + @extra + factory DynamicLibrary.fromModule(Module module, + [MemoryRegisterMode registerMode = MemoryRegisterMode.onlyIfGlobalNotSet]) { + Memory memory = createMemory(module); + switch (registerMode) { + case MemoryRegisterMode.yes: + Memory.global = memory; + break; + case MemoryRegisterMode.no: + break; + case MemoryRegisterMode.onlyIfGlobalNotSet: + if (Memory.global == null) { + Memory.global = memory; + } + break; + } + return new DynamicLibrary._(memory); + } + + DynamicLibrary._(this.boundMemory); + + /// Looks up a symbol in the DynamicLibrary and returns its address in memory. + /// + /// Throws an [ArgumentError] if it fails to lookup the symbol. + /// + /// While this method checks if the underyling wasm symbol is a actually + /// a function when you lookup a [NativeFunction]``, it does not check if + /// the return type and parameters of `T` match the wasm function. + Pointer lookup(String name) { + WasmSymbol symbol = symbolByName(boundMemory, name); + if (isNativeFunctionType()) { + if (symbol is FunctionDescription) { + return new Pointer.fromAddress(symbol.tableIndex, boundMemory); + } else { + throw new ArgumentError('Tried to look up $name as a function, but it seems it is NOT a function!'); + } + } else { + return new Pointer.fromAddress(symbol.address, boundMemory); + } + } +} + +/// Manages memory on the native heap. +abstract class Allocator { + /// Allocates byteCount bytes of memory on the native heap. + /// + /// The parameter `alignment` is ignored. + Pointer allocate(int byteCount, {int? alignment}); + + /// Releases memory allocated on the native heap. + void free(Pointer pointer); +} + +/// Base class for all FFI struct types. +/// +/// This is a stub implementation for web_ffi compatibility. +/// Structs are not fully supported in web_ffi. +@unsized +class Struct extends NativeType {} + +/// Base class for all FFI union types. +/// +/// This is a stub implementation for web_ffi compatibility. +/// Unions are not fully supported in web_ffi. +@unsized +class Union extends NativeType {} + +/// Represents a fixed-size array of [T] in C. +/// +/// This is a stub implementation for web_ffi compatibility. +/// Arrays are not fully supported in web_ffi. +@unsized +class Array extends NativeType { + /// Constructor to allow [Array] declarations. + const Array(int dimension1, [int? dimension2, int? dimension3, int? dimension4, int? dimension5]); + + /// Constructor to allow [Array] declarations. + const Array.multi(List dimensions); +} diff --git a/spine-flutter/lib/web_ffi/ffi/utf8.dart b/spine-flutter/lib/web_ffi/ffi/utf8.dart new file mode 100644 index 000000000..25c11cab7 --- /dev/null +++ b/spine-flutter/lib/web_ffi/ffi/utf8.dart @@ -0,0 +1,89 @@ +// Copyright (c) 2019, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + +import 'dart:convert'; +import 'dart:typed_data'; +import 'types.dart'; +import 'extensions.dart'; +import '../modules/memory.dart'; + +/// The contents of a native zero-terminated array of UTF-8 code units. +/// +/// The Utf8 type itself has no functionality, it's only intended to be used +/// through a `Pointer` representing the entire array. This pointer is +/// the equivalent of a char pointer (`const char*`) in C code. +class Utf8 extends Opaque {} + +/// Extension method for converting a`Pointer` to a [String]. +extension Utf8Pointer on Pointer { + /// The number of UTF-8 code units in this zero-terminated UTF-8 string. + /// + /// The UTF-8 code units of the strings are the non-zero code units up to the + /// first zero code unit. + int get length { + _ensureNotNullptr('length'); + final codeUnits = cast(); + return _length(codeUnits); + } + + /// Converts this UTF-8 encoded string to a Dart string. + /// + /// Decodes the UTF-8 code units of this zero-terminated byte array as + /// Unicode code points and creates a Dart string containing those code + /// points. + /// + /// If [length] is provided, zero-termination is ignored and the result can + /// contain NUL characters. + /// + /// If [length] is not provided, the returned string is the string up til + /// but not including the first NUL character. + String toDartString({int? length}) { + _ensureNotNullptr('toDartString'); + final codeUnits = cast(); + if (length != null) { + RangeError.checkNotNegative(length, 'length'); + } else { + length = _length(codeUnits); + } + return utf8.decode(codeUnits.asTypedList(length)); + } + + static int _length(Pointer codeUnits) { + var length = 0; + while (codeUnits[length] != 0) { + length++; + } + return length; + } + + void _ensureNotNullptr(String operation) { + if (this == nullptr) { + throw UnsupportedError("Operation '$operation' not allowed on a 'nullptr'."); + } + } +} + +/// Extension method for converting a [String] to a `Pointer`. +extension StringUtf8Pointer on String { + /// Creates a zero-terminated [Utf8] code-unit array from this String. + /// + /// If this [String] contains NUL characters, converting it back to a string + /// using [Utf8Pointer.toDartString] will truncate the result if a length is + /// not passed. + /// + /// Unpaired surrogate code points in this [String] will be encoded as + /// replacement characters (U+FFFD, encoded as the bytes 0xEF 0xBF 0xBD) in + /// the UTF-8 encoded result. See [Utf8Encoder] for details on encoding. + /// + /// Returns an [allocator]-allocated pointer to the result. + Pointer toNativeUtf8({Allocator? allocator}) { + final alloc = allocator ?? Memory.global ?? (throw StateError('No allocator available')); + final units = utf8.encode(this); + final Pointer result = alloc(units.length + 1); + final Uint8List nativeString = result.asTypedList(units.length + 1); + nativeString.setAll(0, units); + nativeString[units.length] = 0; + return result.cast(); + } +} diff --git a/spine-flutter/lib/web_ffi/internal/invoker_generated.dart b/spine-flutter/lib/web_ffi/internal/invoker_generated.dart new file mode 100755 index 000000000..dbb49bf1f --- /dev/null +++ b/spine-flutter/lib/web_ffi/internal/invoker_generated.dart @@ -0,0 +1,1089 @@ +import '../ffi/types.dart'; +import '../modules/memory.dart'; +import 'marshaller.dart' show execute; + +/// https://stackoverflow.com/questions/26122009/is-there-a-maximum-number-of-parameters-for-functions-in-c-with-the-gcc-resp-m +/// the C Standard 5.2.4.1 says: +/// 4095 characters in a logical source line +/// 127 parameters in one function definition +/// 127 arguments in one function call + +class OpaqueInvokeHelper extends InvokeHelper> { + OpaqueInvokeHelper(Function? base, Memory? memory) : super(base, memory); + + @override + InvokeHelper> copyWith(Function base, Memory memory) { + return new OpaqueInvokeHelper(base, memory); + } + + @override + Pointer run( + [dynamic arg0, + dynamic arg1, + dynamic arg2, + dynamic arg3, + dynamic arg4, + dynamic arg5, + dynamic arg6, + dynamic arg7, + dynamic arg8, + dynamic arg9, + dynamic arg10, + dynamic arg11, + dynamic arg12, + dynamic arg13, + dynamic arg14, + dynamic arg15, + dynamic arg16, + dynamic arg17, + dynamic arg18, + dynamic arg19, + dynamic arg20, + dynamic arg21, + dynamic arg22, + dynamic arg23, + dynamic arg24, + dynamic arg25, + dynamic arg26, + dynamic arg27, + dynamic arg28, + dynamic arg29, + dynamic arg30, + dynamic arg31, + dynamic arg32, + dynamic arg33, + dynamic arg34, + dynamic arg35, + dynamic arg36, + dynamic arg37, + dynamic arg38, + dynamic arg39, + dynamic arg40, + dynamic arg41, + dynamic arg42, + dynamic arg43, + dynamic arg44, + dynamic arg45, + dynamic arg46, + dynamic arg47, + dynamic arg48, + dynamic arg49, + dynamic arg50, + dynamic arg51, + dynamic arg52, + dynamic arg53, + dynamic arg54, + dynamic arg55, + dynamic arg56, + dynamic arg57, + dynamic arg58, + dynamic arg59, + dynamic arg60, + dynamic arg61, + dynamic arg62, + dynamic arg63, + dynamic arg64, + dynamic arg65, + dynamic arg66, + dynamic arg67, + dynamic arg68, + dynamic arg69, + dynamic arg70, + dynamic arg71, + dynamic arg72, + dynamic arg73, + dynamic arg74, + dynamic arg75, + dynamic arg76, + dynamic arg77, + dynamic arg78, + dynamic arg79, + dynamic arg80, + dynamic arg81, + dynamic arg82, + dynamic arg83, + dynamic arg84, + dynamic arg85, + dynamic arg86, + dynamic arg87, + dynamic arg88, + dynamic arg89, + dynamic arg90, + dynamic arg91, + dynamic arg92, + dynamic arg93, + dynamic arg94, + dynamic arg95, + dynamic arg96, + dynamic arg97, + dynamic arg98, + dynamic arg99, + dynamic arg100, + dynamic arg101, + dynamic arg102, + dynamic arg103, + dynamic arg104, + dynamic arg105, + dynamic arg106, + dynamic arg107, + dynamic arg108, + dynamic arg109, + dynamic arg110, + dynamic arg111, + dynamic arg112, + dynamic arg113, + dynamic arg114, + dynamic arg115, + dynamic arg116, + dynamic arg117, + dynamic arg118, + dynamic arg119, + dynamic arg120, + dynamic arg121, + dynamic arg122, + dynamic arg123, + dynamic arg124, + dynamic arg125, + dynamic arg126]) => + new InvokeHelper>(_base, _memory) + .run( + arg0, + arg1, + arg2, + arg3, + arg4, + arg5, + arg6, + arg7, + arg8, + arg9, + arg10, + arg11, + arg12, + arg13, + arg14, + arg15, + arg16, + arg17, + arg18, + arg19, + arg20, + arg21, + arg22, + arg23, + arg24, + arg25, + arg26, + arg27, + arg28, + arg29, + arg30, + arg31, + arg32, + arg33, + arg34, + arg35, + arg36, + arg37, + arg38, + arg39, + arg40, + arg41, + arg42, + arg43, + arg44, + arg45, + arg46, + arg47, + arg48, + arg49, + arg50, + arg51, + arg52, + arg53, + arg54, + arg55, + arg56, + arg57, + arg58, + arg59, + arg60, + arg61, + arg62, + arg63, + arg64, + arg65, + arg66, + arg67, + arg68, + arg69, + arg70, + arg71, + arg72, + arg73, + arg74, + arg75, + arg76, + arg77, + arg78, + arg79, + arg80, + arg81, + arg82, + arg83, + arg84, + arg85, + arg86, + arg87, + arg88, + arg89, + arg90, + arg91, + arg92, + arg93, + arg94, + arg95, + arg96, + arg97, + arg98, + arg99, + arg100, + arg101, + arg102, + arg103, + arg104, + arg105, + arg106, + arg107, + arg108, + arg109, + arg110, + arg111, + arg112, + arg113, + arg114, + arg115, + arg116, + arg117, + arg118, + arg119, + arg120, + arg121, + arg122, + arg123, + arg124, + arg125, + arg126) + .cast(); +} + +class OpaqueInvokeHelperSquare extends InvokeHelper>> { + OpaqueInvokeHelperSquare(Function? base, Memory? memory) : super(base, memory); + + @override + InvokeHelper>> copyWith(Function base, Memory memory) { + return new OpaqueInvokeHelperSquare(base, memory); + } + + @override + Pointer> run( + [dynamic arg0, + dynamic arg1, + dynamic arg2, + dynamic arg3, + dynamic arg4, + dynamic arg5, + dynamic arg6, + dynamic arg7, + dynamic arg8, + dynamic arg9, + dynamic arg10, + dynamic arg11, + dynamic arg12, + dynamic arg13, + dynamic arg14, + dynamic arg15, + dynamic arg16, + dynamic arg17, + dynamic arg18, + dynamic arg19, + dynamic arg20, + dynamic arg21, + dynamic arg22, + dynamic arg23, + dynamic arg24, + dynamic arg25, + dynamic arg26, + dynamic arg27, + dynamic arg28, + dynamic arg29, + dynamic arg30, + dynamic arg31, + dynamic arg32, + dynamic arg33, + dynamic arg34, + dynamic arg35, + dynamic arg36, + dynamic arg37, + dynamic arg38, + dynamic arg39, + dynamic arg40, + dynamic arg41, + dynamic arg42, + dynamic arg43, + dynamic arg44, + dynamic arg45, + dynamic arg46, + dynamic arg47, + dynamic arg48, + dynamic arg49, + dynamic arg50, + dynamic arg51, + dynamic arg52, + dynamic arg53, + dynamic arg54, + dynamic arg55, + dynamic arg56, + dynamic arg57, + dynamic arg58, + dynamic arg59, + dynamic arg60, + dynamic arg61, + dynamic arg62, + dynamic arg63, + dynamic arg64, + dynamic arg65, + dynamic arg66, + dynamic arg67, + dynamic arg68, + dynamic arg69, + dynamic arg70, + dynamic arg71, + dynamic arg72, + dynamic arg73, + dynamic arg74, + dynamic arg75, + dynamic arg76, + dynamic arg77, + dynamic arg78, + dynamic arg79, + dynamic arg80, + dynamic arg81, + dynamic arg82, + dynamic arg83, + dynamic arg84, + dynamic arg85, + dynamic arg86, + dynamic arg87, + dynamic arg88, + dynamic arg89, + dynamic arg90, + dynamic arg91, + dynamic arg92, + dynamic arg93, + dynamic arg94, + dynamic arg95, + dynamic arg96, + dynamic arg97, + dynamic arg98, + dynamic arg99, + dynamic arg100, + dynamic arg101, + dynamic arg102, + dynamic arg103, + dynamic arg104, + dynamic arg105, + dynamic arg106, + dynamic arg107, + dynamic arg108, + dynamic arg109, + dynamic arg110, + dynamic arg111, + dynamic arg112, + dynamic arg113, + dynamic arg114, + dynamic arg115, + dynamic arg116, + dynamic arg117, + dynamic arg118, + dynamic arg119, + dynamic arg120, + dynamic arg121, + dynamic arg122, + dynamic arg123, + dynamic arg124, + dynamic arg125, + dynamic arg126]) => + new InvokeHelper>>(_base, _memory) + .run( + arg0, + arg1, + arg2, + arg3, + arg4, + arg5, + arg6, + arg7, + arg8, + arg9, + arg10, + arg11, + arg12, + arg13, + arg14, + arg15, + arg16, + arg17, + arg18, + arg19, + arg20, + arg21, + arg22, + arg23, + arg24, + arg25, + arg26, + arg27, + arg28, + arg29, + arg30, + arg31, + arg32, + arg33, + arg34, + arg35, + arg36, + arg37, + arg38, + arg39, + arg40, + arg41, + arg42, + arg43, + arg44, + arg45, + arg46, + arg47, + arg48, + arg49, + arg50, + arg51, + arg52, + arg53, + arg54, + arg55, + arg56, + arg57, + arg58, + arg59, + arg60, + arg61, + arg62, + arg63, + arg64, + arg65, + arg66, + arg67, + arg68, + arg69, + arg70, + arg71, + arg72, + arg73, + arg74, + arg75, + arg76, + arg77, + arg78, + arg79, + arg80, + arg81, + arg82, + arg83, + arg84, + arg85, + arg86, + arg87, + arg88, + arg89, + arg90, + arg91, + arg92, + arg93, + arg94, + arg95, + arg96, + arg97, + arg98, + arg99, + arg100, + arg101, + arg102, + arg103, + arg104, + arg105, + arg106, + arg107, + arg108, + arg109, + arg110, + arg111, + arg112, + arg113, + arg114, + arg115, + arg116, + arg117, + arg118, + arg119, + arg120, + arg121, + arg122, + arg123, + arg124, + arg125, + arg126) + .cast>(); +} + +class InvokeHelper { + final Memory? _memory; + final Function? _base; + + const InvokeHelper(this._base, this._memory); + + InvokeHelper copyWith(Function base, Memory memory) { + return new InvokeHelper(base, memory); + } + + T run( + [dynamic arg0, + dynamic arg1, + dynamic arg2, + dynamic arg3, + dynamic arg4, + dynamic arg5, + dynamic arg6, + dynamic arg7, + dynamic arg8, + dynamic arg9, + dynamic arg10, + dynamic arg11, + dynamic arg12, + dynamic arg13, + dynamic arg14, + dynamic arg15, + dynamic arg16, + dynamic arg17, + dynamic arg18, + dynamic arg19, + dynamic arg20, + dynamic arg21, + dynamic arg22, + dynamic arg23, + dynamic arg24, + dynamic arg25, + dynamic arg26, + dynamic arg27, + dynamic arg28, + dynamic arg29, + dynamic arg30, + dynamic arg31, + dynamic arg32, + dynamic arg33, + dynamic arg34, + dynamic arg35, + dynamic arg36, + dynamic arg37, + dynamic arg38, + dynamic arg39, + dynamic arg40, + dynamic arg41, + dynamic arg42, + dynamic arg43, + dynamic arg44, + dynamic arg45, + dynamic arg46, + dynamic arg47, + dynamic arg48, + dynamic arg49, + dynamic arg50, + dynamic arg51, + dynamic arg52, + dynamic arg53, + dynamic arg54, + dynamic arg55, + dynamic arg56, + dynamic arg57, + dynamic arg58, + dynamic arg59, + dynamic arg60, + dynamic arg61, + dynamic arg62, + dynamic arg63, + dynamic arg64, + dynamic arg65, + dynamic arg66, + dynamic arg67, + dynamic arg68, + dynamic arg69, + dynamic arg70, + dynamic arg71, + dynamic arg72, + dynamic arg73, + dynamic arg74, + dynamic arg75, + dynamic arg76, + dynamic arg77, + dynamic arg78, + dynamic arg79, + dynamic arg80, + dynamic arg81, + dynamic arg82, + dynamic arg83, + dynamic arg84, + dynamic arg85, + dynamic arg86, + dynamic arg87, + dynamic arg88, + dynamic arg89, + dynamic arg90, + dynamic arg91, + dynamic arg92, + dynamic arg93, + dynamic arg94, + dynamic arg95, + dynamic arg96, + dynamic arg97, + dynamic arg98, + dynamic arg99, + dynamic arg100, + dynamic arg101, + dynamic arg102, + dynamic arg103, + dynamic arg104, + dynamic arg105, + dynamic arg106, + dynamic arg107, + dynamic arg108, + dynamic arg109, + dynamic arg110, + dynamic arg111, + dynamic arg112, + dynamic arg113, + dynamic arg114, + dynamic arg115, + dynamic arg116, + dynamic arg117, + dynamic arg118, + dynamic arg119, + dynamic arg120, + dynamic arg121, + dynamic arg122, + dynamic arg123, + dynamic arg124, + dynamic arg125, + dynamic arg126]) { + if (_base == null || _memory == null) { + throw StateError('Call copyWith first!'); + } + Function base = _base!; + Memory memory = _memory!; + List args = []; + if (arg0 != null) { + args.add(arg0); + if (arg1 != null) { + args.add(arg1); + if (arg2 != null) { + args.add(arg2); + if (arg3 != null) { + args.add(arg3); + if (arg4 != null) { + args.add(arg4); + if (arg5 != null) { + args.add(arg5); + if (arg6 != null) { + args.add(arg6); + if (arg7 != null) { + args.add(arg7); + if (arg8 != null) { + args.add(arg8); + if (arg9 != null) { + args.add(arg9); + if (arg10 != null) { + args.add(arg10); + if (arg11 != null) { + args.add(arg11); + if (arg12 != null) { + args.add(arg12); + if (arg13 != null) { + args.add(arg13); + if (arg14 != null) { + args.add(arg14); + if (arg15 != null) { + args.add(arg15); + if (arg16 != null) { + args.add(arg16); + if (arg17 != null) { + args.add(arg17); + if (arg18 != null) { + args.add(arg18); + if (arg19 != null) { + args.add(arg19); + if (arg20 != null) { + args.add(arg20); + if (arg21 != null) { + args.add(arg21); + if (arg22 != null) { + args.add(arg22); + if (arg23 != null) { + args.add(arg23); + if (arg24 != null) { + args.add(arg24); + if (arg25 != null) { + args.add(arg25); + if (arg26 != null) { + args.add(arg26); + if (arg27 != null) { + args.add(arg27); + if (arg28 != null) { + args.add(arg28); + if (arg29 != null) { + args.add(arg29); + if (arg30 != null) { + args.add(arg30); + if (arg31 != null) { + args.add(arg31); + if (arg32 != null) { + args.add(arg32); + if (arg33 != null) { + args.add(arg33); + if (arg34 != null) { + args.add(arg34); + if (arg35 != null) { + args.add(arg35); + if (arg36 != null) { + args.add(arg36); + if (arg37 != null) { + args.add(arg37); + if (arg38 != null) { + args.add(arg38); + if (arg39 != null) { + args.add(arg39); + if (arg40 != null) { + args.add(arg40); + if (arg41 != null) { + args.add(arg41); + if (arg42 != null) { + args.add(arg42); + if (arg43 != null) { + args.add(arg43); + if (arg44 != null) { + args.add(arg44); + if (arg45 != null) { + args.add(arg45); + if (arg46 != null) { + args.add(arg46); + if (arg47 != null) { + args.add(arg47); + if (arg48 != null) { + args.add(arg48); + if (arg49 != + null) { + args.add(arg49); + if (arg50 != + null) { + args.add( + arg50); + if (arg51 != + null) { + args.add( + arg51); + if (arg52 != + null) { + args.add( + arg52); + if (arg53 != + null) { + args.add( + arg53); + if (arg54 != + null) { + args.add( + arg54); + if (arg55 != + null) { + args.add(arg55); + if (arg56 != + null) { + args.add(arg56); + if (arg57 != null) { + args.add(arg57); + if (arg58 != null) { + args.add(arg58); + if (arg59 != null) { + args.add(arg59); + if (arg60 != null) { + args.add(arg60); + if (arg61 != null) { + args.add(arg61); + if (arg62 != null) { + args.add(arg62); + if (arg63 != null) { + args.add(arg63); + if (arg64 != null) { + args.add(arg64); + if (arg65 != null) { + args.add(arg65); + if (arg66 != null) { + args.add(arg66); + if (arg67 != null) { + args.add(arg67); + if (arg68 != null) { + args.add(arg68); + if (arg69 != null) { + args.add(arg69); + if (arg70 != null) { + args.add(arg70); + if (arg71 != null) { + args.add(arg71); + if (arg72 != null) { + args.add(arg72); + if (arg73 != null) { + args.add(arg73); + if (arg74 != null) { + args.add(arg74); + if (arg75 != null) { + args.add(arg75); + if (arg76 != null) { + args.add(arg76); + if (arg77 != null) { + args.add(arg77); + if (arg78 != null) { + args.add(arg78); + if (arg79 != null) { + args.add(arg79); + if (arg80 != null) { + args.add(arg80); + if (arg81 != null) { + args.add(arg81); + if (arg82 != null) { + args.add(arg82); + if (arg83 != null) { + args.add(arg83); + if (arg84 != null) { + args.add(arg84); + if (arg85 != null) { + args.add(arg85); + if (arg86 != null) { + args.add(arg86); + if (arg87 != null) { + args.add(arg87); + if (arg88 != null) { + args.add(arg88); + if (arg89 != null) { + args.add(arg89); + if (arg90 != null) { + args.add(arg90); + if (arg91 != null) { + args.add(arg91); + if (arg92 != null) { + args.add(arg92); + if (arg93 != null) { + args.add(arg93); + if (arg94 != null) { + args.add(arg94); + if (arg95 != null) { + args.add(arg95); + if (arg96 != null) { + args.add(arg96); + if (arg97 != null) { + args.add(arg97); + if (arg98 != null) { + args.add(arg98); + if (arg99 != null) { + args.add(arg99); + if (arg100 != null) { + args.add(arg100); + if (arg101 != null) { + args.add(arg101); + if (arg102 != null) { + args.add(arg102); + if (arg103 != null) { + args.add(arg103); + if (arg104 != null) { + args.add(arg104); + if (arg105 != null) { + args.add(arg105); + if (arg106 != null) { + args.add(arg106); + if (arg107 != null) { + args.add(arg107); + if (arg108 != null) { + args.add(arg108); + if (arg109 != null) { + args.add(arg109); + if (arg110 != null) { + args.add(arg110); + if (arg111 != null) { + args.add(arg111); + if (arg112 != null) { + args.add(arg112); + if (arg113 != null) { + args.add(arg113); + if (arg114 != null) { + args.add(arg114); + if (arg115 != null) { + args.add(arg115); + if (arg116 != null) { + args.add(arg116); + if (arg117 != null) { + args.add(arg117); + if (arg118 != null) { + args.add(arg118); + if (arg119 != null) { + args.add(arg119); + if (arg120 != null) { + args.add(arg120); + if (arg121 != null) { + args.add(arg121); + if (arg122 != null) { + args.add(arg122); + if (arg123 != null) { + args.add(arg123); + if (arg124 != null) { + args.add(arg124); + if (arg125 != null) { + args.add(arg125); + if (arg126 != null) { + args.add(arg126); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + return execute(base, args, memory); + } +} diff --git a/spine-flutter/lib/web_ffi/internal/marshaller.dart b/spine-flutter/lib/web_ffi/internal/marshaller.dart new file mode 100755 index 000000000..726b78643 --- /dev/null +++ b/spine-flutter/lib/web_ffi/internal/marshaller.dart @@ -0,0 +1,278 @@ +import 'package:meta/meta.dart'; + +import '../ffi/types.dart'; +import '../modules/exceptions.dart'; +import '../modules/memory.dart'; +import 'invoker_generated.dart'; +import 'type_utils.dart'; + +// Called from the invokers +T execute(Function base, List args, Memory memory) { + if (T == DartVoidType) { + Function.apply(base, args.map(_toJsType).toList()); + return null as T; + } else { + Object result = Function.apply(base, args.map(_toJsType).toList()); + return _toDartType(result, memory); + } +} + +DF marshall(Function base, Memory memory) { + return _inferFromSignature(DF.toString()).copyWith(base, memory).run as DF; +} + +Object _toJsType(Object dartObject) { + if (dartObject is int || dartObject is double || dartObject is bool) { + return dartObject; + } else if (dartObject is Pointer) { + return dartObject.address; + } else { + throw new MarshallingException('Could not convert dart type ${dartObject.runtimeType} to a JavaScript type!'); + } +} + +InvokeHelper _inferFromSignature(String signature) { + String returnType = signature.split('=>').last.trim(); + if (returnType.startsWith(pointerPointerPointerPrefix)) { + throw new MarshallingException('Nesting pointers is only supported to a deepth of 2!' + + '\nThis means that you can write Pointer> but not Pointer>>, ...'); + } + InvokeHelper? h = _knownTypes[returnType]; + if (h != null) { + return h; + } else { + if (returnType.startsWith(pointerNativeFunctionPrefix)) { + throw new MarshallingException( + 'Using pointers to native functions as return type is only allowed if the type of the native function is dynamic!' + + '\nThis means that only Pointer> is allowed!'); + } else { + throw new MarshallingException( + 'Unknown type $returnType (infered from $signature), all marshallable types: ${listKnownTypes()}'); + } + } +} + +@visibleForTesting +List listKnownTypes() => new List.of(_knownTypes.keys, growable: false); + +final Map _knownTypes = { + typeString(): new InvokeHelper(null, null), + typeString(): new InvokeHelper(null, null), + typeString(): new InvokeHelper(null, null), + typeString(): new InvokeHelper(null, null) +}; + +void registerNativeMarshallerType() { + _knownTypes[typeString>()] = new InvokeHelper>(null, null); + _knownTypes[typeString>>()] = new InvokeHelper>>(null, null); +} + +void registerNativeMarshallerOpaque() { + _knownTypes[typeString>()] = new OpaqueInvokeHelper(null, null); + _knownTypes[typeString>>()] = new OpaqueInvokeHelperSquare(null, null); +} + +T _toDartType(Object o, Memory bind) { + if (T == int) { + if (o is int) { + return o as T; + } else { + throw new MarshallingException.typeMissmatch(T, o); + } + } else if (T == double) { + if (o is double) { + return o as T; + } else { + throw new MarshallingException.typeMissmatch(T, o); + } + } else if (T == bool) { + if (o is bool) { + return o as T; + } else if (o is int) { + // Handle C convention where bool is represented as int (0 = false, non-zero = true) + return (o != 0) as T; + } else { + throw new MarshallingException.typeMissmatch(T, o); + } + } else { + if (T == Pointer_Void) { + if (o is int) { + return new Pointer.fromAddress(o, bind) as T; + } else { + throw new MarshallingException.noAddress(o); + } + } else if (T == Pointer_IntPtr) { + if (o is int) { + return new Pointer.fromAddress(o, bind) as T; + } else { + throw new MarshallingException.noAddress(o); + } + } else if (T == Pointer_Int8) { + if (o is int) { + return new Pointer.fromAddress(o, bind) as T; + } else { + throw new MarshallingException.noAddress(o); + } + } else if (T == Pointer_Int16) { + if (o is int) { + return new Pointer.fromAddress(o, bind) as T; + } else { + throw new MarshallingException.noAddress(o); + } + } else if (T == Pointer_Int32) { + if (o is int) { + return new Pointer.fromAddress(o, bind) as T; + } else { + throw new MarshallingException.noAddress(o); + } + } else if (T == Pointer_Int64) { + if (o is int) { + return new Pointer.fromAddress(o, bind) as T; + } else { + throw new MarshallingException.noAddress(o); + } + } else if (T == Pointer_Double) { + if (o is int) { + return new Pointer.fromAddress(o, bind) as T; + } else { + throw new MarshallingException.noAddress(o); + } + } else if (T == Pointer_Uint8) { + if (o is int) { + return new Pointer.fromAddress(o, bind) as T; + } else { + throw new MarshallingException.noAddress(o); + } + } else if (T == Pointer_Uint16) { + if (o is int) { + return new Pointer.fromAddress(o, bind) as T; + } else { + throw new MarshallingException.noAddress(o); + } + } else if (T == Pointer_Uint32) { + if (o is int) { + return new Pointer.fromAddress(o, bind) as T; + } else { + throw new MarshallingException.noAddress(o); + } + } else if (T == Pointer_Uint64) { + if (o is int) { + return new Pointer.fromAddress(o, bind) as T; + } else { + throw new MarshallingException.noAddress(o); + } + } else if (T == Pointer_Float) { + if (o is int) { + return new Pointer.fromAddress(o, bind) as T; + } else { + throw new MarshallingException.noAddress(o); + } + } else if (T == Pointer_Char) { + if (o is int) { + return new Pointer.fromAddress(o, bind) as T; + } else { + throw new MarshallingException.noAddress(o); + } + } else if (T == Pointer_Opaque) { + if (o is int) { + return new Pointer.fromAddress(o, bind) as T; + } else { + throw new MarshallingException.noAddress(o); + } + } else if (T == Pointer_NativeFunction_dynamic) { + if (o is int) { + return new Pointer>.fromAddress(o, bind) as T; + } else { + throw new MarshallingException.noAddress(o); + } + } else { + if (T == Pointer_Pointer_Void) { + if (o is int) { + return new Pointer>.fromAddress(o, bind) as T; + } else { + throw new MarshallingException.noAddress(o); + } + } else if (T == Pointer_Pointer_IntPtr) { + if (o is int) { + return new Pointer>.fromAddress(o, bind) as T; + } else { + throw new MarshallingException.noAddress(o); + } + } else if (T == Pointer_Pointer_Int8) { + if (o is int) { + return new Pointer>.fromAddress(o, bind) as T; + } else { + throw new MarshallingException.noAddress(o); + } + } else if (T == Pointer_Pointer_Int16) { + if (o is int) { + return new Pointer>.fromAddress(o, bind) as T; + } else { + throw new MarshallingException.noAddress(o); + } + } else if (T == Pointer_Pointer_Int32) { + if (o is int) { + return new Pointer>.fromAddress(o, bind) as T; + } else { + throw new MarshallingException.noAddress(o); + } + } else if (T == Pointer_Pointer_Int64) { + if (o is int) { + return new Pointer>.fromAddress(o, bind) as T; + } else { + throw new MarshallingException.noAddress(o); + } + } else if (T == Pointer_Pointer_Double) { + if (o is int) { + return new Pointer>.fromAddress(o, bind) as T; + } else { + throw new MarshallingException.noAddress(o); + } + } else if (T == Pointer_Pointer_Uint8) { + if (o is int) { + return new Pointer>.fromAddress(o, bind) as T; + } else { + throw new MarshallingException.noAddress(o); + } + } else if (T == Pointer_Pointer_Uint16) { + if (o is int) { + return new Pointer>.fromAddress(o, bind) as T; + } else { + throw new MarshallingException.noAddress(o); + } + } else if (T == Pointer_Pointer_Uint32) { + if (o is int) { + return new Pointer>.fromAddress(o, bind) as T; + } else { + throw new MarshallingException.noAddress(o); + } + } else if (T == Pointer_Pointer_Uint64) { + if (o is int) { + return new Pointer>.fromAddress(o, bind) as T; + } else { + throw new MarshallingException.noAddress(o); + } + } else if (T == Pointer_Pointer_Char) { + if (o is int) { + return new Pointer>.fromAddress(o, bind) as T; + } else { + throw new MarshallingException.noAddress(o); + } + } else if (T == Pointer_Pointer_Float) { + if (o is int) { + return new Pointer>.fromAddress(o, bind) as T; + } else { + throw new MarshallingException.noAddress(o); + } + } else if (T == Pointer_Pointer_Opaque) { + if (o is int) { + return new Pointer>.fromAddress(o, bind) as T; + } else { + throw new MarshallingException.noAddress(o); + } + } else { + throw new MarshallingException('Can not back-marshall to type $T (object type is ${o.runtimeType}'); + } + } + } +} diff --git a/spine-flutter/lib/web_ffi/internal/type_utils.dart b/spine-flutter/lib/web_ffi/internal/type_utils.dart new file mode 100755 index 000000000..a3966238c --- /dev/null +++ b/spine-flutter/lib/web_ffi/internal/type_utils.dart @@ -0,0 +1,55 @@ +import '../ffi/types.dart'; + +/// Hacky workadround, see https://github.com/dart-lang/language/issues/123 +Type _extractType() => T; +String typeString() => _extractType().toString(); + +// Variable names begin with a capital letter on purpose (opposing dart conventions) to hilight that +// they are treated like types (which are written with a captial letter in dart). +final Type Pointer_IntPtr = _extractType>(); +final Type Pointer_Void = _extractType>(); +final Type Pointer_Int8 = _extractType>(); +final Type Pointer_Int16 = _extractType>(); +final Type Pointer_Int32 = _extractType>(); +final Type Pointer_Int64 = _extractType>(); +final Type Pointer_Double = _extractType>(); +final Type Pointer_Uint8 = _extractType>(); +final Type Pointer_Uint16 = _extractType>(); +final Type Pointer_Uint32 = _extractType>(); +final Type Pointer_Uint64 = _extractType>(); +final Type Pointer_Char = _extractType>(); +final Type Pointer_Float = _extractType>(); +final Type Pointer_Opaque = _extractType>(); +final Type Pointer_Pointer_IntPtr = _extractType>>(); +final Type Pointer_Pointer_Void = _extractType>>(); +final Type Pointer_Pointer_Int8 = _extractType>>(); +final Type Pointer_Pointer_Int16 = _extractType>>(); +final Type Pointer_Pointer_Int32 = _extractType>>(); +final Type Pointer_Pointer_Int64 = _extractType>>(); +final Type Pointer_Pointer_Double = _extractType>>(); +final Type Pointer_Pointer_Uint8 = _extractType>>(); +final Type Pointer_Pointer_Uint16 = _extractType>>(); +final Type Pointer_Pointer_Uint32 = _extractType>>(); +final Type Pointer_Pointer_Uint64 = _extractType>>(); +final Type Pointer_Pointer_Char = _extractType>>(); +final Type Pointer_Pointer_Float = _extractType>>(); +final Type Pointer_Pointer_Opaque = _extractType>>(); +final Type Pointer_NativeFunction_dynamic = _extractType>>(); +final Type DartVoidType = _extractType(); +final Type FfiVoidType = _extractType(); + +final String _dynamicTypeString = typeString(); + +final String pointerPointerPointerPrefix = + typeString>>>().split(_dynamicTypeString).first; + +final String pointerNativeFunctionPrefix = + typeString>>().split(_dynamicTypeString).first; + +final String _nativeFunctionPrefix = typeString>().split(_dynamicTypeString).first; +bool isNativeFunctionType() => typeString().startsWith(_nativeFunctionPrefix); + +final String _pointerPrefix = typeString>().split(_dynamicTypeString).first; +bool isPointerType() => typeString().startsWith(_pointerPrefix); + +bool isVoidType() => _extractType() == FfiVoidType; diff --git a/spine-flutter/lib/web_ffi/meta/meta.dart b/spine-flutter/lib/web_ffi/meta/meta.dart new file mode 100755 index 000000000..d2329466e --- /dev/null +++ b/spine-flutter/lib/web_ffi/meta/meta.dart @@ -0,0 +1,35 @@ +class _Extra { + const _Extra(); +} + +/// A class, field or method annotated with extra is present in `web_ffi`, +/// but not in `dart:ffi`. +const _Extra extra = const _Extra(); + +class _NoGeneric { + const _NoGeneric(); +} + +/// If a class which is annotead with [noGeneric] is extended or implemented, +/// the derived class MUST NOT impose a type argument! +const _NoGeneric noGeneric = const _NoGeneric(); + +class _NotConstructible { + const _NotConstructible(); +} + +/// A [NativeType] annotated with unsized should not be instantiated. +/// +/// However, they are not marked as `abstract` to meet the dart:ffi API. +const _NotConstructible notConstructible = const _NotConstructible(); + +class _Unsized { + const _Unsized(); +} + +/// A [NativeType] annotated with unsized does not have a predefined size. +/// +/// Unsized [NativeType]s do not support [sizeOf] because their size is unknown, +/// so calling [sizeOf] with an @[unsized] [NativeType] will throw an exception. +/// Consequently, [Pointer.elementAt] is not available and will also throw an exception. +const _Unsized unsized = const _Unsized(); diff --git a/spine-flutter/lib/web_ffi/modules/emscripten/emscripten_module.dart b/spine-flutter/lib/web_ffi/modules/emscripten/emscripten_module.dart new file mode 100755 index 000000000..718651c43 --- /dev/null +++ b/spine-flutter/lib/web_ffi/modules/emscripten/emscripten_module.dart @@ -0,0 +1,186 @@ +@JS() +library emscripten_module; + +import 'dart:typed_data'; +import 'package:js/js.dart'; +import 'package:js/js_util.dart'; +import '../module.dart'; +import '../../web_ffi_meta.dart'; + +@JS('globalThis') +external Object get _globalThis; + +@JS('Object.entries') +external List? _entries(Object? o); + +@JS() +@anonymous +class _EmscriptenModuleJs { + external Uint8List? get wasmBinary; + external Uint8List? get HEAPU8; + external Object? get asm; + external Object? get wasmExports; + + // Must have an unnamed factory constructor with named arguments. + external factory _EmscriptenModuleJs({Uint8List wasmBinary}); +} + +const String _github = r'https://github.com/EPNW/web_ffi'; +String _adu(WasmSymbol? original, WasmSymbol? tried) => + 'CRITICAL EXCEPTION! Address double use! This should never happen, please report this issue on github immediately at $_github' + + '\r\nOriginal: $original' + + '\r\nTried: $tried'; + +typedef int _Malloc(int size); +typedef void _Free(int address); + +FunctionDescription _fromWasmFunction(String name, Function func) { + String? s = getProperty(func, 'name'); + if (s != null) { + int? index = int.tryParse(s); + if (index != null) { + int? length = getProperty(func, 'length'); + if (length != null) { + return new FunctionDescription(tableIndex: index, name: name, function: func, argumentCount: length); + } else { + throw new ArgumentError('$name does not seem to be a function symbol!'); + } + } else { + throw new ArgumentError('$name does not seem to be a function symbol!'); + } + } else { + throw new ArgumentError('$name does not seem to be a function symbol!'); + } +} + +/// Documentation is in `emscripten_module_stub.dart`! +@extra +class EmscriptenModule extends Module { + static Function _moduleFunction(String moduleName) { + Function? moduleFunction = getProperty(_globalThis, moduleName); + if (moduleFunction != null) { + return moduleFunction; + } else { + throw StateError('Could not find a emscripten module named $moduleName'); + } + } + + /// Documentation is in `emscripten_module_stub.dart`! + static Future process(String moduleName) async { + Function moduleFunction = _moduleFunction(moduleName); + _EmscriptenModuleJs module = new _EmscriptenModuleJs(); + Object? o = moduleFunction(module); + if (o != null) { + await promiseToFuture(o); + return new EmscriptenModule._fromJs(module); + } else { + throw new StateError('Could not instantiate an emscripten module!'); + } + } + + /// Documentation is in `emscripten_module_stub.dart`! + static Future compile(Uint8List wasmBinary, String moduleName) async { + Function moduleFunction = _moduleFunction(moduleName); + _EmscriptenModuleJs module = new _EmscriptenModuleJs(wasmBinary: wasmBinary); + Object? o = moduleFunction(module); + if (o != null) { + await promiseToFuture(o); + return new EmscriptenModule._fromJs(module); + } else { + throw new StateError('Could not instantiate an emscripten module!'); + } + } + + final _EmscriptenModuleJs _emscriptenModuleJs; + final List _exports; + final _Malloc _malloc; + final _Free _free; + + @override + List get exports => _exports; + + EmscriptenModule._(this._emscriptenModuleJs, this._exports, this._malloc, this._free); + + factory EmscriptenModule._fromJs(_EmscriptenModuleJs module) { + Object? asm; + if (module.wasmExports != null) { + asm = module.wasmExports; + } else if (module.asm != null) { + asm = module.asm; + } else { + throw Exception('Neither wasmExports nor asm is available in the module'); + } + if (asm != null) { + Map knownAddresses = {}; + _Malloc? malloc; + _Free? free; + List exports = []; + List? entries = _entries(asm); + if (entries != null) { + for (dynamic entry in entries) { + if (entry is List) { + Object value = entry.last; + if (value is int) { + Global g = new Global(address: value, name: entry.first as String); + if (knownAddresses.containsKey(value) && knownAddresses[value] is! Global) { + throw new StateError(_adu(knownAddresses[value], g)); + } + knownAddresses[value] = g; + exports.add(g); + } else if (value is Function) { + FunctionDescription description = _fromWasmFunction(entry.first as String, value); + // It might happen that there are two different c functions that do nothing else than calling the same underlying c function + // In this case, a compiler might substitute both functions with the underlying c function + // So we got two functions with different names at the same table index + // So it is actually ok if there are two things at the same address, as long as they are both functions + if (knownAddresses.containsKey(description.tableIndex) && + knownAddresses[description.tableIndex] is! FunctionDescription) { + throw new StateError(_adu(knownAddresses[description.tableIndex], description)); + } + knownAddresses[description.tableIndex] = description; + exports.add(description); + if (description.name == 'malloc') { + malloc = description.function as _Malloc; + } else if (description.name == 'free') { + free = description.function as _Free; + } + } + } else { + throw new StateError('Unexpected entry in entries(Module[\'asm\'])!'); + } + } + if (malloc != null) { + if (free != null) { + return new EmscriptenModule._(module, exports, malloc, free); + } else { + throw new StateError('Module does not export the free function!'); + } + } else { + throw new StateError('Module does not export the malloc function!'); + } + } else { + throw new StateError('JavaScript error: Could not access entries of Module[\'asm\']!'); + } + } else { + throw new StateError( + 'Could not access Module[\'asm\'], are your sure your module was compiled using emscripten?'); + } + } + + @override + void free(int pointer) => _free(pointer); + + @override + ByteBuffer get heap => _getHeap(); + ByteBuffer _getHeap() { + Uint8List? h = _emscriptenModuleJs.HEAPU8; + if (h != null) { + return h.buffer; + } else { + throw StateError('Unexpected memory error!'); + } + } + + @override + int malloc(int size) => _malloc(size); +} diff --git a/spine-flutter/lib/web_ffi/modules/emscripten/emscripten_module_stub.dart b/spine-flutter/lib/web_ffi/modules/emscripten/emscripten_module_stub.dart new file mode 100755 index 000000000..583db0b5e --- /dev/null +++ b/spine-flutter/lib/web_ffi/modules/emscripten/emscripten_module_stub.dart @@ -0,0 +1,68 @@ +import 'dart:typed_data'; +import '../module.dart'; + +import '../../web_ffi_meta.dart'; + +/// Provides access to WebAssembly compiled with [emscripten](https://emscripten.org). +/// +/// WebAssembly compiled with emscripten comes with an `.wasm` +/// and an additional `.js` glue JavaScript file. The later is +/// required to be loaded on the page before calling any of this classes +/// functions. +/// +/// The WebAssembly must have been compiled with the `-s MODULARIZE=1` +/// and `-s EXPORT_NAME=` flags. Futhermore the `` +/// must contain all exported WebAssembly functions that should be usable from +/// dart, so using `-s MAIN_MODULE=1` might be advisable. +/// +/// For a detailed walkthrough on how to create and inject these files, +/// see the [example](https://github.com/EPNW/web_ffi/blob/master/example/README.md). +/// +/// On platforms where [dart:js](https://api.dart.dev/stable/dart-js/dart-js-library.html) +/// is not available, all methods throw [UnsupportedError]s. +@extra +class EmscriptenModule extends Module { + /// Connects to the JavaScript glue of the emscripten module. + /// + /// This happens in the following way: + /// First, a JavaScript property named `moduleName` of the global object + /// is accessed, which should contain a function. Then this function is + /// called and expected to return a JavaScript emscripten module. + /// + /// The JavaScript emscripten module is responsible for retriving the + /// WebAssembly and compile it accordingly. + /// + /// On platforms where [dart:js](https://api.dart.dev/stable/dart-js/dart-js-library.html) + /// is not available, an [UnsupportedError] is thrown. + static Future process(String moduleName) => + throw new UnsupportedError('Emscripten operations are only allowed on the web (where dart:js is present)!'); + + /// Connects to the JavaScript glue of the emscripten module. + /// + /// Works like [process], except that the bytes of the WebAssembly + /// are passed to the JavaScript emscripten module, so it is + /// your responsibility to fetch it. + /// + /// On platforms where [dart:js](https://api.dart.dev/stable/dart-js/dart-js-library.html) + /// is not available, an [UnsupportedError] is thrown. + static Future compile(Uint8List wasmBinary, String moduleName) => + throw new UnsupportedError('Emscripten operations are only allowed on the web (where dart:js is present)!'); + + EmscriptenModule._(); + + @override + List get exports => + throw new UnsupportedError('Emscripten operations are only allowed on the web (where dart:js is present)!'); + + @override + void free(int pointer) => + throw new UnsupportedError('Emscripten operations are only allowed on the web (where dart:js is present)!'); + + @override + ByteBuffer get heap => + throw new UnsupportedError('Emscripten operations are only allowed on the web (where dart:js is present)!'); + + @override + int malloc(int size) => + throw new UnsupportedError('Emscripten operations are only allowed on the web (where dart:js is present)!'); +} diff --git a/spine-flutter/lib/web_ffi/modules/exceptions.dart b/spine-flutter/lib/web_ffi/modules/exceptions.dart new file mode 100755 index 000000000..cd3eab906 --- /dev/null +++ b/spine-flutter/lib/web_ffi/modules/exceptions.dart @@ -0,0 +1,17 @@ +/// Occures if it's not possible to convert dart types to JavaScript types. +/// +/// This usually happens if a not allowed type is uses as a [NativeType]'s +/// type argument, or a not allowed return value of a [NativeFunction] is +/// used. +class MarshallingException implements Exception { + final dynamic message; + const MarshallingException([this.message]); + + MarshallingException.noAddress(Object o) : this('Expected a address (int) but found ${o.runtimeType}'); + + MarshallingException.typeMissmatch(Type t, Object o) + : this('Expected a type of $t but object has type ${o.runtimeType}'); + + @override + String toString() => new Exception(message).toString(); +} diff --git a/spine-flutter/lib/web_ffi/modules/memory.dart b/spine-flutter/lib/web_ffi/modules/memory.dart new file mode 100755 index 000000000..ee08a0c18 --- /dev/null +++ b/spine-flutter/lib/web_ffi/modules/memory.dart @@ -0,0 +1,123 @@ +import 'dart:typed_data'; +import 'package:meta/meta.dart'; + +import '../ffi/utf8.dart'; +import 'module.dart'; +import '../ffi/types.dart'; +import '../internal/marshaller.dart'; +import '../web_ffi_meta.dart'; + +final Map sizeMap = {}; + +/// Must be called with each type that extends Opaque before +/// attemtping to use that type. +@extra +void registerOpaqueType() { + sizeMap[T] = sizeOf(); + registerNativeMarshallerOpaque(); +} + +void _registerType(int size) { + sizeMap[T] = size; + registerNativeMarshallerType(); +} + +/// Represents the native heap. +@extra +class Memory implements Allocator { + /// The endianess of data stored. + /// + /// The WebAssembly speficiation defines little endianess, so this is a constant. + static const Endian endianess = Endian.little; + + /// Must be called before working with `web_ffi` to initalize all type sizes. + /// + /// The optional parameter [pointerSizeBytes] can be used to adjust the size + /// of pointers. It defaults to `4` since WebAssembly usually uses 32 bit pointers. + /// If you want to use wasm64, set [pointerSizeBytes] to `8` to denote 64 bit pointers. + static void init([int pointerSizeBytes = 4]) { + _registerType(4); + _registerType(8); + _registerType(1); + _registerType(1); + _registerType(2); + _registerType(2); + _registerType(4); + _registerType(4); + _registerType(8); + _registerType(8); + _registerType(8); + _registerType(1); + _registerType(1); + _registerType(pointerSizeBytes); + _registerType(4); // int in C is typically 4 bytes (even on 64-bit) + _registerType(pointerSizeBytes); // size_t matches pointer size + _registerType(1); // bool/_Bool is 1 byte + _registerType(1); + _registerType(2); + _registerType(pointerSizeBytes); + registerNativeMarshallerType(); + registerNativeMarshallerType>(); + } + + /// The default [Memory] object to use. + /// + /// This field is null until it is either manually set to a [Memory] object, + /// or automatically set by [DynamicLibrary.fromModule]. + /// + /// This is most notably used when creating a pointer using [Pointer.fromAddress] + /// with no explicite memory to bind to given. + static Memory? global; + + /// Can be used to directly access the memory of this object. + /// + /// The value of this field should not be stored in a state variable, + /// since the returned buffer may change over time. + @doNotStore + ByteBuffer get buffer => _module.heap; + + final Module _module; + final Map _symbolsByName; + final Map _symbolsByAddress; + + Memory._(this._module) + : _symbolsByAddress = new Map.fromEntries(_module.exports.map>( + (WasmSymbol symbol) => new MapEntry(symbol.address, symbol))), + _symbolsByName = new Map.fromEntries(_module.exports.map>( + (WasmSymbol symbol) => new MapEntry(symbol.name, symbol))); + + @override + Pointer allocate(int byteCount, {int? alignment}) { + return new Pointer.fromAddress(_module.malloc(byteCount), this); + } + + @override + void free(Pointer pointer) { + _module.free(pointer.address); + } +} + +Memory createMemory(Module module) => new Memory._(module); + +WasmSymbol symbolByAddress(Memory m, int address) { + WasmSymbol? s = m._symbolsByAddress[address]; + if (s != null) { + return s; + } else { + throw new ArgumentError('Could not find symbol at $address!'); + } +} + +WasmSymbol symbolByName(Memory m, String name) { + WasmSymbol? s = m._symbolsByName[name]; + if (s != null) { + return s; + } else { + throw new ArgumentError('Could not find symbol $name!'); + } +} + +/// Used on [DynamicLibrary] creation to control if the therby newly created +/// [Memory] object should be registered as [Memory.global]. +@extra +enum MemoryRegisterMode { yes, no, onlyIfGlobalNotSet } diff --git a/spine-flutter/lib/web_ffi/modules/module.dart b/spine-flutter/lib/web_ffi/modules/module.dart new file mode 100755 index 000000000..d9d6c360c --- /dev/null +++ b/spine-flutter/lib/web_ffi/modules/module.dart @@ -0,0 +1,107 @@ +import 'dart:typed_data'; +import 'package:meta/meta.dart'; +import '../web_ffi_meta.dart'; + +/// Base class to interact with the WebAssembly. +/// +/// Currently, only [emscripten](https://emscripten.org) compiled WebAssembly is supported, +/// so the only concrete implementation if this class is [EmscriptenModule]. +/// +/// To support additional mechanisms/frameworks/compilers, create a subclass of +/// [Module]. +@extra +abstract class Module { + /// Provides access to the malloc function in WebAssembly. + /// + /// Allocates `size` bytes of memory and returns the corresponding + /// address. + /// + /// Memory allocated by this should be [free]d afterwards. + int malloc(int size); + + /// Provides access to the free function in WebAssembly. + /// + /// Frees the memory region at `pointer` that was previously + /// allocated with [malloc]. + void free(int pointer); + + /// Provides access to the [WebAssemblys memory](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Memory) buffer. + /// + /// The actual [ByteBuffer] object returned by this getter is allowed to change; + /// It should not be cached in a state variable and is thus annotated with @[doNotStore]. + @doNotStore + ByteBuffer get heap; + + /// A list containing everything exported by the underlying + /// [WebAssembly instance](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Instance). + List get exports; +} + +/// Describes something exported by the WebAssembly. +@extra +@sealed +abstract class WasmSymbol { + /// The address of the exported thing. + final int address; + + /// The name of the exported thing. + final String name; + + const WasmSymbol({required this.address, required this.name}); + + @override + int get hashCode => toString().hashCode; + + @override + String toString() => '[address=$address\tname=$name]'; +} + +/// A global is a symbol exported by the WebAssembly, +/// that is not a function. +@extra +@sealed +class Global extends WasmSymbol { + const Global({required int address, required String name}) : super(address: address, name: name); + + @override + bool operator ==(Object other) { + if (other is Global) { + return name == other.name && address == other.address; + } else { + return false; + } + } +} + +/// Describes a function exported from WebAssembly. +@extra +@sealed +class FunctionDescription extends WasmSymbol { + /// The index of this function in the [WebAssembly table](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Table). + /// This is the same as its address. + int get tableIndex => address; + + /// The amount of arguments the underyling function has. + final int argumentCount; + + /// The actual function. + final Function function; + const FunctionDescription( + {required int tableIndex, required String name, required this.argumentCount, required this.function}) + : super(address: tableIndex, name: name); + + @override + int get hashCode => '$name$argumentCount$tableIndex'.hashCode; + + @override + bool operator ==(Object other) { + if (other is FunctionDescription) { + return argumentCount == other.argumentCount && name == other.name && tableIndex == other.tableIndex; + } else { + return false; + } + } + + @override + String toString() => '[tableIndex=$tableIndex\tname=$name\targumentCount=$argumentCount\tfunction=$function]'; +} diff --git a/spine-flutter/lib/web_ffi/modules/null_memory.dart b/spine-flutter/lib/web_ffi/modules/null_memory.dart new file mode 100755 index 000000000..74afec5f3 --- /dev/null +++ b/spine-flutter/lib/web_ffi/modules/null_memory.dart @@ -0,0 +1,18 @@ +import 'dart:typed_data'; +import 'memory.dart'; +import '../ffi/types.dart'; + +class NullMemory implements Memory { + @override + Pointer allocate(int byteCount, {int? alignment}) { + throw new UnsupportedError('Can not use the null memory to allocate space!'); + } + + @override + ByteBuffer get buffer => throw new UnsupportedError('The null memory has no buffer!'); + + @override + void free(Pointer pointer) { + throw new UnsupportedError('Can not use the null memory to free pointers!'); + } +} diff --git a/spine-flutter/lib/web_ffi/web_ffi.dart b/spine-flutter/lib/web_ffi/web_ffi.dart new file mode 100755 index 000000000..7f91452e3 --- /dev/null +++ b/spine-flutter/lib/web_ffi/web_ffi.dart @@ -0,0 +1,7 @@ +/// Provides mechanisms to use a [dart:ffi 2.12.0](https://api.dart.dev/stable/2.12.0/dart-ffi/dart-ffi-library.html) like API on the web but using [dart:js](https://api.dart.dev/stable/dart-js/dart-js-library.html). +/// While some things are missing, new things were added, identifiable by the @[extra] annotation. +library web_ffi; + +export './ffi/types.dart'; +export './ffi/extensions.dart'; +export './ffi/utf8.dart'; diff --git a/spine-flutter/lib/web_ffi/web_ffi_meta.dart b/spine-flutter/lib/web_ffi/web_ffi_meta.dart new file mode 100755 index 000000000..9491003c4 --- /dev/null +++ b/spine-flutter/lib/web_ffi/web_ffi_meta.dart @@ -0,0 +1,4 @@ +/// This library contains and explains the annotations for `web_ffi`. +library web_ffi_meta; + +export 'meta/meta.dart'; diff --git a/spine-flutter/lib/web_ffi/web_ffi_modules.dart b/spine-flutter/lib/web_ffi/web_ffi_modules.dart new file mode 100755 index 000000000..b8b80f83b --- /dev/null +++ b/spine-flutter/lib/web_ffi/web_ffi_modules.dart @@ -0,0 +1,10 @@ +/// Provides additional classes that are needed for web_ffi, +/// but are not present in [dart:ffi](https://api.dart.dev/stable/2.12.0/dart-ffi/dart-ffi-library.html). +library web_ffi_modules; + +export 'modules/exceptions.dart'; +export 'modules/module.dart'; +export 'modules/memory.dart' show registerOpaqueType, Memory, MemoryRegisterMode; + +export 'modules/emscripten/emscripten_module_stub.dart' + if (dart.library.js) 'modules/emscripten/emscripten_module.dart' show EmscriptenModule; diff --git a/spine-flutter/pubspec.yaml b/spine-flutter/pubspec.yaml index 99886d214..642ad54f8 100644 --- a/spine-flutter/pubspec.yaml +++ b/spine-flutter/pubspec.yaml @@ -1,6 +1,6 @@ name: spine_flutter description: The official Spine Flutter Runtime to load, display and interact with Spine animations. -version: 4.2.36 +version: 4.3.0 homepage: https://esotericsoftware.com repository: https://github.com/esotericsoftware/spine-runtimes issue_tracker: https://github.com/esotericsoftware/spine-runtimes/issues @@ -14,7 +14,6 @@ dependencies: flutter: sdk: flutter ffi: ^2.1.0 - web_ffi_fork: ^0.7.5 inject_js: ^2.0.0 js: ^0.6.5 meta: ^1.10.0