From 799c73d43a3bbbb7b15aa718fae5da2a9dac8dd3 Mon Sep 17 00:00:00 2001 From: timokoesters Date: Sat, 24 Aug 2019 10:56:28 +0200 Subject: [PATCH] Fix characterstate in movement.rs, not phys.rs --- common/src/sys/mod.rs | 2 +- common/src/sys/movement.rs | 8 ++++++++ common/src/sys/phys.rs | 13 +------------ 3 files changed, 10 insertions(+), 13 deletions(-) diff --git a/common/src/sys/mod.rs b/common/src/sys/mod.rs index 5ffb8a956a..d1d7895e08 100644 --- a/common/src/sys/mod.rs +++ b/common/src/sys/mod.rs @@ -26,7 +26,7 @@ pub fn add_local_systems(dispatch_builder: &mut DispatcherBuilder) { dispatch_builder.add(phys::Sys, PHYS_SYS, &[CONTROLLER_SYS]); dispatch_builder.add(movement::Sys, MOVEMENT_SYS, &[PHYS_SYS]); dispatch_builder.add(combat::Sys, COMBAT_SYS, &[CONTROLLER_SYS]); - dispatch_builder.add(animation::Sys, ANIMATION_SYS, &[CONTROLLER_SYS]); + dispatch_builder.add(animation::Sys, ANIMATION_SYS, &[MOVEMENT_SYS]); dispatch_builder.add(stats::Sys, STATS_SYS, &[COMBAT_SYS]); dispatch_builder.add(cleanup::Sys, CLEANUP_SYS, &[STATS_SYS, ANIMATION_SYS]); } diff --git a/common/src/sys/movement.rs b/common/src/sys/movement.rs index f7c11e2862..9eb73c1c71 100644 --- a/common/src/sys/movement.rs +++ b/common/src/sys/movement.rs @@ -131,6 +131,14 @@ impl<'a> System<'a> for Sys { .unwrap_or_default(); } } + + if physics.on_ground && (character.movement == Jump || character.movement == Glide) { + character.movement = Stand; + } + + if !physics.on_ground && (character.movement == Stand || character.movement == Run) { + character.movement = Jump; + } } } } diff --git a/common/src/sys/phys.rs b/common/src/sys/phys.rs index 352404fb69..3329ea9ea7 100644 --- a/common/src/sys/phys.rs +++ b/common/src/sys/phys.rs @@ -1,6 +1,6 @@ use { crate::{ - comp::{Body, CharacterState, MovementState::*, Ori, PhysicsState, Pos, Scale, Stats, Vel}, + comp::{Body, MovementState::*, Ori, PhysicsState, Pos, Scale, Stats, Vel}, event::{Event, EventBus}, state::DeltaTime, terrain::TerrainMap, @@ -37,7 +37,6 @@ impl<'a> System<'a> for Sys { Read<'a, EventBus>, ReadStorage<'a, Scale>, ReadStorage<'a, Body>, - WriteStorage<'a, CharacterState>, WriteStorage<'a, PhysicsState>, WriteStorage<'a, Pos>, WriteStorage<'a, Vel>, @@ -53,7 +52,6 @@ impl<'a> System<'a> for Sys { event_bus, scales, bodies, - mut character_states, mut physics_states, mut positions, mut velocities, @@ -73,7 +71,6 @@ impl<'a> System<'a> for Sys { ) .join() { - let mut character_state = character_states.get(entity).cloned().unwrap_or_default(); let mut physics_state = physics_states.get(entity).cloned().unwrap_or_default(); let scale = scale.map(|s| s.0).unwrap_or(1.0); @@ -215,7 +212,6 @@ impl<'a> System<'a> for Sys { if !was_on_ground { event_emitter.emit(Event::LandOnGround { entity, vel: vel.0 }); - character_state.movement = Stand; } } @@ -263,10 +259,6 @@ impl<'a> System<'a> for Sys { if on_ground { physics_state.on_ground = true; - - if !was_on_ground { - character_state.movement = Stand; - } // If the space below us is free, then "snap" to the ground } else if collision_with(pos.0 - Vec3::unit_z() * 1.05, near_iter.clone()) && vel.0.z < 0.0 @@ -275,11 +267,8 @@ impl<'a> System<'a> for Sys { { pos.0.z = (pos.0.z - 0.05).floor(); physics_state.on_ground = true; - } else if was_on_ground { - character_state.movement = Jump; } - let _ = character_states.insert(entity, character_state); let _ = physics_states.insert(entity, physics_state); }