despawn asteroids only when they're 1km+ away
This commit is contained in:
parent
656d7f02f0
commit
4c316e36a6
16
src/world.rs
16
src/world.rs
|
@ -172,7 +172,7 @@ fn spawn_despawn_asteroids(
|
||||||
q_player: Query<&Position, With<actor::PlayerCamera>>,
|
q_player: Query<&Position, With<actor::PlayerCamera>>,
|
||||||
mut ew_despawn: EventWriter<DespawnEvent>,
|
mut ew_despawn: EventWriter<DespawnEvent>,
|
||||||
mut db: ResMut<ActiveAsteroids>,
|
mut db: ResMut<ActiveAsteroids>,
|
||||||
mut q_asteroid: Query<&SceneInstance, With<Asteroid>>,
|
q_asteroid: Query<(&Position, &SceneInstance), With<Asteroid>>,
|
||||||
mut last_player_cell: Local<I64Vec3>,
|
mut last_player_cell: Local<I64Vec3>,
|
||||||
id2pos: Res<actor::Id2Pos>,
|
id2pos: Res<actor::Id2Pos>,
|
||||||
asset_server: Res<AssetServer>,
|
asset_server: Res<AssetServer>,
|
||||||
|
@ -216,12 +216,14 @@ fn spawn_despawn_asteroids(
|
||||||
|| origin.y < y_min || origin.y > y_max
|
|| origin.y < y_min || origin.y > y_max
|
||||||
|| origin.z < z_min || origin.z > z_max
|
|| origin.z < z_min || origin.z > z_max
|
||||||
{
|
{
|
||||||
if let Ok(sceneinstance) = q_asteroid.get(asteroid.entity) {
|
if let Ok((pos, sceneinstance)) = q_asteroid.get(asteroid.entity) {
|
||||||
ew_despawn.send(DespawnEvent {
|
if pos.0.distance(player.0) > 1000.0 {
|
||||||
entity: asteroid.entity,
|
ew_despawn.send(DespawnEvent {
|
||||||
sceneinstance: **sceneinstance,
|
entity: asteroid.entity,
|
||||||
origin: origin.clone(),
|
sceneinstance: **sceneinstance,
|
||||||
});
|
origin: origin.clone(),
|
||||||
|
});
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
error!("Couldn't despawn asteroid:");
|
error!("Couldn't despawn asteroid:");
|
||||||
dbg!(origin);
|
dbg!(origin);
|
||||||
|
|
Loading…
Reference in a new issue