diff --git a/server/gameserver/collision.cc b/server/gameserver/collision.cc index 5f3a4302..2a8c2349 100644 --- a/server/gameserver/collision.cc +++ b/server/gameserver/collision.cc @@ -13,6 +13,8 @@ #include "mt/Map.h" #include "mt/MapThing.h" +static const float GUN_HEIGHT = 3.0f; + bool Collision::CheckBullet(IBullet* bullet, Creature* c) { glm::vec3 bullet_real_pos = bullet->GetPos().ToGlmVec3() - bullet->GetDir() * bullet->GetHitRadius(); @@ -22,15 +24,15 @@ bool Collision::CheckBullet(IBullet* bullet, Creature* c) } bool ret = a8::IntersectCylinderCylinder ( - bullet_real_pos, bullet_hit_radius * 1.0, 10, - c->GetPos().ToGlmVec3(), c->GetHitRadius(), 10 + bullet_real_pos, bullet_hit_radius * 1.0, GUN_HEIGHT, + c->GetPos().ToGlmVec3(), c->GetHitRadius(), GUN_HEIGHT ); if (!ret) { bullet_real_pos = bullet->GetPos().ToGlmVec3() - bullet->GetDir() * (bullet->GetHitRadius() - 2); ret = a8::IntersectCylinderCylinder ( - bullet_real_pos, bullet_hit_radius * 1.0, 10, - c->GetPos().ToGlmVec3(), c->GetHitRadius(), 10 + bullet_real_pos, bullet_hit_radius * 1.0, GUN_HEIGHT, + c->GetPos().ToGlmVec3(), c->GetHitRadius(), GUN_HEIGHT ); } return ret; @@ -49,14 +51,14 @@ bool Collision::CheckBullet(IBullet* bullet, Entity* e) auto wobj = ob->init_args->Get>(0); return a8::IntersectCylinderCylinder ( - bullet_real_pos, bullet->GetHitRadius() * 1.0, 10, - e->GetPos().ToGlmVec3(), std::max(wobj->size.x/2.0f, wobj->size.z/2.0f), 10 + bullet_real_pos, bullet->GetHitRadius() * 1.0, GUN_HEIGHT, + e->GetPos().ToGlmVec3(), std::max(wobj->size.x/2.0f, wobj->size.z/2.0f), GUN_HEIGHT ); } else { return a8::IntersectCylinderCylinder ( - bullet_real_pos, bullet->GetHitRadius() * 1.0, 10, - e->GetPos().ToGlmVec3(), ob->meta->width(), 10 + bullet_real_pos, bullet->GetHitRadius() * 1.0, GUN_HEIGHT, + e->GetPos().ToGlmVec3(), ob->meta->width(), GUN_HEIGHT ); } }