9 Commits

Author SHA1 Message Date
Mario Zechner
998fd7d17e [c][ios][flutter] Add render object getter setter to TextureRegion and AtlasRegion 2025-08-29 15:59:50 +02:00
Mario Zechner
51410a526e [c] Direct setListener on track entry and animation state 2025-08-29 15:10:56 +02:00
Mario Zechner
3d5a66b5f8 Formatting 2025-08-28 13:57:28 +02:00
Mario Zechner
cb62bd70c0 feat(spine-ios): Add Objective-C support to generated Swift bindings
- Add NSObject inheritance to root classes for ObjC compatibility
- Add @objc(Spine<ClassName>) and @objcMembers annotations to all classes
- Fix property name conflicts (className -> rttiClassName, hash -> hashString)
- Use @nonobjc on subclass initializers to avoid selector conflicts
- Fix convenience init override modifiers
- Update ObjC example to use new API method names
- Update test to use rttiClassName property
2025-08-27 10:58:23 +02:00
Mario Zechner
f1d98393d5 fix(spine-ios): Fix memory management and complete test implementation
- Changed code generator to emit dispose() methods instead of deinit
- Add override keyword for dispose() in subclasses
- Keep deinit with _ownsMemory check for array types
- Fix SkinExtensions to use correct C++ class names for attachments
- Complete skeleton_drawable_test implementations with no warnings
- Add comprehensive bone pose transformation tests
- Fix skin entries test to properly show attachments

The memory management fix prevents Swift wrappers from accidentally
disposing C++ objects they don't own when created via fromPointer.
2025-08-16 21:24:13 +02:00
Mario Zechner
cc43fd549b feat(spine-ios): Implement SpineSwift high-level API mirroring spine_dart.dart
- Created SkeletonDrawable class wrapping spine_skeleton_drawable C functions
- Implemented AnimationStateEventManager singleton for event listener management
- Added helper types: Bounds and Vector structs
- Added extensions for Skeleton (bounds, getPosition)
- Added extensions for Skin (getEntries to iterate attachments)
- Added extensions for BonePose (coordinate transformations)
- Added extensions for AnimationState and TrackEntry (event listeners)
- Created skeleton_drawable_test_swift.swift using SpineSwift high-level API
- Updated test Package.swift to include SpineSwift dependency
- SpineSwift module now compiles with 0 errors

This completes the port of the high-level API from spine-flutter's spine_dart.dart
to SpineSwift, providing a clean Swift API that mirrors the Dart implementation.
2025-08-11 20:17:17 +02:00
Mario Zechner
9fdc0f0033 spine-ios: Fix Swift bindings compilation - arrays and type conversions
- Fixed array wrapper generation to use correct pointer casting
- Changed array count/length properties to return Int instead of Int32
- Fixed buffer access for primitive and object arrays (no assumingMemoryBound needed)
- Corrected size_t parameters to use Int instead of Int32
- Updated module imports (SpineSwift instead of Spine)
- Reduced compilation errors from 17,500 to 0 for SpineSwift module
- Remaining 27 errors are iOS-specific (UIKit) in SpineiOS module
2025-08-11 19:31:33 +02:00
Mario Zechner
a52ac67661 [ios] More Swift generator work. 2025-08-11 19:11:24 +02:00
Mario Zechner
ecbd700af4 Restructure spine-ios modules: SpineC, SpineSwift, SpineiOS
- Created clean module separation:
  - SpineC: C/C++ compilation only (working)
  - SpineSwift: Generated Swift bindings + platform-agnostic API
  - SpineiOS: iOS-specific UI components only
- Updated Package.swift with proper target structure
- Moved generated Swift files to SpineSwift/Generated
- Removed redundant SpineModule
- Created test with skeleton_drawable_test.swift ported from Dart
- Test successfully runs using SpineC module directly
- Note: SpineSwift has Objective-C selector conflicts to be fixed
2025-08-11 19:07:29 +02:00