live2d_parser/cubism_v3/
mod.rs

1use 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}