summaryrefslogtreecommitdiff
path: root/engine/src/texture.rs
diff options
context:
space:
mode:
Diffstat (limited to 'engine/src/texture.rs')
-rw-r--r--engine/src/texture.rs35
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(())
}