/// <summary>
        /// 获取当前感知到的目标的 TargetInfo信息
        /// </summary>
        /// <param name="superposition">给服务的目标,同单位是否叠加</param>
        /// <param name="direction"> 返回目标计算方式的,依据方向</param> //准星镜头正方向(主相机正方向)or 抖动的随机方向
        /// <param name="isNew">是否需要全新的列表</param> 引导技能由于updata 内重新获取了,这里isNew给 false
        /// <param name="TagercalculationType">准星框or 公式另外计算</param>
        /// <returns></returns>

        public List <Crucis.Protocol.TargetInfo> GetCurrentTargetInfos(bool superposition,
                                                                       out Vector3 direction,
                                                                       bool isNew = true,
                                                                       SkillTagercalculationType TagercalculationType = SkillTagercalculationType.CrossSightLens)
        {
            List <Crucis.Protocol.TargetInfo>   targets = new List <Crucis.Protocol.TargetInfo>();
            LinkedList <CCrossSightLoic.Target> entitys = GetCurrQueue(out direction, isNew, TagercalculationType);

            Dictionary <uint, uint> targetDic = new Dictionary <uint, uint>();

            LinkedListNode <CCrossSightLoic.Target> pVertor = entitys.First;
            ulong pb;


            while (pVertor != null)
            {
                pb      = pVertor.Value.target_entityId;
                pVertor = pVertor.Next;

                BaseEntity entity = GameplayManager.Instance.GetEntityManager().GetEntityById <BaseEntity>((uint)pb);
                if (entity == null)
                {
                    continue;
                }

                if (!targetDic.ContainsKey(entity.UId()))
                {
                    targetDic.Add(entity.UId(), 1);
                }
                else
                {
                    targetDic[entity.UId()] += 1;
                }
            }

            foreach (var item in targetDic)
            {
                if (superposition) //数量叠加
                {
                    Crucis.Protocol.TargetInfo targetInfo = new Crucis.Protocol.TargetInfo();
                    targetInfo.TargetId = item.Key;
                    targetInfo.Count    = item.Value;
                    targets.Add(targetInfo);
                }
                else
                {//数量不叠加
                    for (int i = 0; i < item.Value; i++)
                    {
                        Crucis.Protocol.TargetInfo targetInfo = new Crucis.Protocol.TargetInfo();
                        targetInfo.TargetId = item.Key;
                        targetInfo.Count    = 1;
                        targets.Add(targetInfo);
                    }
                }
            }

            return(targets);
        }
        /// <summary>
        /// 设置广播的目标列表,跟最远处方向
        /// </summary>
        /// <param name="target_list">目标列表</param>
        /// <param name="direction">最远处的方向</param>
        /// <param name="isbegin">是否释放技能那一时刻的</param>

        public void SetBroadCastTargets(RepeatedField <Crucis.Protocol.TargetInfo> target_list, Vec3 direction, bool isbegin)
        {
            m_BroadCastDirection = NetHelper.Vec3ToPxVec3(direction);

            List <ulong> targets = new List <ulong>();

            for (int i = 0; i < target_list.Count; i++)
            {
                Crucis.Protocol.TargetInfo targetInfo = target_list[i];
                for (int t = 0; t < targetInfo.Count; t++)
                {
                    targets.Add(targetInfo.TargetId);
                }
            }

            m_BroadCastTargets.Clear();
            m_BroadCastTargets.AddRange(targets);

            //技能释放那一时刻的,设置一下新目标列表
            if (isbegin)
            {
                targetsLinkedList.Clear();
                for (int i = 0; i < m_BroadCastTargets.Count; i++)
                {
                    BaseEntity entity = GameplayManager.Instance.GetEntityManager().GetEntityById <BaseEntity>((uint)m_BroadCastTargets[i]);
                    if (entity == null)
                    {
                        continue;
                    }

                    CCrossSightLoic.Target cctarget = new CCrossSightLoic.Target();
                    cctarget.target_entityId = m_BroadCastTargets[i];
                    cctarget.target_pos      = entity.GetRootTransform().position;
                    targetsLinkedList.AddLast(cctarget);
                }

                Vector3 worldPosition = m_GameplayProxy.ServerAreaOffsetToClientPosition(m_BroadCastDirection); //服务器坐标,转 Unity 坐标
                m_calculateDirection = (worldPosition - m_OwnerEntity.GetRootTransform().position).normalized;
            }
        }