2025-10-29 13:15:25 +01:00

288 lines
8.2 KiB
Markdown

# 4.3.0
## Dart
- **Additions**
- Added `Slider` and `SliderData` classes for slider constraints
- Added `SliderTimeline` and `SliderMixTimeline` for animating sliders
- Added new pose system with `BoneLocal`, `BonePose`, and related classes
- Added `Pose`, `Posed`, and `PosedActive` base classes for unified pose management
- **Breaking changes**
- **The Dart runtime is now fully auto-generated from the C runtime**, maintaining the full C++ type hierarchy with proper nullability annotations. The code generator creates 150+ Dart files in `lib/generated/` providing complete API coverage of all Spine runtime types.
- All properties are now exposed as getters and setters instead of methods
- API changes to match C++ naming conventions (see examples below)
- Timeline `apply()` methods now take an additional `appliedPose` parameter
## Flutter
- **Breaking changes**
- Updated to use the new auto-generated Dart runtime with all the Dart API changes above
## Migration Examples
The examples and documentation have been updated to demonstrate the minimal changes needed to migrate from 4.2 to 4.3.
### Property Access Changes
**Before (4.2):**
```dart
controller.skeleton.setScaleX(0.5);
controller.skeleton.setScaleY(0.5);
controller.skeleton.findSlot("gun")?.setColor(Color(1, 0, 0, 1));
```
**After (4.3):**
```dart
controller.skeleton.scaleX = 0.5;
controller.skeleton.scaleY = 0.5;
controller.skeleton.findSlot("gun")?.pose.color.set(1, 0, 0, 1);
```
### Animation State API Changes
**Before (4.2):**
```dart
controller.animationState.getData().setDefaultMix(0.2);
controller.animationState.setAnimationByName(0, "portal", true);
controller.animationState.addAnimationByName(0, "run", true, 0);
```
**After (4.3):**
```dart
controller.animationState.data.defaultMix = 0.2;
controller.animationState.setAnimation(0, "portal", true);
controller.animationState.addAnimation(0, "run", true, 0);
```
### Event Access Changes
**Before (4.2):**
```dart
print("Event: ${event?.getData().getName()}");
print("Int value: ${event?.getIntValue()}");
print("Animation: ${entry?.getAnimation().getName()}");
```
**After (4.3):**
```dart
print("Event: ${event?.data.name}");
print("Int value: ${event?.intValue}");
print("Animation: ${entry?.animation.name}");
```
### Bone Transform Changes (Pose System)
**Before (4.2):**
```dart
final bone = controller.skeleton.findBone("crosshair")!;
final parent = bone.getParent()!;
final position = parent.worldToLocal(worldPosition.dx, worldPosition.dy);
bone.setX(position.x);
bone.setY(position.y);
```
**After (4.3):**
```dart
final bone = controller.skeleton.findBone("crosshair")!;
final parent = bone.parent;
if (parent != null) {
final position = parent.appliedPose.worldToLocal(worldPosition.dx, worldPosition.dy);
bone.appliedPose.x = position.x;
bone.appliedPose.y = position.y;
}
```
# 4.2.36
- Support for 16KB page alignement on Android. You must specify the NDK version in the build.gradle file of your app's Android project. See https://github.com/EsotericSoftware/spine-runtimes/issues/2849
# 4.2.35
- Port of commit f1e0f0f: Fixed animation not being mixed out in some cases.
# 4.2.34
- Support latest emscripten SDK (4.0.6+) via update of web_ffi
# 4.2.33
- Merge fixes in spine-cpp(-lite)
- Prepare for upcoming Dart/Flutter releases, see https://github.com/EsotericSoftware/spine-runtimes/pull/2690
# 4.2.32
- Fix spine-flutter spec checksum in `Podfile.lock`, keeping version control cleaner. See https://github.com/EsotericSoftware/spine-runtimes/pull/2609
# 4.2.31
- Fix bug in IKConstraint leading to NaNs.
# 4.2.30
- Switch to spine-cpp SkeletonRenderer
# 4.2.29
- Fix issue in pubspec.yaml related to C++ include paths.
# 4.2.28
- Fix incompatibility with Gradle 8.x. See https://github.com/EsotericSoftware/spine-runtimes/issues/2553
# 4.2.27
- Fixes clipping in case of colinear clipping edges.
# 4.2.26
- `Skeleton.getBounds()` takes clipping into consideration.
# 4.2.25
- Switch to spine-cpp-lite
# 4.2.24
- Support static linking of native library, see https://github.com/EsotericSoftware/spine-runtimes/issues/2438
# 4.2.23
- Physics support
# 4.2.22
- Fix multiply blend mode, see https://esotericsoftware.com/forum/d/25369-spine-flutter-slot%E6%B7%B7%E5%90%88%E6%A8%A1%E5%BC%8F%E5%90%8Ealpha%E4%B8%A2%E5%A4%B1/2
# 4.2.21
- FilterQuality for texture atlas pages is now set to medium. It is configurable via `Atlas.filterQuality`. See https://github.com/EsotericSoftware/spine-runtimes/issues/2362
- Track Entry listeners are now invoked properly, see https://github.com/EsotericSoftware/spine-runtimes/issues/2349
# 4.2.20
- Fixed clipping bug, see https://github.com/EsotericSoftware/spine-runtimes/issues/2431
# 4.2.19
- Fixes #2412, single bone, translation only IK constraints did not take skeleton scale into account.
# 4.2.18
- Fixes compilation errors due to API change in Flutter 3.16.0, see [this issue](https://github.com/EsotericSoftware/spine-runtimes/issues/2420). **Note**: Depending on this version requires your project to depend on Flutter >= 3.16.0 as well.
# 4.1.14
- Temporary "fix" for https://github.com/EsotericSoftware/spine-runtimes/issues/2479. It appears the canvaskit backend of Flutter has a bug. We currently do not set a `FilterQuality` anymore. The Flutter rendering backend is supposed to pick a good one depending the platform. Users can still set `FilterQuality` globally via `Atlas.filterQuality` as before.
# 4.1.13
- Fix multiply blend mode, see https://esotericsoftware.com/forum/d/25369-spine-flutter-slot%E6%B7%B7%E5%90%88%E6%A8%A1%E5%BC%8F%E5%90%8Ealpha%E4%B8%A2%E5%A4%B1/2
# 4.1.12
- FilterQuality for texture atlas pages is now set to medium. It is configurable via `Atlas.filterQuality`. See https://github.com/EsotericSoftware/spine-runtimes/issues/2362
- Track Entry listeners are now invoked properly, see https://github.com/EsotericSoftware/spine-runtimes/issues/2349
# 4.1.11
- Fixed clipping bug, see https://github.com/EsotericSoftware/spine-runtimes/issues/2431
# 4.1.10
- Update WASM binaries
# 4.1.9
\*Fixes #2412, single bone, translation only IK constraints did not take skeleton scale into account.
# 4.1.8
- Fixes compilation errors due to API change in Flutter 3.16.0, see [this issue](https://github.com/EsotericSoftware/spine-runtimes/issues/2420). **Note**: Depending on this version requires your project to depend on Flutter >= 3.16.0 as well.
# 4.2.17
- Fix allocation patter for temporary structs on Windows, which resulted in a hard crash without a stack trace on the native side.
# 4.1.7
- Fix allocation patter for temporary structs on Windows, which resulted in a hard crash without a stack trace on the native side.
# 4.2.16
- Fixed bug in path handling on Windows.
# 4.1.6
- Fixed bug in path handling on Windows.
# 4.2.15
- Updated http dependency to 1.1.0
# 4.1.5
- Updated http dependency to 1.1.0
# 4.2.14
- Merge changes from 4.1.4.
# 4.1.4
- Fixes for WASM/web builds.
# 4.2.13
- Fixes for Impeller.
# 4.1.3
- Fixes for Impeller.
# 4.2.12
- Merge changes from 4.1.1 and 4.1.2.
# 4.1.2
- API documentation and minor cosmetics.
# 4.1.1
- Backport to 4.1 spine-runtimes branch.
- Blend mode support.
- Hot-reload support. The underlying `SkeletonDrawable` will be retained if the asset file names and type provided to the `SpineWidget` constructor has not changed.
# 4.2.11
- Update README.md with setup and development instructions.
# 4.2.10
- Update README.md to point to Junji's Dart-only Spine runtime.
# 4.2.9
- Fix atlas parsing.
# 4.2.8
- Change reversed positional argument order in `SpineWidget` constructors.
# 4.2.7
- Change package name from `esotericsoftware_spine_flutter` to `spine_flutter`.
# 4.2.6
- Fix analyzer errors, fix code style to adhere to Dart standards.
# 4.2.5
- Implemented batching of render commands, reducing the number of draw calls. 60/120fps for 100 Spineboys on all platforms.
# 0.0.4
- Clean-up `fromAsset()` factory methods so the atlas comes before skeleton data file name.
- Rename `Vector2` to `Vec2`.
- Make the bundle configurable in `SpineWidget.asset()`.
# 0.0.3
- Lower macOS deployment target to 10.11.
# 0.0.2
- Fix package name in build system `spine_flutter` > `esotericsoftware_spine_flutter`.
# 0.0.1
Initial test release.