private static void StepCalcNearstTarget(EntityInfo srcObj, CharacterRelation relation, AiTargetType type, float powDist, EntityInfo obj, ref float minPowDist, ref EntityInfo nearstTarget) { EntityInfo target = GetSeeingLivingCharacterInfoHelper(srcObj, obj.GetId()); if (null != target && !target.IsDead()) { if (!target.IsTargetNpc()) { return; } if (type == AiTargetType.HERO && target.EntityType != (int)EntityTypeEnum.Hero) { return; } if (type == AiTargetType.TOWER && target.EntityType != (int)EntityTypeEnum.Tower) { return; } if (type == AiTargetType.BOSS && target.EntityType != (int)EntityTypeEnum.Boss) { return; } if (type == AiTargetType.NPC && target.EntityType != (int)EntityTypeEnum.Normal) { return; } if (relation == EntityInfo.GetRelation(srcObj, target)) { if (powDist < minPowDist) { if (powDist > c_MaxViewRangeSqr || CanSee(srcObj, target)) { nearstTarget = target; minPowDist = powDist; } } } } }