diff --git a/engine/src/scene/content/components/particle_system.rs b/engine/src/scene/content/components/particle_system.rs index a59cc41..69a1aec 100644 --- a/engine/src/scene/content/components/particle_system.rs +++ b/engine/src/scene/content/components/particle_system.rs @@ -379,11 +379,11 @@ impl ParticleSystem { &self, recorder: &mut CommandBufferRecorder<'_>, pipeline: &Arc, - world: &World, + now: Duration, ) -> Result<()> { recorder.bind_pipeline(pipeline)?; recorder.bind_descriptor_sets_minimal(&[&self.descriptor_set]); - recorder.push_constants(VK_SHADER_STAGE_COMPUTE_BIT, &world.now().as_secs_f32()); + recorder.push_constants(VK_SHADER_STAGE_COMPUTE_BIT, &now.as_secs_f32()); recorder.dispatch(self.particle_buffer.size() as u32, 1, 1); recorder.buffer_barrier( diff --git a/engine/src/scene/scene/scene_base.rs b/engine/src/scene/scene/scene_base.rs index e7417f5..7a72f2b 100644 --- a/engine/src/scene/scene/scene_base.rs +++ b/engine/src/scene/scene/scene_base.rs @@ -142,8 +142,8 @@ impl Scene { world.add_update( "animate", 5_500_000, - |world: &mut World, _entity, draw: &mut Draw, animation: &mut Animation| { - animation.animate(world.now(), draw)?; + |commands: &mut Commands, _entity, draw: &mut Draw, animation: &mut Animation| { + animation.animate(commands.now(), draw)?; Ok(()) }, @@ -153,11 +153,14 @@ impl Scene { world.add_update( "particle_system", 5_000_000, - |world: &mut World, entity, particle_system: &mut ParticleSystem| { - let now = world.now(); + |commands: &mut Commands, + entity, + particle_system: &mut ParticleSystem, + scene: &mut Scene| { + let now = commands.now(); if !particle_system.update(now) { - world.remove_entity(entity); + commands.remove_entity(entity); return Ok(()); } @@ -167,13 +170,11 @@ impl Scene { VkCommandBufferBeginInfo::new(VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT); begin_info.set_inheritance_info(&inheritance_info); - let scene = world.resources.get_mut_unchecked::(); - let particle_handles = scene.particle_system_vulkan_objects_mut(); let pipeline = particle_handles.pipeline.clone(); let mut recorder = particle_handles.begin(begin_info)?; - particle_system.animate(&mut recorder, &pipeline, world)?; + particle_system.animate(&mut recorder, &pipeline, now)?; } Ok(()) diff --git a/examples/free_space/src/game.rs b/examples/free_space/src/game.rs index a3eef2d..627204b 100644 --- a/examples/free_space/src/game.rs +++ b/examples/free_space/src/game.rs @@ -321,21 +321,21 @@ impl Game { // updates impl Game { fn player_orientation( - world: &mut World, + commands: &mut Commands, _entity: Entity, draw: &mut Draw, control: &mut FreeSpaceControl, ) -> Result<()> { - control.update(world.now()); + control.update(commands.now()); draw.set_transform(control.transform()) } fn camera_update( - world: &mut World, + _commands: &mut Commands, _entity: Entity, control: &mut FreeSpaceControl, + scene: &mut Scene, ) -> Result<()> { - let scene: &mut Scene = world.resources.get_mut()?; let view = scene.view_mut(); view.camera_mut() @@ -349,7 +349,7 @@ impl Game { } fn celestial_buffer_update( - _: &mut World, + _commands: &mut Commands, _: Entity, draw: &mut Draw, control: &mut CelestialObjectSettings, @@ -360,7 +360,7 @@ impl Game { } fn celestial_velocity_update( - world: &mut World, + commands: &mut Commands, (_, draw, lhs_control, reference): ( Entity, &mut Draw, @@ -370,7 +370,7 @@ impl Game { (rhs_entity, rhs_control): (Entity, &mut CelestialObjectSettings), ) -> Result<()> { if reference.entity == rhs_entity { - lhs_control.update(world.now(), draw, rhs_control)?; + lhs_control.update(commands.now(), draw, rhs_control)?; } Ok(())