diff --git a/server/gameserver/bullet.cc b/server/gameserver/bullet.cc index d0822640..d37a8141 100644 --- a/server/gameserver/bullet.cc +++ b/server/gameserver/bullet.cc @@ -20,6 +20,7 @@ #include "ability.h" #include "buff.h" #include "collision.h" +#include "mapinstance.h" #include "mt/Param.h" #include "mt/Equip.h" @@ -930,4 +931,18 @@ const Position& Bullet::GetPos() void Bullet::Raycast() { raycasted_ = true; + glm::vec3 start = born_pos.ToGlmVec3(); + glm::vec3 end = born_pos.AddGlmVec3(born_dir * (float)gun_meta->range()).ToGlmVec3(); + + bool hit_result = false; + glm::vec3 hit_point; + sender.Get()->room->map_instance->Scale(start); + sender.Get()->room->map_instance->Scale(end); + bool ret = sender.Get()->room->map_instance->Raycast(0, start, end, hit_point, hit_result); + if (ret) { + sender.Get()->room->map_instance->UnScale(hit_point); + raycast_len_ = GlmHelper::Norm(hit_point - born_pos.ToGlmVec3()); + } else { + raycast_len_ = 0.0f; + } }