# 0.8.0 - Upgrade runtime to Spine 4.2 - Fix `memcpy` crash in Rust 1.78 (when not using `libc` feature) - Consistently use "translation" instead of "position" verbiage. - Functions with `position` in their name renamed to use `translation` (except those referring to other types of positions). - Add `Physics` enum - Add `physics` parameter to `Skeleton::update_world_transform` and `Skeleton::update_world_transform_with` - Add `physics` parameter to `Controller::update` - Add constraint types: - `IkConstraint` - `IkConstraintData` - `PathConstraint` - `PathConstraintData` - `PhysicsConstraint` - `PhysicsConstraintData` - `TransformConstraint` - `TransformConstraintData` - Add IK constraint methods: - `Skeleton::ik_constraints` - `Skeleton::ik_constraints_mut` - `Skeleton::ik_constraint_at_index` - `Skeleton::ik_constraint_at_index_mut` - `Skeleton::find_ik_constraint` - `Skeleton::find_ik_constraint_mut` - `SkeletonData::ik_constraints` - `SkeletonData::ik_constraint_at_index` - `SkeletonData::find_ik_constraint` - Add path constraint methods: - `Skeleton::path_constraints` - `Skeleton::path_constraints_mut` - `Skeleton::path_constraint_at_index` - `Skeleton::path_constraint_at_index_mut` - `Skeleton::find_path_constraint` - `Skeleton::find_path_constraint_mut` - `SkeletonData::path_constraints` - `SkeletonData::path_constraint_at_index` - `SkeletonData::find_path_constraint` - Add physics constraint methods: - `Skeleton::physics_constraints` - `Skeleton::physics_constraints_mut` - `Skeleton::physics_constraint_at_index` - `Skeleton::physics_constraint_at_index_mut` - `Skeleton::find_physics_constraint` - `Skeleton::find_physics_constraint_mut` - `Skeleton::physics_constraint_count` - `SkeletonData::physics_constraints` - `SkeletonData::physics_constraint_at_index` - `SkeletonData::physics_constraint_count` - `SkeletonData::find_physics_constraint` - Add transform constraint methods: - `Skeleton::transform_constraints` - `Skeleton::transform_constraints_mut` - `Skeleton::transform_constraint_at_index` - `Skeleton::transform_constraint_at_index_mut` - `Skeleton::find_transform_constraint` - `Skeleton::find_transform_constraint_mut` - `SkeletonData::transform_constraints` - `SkeletonData::transform_constraint_at_index` - `SkeletonData::find_transform_constraint` - Add new enum types: - `PositionMode` - `SpacingMode` - `RotateMode` - Add missing mutator: - `TrackEntry::set_track_time` - Add Spine 4.2 methods: - `TrackEntry::mix_attachment_threshold` - `TrackEntry::set_mix_attachment_threshold` - `TrackEntry::mix_draw_order_threshold` - `TrackEntry::set_mix_draw_order_threshold` - Remove Spine 4.1 methods: - `TrackEntry::attachment_threshold` - `TrackEntry::set_attachment_threshold` - `TrackEntry::draw_order_threshold` - `TrackEntry::set_draw_order_threshold` # 0.7.1 - Fix dark color applying incorrectly with premultiplied alpha (using draw functions) # 0.7.0 - Add `AttachmentLoader` for creating region attachments - Upstream fixes - Reduce allocations ([EsotericSoftware/spine-runtimes#2325](https://github.com/EsotericSoftware/spine-runtimes/issues/2325)) - Fix double free of sequences in mesh attachments ([EsotericSoftware/spine-runtimes#2394](https://github.com/EsotericSoftware/spine-runtimes/issues/2394)) - Fix buffer overflow when loading sequences with less than 10 frames ([EsotericSoftware/spine-runtimes#2397](https://github.com/EsotericSoftware/spine-runtimes/issues/2397)) - Fix incorrect allocation of TransformTimeline ([EsotericSoftware/spine-runtimes#2401](https://github.com/EsotericSoftware/spine-runtimes/issues/2401)) - Remove unnecessary feature `use_libc`, use `libc` instead - More clippy fixes - Fixes for pointer, abi, and memory undefined behavior - Lots of docs - Return values now optional: - `SkeletonData::audio_path` - `SkeletonData::images_path` - `SkeletonData::version` - `SlotData::attachment_name` - `SlotData::blend_mode` - `SlotData::color` - `TrackEntry::mixing_from` - `TrackEntry::mixing_to` - `TrackEntry::next` - `TrackEntry::previous` - Remove unnecessary functions: - `Atlas::find_page_mut` - `Atlas::find_region_mut` - `Atlas::pages_mut` - `Atlas::regions_mut` - `AtlasPage::atlas_mut` - `AtlasRegion::page_mut` - `BoneData::color_mut` - `BoneData::parent_mut` - `BoneData::set_length` - `BoneData::set_position` - `BoneData::set_rotation` - `BoneData::set_scale_x` - `BoneData::set_scale_y` - `BoneData::set_scale` - `BoneData::set_shear_x` - `BoneData::set_shear_y` - `BoneData::set_shear` - `BoneData::set_skin_required` - `BoneData::set_transform_mode` - `BoneData::set_x` - `BoneData::set_y` - `SkeletonData::animation_at_index_mut` - `SkeletonData::animations_mut` - `SkeletonData::bone_at_index_mut` - `SkeletonData::bones_mut` - `SkeletonData::default_skin_mut` - `SkeletonData::find_animation_mut` - `SkeletonData::find_bone_mut` - `SkeletonData::find_skin_mut` - `SkeletonData::find_slot_mut` - `SkeletonData::skin_at_index_mut` - `SkeletonData::skins_mut` - `SkeletonData::slot_at_index_mut` - `SkeletonData::slots_mut` - `SlotData::bone_data_mut` - `TrackEntry::set_animation_time` - `TrackEntry::set_mixing_from` - `TrackEntry::set_mixing_to` - `TrackEntry::set_next` - `TrackEntry::set_previous` - Remove unnecessary types: - `AtlasPageMutIterator` - `AtlasRegionMutIterator` # 0.6.1 - Compilation fixes for new Rust lints # 0.6.0 - All indices are now `usize` (previously some were `i32` which lead to inconsistent APIs) - Events are nicer to work with using the new `AnimationEvent` enum. - `Skeleton::set_skin` and `Skin::add_skin` marked unsafe (with safety comments) - Add `Skeleton::set_skins_by_name` as a safe alternative for the primary use case (conglomerate skins) - New error type: `SpineError::PathNotUtf8` (removes some internal `unwrap` calls) - Lots of clippy fixes - Many functions now marked `#[must_use]` - The following functions are no longer `unsafe`: - `MeshAttachment::new_linked_mesh` - `MeshAttachment::update_region` - `RegionAttachment::update_region` - Upstream fixes - Fix IK constraint NaN when a parent bone has zero scale - Handle skeleton loading problems without crashes ([EsotericSoftware/spine-runtimes#2276](https://github.com/EsotericSoftware/spine-runtimes/pull/2276)) - Fix crash when skeleton `hash` or `spine` doesn't exist in JSON file ([EsotericSoftware/spine-runtimes#2270](https://github.com/EsotericSoftware/spine-runtimes/pull/2270)) - Fix integer values in events broken with binary loader ([EsotericSoftware/spine-runtimes#2281](https://github.com/EsotericSoftware/spine-runtimes/issues/2281)) # 0.5.2 - Upstream fixes - Dark color alpha inconsistent between binary and JSON formats ([EsotericSoftware/spine-runtimes#2263](https://github.com/EsotericSoftware/spine-runtimes/issues/2263)) - Atlas defaults are not handled ([EsotericSoftware/spine-runtimes#2264](https://github.com/EsotericSoftware/spine-runtimes/issues/2264)) - Set dark color's alpha to 0 for non-PMA and 1 for PMA textures in drawers (the dark color's alpha is not typically used, so this is merely a convenience) # 0.5.1 - Fixes [#5](https://github.com/jabuwu/rusty_spine/issues/5) - Adds `SkeletonClipping::clip_triangles` - Improved docs & tests