fix changed meshes (#984)
This commit is contained in:
parent
5a77339df0
commit
915024bf35
@ -323,7 +323,6 @@ fn remove_current_mesh_resources(
|
|||||||
#[derive(Default)]
|
#[derive(Default)]
|
||||||
pub struct MeshEntities {
|
pub struct MeshEntities {
|
||||||
entities: HashSet<Entity>,
|
entities: HashSet<Entity>,
|
||||||
waiting: HashSet<Entity>,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Default)]
|
#[derive(Default)]
|
||||||
@ -342,7 +341,7 @@ pub fn mesh_resource_provider_system(
|
|||||||
Query<(Entity, &Handle<Mesh>, &mut RenderPipelines), Changed<Handle<Mesh>>>,
|
Query<(Entity, &Handle<Mesh>, &mut RenderPipelines), Changed<Handle<Mesh>>>,
|
||||||
)>,
|
)>,
|
||||||
) {
|
) {
|
||||||
let mut changed_meshes = bevy_utils::HashSet::<Handle<Mesh>>::default();
|
let mut changed_meshes = HashSet::default();
|
||||||
let render_resource_context = &**render_resource_context;
|
let render_resource_context = &**render_resource_context;
|
||||||
for event in state.mesh_event_reader.iter(&mesh_events) {
|
for event in state.mesh_event_reader.iter(&mesh_events) {
|
||||||
match event {
|
match event {
|
||||||
@ -395,9 +394,8 @@ pub fn mesh_resource_provider_system(
|
|||||||
);
|
);
|
||||||
|
|
||||||
if let Some(mesh_entities) = state.mesh_entities.get_mut(changed_mesh_handle) {
|
if let Some(mesh_entities) = state.mesh_entities.get_mut(changed_mesh_handle) {
|
||||||
for entity in mesh_entities.waiting.drain() {
|
for entity in mesh_entities.entities.iter() {
|
||||||
if let Ok(render_pipelines) = queries.q0_mut().get_mut(entity) {
|
if let Ok(render_pipelines) = queries.q0_mut().get_mut(*entity) {
|
||||||
mesh_entities.entities.insert(entity);
|
|
||||||
update_entity_mesh(
|
update_entity_mesh(
|
||||||
render_resource_context,
|
render_resource_context,
|
||||||
mesh,
|
mesh,
|
||||||
@ -416,12 +414,9 @@ pub fn mesh_resource_provider_system(
|
|||||||
.mesh_entities
|
.mesh_entities
|
||||||
.entry(handle.clone_weak())
|
.entry(handle.clone_weak())
|
||||||
.or_insert_with(MeshEntities::default);
|
.or_insert_with(MeshEntities::default);
|
||||||
|
mesh_entities.entities.insert(entity);
|
||||||
if let Some(mesh) = meshes.get(handle) {
|
if let Some(mesh) = meshes.get(handle) {
|
||||||
mesh_entities.entities.insert(entity);
|
|
||||||
mesh_entities.waiting.remove(&entity);
|
|
||||||
update_entity_mesh(render_resource_context, mesh, handle, render_pipelines);
|
update_entity_mesh(render_resource_context, mesh, handle, render_pipelines);
|
||||||
} else {
|
|
||||||
mesh_entities.waiting.insert(entity);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user