From 4e8beb2270223bb3b6232773d82f18cc0e224435 Mon Sep 17 00:00:00 2001 From: metamuffin Date: Wed, 26 Mar 2025 16:07:20 +0100 Subject: support texture arrays and cubemaps --- src/classes/texture.rs | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 src/classes/texture.rs (limited to 'src/classes/texture.rs') diff --git a/src/classes/texture.rs b/src/classes/texture.rs new file mode 100644 index 0000000..6d1c102 --- /dev/null +++ b/src/classes/texture.rs @@ -0,0 +1,29 @@ +use super::{cubemap::Cubemap, texture2d::Texture2D}; +use crate::object::{Value, parser::FromValue}; +use anyhow::Result; +use serde::Serialize; + +#[derive(Debug, Serialize)] +pub enum AnyTexture { + Cubemap(Cubemap), + Texture2D(Texture2D), +} + +impl FromValue for AnyTexture { + fn from_value(v: Value) -> Result { + match v.class_name().unwrap().as_str() { + "Cubemap" => Ok(Self::Cubemap(v.parse()?)), + "Texture2D" => Ok(Self::Texture2D(v.parse()?)), + x => unreachable!("{x}"), + } + } +} +impl AnyTexture { + pub fn as_texture2d(self) -> Option { + if let AnyTexture::Texture2D(x) = self { + Some(x) + } else { + None + } + } +} -- cgit v1.2.3-70-g09d2