use super::deserialize_path;
use crate::{
default_detail_scale, default_scale, default_scale3, BlendMode, TextureTransform, Vec2, Vec3,
};
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct VertexLitGenericMaterial {
#[serde(
rename = "$basetexture",
default,
deserialize_with = "deserialize_path"
)]
pub base_texture: Option<String>,
#[serde(rename = "$detail", default, deserialize_with = "deserialize_path")]
pub detail: Option<String>,
#[serde(
rename = "$decaltexture",
default,
deserialize_with = "deserialize_path"
)]
pub decal_texture: Option<String>,
#[serde(rename = "$color2", default = "default_scale3")]
pub color2: Vec3,
#[serde(rename = "$basetexturetransform", default)]
pub base_texture_transform: TextureTransform,
#[serde(rename = "$color", default = "default_scale3")]
pub color: Vec3,
#[serde(rename = "$decalscale", default = "default_detail_scale")]
pub detail_scale: Vec2,
#[serde(rename = "$detailblendfactor", default = "default_scale")]
pub detail_blend_factor: f32,
#[serde(rename = "$detailblendmode", default)]
pub detail_blend_mode: BlendMode,
#[serde(
rename = "$modelmaterial",
default,
deserialize_with = "deserialize_path"
)]
pub model_material: Option<String>,
#[serde(rename = "$pointsamplemagfilter", default)]
pub point_sample_mag_filter: bool,
#[serde(rename = "$seamless_scale", default = "default_scale")]
pub seamless_scale: f32,
#[serde(rename = "$alpha", default = "default_scale")]
pub alpha: f32,
#[serde(rename = "$alphatest", default)]
pub alpha_test: bool,
#[serde(rename = "$alphatestreference", default = "default_scale")]
pub alpha_test_reference: f32,
#[serde(rename = "$distancealpha", default)]
pub distance_alpha: bool,
#[serde(rename = "$nocull", default)]
pub no_cull: bool,
#[serde(rename = "$translucent", default)]
pub translucent: bool,
#[serde(rename = "$bumpmap", default, deserialize_with = "deserialize_path")]
pub bump_map: Option<String>,
#[serde(
rename = "$lightwarptexture",
default,
deserialize_with = "deserialize_path"
)]
pub light_wrap_texture: Option<String>,
#[serde(rename = "$selfillum", default)]
pub self_illum: bool,
#[serde(rename = "$ssbump", default)]
pub ss_bump: bool,
#[serde(rename = "$envmap", default, deserialize_with = "deserialize_path")]
pub env_map: Option<String>,
#[serde(rename = "$phong", default)]
pub phong: f32,
#[serde(rename = "$nofog", default)]
pub no_fog: bool,
#[serde(rename = "$ignorez", default)]
pub ignore_z: bool,
}