From fbcc2df7149ebe7c365d235d513828faba61af30 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Sat, 14 Oct 2023 10:01:13 +0800 Subject: [PATCH] 1 --- server/gameserver/new_hero_agent.cc | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/server/gameserver/new_hero_agent.cc b/server/gameserver/new_hero_agent.cc index fc101c89..db1d670d 100644 --- a/server/gameserver/new_hero_agent.cc +++ b/server/gameserver/new_hero_agent.cc @@ -9,6 +9,7 @@ #include "glmhelper.h" #include "target_agent.h" #include "weapon.h" +#include "mapinstance.h" #include "mt/Hero.h" #include "mt/Equip.h" @@ -171,7 +172,27 @@ glm::vec3 HeroAgent::GetTargetDir() glm::vec3 HeroAgent::RandomPoint(const glm::vec3& center, float range) { - abort(); + glm::vec3 hit_point; + bool hit_result = false; + + glm::vec3 start = center; + glm::vec3 dir = GlmHelper::UP; + GlmHelper::RotateY(dir, (10 + rand() % 360)/ 180.0f); + GlmHelper::Normalize(dir); + glm::vec3 end = center + dir * range; + + owner_->room->map_instance->Scale(start); + owner_->room->map_instance->Scale(end); + if (owner_->room->map_instance->Raycast + ( + start, + end, + hit_point, + hit_result + )) { + owner_->room->map_instance->Scale(hit_point); + } + return hit_point; } float HeroAgent::GetShotRange()