From 52059d83d35d5e922aab13dedd4de9fa60c0d5a8 Mon Sep 17 00:00:00 2001 From: AdamWhitehurst Date: Sun, 15 Mar 2020 07:20:42 -0600 Subject: [PATCH] add knockback localevent --- common/src/event.rs | 1 + common/src/state.rs | 9 +++++++++ 2 files changed, 10 insertions(+) diff --git a/common/src/event.rs b/common/src/event.rs index e14ac62bfb..14082fb9e2 100644 --- a/common/src/event.rs +++ b/common/src/event.rs @@ -47,6 +47,7 @@ pub enum SfxEvent { pub enum LocalEvent { Jump(EcsEntity), + Knockback(EcsEntity), WallLeap { entity: EcsEntity, wall_dir: Vec3, diff --git a/common/src/state.rs b/common/src/state.rs index d2b8386304..a37e14a337 100644 --- a/common/src/state.rs +++ b/common/src/state.rs @@ -334,6 +334,7 @@ impl State { let events = self.ecs.read_resource::>().recv_all(); for event in events { let mut velocities = self.ecs.write_storage::(); + let mut orientations = self.ecs.write_storage::(); let mut controllers = self.ecs.write_storage::(); match event { LocalEvent::Jump(entity) => { @@ -341,6 +342,14 @@ impl State { vel.0.z = HUMANOID_JUMP_ACCEL; } }, + LocalEvent::Knockback(entity) => { + if let Some(vel) = velocities.get_mut(entity) { + if let Some(ori) = orientations.get_mut(entity) { + vel.0 = -ori.0 * 10.0; + vel.0.z = HUMANOID_JUMP_ACCEL; + } + } + }, LocalEvent::WallLeap { entity, wall_dir } => { if let (Some(vel), Some(_controller)) = (velocities.get_mut(entity), controllers.get_mut(entity))