From 1ce6d364df9f5bc201f2f69a9658c20330f9645b Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Tue, 14 Nov 2023 17:04:10 +0800 Subject: [PATCH] 1 --- server/gameserver/hero_agent.cc | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/server/gameserver/hero_agent.cc b/server/gameserver/hero_agent.cc index 86ccb8a8..e16d7fe9 100644 --- a/server/gameserver/hero_agent.cc +++ b/server/gameserver/hero_agent.cc @@ -1261,6 +1261,38 @@ behaviac::EBTStatus HeroAgent::CoGetNextMobaModeRoadPoint() int HeroAgent::SearchPickupObj() { + Entity* nearest_obj = nullptr; + owner_->TraverseAllLayerEntityList + ( + [this, &nearest_obj] (Entity* e, bool& stop) mutable + { + if (!nearest_obj) { + nearest_obj = e; + return; + } + if (e->GetPos().ManhattanDistance2D(owner_->GetPos()) < + nearest_obj->GetPos().ManhattanDistance2D(owner_->GetPos())) { + nearest_obj = e; + return; + } + if (e->IsCar()) { + } else if (e->IsRoomObstacle()) { + } else if (e->IsLoot()) { + } + }); + if (nearest_obj && + nearest_obj->GetPos().ManhattanDistance2D(owner_->GetPos()) < 600) { + int obj_type = 0; + if (nearest_obj->IsCar()) { + obj_type = 1; + } else if (nearest_obj->IsRoomObstacle()) { + obj_type = 2; + } else if (nearest_obj->IsLoot()) { + obj_type = 2; + } + out_point0 = nearest_obj->GetPos().ToGlmVec3(); + return obj_type; + } return 0; }