mirror of
https://codeberg.org/icewind/vmt-parser.git
synced 2026-06-03 20:14:06 +02:00
unlit generic
This commit is contained in:
parent
ab10e2d05c
commit
12793d367c
7 changed files with 89 additions and 2 deletions
|
|
@ -5,7 +5,7 @@ use serde::{Deserialize, Serialize};
|
||||||
|
|
||||||
#[derive(Debug, Clone, Serialize, Deserialize)]
|
#[derive(Debug, Clone, Serialize, Deserialize)]
|
||||||
pub struct LightMappedGenericMaterial {
|
pub struct LightMappedGenericMaterial {
|
||||||
/// Defines an diffuse texture.
|
/// Defines an albedo texture.
|
||||||
#[serde(rename = "$basetexture")]
|
#[serde(rename = "$basetexture")]
|
||||||
pub base_texture: String,
|
pub base_texture: String,
|
||||||
/// Use this material as a decal.
|
/// Use this material as a decal.
|
||||||
|
|
@ -85,4 +85,8 @@ pub struct LightMappedGenericMaterial {
|
||||||
/// Prevents fog from overdrawing a material.
|
/// Prevents fog from overdrawing a material.
|
||||||
#[serde(rename = "$nofog", default)]
|
#[serde(rename = "$nofog", default)]
|
||||||
pub no_fog: bool,
|
pub no_fog: bool,
|
||||||
|
|
||||||
|
/// Ignore z filtering
|
||||||
|
#[serde(rename = "$ignorez", default)]
|
||||||
|
pub ignore_z: bool,
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,14 @@
|
||||||
mod lightmappedgeneric;
|
mod lightmappedgeneric;
|
||||||
|
mod unlitgeneric;
|
||||||
|
|
||||||
use lightmappedgeneric::LightMappedGenericMaterial;
|
pub use crate::material::unlitgeneric::UnlitGenericMaterial;
|
||||||
|
pub use lightmappedgeneric::LightMappedGenericMaterial;
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
|
|
||||||
#[derive(Debug, Clone, Serialize, Deserialize)]
|
#[derive(Debug, Clone, Serialize, Deserialize)]
|
||||||
pub enum Material {
|
pub enum Material {
|
||||||
#[serde(rename = "lightmappedgeneric")]
|
#[serde(rename = "lightmappedgeneric")]
|
||||||
LightMappedGeneric(LightMappedGenericMaterial),
|
LightMappedGeneric(LightMappedGenericMaterial),
|
||||||
|
#[serde(rename = "unlitgeneric")]
|
||||||
|
UnlitGeneric(UnlitGenericMaterial),
|
||||||
}
|
}
|
||||||
|
|
|
||||||
49
src/material/unlitgeneric.rs
Normal file
49
src/material/unlitgeneric.rs
Normal file
|
|
@ -0,0 +1,49 @@
|
||||||
|
use crate::{default_scale, default_scale3, Vec3};
|
||||||
|
use serde::{Deserialize, Serialize};
|
||||||
|
|
||||||
|
#[derive(Debug, Clone, Serialize, Deserialize)]
|
||||||
|
pub struct UnlitGenericMaterial {
|
||||||
|
/// Defines an albedo texture.
|
||||||
|
#[serde(rename = "$basetexture")]
|
||||||
|
pub base_texture: String,
|
||||||
|
/// Links the surface to a set of physical properties.
|
||||||
|
#[serde(rename = "$surfaceprop")]
|
||||||
|
pub surface_prop: Option<String>,
|
||||||
|
/// Tells this material is used for models and not brushes.
|
||||||
|
#[serde(rename = "$model", default)]
|
||||||
|
pub model: bool,
|
||||||
|
|
||||||
|
/// Independently scales the red, green and blue channels of an albedo.
|
||||||
|
#[serde(rename = "$color", default = "default_scale3")]
|
||||||
|
pub color: Vec3,
|
||||||
|
|
||||||
|
/// Scales the opacity of an entire material.
|
||||||
|
#[serde(rename = "$alpha", default = "default_scale")]
|
||||||
|
pub alpha: f32,
|
||||||
|
/// Specifies a mask to use to determine binary opacity.
|
||||||
|
#[serde(rename = "$alphatest", default)]
|
||||||
|
pub alpha_test: bool,
|
||||||
|
/// Disables backface culling.
|
||||||
|
#[serde(rename = "$nocull", default)]
|
||||||
|
pub no_cull: bool,
|
||||||
|
/// Specifies that the material should be partially see-through.
|
||||||
|
#[serde(rename = "$translucent", default)]
|
||||||
|
pub translucent: bool,
|
||||||
|
|
||||||
|
/// Ignore z filtering
|
||||||
|
#[serde(rename = "$ignorez", default)]
|
||||||
|
pub ignore_z: bool,
|
||||||
|
|
||||||
|
/// Prevents fog from overdrawing a material.
|
||||||
|
#[serde(rename = "$nofog", default)]
|
||||||
|
pub no_fog: bool,
|
||||||
|
|
||||||
|
/// Allow the player's flashlight to illuminate the material.
|
||||||
|
#[serde(rename = "$receiveflashlight", default)]
|
||||||
|
pub receive_flash_light: bool,
|
||||||
|
/// Possibly used to allow shadows to form from this decal.
|
||||||
|
#[serde(rename = "singlepassflashlight", default)]
|
||||||
|
pub single_pass_flash_light: bool,
|
||||||
|
#[serde(rename = "$no_fullbright", default)]
|
||||||
|
pub no_full_bright: bool,
|
||||||
|
}
|
||||||
9
tests/data/mvm_backpack.vmt
Normal file
9
tests/data/mvm_backpack.vmt
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
"unlitgeneric"
|
||||||
|
{
|
||||||
|
"$translucent" 1
|
||||||
|
"$baseTexture" "vgui\pve\mvm_backpack"
|
||||||
|
"$vertexcolor" 1
|
||||||
|
"$no_fullbright" 1
|
||||||
|
"$ignorez" 1
|
||||||
|
"%keywords" "tf"
|
||||||
|
}
|
||||||
|
|
@ -4,6 +4,7 @@ use test_case::test_case;
|
||||||
use vmt_parser::from_str;
|
use vmt_parser::from_str;
|
||||||
|
|
||||||
#[test_case("tests/data/concretefloor003.vmt")]
|
#[test_case("tests/data/concretefloor003.vmt")]
|
||||||
|
#[test_case("tests/data/mvm_backpack.vmt")]
|
||||||
fn test_serde(path: &str) {
|
fn test_serde(path: &str) {
|
||||||
let raw = read_to_string(path).unwrap();
|
let raw = read_to_string(path).unwrap();
|
||||||
match from_str(&raw) {
|
match from_str(&raw) {
|
||||||
|
|
|
||||||
|
|
@ -28,4 +28,5 @@ lightmappedgeneric(LightMappedGenericMaterial(
|
||||||
r#$envmap: None,
|
r#$envmap: None,
|
||||||
r#$phong: false,
|
r#$phong: false,
|
||||||
r#$nofog: false,
|
r#$nofog: false,
|
||||||
|
r#$ignorez: false,
|
||||||
))
|
))
|
||||||
|
|
|
||||||
19
tests/snapshots/parse__tests__data__mvm_backpack.vmt.snap
Normal file
19
tests/snapshots/parse__tests__data__mvm_backpack.vmt.snap
Normal file
|
|
@ -0,0 +1,19 @@
|
||||||
|
---
|
||||||
|
source: tests/parse.rs
|
||||||
|
expression: result
|
||||||
|
---
|
||||||
|
unlitgeneric(UnlitGenericMaterial(
|
||||||
|
r#$basetexture: "vgui\\pve\\mvm_backpack",
|
||||||
|
r#$surfaceprop: None,
|
||||||
|
r#$model: false,
|
||||||
|
r#$color: Vec3((1.0, 1.0, 1.0)),
|
||||||
|
r#$alpha: 1.0,
|
||||||
|
r#$alphatest: false,
|
||||||
|
r#$nocull: false,
|
||||||
|
r#$translucent: true,
|
||||||
|
r#$ignorez: true,
|
||||||
|
r#$nofog: false,
|
||||||
|
r#$receiveflashlight: false,
|
||||||
|
singlepassflashlight: false,
|
||||||
|
r#$no_fullbright: true,
|
||||||
|
))
|
||||||
Loading…
Add table
Add a link
Reference in a new issue