2个版本

0.1.1 2020年2月28日
0.1.0 2020年2月26日

#8 in #spine


spine 中使用

MIT 许可证

710KB
18K SLoC

Rust 10K SLoC // 0.0% comments C 9K SLoC // 0.1% comments

Build Status Docs badge Crates badge

Spine rendering in glow

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