use bevy::{
asset::LoadState,
core_pipeline::Skybox,
prelude::*,
render::render_resource::{TextureViewDescriptor, TextureViewDimension},
};
#[derive(Resource)]
pub struct SkyCubeMap {
pub is_loaded: bool,
pub image_handle: Handle<Image>,
}
pub fn fix_cubemap(
asset_server: ResMut<AssetServer>,
mut images: ResMut<Assets<Image>>,
mut cubemap: ResMut<SkyCubeMap>,
) {
if !cubemap.is_loaded && asset_server.load_state(&cubemap.image_handle) == LoadState::Loaded {
if let Some(skymap_image) = images.get_mut(&cubemap.image_handle) {
cubemap.is_loaded = true;
skymap_image.reinterpret_stacked_2d_as_array(6);
skymap_image.texture_view_descriptor = Some(TextureViewDescriptor {
dimension: Some(TextureViewDimension::Cube),
..default()
});
}
}
}