Fix npc and death bug

This commit is contained in:
timokoesters 2019-06-29 22:40:40 +02:00
parent 5fcf6ededa
commit d235374d8e
No known key found for this signature in database
GPG Key ID: CD80BE9AAEE78097
5 changed files with 24 additions and 18 deletions

View File

@ -310,16 +310,18 @@ impl Client {
} }
// 6) Update the server about the player's physics attributes. // 6) Update the server about the player's physics attributes.
match ( if let ClientState::Character = self.client_state {
self.state.read_storage().get(self.entity).cloned(), match (
self.state.read_storage().get(self.entity).cloned(), self.state.read_storage().get(self.entity).cloned(),
self.state.read_storage().get(self.entity).cloned(), self.state.read_storage().get(self.entity).cloned(),
) { self.state.read_storage().get(self.entity).cloned(),
(Some(pos), Some(vel), Some(ori)) => { ) {
self.postbox (Some(pos), Some(vel), Some(ori)) => {
.send_message(ClientMsg::PlayerPhysics { pos, vel, ori }); self.postbox
.send_message(ClientMsg::PlayerPhysics { pos, vel, ori });
}
_ => {}
} }
_ => {}
} }
// Output debug metrics // Output debug metrics
@ -392,7 +394,7 @@ impl Client {
self.client_state = state; self.client_state = state;
} }
ServerMsg::StateAnswer(Err((error, state))) => { ServerMsg::StateAnswer(Err((error, state))) => {
warn!("{:?}", error); warn!("StateAnswer: {:?}", error);
} }
ServerMsg::ForceState(state) => { ServerMsg::ForceState(state) => {
self.client_state = state; self.client_state = state;

View File

@ -95,7 +95,13 @@ impl<'a> System<'a> for Sys {
} }
// Roll // Roll
if controller.roll && !a.rolling && a.on_ground && a.moving && !a.attacking && !a.gliding { if controller.roll
&& !a.rolling
&& a.on_ground
&& a.moving
&& !a.attacking
&& !a.gliding
{
rollings.insert(entity, Rolling::start()); rollings.insert(entity, Rolling::start());
} }
} }

View File

@ -126,10 +126,7 @@ impl<'a> System<'a> for Sys {
} }
// Glide // Glide
if a.gliding if a.gliding && vel.0.magnitude_squared() < GLIDE_SPEED.powf(2.0) && vel.0.z < 0.0 {
&& vel.0.magnitude_squared() < GLIDE_SPEED.powf(2.0)
&& vel.0.z < 0.0
{
let lift = GLIDE_ANTIGRAV + vel.0.z.powf(2.0) * 0.2; let lift = GLIDE_ANTIGRAV + vel.0.z.powf(2.0) * 0.2;
vel.0.z += dt.0 * lift * Vec2::<f32>::from(vel.0 * 0.15).magnitude().min(1.0); vel.0.z += dt.0 * lift * Vec2::<f32>::from(vel.0 * 0.15).magnitude().min(1.0);
} }

View File

@ -20,7 +20,7 @@ use common::{
terrain::{TerrainChunk, TerrainChunkSize}, terrain::{TerrainChunk, TerrainChunkSize},
vol::VolSize, vol::VolSize,
}; };
use log::warn; use log::{debug, warn};
use specs::{join::Join, world::EntityBuilder as EcsEntityBuilder, Builder, Entity as EcsEntity}; use specs::{join::Join, world::EntityBuilder as EcsEntityBuilder, Builder, Entity as EcsEntity};
use std::{ use std::{
collections::HashSet, collections::HashSet,
@ -148,6 +148,7 @@ impl Server {
.with(comp::Controller::default()) .with(comp::Controller::default())
.with(comp::Actor::Character { name, body }) .with(comp::Actor::Character { name, body })
.with(comp::Stats::default()) .with(comp::Stats::default())
.with(comp::ActionState::default())
.with(comp::ForceUpdate) .with(comp::ForceUpdate)
} }
@ -526,7 +527,7 @@ impl Server {
// Handle client disconnects. // Handle client disconnects.
for entity in disconnected_clients { for entity in disconnected_clients {
if let Err(err) = self.state.ecs_mut().delete_entity_synced(entity) { if let Err(err) = self.state.ecs_mut().delete_entity_synced(entity) {
warn!("Failed to delete disconnected client: {:?}", err); debug!("Failed to delete disconnected client: {:?}", err);
} }
frontend_events.push(Event::ClientDisconnected { entity }); frontend_events.push(Event::ClientDisconnected { entity });

View File

@ -439,7 +439,7 @@ impl FigureModelCache {
fn load_wolf_head_lower(head_lower: quadruped_medium::HeadLower) -> Mesh<FigurePipeline> { fn load_wolf_head_lower(head_lower: quadruped_medium::HeadLower) -> Mesh<FigurePipeline> {
Self::load_mesh( Self::load_mesh(
match head_lower { match head_lower {
quadruped_medium::HeadLower::Default => "npc/wolf/head_lower.vox", quadruped_medium::HeadLower::Default => "npc/wolf/wolf_head_lower.vox",
}, },
Vec3::new(-7.0, -6.0, -5.5), Vec3::new(-7.0, -6.0, -5.5),
) )