remove active camera entity when despawned (#1825)
fixes #1452
This should probably be in 0.5, as the previous workaround isn't possible after dd4a196329
because the hashmap is now private.
This commit is contained in:
parent
3118ebdfd3
commit
aaf204cbac
@ -38,6 +38,10 @@ impl ActiveCameras {
|
|||||||
self.cameras.get_mut(name)
|
self.cameras.get_mut(name)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn remove(&mut self, name: &str) -> Option<ActiveCamera> {
|
||||||
|
self.cameras.remove(name)
|
||||||
|
}
|
||||||
|
|
||||||
pub fn iter(&self) -> impl Iterator<Item = &ActiveCamera> {
|
pub fn iter(&self) -> impl Iterator<Item = &ActiveCamera> {
|
||||||
self.cameras.values()
|
self.cameras.values()
|
||||||
}
|
}
|
||||||
@ -52,6 +56,13 @@ pub fn active_cameras_system(
|
|||||||
query: Query<(Entity, &Camera)>,
|
query: Query<(Entity, &Camera)>,
|
||||||
) {
|
) {
|
||||||
for (name, active_camera) in active_cameras.cameras.iter_mut() {
|
for (name, active_camera) in active_cameras.cameras.iter_mut() {
|
||||||
|
if active_camera
|
||||||
|
.entity
|
||||||
|
.map_or(false, |entity| query.get(entity).is_err())
|
||||||
|
{
|
||||||
|
active_camera.entity = None;
|
||||||
|
}
|
||||||
|
|
||||||
if active_camera.entity.is_none() {
|
if active_camera.entity.is_none() {
|
||||||
for (camera_entity, camera) in query.iter() {
|
for (camera_entity, camera) in query.iter() {
|
||||||
if let Some(ref current_name) = camera.name {
|
if let Some(ref current_name) = camera.name {
|
||||||
|
Loading…
Reference in New Issue
Block a user