live2d_parser/cubism_v3/
mod.rs1use serde::{Deserialize, Serialize};
2use std::collections::HashMap;
3pub mod moc3;
4
5#[derive(Serialize, Deserialize)]
6pub struct HitArea {
7 #[serde(rename = "Id")]
8 pub id: String,
9 #[serde(rename = "Name")]
10 pub name: String,
11}
12
13#[derive(Serialize, Deserialize)]
14pub struct Struct3 {
15 #[serde(rename = "Target")]
16 pub target: String,
17 #[serde(rename = "Name")]
18 pub name: String,
19 #[serde(rename = "Ids")]
20 pub ids: Vec<String>,
21}
22
23#[derive(Serialize, Deserialize)]
24pub struct Motion {
25 #[serde(rename = "File")]
26 pub file: String,
27 #[serde(rename = "FadeInTime", default)]
28 pub fade_in_time: f64,
29 #[serde(rename = "FadeOutTime", default)]
30 pub fade_out_time: f64,
31 #[serde(rename = "Sound", default)]
32 pub sound: String,
33}
34
35#[derive(Serialize, Deserialize)]
36pub struct Model3Json {
37 #[serde(rename = "Version")]
38 pub version: i64,
39 #[serde(rename = "FileReferences")]
40 pub file_references: FileReferences,
41 #[serde(rename = "Groups")]
42 pub groups: Vec<Struct3>,
43 #[serde(rename = "HitAreas")]
44 pub hit_areas: Vec<HitArea>,
45}
46#[derive(Serialize, Deserialize)]
47pub struct FileReferences {
48 #[serde(rename = "Moc")]
49 pub moc: String,
50 #[serde(rename = "Textures")]
51 pub textures: Vec<String>,
52 #[serde(rename = "Physics")]
53 pub physics: String,
54 #[serde(rename = "Pose")]
55 pub pose: String,
56 #[serde(rename = "DisplayInfo")]
57 pub display_info: String,
58 #[serde(rename = "Expressions", default)]
59 pub expressions: Vec<Expression>,
60 #[serde(rename = "Motions")]
61 pub motions: HashMap<String, Vec<Motion>>,
62 #[serde(rename = "UserData")]
63 pub user_data: String,
64}
65
66#[derive(Serialize, Deserialize)]
67pub struct Expression {
68 #[serde(rename = "Name")]
69 pub name: String,
70 #[serde(rename = "File")]
71 pub file: String,
72}