Compare commits

..

1 commit

Author SHA1 Message Date
5397706ad2 Update Rust crate ron to 0.10.0 2025-04-08 09:02:28 +00:00
2 changed files with 28 additions and 24 deletions
engine/src/scene/scene
examples/free_space/src

View file

@ -142,23 +142,22 @@ impl Scene {
world.add_update(
"animate",
5_500_000,
|commands: &mut Commands, mut query: Query<(&mut Draw, &mut Animation)>| {
let (draw, animation) = &mut *query;
|commands: &mut Commands, _entity, draw: &mut Draw, animation: &mut Animation| {
animation.animate(commands.now(), draw)?;
Ok(())
},
EmptyFilter,
)?;
world.add_update(
"particle_system",
5_000_000,
|commands: &mut Commands, mut query: Query<&mut ParticleSystem>, scene: &mut Scene| {
|commands: &mut Commands,
entity,
particle_system: &mut ParticleSystem,
scene: &mut Scene| {
let now = commands.now();
let entity = query.entity();
let particle_system = &mut *query;
if !particle_system.update(now) {
commands.remove_entity(entity);
@ -180,6 +179,7 @@ impl Scene {
Ok(())
},
EmptyFilter,
)?;
Ok(())

View file

@ -251,22 +251,29 @@ impl Game {
impl Game {
pub fn setup_updates(world_builder: &mut WorldBuilder) -> Result<()> {
world_builder.add_update("player_rotation", 200, Self::player_orientation)?;
world_builder.add_update(
"player_rotation",
200,
Self::player_orientation,
EmptyFilter,
)?;
if !FREE_CAMERA_CONTROL {
world_builder.add_update("camera_position", 1_000, Self::camera_update)?;
world_builder.add_update("camera_position", 1_000, Self::camera_update, EmptyFilter)?;
}
world_builder.add_update(
"celestial velocity update",
100,
Self::celestial_velocity_update,
(EmptyFilter, EmptyFilter),
)?;
world_builder.add_update(
"celestial buffer update",
110,
Self::celestial_buffer_update,
EmptyFilter,
)?;
Ok(())
@ -315,21 +322,21 @@ impl Game {
impl Game {
fn player_orientation(
commands: &mut Commands,
mut query: Query<(&mut Draw, &mut FreeSpaceControl)>,
_entity: Entity,
draw: &mut Draw,
control: &mut FreeSpaceControl,
) -> Result<()> {
let (draw, control) = &mut *query;
control.update(commands.now());
draw.set_transform(control.transform())
}
fn camera_update(
_commands: &mut Commands,
query: Query<&mut FreeSpaceControl>,
_entity: Entity,
control: &mut FreeSpaceControl,
scene: &mut Scene,
) -> Result<()> {
let view = scene.view_mut();
let control = &*query;
view.camera_mut()
.set_center((control.translation() * Vector4::unit_w()).truncate());
@ -343,10 +350,10 @@ impl Game {
fn celestial_buffer_update(
_commands: &mut Commands,
mut query: Query<(&mut Draw, &mut CelestialObjectSettings)>,
_: Entity,
draw: &mut Draw,
control: &mut CelestialObjectSettings,
) -> Result<()> {
let (draw, control) = &mut *query;
draw.set_transform(control.model_matrix())?;
Ok(())
@ -354,17 +361,14 @@ impl Game {
fn celestial_velocity_update(
commands: &mut Commands,
mut lhs: Query<(
(_, draw, lhs_control, reference): (
Entity,
&mut Draw,
&mut CelestialObjectSettings,
&mut CelestialReference,
)>,
rhs: Query<&mut CelestialObjectSettings>,
),
(rhs_entity, rhs_control): (Entity, &mut CelestialObjectSettings),
) -> Result<()> {
let (draw, lhs_control, reference) = &mut *lhs;
let rhs_entity = rhs.entity();
let rhs_control = &*rhs;
if reference.entity == rhs_entity {
lhs_control.update(commands.now(), draw, rhs_control)?;
}