local FuncNode_DistCompareByMonsterID = class("FuncNode_DistCompareByMonsterID") --[[ 初始化 --]] function FuncNode_DistCompareByMonsterID:initialize(entity) self.LimitChildCount = 3 self.Type = LuaConst.ConditionFuncType.DistCompareByMonsterID end local container = {} local FAR_DIST_NUM = 9999999 local FAR_DIST = FP.newV1(FAR_DIST_NUM) local _distance = FP.newV1(FAR_DIST_NUM) local _minDistance = FP.newV1(FAR_DIST_NUM) --[[ 执行 --]] function FuncNode_DistCompareByMonsterID:Run(conditionDataNode, entity, missile) local monsterID = FP.tonumberV1(conditionDataNode.FirstNode:Run(entity, missile)) local relationType = FP.tonumberV1(conditionDataNode.SecondNode:Run(entity, missile)) local compareToDistSqr = conditionDataNode.ThirdNode:Run(entity, missile) for i=1,#container do container[i] = nil end local monsterList = TargetManager.GetMonsterListByMonsterID(monsterID, container) _minDistance:Reset(FAR_DIST) local selfPos = entity:GetLogicPos() _distance:Reset(FAR_DIST) for i,monsterEntity in ipairs(monsterList) do monsterEntity:GetLogicPos():DistanceSqr(selfPos, _distance) if _distance < _minDistance then _minDistance:Reset(_distance) end end local ConditionAnalysis = require "Battle/Logic/AI/Condition/ConditionAnalysis" return ConditionAnalysis.CommonValueCompare(relationType, _minDistance, compareToDistSqr) end return FuncNode_DistCompareByMonsterID