ltk_anim 0.3.3

Animation formats support for League Toolkit
Documentation
use num_enum::{IntoPrimitive, TryFromPrimitive};

#[derive(Clone, Debug)]
#[repr(C, packed)]
pub struct Frame {
    time: u16,
    joint_id: u16,
    value: [u16; 3],
}

#[allow(dead_code)]
impl Frame {
    pub fn time(&self) -> u16 {
        self.time
    }
    pub fn value(&self) -> [u16; 3] {
        self.value
    }
    pub fn joint_id(&self) -> u16 {
        self.joint_id & 0x3fff
    }
    pub fn transform_type(&self) -> TransformType {
        TransformType::try_from_primitive((self.joint_id >> 14) as u8)
            .expect("invalid transform type")
    }
}

#[derive(TryFromPrimitive, IntoPrimitive)]
#[repr(u8)]
pub enum TransformType {
    Rotation = 0,
    Translation = 1,
    Scale = 2,
}