From 31e330e9601ae65b771141a4857016232bdee63a Mon Sep 17 00:00:00 2001 From: Christopher Biscardi Date: Fri, 7 Jun 2024 00:41:38 -0700 Subject: [PATCH] RenderChunk2d::prepare requires &mut MeshVertexBufferLayouts now [12216](https://github.com/bevyengine/bevy/pull/12216) introduced an argument `&mut MeshVertexBufferLayouts` to `get_mesh_vertex_buffer_layout`, which bevy_ecs_tilemap calls in `RenderChunk2d::prepare` --- src/render/chunk.rs | 15 ++++++++++++--- src/render/prepare.rs | 5 +++-- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/src/render/chunk.rs b/src/render/chunk.rs index 2ec9119c..2013d64c 100644 --- a/src/render/chunk.rs +++ b/src/render/chunk.rs @@ -1,6 +1,5 @@ use std::hash::{Hash, Hasher}; -use bevy::prelude::{InheritedVisibility, Resource, Transform}; use bevy::render::render_asset::RenderAssetUsages; use bevy::render::{mesh::BaseMeshPipelineKey, primitives::Aabb}; use bevy::{math::Mat4, render::mesh::PrimitiveTopology}; @@ -14,6 +13,10 @@ use bevy::{ }, utils::HashMap, }; +use bevy::{ + prelude::{InheritedVisibility, Resource, Transform}, + render::mesh::MeshVertexBufferLayouts, +}; use crate::prelude::helpers::transform::{chunk_aabb, chunk_index_to_world_space}; use crate::render::extract::ExtractedFrustum; @@ -355,7 +358,11 @@ impl RenderChunk2d { } } - pub fn prepare(&mut self, device: &RenderDevice) { + pub fn prepare( + &mut self, + device: &RenderDevice, + mut mesh_vertex_buffer_layouts: &mut MeshVertexBufferLayouts, + ) { if self.dirty_mesh { let size = ((self.size_in_tiles.x * self.size_in_tiles.y) * 4) as usize; let mut positions: Vec<[f32; 4]> = Vec::with_capacity(size); @@ -444,7 +451,9 @@ impl RenderChunk2d { } }); - let mesh_vertex_buffer_layout = self.mesh.get_mesh_vertex_buffer_layout(); + let mesh_vertex_buffer_layout = self + .mesh + .get_mesh_vertex_buffer_layout(&mut mesh_vertex_buffer_layouts); self.gpu_mesh = Some(GpuMesh { vertex_buffer, vertex_count: self.mesh.count_vertices() as u32, diff --git a/src/render/prepare.rs b/src/render/prepare.rs index 24b307e8..afdb602f 100644 --- a/src/render/prepare.rs +++ b/src/render/prepare.rs @@ -9,8 +9,8 @@ use crate::render::extract::ExtractedFrustum; use crate::{ prelude::TilemapGridSize, render::RenderChunkSize, render::SecondsSinceStartup, FrustumCulling, }; -use bevy::log::trace; use bevy::prelude::{InheritedVisibility, Resource}; +use bevy::{log::trace, render::mesh::MeshVertexBufferLayouts}; use bevy::{ math::{Mat4, UVec4}, prelude::{Commands, Component, Entity, GlobalTransform, Query, Res, ResMut, Vec2}, @@ -63,6 +63,7 @@ pub(crate) fn prepare( render_device: Res, render_queue: Res, seconds_since_startup: Res, + mut mesh_vertex_buffer_layouts: ResMut, ) { for tile in extracted_tiles.iter() { // First if the tile position has changed remove the tile from the old location. @@ -188,7 +189,7 @@ pub(crate) fn prepare( } trace!("Preparing chunk: {:?}", chunk.get_index()); - chunk.prepare(&render_device); + chunk.prepare(&render_device, &mut mesh_vertex_buffer_layouts); let mut chunk_uniform: TilemapUniformData = chunk.into(); chunk_uniform.time = **seconds_since_startup;