diff --git a/src/render/material.rs b/src/render/material.rs index d44d801b..c2d14141 100644 --- a/src/render/material.rs +++ b/src/render/material.rs @@ -17,7 +17,7 @@ use bevy::{ }, renderer::RenderDevice, texture::{FallbackImage, GpuImage}, - view::{ExtractedView, ViewUniforms, VisibleEntities, WithMesh}, + view::{ExtractedView, ViewUniforms, VisibleEntities}, Extract, Render, RenderApp, RenderSet, }, utils::{HashMap, HashSet}, @@ -27,7 +27,7 @@ use std::{hash::Hash, marker::PhantomData}; #[cfg(not(feature = "atlas"))] use bevy::render::renderer::RenderQueue; -use crate::prelude::TilemapId; +use crate::prelude::{TilemapId, TilemapRenderSettings}; use super::{ chunk::{ChunkId, RenderChunk2dStorage}, @@ -421,7 +421,7 @@ pub fn queue_material_tilemap_meshes( for (entity, chunk_id, transform, tilemap_id) in standard_tilemap_meshes.iter() { if !visible_entities - .iter::() + .iter::>() .any(|&entity| entity.index() == tilemap_id.0.index()) { continue; @@ -538,7 +538,7 @@ pub fn bind_material_tilemap_meshes( for (chunk_id, tilemap_id) in standard_tilemap_meshes.iter() { if !visible_entities - .iter::() + .iter::>() .any(|&entity| entity.index() == tilemap_id.0.index()) { continue; diff --git a/src/render/mod.rs b/src/render/mod.rs index 09549f88..f24e8c55 100644 --- a/src/render/mod.rs +++ b/src/render/mod.rs @@ -9,6 +9,7 @@ use bevy::{ render_phase::AddRenderCommand, render_resource::{FilterMode, SpecializedRenderPipelines, VertexFormat}, texture::ImageSamplerDescriptor, + view::{check_visibility, VisibilitySystems}, Render, RenderApp, RenderSet, }, }; @@ -18,7 +19,10 @@ use bevy::render::renderer::RenderDevice; #[cfg(not(feature = "atlas"))] use bevy::render::texture::GpuImage; -use crate::tiles::{TilePos, TileStorage}; +use crate::{ + prelude::TilemapRenderSettings, + tiles::{TilePos, TileStorage}, +}; use crate::{ prelude::TilemapTexture, render::{ @@ -211,6 +215,13 @@ impl Plugin for TilemapRenderingPlugin { Shader::from_wgsl ); + app.add_systems( + PostUpdate, + (check_visibility::>) + .in_set(VisibilitySystems::CheckVisibility) + .after(VisibilitySystems::CalculateBounds), + ); + let render_app = match app.get_sub_app_mut(RenderApp) { Some(render_app) => render_app, None => return,