vmt_parser/material/
sprite.rs

1use super::deserialize_path;
2use crate::{default_scale, default_scale3, Vec2, Vec3};
3use serde::{Deserialize, Serialize};
4
5#[derive(Debug, Clone, Serialize, Deserialize)]
6pub struct SpriteMaterial {
7    /// Defines an albedo texture.
8    #[serde(rename = "$basetexture", deserialize_with = "deserialize_path")]
9    pub base_texture: String,
10    /// Links the surface to a set of physical properties.
11    #[serde(rename = "$surfaceprop", default)]
12    pub surface_prop: Option<String>,
13
14    #[serde(rename = "$spriteorientation", default)]
15    pub sprite_orientation: SpriteOrientation,
16    #[serde(rename = "$spriteorigin", default)]
17    pub sprite_origin: Vec2,
18
19    /// Independently scales the red, green and blue channels of an albedo.
20    #[serde(rename = "$color", default = "default_scale3")]
21    pub color: Vec3,
22
23    /// Scales the opacity of an entire material.
24    #[serde(rename = "$alpha", default = "default_scale")]
25    pub alpha: f32,
26    /// Specifies a mask to use to determine binary opacity.
27    #[serde(rename = "$alphatest", default)]
28    pub alpha_test: bool,
29    /// Specifies a mask to use to determine binary opacity.
30    #[serde(rename = "$alphatestreference", default = "default_scale")]
31    pub alpha_test_reference: f32,
32    /// Specifies that the material should be partially see-through.
33    #[serde(rename = "$translucent", default)]
34    pub translucent: bool,
35}
36
37#[derive(Debug, Clone, Serialize, Deserialize, Default)]
38#[serde(rename_all = "snake_case")]
39pub enum SpriteOrientation {
40    ParallelUpright,
41    #[default]
42    VpParallel,
43    Oriented,
44    VpParallelOriented,
45}