Function rusty_spine::extension::set_create_texture_cb

source ·
pub fn set_create_texture_cb<F>(create_texture_cb: F)
where F: Fn(&mut AtlasPage, &str) + 'static,
Expand description

Set _spAtlasPage_createTexture

The purpose of this callback is to allow loading textures in whichever engine is being used. The following example shows the intended usage by storing the texture on the renderer object of the AtlasPage which can be acquired later.

struct SpineTexture(pub String);

rusty_spine::extension::set_create_texture_cb(|atlas_page, path| {
    atlas_page.renderer_object().set(SpineTexture(path.to_owned()));
});
rusty_spine::extension::set_dispose_texture_cb(|atlas_page| unsafe {
    atlas_page.renderer_object().dispose::<SpineTexture>();
});

If using the SimpleDrawer or CombinedDrawer, the texture can be acquired from SimpleRenderable::attachment_renderer_object or CombinedRenderable::attachment_renderer_object respectively.

If using the SkeletonController, see SkeletonRenderable::attachment_renderer_object or SkeletonCombinedRenderable::attachment_renderer_object


struct SpineTexture(pub String); // from example above

// ...

let mut skeleton_controller = SkeletonController::new(skeleton_data, animation_state_data);
let renderables = skeleton_controller.renderables();
for renderable in renderables.iter() {
    if let Some(attachment_renderer_object) = renderable.attachment_renderer_object {
        let texture = unsafe { &mut *(attachment_renderer_object as *mut SpineTexture) };
    }
}

§Panics

Panics if the internal mutex is poisoned.