mirror of
https://github.com/EsotericSoftware/spine-runtimes.git
synced 2026-02-04 22:34:53 +08:00
288 lines
8.2 KiB
Markdown
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.
|