use super::*;
#[derive(Debug, Clone)]
pub enum TextureUpdateResult {
Created { texture_id: TextureId },
Updated,
Destroyed,
Failed,
NoAction,
}
impl TextureUpdateResult {
pub fn apply_to(self, texture_data: &mut TextureData) {
match self {
TextureUpdateResult::Created { texture_id } => {
texture_data.set_tex_id(texture_id);
texture_data.set_status(TextureStatus::OK);
}
TextureUpdateResult::Updated => {
texture_data.set_status(TextureStatus::OK);
}
TextureUpdateResult::Destroyed => mark_texture_destroyed(texture_data),
TextureUpdateResult::Failed => {
texture_data.set_status(TextureStatus::Destroyed);
}
TextureUpdateResult::NoAction => {
}
}
}
}
pub(super) fn mark_texture_destroyed(texture_data: &mut TextureData) {
unsafe {
(*texture_data.as_raw_mut()).WantDestroyNextFrame = true;
}
texture_data.set_status(TextureStatus::Destroyed);
}