Function rusty_spine::extension::set_create_texture_cb
source · pub fn set_create_texture_cb<F>(create_texture_cb: F)
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.