gltf_json/
asset.rs

1use crate::{extensions, Extras};
2use gltf_derive::Validate;
3use serde_derive::{Deserialize, Serialize};
4
5/// Metadata about the glTF asset.
6#[derive(Clone, Debug, Deserialize, Serialize, Validate)]
7pub struct Asset {
8    /// A copyright message suitable for display to credit the content creator.
9    #[serde(skip_serializing_if = "Option::is_none")]
10    pub copyright: Option<String>,
11
12    /// Extension specific data.
13    #[serde(default, skip_serializing_if = "Option::is_none")]
14    pub extensions: Option<extensions::asset::Asset>,
15
16    /// Optional application specific data.
17    #[serde(default)]
18    #[cfg_attr(feature = "extras", serde(skip_serializing_if = "Option::is_none"))]
19    #[cfg_attr(not(feature = "extras"), serde(skip_serializing))]
20    pub extras: Extras,
21
22    /// Tool that generated this glTF model.
23    #[serde(skip_serializing_if = "Option::is_none")]
24    pub generator: Option<String>,
25
26    /// The minimum glTF version that this asset targets.
27    #[serde(rename = "minVersion")]
28    #[serde(skip_serializing_if = "Option::is_none")]
29    pub min_version: Option<String>,
30
31    /// The glTF version of this asset.
32    pub version: String,
33}
34
35impl Default for Asset {
36    fn default() -> Self {
37        Self {
38            copyright: None,
39            extensions: Default::default(),
40            extras: Default::default(),
41            generator: None,
42            min_version: None,
43            version: "2.0".to_string(),
44        }
45    }
46}