aboutsummaryrefslogtreecommitdiff
path: root/azalea-entity/src/plugin/indexing.rs
diff options
context:
space:
mode:
authormat <git@matdoes.dev>2024-04-24 03:11:26 +0000
committermat <git@matdoes.dev>2024-04-24 03:11:26 +0000
commit79a0d58cc5e6528f570ad6a1f522bbf6bc2995ac (patch)
tree11cef59ceebc17e6c31895753d95cbad06633f07 /azalea-entity/src/plugin/indexing.rs
parent3b635c1d6de97ccceaf725dbfcd1625cbebdc20b (diff)
downloadazalea-drasl-79a0d58cc5e6528f570ad6a1f522bbf6bc2995ac.tar.xz
fix warning when entities that didn't move chunks despawn
Diffstat (limited to 'azalea-entity/src/plugin/indexing.rs')
-rw-r--r--azalea-entity/src/plugin/indexing.rs20
1 files changed, 19 insertions, 1 deletions
diff --git a/azalea-entity/src/plugin/indexing.rs b/azalea-entity/src/plugin/indexing.rs
index c8aaffb0..f04f5ef2 100644
--- a/azalea-entity/src/plugin/indexing.rs
+++ b/azalea-entity/src/plugin/indexing.rs
@@ -5,7 +5,7 @@ use azalea_world::{Instance, InstanceContainer, InstanceName, MinecraftEntityId}
use bevy_ecs::{
component::Component,
entity::Entity,
- query::Changed,
+ query::{Added, Changed},
system::{Commands, Query, Res, ResMut, Resource},
};
use derive_more::{Deref, DerefMut};
@@ -119,6 +119,24 @@ pub fn update_entity_chunk_positions(
}
}
+/// Insert new entities into [`Instance::entities_by_chunk`].
+pub fn insert_entity_chunk_position(
+ query: Query<(Entity, &Position, &InstanceName), Added<EntityChunkPos>>,
+ instance_container: Res<InstanceContainer>,
+) {
+ for (entity, pos, world_name) in query.iter() {
+ let instance_lock = instance_container.get(world_name).unwrap();
+ let mut instance = instance_lock.write();
+
+ let chunk = ChunkPos::from(*pos);
+ instance
+ .entities_by_chunk
+ .entry(chunk)
+ .or_default()
+ .insert(entity);
+ }
+}
+
/// Despawn entities that aren't being loaded by anything.
#[allow(clippy::type_complexity)]
pub fn remove_despawned_entities_from_indexes(