From a2df9aafb24dc5db9640c6a24bcb30f22662ba49 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Fri, 10 Feb 2023 11:07:24 +0800 Subject: [PATCH] 1 --- server/gameserver/bullet.cc | 17 ----------------- server/gameserver/debugcmd.cc | 22 ++++++++++++++++++++++ server/gameserver/debugcmd.h | 5 +++++ server/gameserver/mapinstance.cc | 10 ++++++++-- 4 files changed, 35 insertions(+), 19 deletions(-) diff --git a/server/gameserver/bullet.cc b/server/gameserver/bullet.cc index c166e5ca..07dffad0 100644 --- a/server/gameserver/bullet.cc +++ b/server/gameserver/bullet.cc @@ -80,23 +80,6 @@ void Bullet::Initialize() hit_pos, glm::vec3(10, 10, 10), room->AllocUniid()); - #if 1 - auto transform = - glm::rotate( - glm::mat4(1.0), - glm::radians(45.0f), - //glm::radians(angle), - glm::vec3(0.0f, 1.0f, 0.0f) - ); - #else - glm::mat4 transform = glm::eulerAngleYXZ(dir1.y, dir1.x, dir1.z); - #endif - glm::quat q = glm::toQuat(transform); - DebugCmd::CreateCube(sender.Get(), - GetPos().ToGlmVec3(), - glm::vec3(10, 10, 10), - q, - room->AllocUniid()); } } #endif diff --git a/server/gameserver/debugcmd.cc b/server/gameserver/debugcmd.cc index 9d0ea25d..6a382c15 100644 --- a/server/gameserver/debugcmd.cc +++ b/server/gameserver/debugcmd.cc @@ -63,6 +63,28 @@ void DebugCmd::CreateCube(Creature* c, } } +void DebugCmd::DrawLine(Creature* c, + const glm::vec3& begin, + const glm::vec3& end, + float time) +{ + if (c->IsPlayer() && Enable()) { + cs::SMDebugCmd msg; + msg.set_cmd("draw_line"); + msg.add_params(begin.x); + msg.add_params(begin.y); + msg.add_params(begin.z); + + msg.add_params(end.x); + msg.add_params(end.y); + msg.add_params(end.z); + + msg.add_params(time); + + c->AsPlayer()->SendNotifyMsg(msg); + } +} + void DebugCmd::DestoryGameObject(Creature* c, int uniid) { if (c->IsPlayer() && Enable()) { diff --git a/server/gameserver/debugcmd.h b/server/gameserver/debugcmd.h index 07a33ab1..5136b4e3 100644 --- a/server/gameserver/debugcmd.h +++ b/server/gameserver/debugcmd.h @@ -23,6 +23,11 @@ class DebugCmd const glm::quat& rotation, int uniid); + static void DrawLine(Creature* c, + const glm::vec3& begin, + const glm::vec3& end, + float time); + static void DestoryGameObject(Creature* c, int uniid); }; diff --git a/server/gameserver/mapinstance.cc b/server/gameserver/mapinstance.cc index 13d4aad3..d7525780 100644 --- a/server/gameserver/mapinstance.cc +++ b/server/gameserver/mapinstance.cc @@ -19,6 +19,7 @@ #include "entityfactory.h" #include "creature.h" #include "glmhelper.h" +#include "debugcmd.h" #include "mt/MetaMgr.h" #include "mt/Param.h" @@ -931,7 +932,7 @@ bool MapInstance::SceneRaycast(const glm::vec3& orig, ); node->tri->check_flag = raycast_index; ++tri_count; - if (hit) { + if (hit && distance > 0.00001f) { if (nearest_node) { if (distance < nearest_distance) { nearest_node = node; @@ -957,7 +958,12 @@ bool MapInstance::SceneRaycast(const glm::vec3& orig, if (result) { #ifdef DEBUG - a8::XPrintf("nearest_node:%s tri_count:%d\n", {nearest_node->tri->node->name, tri_count}); + if (DebugCmd::Enable()) { + a8::XPrintf("nearest_node:%s tri_count:%d nearest_distance:%f\n", + {nearest_node->tri->node->name, + tri_count, + nearest_distance}); + } #endif hit_pos = nearest_pt; ray_length = nearest_distance;