update asteroids only when changing cell
This commit is contained in:
parent
3ea2f3bc3a
commit
be55433376
10
src/world.rs
10
src/world.rs
|
@ -8,7 +8,7 @@ use std::collections::HashMap;
|
||||||
use std::f32::consts::PI;
|
use std::f32::consts::PI;
|
||||||
use fastrand;
|
use fastrand;
|
||||||
|
|
||||||
const ASTEROID_UPDATE_INTERVAL: f32 = 1.0; // seconds
|
const ASTEROID_UPDATE_INTERVAL: f32 = 0.1; // seconds
|
||||||
const ASTEROID_SIZE_FACTOR: f32 = 3.0;
|
const ASTEROID_SIZE_FACTOR: f32 = 3.0;
|
||||||
const STARS_MAX_MAGNITUDE: f32 = 5.5;
|
const STARS_MAX_MAGNITUDE: f32 = 5.5;
|
||||||
|
|
||||||
|
@ -182,9 +182,11 @@ fn spawn_despawn_asteroids(
|
||||||
mut db: ResMut<ActiveAsteroids>,
|
mut db: ResMut<ActiveAsteroids>,
|
||||||
asset_server: Res<AssetServer>,
|
asset_server: Res<AssetServer>,
|
||||||
mut q_asteroid: Query<(Entity, &mut Visibility), With<Asteroid>>,
|
mut q_asteroid: Query<(Entity, &mut Visibility), With<Asteroid>>,
|
||||||
|
mut last_player_cell: Local<I64Vec3>,
|
||||||
mut log: ResMut<hud::Log>,
|
mut log: ResMut<hud::Log>,
|
||||||
) {
|
) {
|
||||||
if !timer.0.tick(time.delta()).just_finished() || q_player.is_empty() {
|
if !timer.0.tick(time.delta()).just_finished() || q_player.is_empty() {
|
||||||
|
//if q_player.is_empty() {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
let player = q_player.get_single().unwrap();
|
let player = q_player.get_single().unwrap();
|
||||||
|
@ -193,6 +195,11 @@ fn spawn_despawn_asteroids(
|
||||||
(player.y / ASTEROID_SPAWN_STEP).round() as i64,
|
(player.y / ASTEROID_SPAWN_STEP).round() as i64,
|
||||||
(player.z / ASTEROID_SPAWN_STEP).round() as i64,
|
(player.z / ASTEROID_SPAWN_STEP).round() as i64,
|
||||||
);
|
);
|
||||||
|
if *last_player_cell == player_cell {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
*last_player_cell = player_cell;
|
||||||
|
|
||||||
let mut spawned = 0;
|
let mut spawned = 0;
|
||||||
let mut spawned_near = 0;
|
let mut spawned_near = 0;
|
||||||
let mut despawned = 0;
|
let mut despawned = 0;
|
||||||
|
@ -202,6 +209,7 @@ fn spawn_despawn_asteroids(
|
||||||
let step: f64 = ASTEROID_SPAWN_STEP;
|
let step: f64 = ASTEROID_SPAWN_STEP;
|
||||||
let stepmax: i64 = (view_radius / step) as i64;
|
let stepmax: i64 = (view_radius / step) as i64;
|
||||||
|
|
||||||
|
// Despawn far asteroids
|
||||||
let x_min = player_cell.x - stepmax;
|
let x_min = player_cell.x - stepmax;
|
||||||
let x_max = player_cell.x + stepmax;
|
let x_max = player_cell.x + stepmax;
|
||||||
let y_min = player_cell.y - stepmax;
|
let y_min = player_cell.y - stepmax;
|
||||||
|
|
Loading…
Reference in a new issue