From 572b14f847dbb9c33ab767b4a13aab28f23e40d8 Mon Sep 17 00:00:00 2001 From: metamuffin Date: Sun, 23 Mar 2025 18:33:24 +0100 Subject: render settings --- src/classes/render_settings.rs | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 src/classes/render_settings.rs (limited to 'src/classes') diff --git a/src/classes/render_settings.rs b/src/classes/render_settings.rs new file mode 100644 index 0000000..9751af4 --- /dev/null +++ b/src/classes/render_settings.rs @@ -0,0 +1,40 @@ +use super::{material::Material, pptr::PPtr, vectors::ColorRGBA}; +use crate::object::{Value, parser::FromValue}; +use anyhow::Result; +use serde::Serialize; + +#[derive(Debug, Serialize)] +pub struct RenderSettings { + pub skybox_material: PPtr, + pub fog_mode: i32, + pub fog_density: f32, + pub linear_fog_start: f32, + pub linear_fog_end: f32, + pub fog: bool, + pub fog_color: ColorRGBA, + pub ambient_equator_color: ColorRGBA, + pub ambient_ground_color: ColorRGBA, + pub ambient_sky_color: ColorRGBA, + pub ambient_intensity: f32, + pub ambient_mode: i32, +} + +impl FromValue for RenderSettings { + fn from_value(v: Value) -> Result { + let mut fields = v.as_class("RenderSettings")?; + Ok(RenderSettings { + skybox_material: fields.field("m_SkyboxMaterial")?, + fog: fields.field("m_Fog")?, + fog_color: fields.field("m_FogColor")?, + fog_density: fields.field("m_FogDensity")?, + fog_mode: fields.field("m_FogMode")?, + linear_fog_end: fields.field("m_LinearFogEnd")?, + linear_fog_start: fields.field("m_LinearFogStart")?, + ambient_equator_color: fields.field("m_AmbientEquatorColor")?, + ambient_ground_color: fields.field("m_AmbientGroundColor")?, + ambient_intensity: fields.field("m_AmbientIntensity")?, + ambient_mode: fields.field("m_AmbientMode")?, + ambient_sky_color: fields.field("m_AmbientSkyColor")?, + }) + } +} -- cgit v1.2.3-70-g09d2