Esempio n. 1
0
    protected override void OnUpdate()
    {
        EntityArray entities       = RoleGroup.GetEntityArray();
        var         roleStateArray = RoleGroup.GetComponentArray <RoleState>();
        var         mainRoleGOE    = RoleMgr.GetInstance().GetMainRole();
        float3      mainRolePos    = float3.zero;

        if (mainRoleGOE != null)
        {
            mainRolePos = m_world.GetEntityManager().GetComponentData <Position>(mainRoleGOE.Entity).Value;
        }
        for (int i = 0; i < roleStateArray.Length; i++)
        {
            var  roleState          = roleStateArray[i];
            var  entity             = entities[i];
            bool isNeedReqLooksInfo = false;
            bool isNeedHideLooks    = false;

            //其它玩家离主角近时就要请求该玩家的角色外观信息
            var   curPos   = m_world.GetEntityManager().GetComponentData <Position>(entity).Value;
            float distance = Vector3.Distance(curPos, mainRolePos);
            Debug.Log("distance : " + distance);
            if (!roleState.hasLooks)
            {
                isNeedReqLooksInfo = distance <= 400;
                // bool isMainRole = m_world.GetEntityManager().HasComponent(entity, typeof(UnityMMO.MainRoleTag));
                // if (isMainRole)
                // {
                //     isNeedReqLooksInfo = true;
                // }
                // else
                // {
                // //其它玩家离主角近时就要请求该玩家的角色外观信息
                // var curPos = m_world.GetEntityManager().GetComponentData<Position>(entity).Value;
                // float distance = Vector3.Distance(curPos, mainRolePos);
                // Debug.Log("distance : "+distance);
                // isNeedReqLooksInfo = distance <= 200;
                // }
            }
            else
            {
                isNeedHideLooks = distance >= 300;
            }
            if (isNeedReqLooksInfo)
            {
                roleState.hasLooks = true;
                RoleLooksNetRequest.Create(PostUpdateCommands, roleState.roleUid, entity);
            }
        }
    }
Esempio n. 2
0
    protected override void OnUpdate()
    {
        var    entities       = RoleGroup.ToEntityArray(Allocator.TempJob);
        var    uidArray       = RoleGroup.ToComponentDataArray <UID>(Allocator.TempJob);
        var    looksInfoArray = RoleGroup.ToComponentDataArray <LooksInfo>(Allocator.TempJob);
        var    mainRoleGOE    = RoleMgr.GetInstance().GetMainRole();
        float3 mainRolePos    = float3.zero;

        if (mainRoleGOE != null)
        {
            mainRolePos = m_world.GetEntityManager().GetComponentObject <Transform>(mainRoleGOE.Entity).localPosition;
        }
        for (int i = 0; i < looksInfoArray.Length; i++)
        {
            var  uid                = uidArray[i];
            var  looksInfo          = looksInfoArray[i];
            var  entity             = entities[i];
            bool isNeedReqLooksInfo = false;
            bool isNeedHideLooks    = false;

            //其它玩家离主角近时就要请求该玩家的角色外观信息
            var   curPos   = m_world.GetEntityManager().GetComponentObject <Transform>(entity).localPosition;
            float distance = Vector3.Distance(curPos, mainRolePos);
            if (looksInfo.CurState == LooksInfo.State.None)
            {
                isNeedReqLooksInfo = distance <= 400;
            }
            else
            {
                isNeedHideLooks = distance >= 300;
            }
            // Debug.Log("isNeedReqLooksInfo : "+isNeedReqLooksInfo.ToString()+" looksInfo.CurState:"+looksInfo.CurState.ToString());
            if (isNeedReqLooksInfo)
            {
                looksInfo.CurState = LooksInfo.State.Loading;
                // looksInfoArray[i] = looksInfo;
                EntityManager.SetComponentData <LooksInfo>(entities[i], looksInfo);
                RoleLooksNetRequest.Create(PostUpdateCommands, uid.Value, entity);
            }
        }
        entities.Dispose();
        looksInfoArray.Dispose();
        uidArray.Dispose();
    }
Esempio n. 3
0
    protected override void OnUpdate()
    {
        EntityArray entities       = RoleGroup.GetEntityArray();
        var         roleStateArray = RoleGroup.GetComponentArray <RoleState>();
        var         looksInfoArray = RoleGroup.GetComponentDataArray <LooksInfo>();
        var         mainRoleGOE    = RoleMgr.GetInstance().GetMainRole();
        float3      mainRolePos    = float3.zero;

        if (mainRoleGOE != null)
        {
            mainRolePos = m_world.GetEntityManager().GetComponentObject <Transform>(mainRoleGOE.Entity).localPosition;
        }
        for (int i = 0; i < looksInfoArray.Length; i++)
        {
            var  roleState          = roleStateArray[i];
            var  looksInfo          = looksInfoArray[i];
            var  entity             = entities[i];
            bool isNeedReqLooksInfo = false;
            bool isNeedHideLooks    = false;

            //其它玩家离主角近时就要请求该玩家的角色外观信息
            var   curPos   = m_world.GetEntityManager().GetComponentObject <Transform>(entity).localPosition;
            float distance = Vector3.Distance(curPos, mainRolePos);
            if (looksInfo.CurState == LooksInfo.State.None)
            {
                isNeedReqLooksInfo = distance <= 400;
            }
            else
            {
                isNeedHideLooks = distance >= 300;
            }
            // Debug.Log("isNeedReqLooksInfo : "+isNeedReqLooksInfo.ToString()+" looksInfo.CurState:"+looksInfo.CurState.ToString());
            if (isNeedReqLooksInfo)
            {
                roleState.hasLooks = true;
                looksInfo.CurState = LooksInfo.State.Loading;
                looksInfoArray[i]  = looksInfo;
                RoleLooksNetRequest.Create(PostUpdateCommands, roleState.roleUid, entity);
            }
        }
    }