live2d_parser/cubism_v1/moc/
params.rs1use super::*;
2
3
4#[derive(Debug)]
5pub struct ParameterList {
6 items: Vec<u32>,
7}
8
9#[derive(Debug, Serialize, Deserialize)]
10pub struct Parameter {
11 pub id: String,
13 pub min_value: f32,
15 pub max_value: f32,
17 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}