plasma-prp 0.1.0

Read, write, inspect, and manipulate Plasma engine PRP files used by Myst Online: Uru Live
Documentation
//! plSimpleModifier — non-skeletal animation (doors, elevators, gears).
//!
//! Drives a controller via plAnimTimeConvert. Responds to plAnimCmdMsg.
//!
//! C++ ref: plModifier/plSimpleModifier.h/.cpp, plAnimEventModifier.h/.cpp

use crate::core::uoid::Uoid;

/// Parsed plSimpleModifier data.
#[derive(Debug, Clone)]
pub struct SimpleModifierData {
    pub self_key: Option<Uoid>,
    /// The animation time convert controls timing.
    pub time_convert_key: Option<Uoid>,
}

impl Default for SimpleModifierData {
    fn default() -> Self {
        Self {
            self_key: None,
            time_convert_key: None,
        }
    }
}

/// plAnimEventModifier — fires events at animation keyframes.
#[derive(Debug, Clone)]
pub struct AnimEventModifierData {
    pub self_key: Option<Uoid>,
    pub callback_receivers: Vec<Uoid>,
}

impl Default for AnimEventModifierData {
    fn default() -> Self {
        Self {
            self_key: None,
            callback_receivers: Vec::new(),
        }
    }
}