2个版本
0.1.1 | 2020年2月28日 |
---|---|
0.1.0 | 2020年2月26日 |
#8 in #spine
在 spine 中使用
710KB
18K SLoC
Rust Spine运行时
这是Esoteric Software的spine-c运行时的Rust高级、安全绑定
工作状态
- spine-c FFI包装器
-
概念证明示例运行和动画
-
结构包装器完成
- 骨架
- 骨架数据
- 骨架
- 槽数据
- 槽
- 附件
- 区域附件
- 骨骼
- 动画
- 动画数据
- 任务条目
....
- 骨架
-
代码示例
// Load the spine texture atlas
let atlas = Atlas::from_file("example.atlas", |atlas_page, path| {
// Perform Texture loading into your renderer here.
// Return a u32 that will be used internally to reference the texture
123
}).unwrap();
// Load the spine skeleton data from a binary file
let skeleton_data = SkeletonData::from_binary_file("example.skel", atlas).unwrap();
// Load the animation data from the associated skeleton
let animation_data = AnimationStateData::new(&skeleton_data);
// Spawn an instance of the skeleton animation. Each Skeleton+Animation combo references a unique skeleton and animation set.
let mut skeleton = Skeleton::new(&skeleton_data);
let mut animation = AnimationState::new(&animation_data);
// List available animations
skeleton_data.animations().iter().for_each(|a| {
println!("Available Animation: {}", a.name());
});
// Set an active animation
animation.set_by_name(animations[0].name(), TrackIndex::zero(), true);
....
// Animations and skeletons are then updated as follows, which follows the spine runtime.
skeleton.update(delta_time_f32_seconds);
animation.update(delta_time_f32_seconds);
animation.apply(skeleton);
skeleton.update_world_transforms();
依赖
~0.3–1MB
~22K SLoC