specs-physics

[Fork] Integration of Amethyst, SPECS and Nphysics together.
git clone https://git.jojolepro.com/specs-physics.git
Log | Files | Refs | README | LICENSE

mod.rs (1693B)


      1 use std::ops::Deref;
      2 
      3 use specs::{
      4     storage::{ComponentEvent, MaskedStorage},
      5     BitSet,
      6     Component,
      7     ReaderId,
      8     Storage,
      9     Tracked,
     10 };
     11 
     12 pub use self::{
     13     physics_stepper::PhysicsStepperSystem,
     14     sync_bodies_from_physics::SyncBodiesFromPhysicsSystem,
     15     sync_bodies_to_physics::SyncBodiesToPhysicsSystem,
     16     sync_colliders_to_physics::SyncCollidersToPhysicsSystem,
     17     sync_parameters_to_physics::SyncParametersToPhysicsSystem,
     18 };
     19 
     20 mod physics_stepper;
     21 mod sync_bodies_from_physics;
     22 mod sync_bodies_to_physics;
     23 mod sync_colliders_to_physics;
     24 mod sync_parameters_to_physics;
     25 
     26 /// Iterated over the `ComponentEvent::Inserted`s of a given, tracked `Storage`
     27 /// and returns the results in a `BitSet`.
     28 pub(crate) fn iterate_component_events<T, D>(
     29     tracked_storage: &Storage<T, D>,
     30     reader_id: &mut ReaderId<ComponentEvent>,
     31 ) -> (BitSet, BitSet, BitSet)
     32 where
     33     T: Component,
     34     T::Storage: Tracked,
     35     D: Deref<Target = MaskedStorage<T>>,
     36 {
     37     let (mut inserted, mut modified, mut removed) = (BitSet::new(), BitSet::new(), BitSet::new());
     38     for component_event in tracked_storage.channel().read(reader_id) {
     39         match component_event {
     40             ComponentEvent::Inserted(id) => {
     41                 debug!("Got Inserted event with id: {}", id);
     42                 inserted.add(*id);
     43             }
     44             ComponentEvent::Modified(id) => {
     45                 debug!("Got Modified event with id: {}", id);
     46                 modified.add(*id);
     47             }
     48             ComponentEvent::Removed(id) => {
     49                 debug!("Got Removed event with id: {}", id);
     50                 removed.add(*id);
     51             }
     52         }
     53     }
     54 
     55     (inserted, modified, removed)
     56 }