fix changed meshes (#984)

This commit is contained in:
Carter Anderson 2020-12-02 14:23:49 -08:00 committed by GitHub
parent 5a77339df0
commit 915024bf35
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -323,7 +323,6 @@ fn remove_current_mesh_resources(
#[derive(Default)]
pub struct MeshEntities {
entities: HashSet<Entity>,
waiting: HashSet<Entity>,
}
#[derive(Default)]
@ -342,7 +341,7 @@ pub fn mesh_resource_provider_system(
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;
for event in state.mesh_event_reader.iter(&mesh_events) {
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) {
for entity in mesh_entities.waiting.drain() {
if let Ok(render_pipelines) = queries.q0_mut().get_mut(entity) {
mesh_entities.entities.insert(entity);
for entity in mesh_entities.entities.iter() {
if let Ok(render_pipelines) = queries.q0_mut().get_mut(*entity) {
update_entity_mesh(
render_resource_context,
mesh,
@ -416,12 +414,9 @@ pub fn mesh_resource_provider_system(
.mesh_entities
.entry(handle.clone_weak())
.or_insert_with(MeshEntities::default);
mesh_entities.entities.insert(entity);
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);
} else {
mesh_entities.waiting.insert(entity);
}
}
}