Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

123456789101112131415161718192021222324252627282930
  1. use specs::prelude::*;
  2. use crate::components::*;
  3. pub struct Physics;
  4. impl<'a> System<'a> for Physics {
  5. type SystemData = (WriteStorage<'a, Position>, ReadStorage<'a, Velocity>);
  6. fn run(&mut self, mut data: Self::SystemData) {
  7. use self::Direction::*;
  8. for (pos, vel) in (&mut data.0, &data.1).join() {
  9. match vel.direction {
  10. Left => {
  11. pos.0 = pos.0.offset(-vel.speed, 0);
  12. },
  13. Right => {
  14. pos.0 = pos.0.offset(vel.speed, 0);
  15. },
  16. Up => {
  17. pos.0 = pos.0.offset(0, -vel.speed);
  18. },
  19. Down => {
  20. pos.0 = pos.0.offset(0, vel.speed);
  21. },
  22. }
  23. }
  24. }
  25. }