diff options
Diffstat (limited to 'engine/src/texture.rs')
| -rw-r--r-- | engine/src/texture.rs | 35 |
1 files changed, 30 insertions, 5 deletions
diff --git a/engine/src/texture.rs b/engine/src/texture.rs index af56e97..3bfe171 100644 --- a/engine/src/texture.rs +++ b/engine/src/texture.rs @@ -13,12 +13,37 @@ pub static WHITE_1X1_ASSET_LABEL: LazyLock<AssetLabel> = LazyLock::new(|| AssetL }); #[derive(Debug, Clone)] -pub struct Texture +pub enum Texture +{ + Texture2D(Tex2D), + CubeMap(TexCubeMap), +} + +#[derive(Debug, Clone)] +pub struct Tex2D { pub image: Image, pub properties: Properties, } +#[derive(Debug, Clone)] +pub struct TexCubeMap +{ + pub images: [(CubeMapFace, Image); 6], + pub properties: Properties, +} + +#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)] +pub enum CubeMapFace +{ + PositiveX, + NegativeX, + PositiveY, + NegativeY, + PositiveZ, + NegativeZ, +} + builder! { /// Texture properties #[builder(name = PropertiesBuilder, derives=(Debug, Clone))] @@ -110,10 +135,10 @@ pub(crate) fn initialize(assets: &mut Assets) assets.store_with_label( WHITE_1X1_ASSET_LABEL.clone(), - Texture { + Texture::Texture2D(Tex2D { image: Image::from_color(Rgba::<u8>::white(), Dimens { width: 1, height: 1 }), properties: Properties::default(), - }, + }), ); } @@ -123,12 +148,12 @@ fn import( settings: Option<&'_ ImportSettings>, ) -> Result<(), ImageError> { - asset_submitter.submit_store(Texture { + asset_submitter.submit_store(Texture::Texture2D(Tex2D { image: Image::open(path)?, properties: settings .map(|settings| settings.properties.clone()) .unwrap_or_default(), - }); + })); Ok(()) } |
