live2d_parser/cubism_v1/moc/
params.rs

1use super::*;
2
3
4#[derive(Debug)]
5pub struct ParameterList {
6    items: Vec<u32>,
7}
8
9#[derive(Debug, Serialize, Deserialize)]
10pub struct Parameter {
11    /// Parameter name
12    pub id: String,
13    /// Minimum value
14    pub min_value: f32,
15    /// Maximum value
16    pub max_value: f32,
17    /// Default value
18    pub default_value: f32,
19}
20
21impl MocObject for Parameter {
22    fn read_object(r: &mut MocReader) -> Result<Parameter, L2Error>
23    where
24        Self: Sized,
25    {
26        let max_value = r.read()?;
27        let min_value = r.read()?;
28        let default_value = r.read()?;
29        let name = r.read()?;
30        Ok(Parameter { id: name, min_value, max_value, default_value })
31    }
32}
33
34impl ObjectData {
35    pub fn as_parameters(self) -> Vec<Parameter> {
36        match self {
37            ObjectData::Parameter(p) => vec![p],
38            ObjectData::ObjectArray(v) => v.into_iter().map(|o| o.as_parameters()).flatten().collect(),
39            s => {
40                warn!("ObjectData::as_parameters() called on non-pivot object {s:?}");
41                vec![]
42            }
43        }
44    }
45}