From 7cee55b4ca4b69630ca58eff1157f38e03d2e904 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Thu, 26 Oct 2023 16:35:05 +0800 Subject: [PATCH] 1 --- server/gameserver/creature.cc | 29 ++++++++++++++++++++--------- 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/server/gameserver/creature.cc b/server/gameserver/creature.cc index 780e2964..1f95fd1f 100644 --- a/server/gameserver/creature.cc +++ b/server/gameserver/creature.cc @@ -3569,18 +3569,29 @@ void Creature::ActivateTargetValidPos() if (target_valid_pos_activated) { target_valid_pos = GetPos().ToGlmVec3(); float distance = GetPos().Distance2D2(context_pos); - if (distance > 600 || distance < 10) { - + if (GlmHelper::IsEqual2D(GetPos().ToGlmVec3(), context_pos.ToGlmVec3()) || + distance > 600) { } else { - glm::vec3 center = context_pos.ToGlmVec3(); - room->map_instance->Scale(center); + distance = std::min(600.0f, distance); + glm::vec3 dir = GetPos().ToGlmVec3() - context_pos.ToGlmVec3(); + GlmHelper::Normalize(dir); + dir.y = 0; + while (distance > 10) { + + } + if (distance > 600 || distance < 10) { - glm::vec3 point; - bool ok = room->map_instance->FindConnectableNearestPoint(center, 0.3f, point); - if (ok) { - room->map_instance->UnScale(point); - target_valid_pos = point; } else { + glm::vec3 center = context_pos.ToGlmVec3(); + room->map_instance->Scale(center); + + glm::vec3 point; + bool ok = room->map_instance->FindConnectableNearestPoint(center, 0.3f, point); + if (ok) { + room->map_instance->UnScale(point); + target_valid_pos = point; + } else { + } } } target_valid_pos_activated = true;