示例#1
0
    protected override void OnUpdate()
    {
        //TODO:控制刷新或请求频率
        var requestArray = RequestGroup.ToComponentDataArray <RoleLooksNetRequest>(Allocator.TempJob);

        if (requestArray.Length == 0)
        {
            requestArray.Dispose();
            return;
        }

        var requestEntityArray = RequestGroup.ToEntityArray(Allocator.TempJob);

        // Copy requests as spawning will invalidate Group
        var requests = new RoleLooksNetRequest[requestArray.Length];

        for (var i = 0; i < requestArray.Length; i++)
        {
            requests[i] = requestArray[i];
            PostUpdateCommands.DestroyEntity(requestEntityArray[i]);
        }

        for (var i = 0; i < requests.Length; i++)
        {
            SprotoType.scene_get_role_look_info.request req = new SprotoType.scene_get_role_look_info.request();
            req.uid = requests[i].roleUid;
            Entity owner = requests[i].owner;
            if (!EntityManager.Exists(owner))
            {
                continue;
            }
            UnityMMO.NetMsgDispatcher.GetInstance().SendMessage <Protocol.scene_get_role_look_info>(req, (_) =>
            {
                SprotoType.scene_get_role_look_info.response rsp = _ as SprotoType.scene_get_role_look_info.response;
                // Debug.Log("rsp.result : "+rsp.result.ToString()+" owner:"+owner.ToString());
                if (rsp.result == UnityMMO.GameConst.NetResultOk)
                {
                    RoleMgr.GetInstance().SetName(req.uid, rsp.role_looks_info.name);
                    if (m_world.GetEntityManager().HasComponent <HealthStateData>(owner))
                    {
                        var hpData   = m_world.GetEntityManager().GetComponentData <HealthStateData>(owner);
                        hpData.CurHp = rsp.role_looks_info.hp;
                        hpData.MaxHp = rsp.role_looks_info.max_hp;
                        m_world.GetEntityManager().SetComponentData <HealthStateData>(owner, hpData);
                    }
                    bool hasTrans = m_world.GetEntityManager().HasComponent <Transform>(owner);
                    if (hasTrans)
                    {
                        var transform = m_world.GetEntityManager().GetComponentObject <Transform>(owner);
                        //因为是异步操作,等后端发送信息过来时PostUpdateCommands已经失效了,所以不能这么用
                        RoleLooksSpawnRequest.Create(m_world.GetEntityManager(), (int)rsp.role_looks_info.career, transform.localPosition, transform.localRotation, owner, (int)rsp.role_looks_info.body, (int)rsp.role_looks_info.hair);
                    }
                }
            });
        }
        requestEntityArray.Dispose();
        requestArray.Dispose();
    }
示例#2
0
    protected override void OnUpdate()
    {
        //TODO:控制刷新或请求频率
        var requestArray = RequestGroup.GetComponentDataArray <RoleLooksNetRequest>();

        if (requestArray.Length == 0)
        {
            return;
        }

        var requestEntityArray = RequestGroup.GetEntityArray();

        // Copy requests as spawning will invalidate Group
        var requests = new RoleLooksNetRequest[requestArray.Length];

        for (var i = 0; i < requestArray.Length; i++)
        {
            requests[i] = requestArray[i];
            PostUpdateCommands.DestroyEntity(requestEntityArray[i]);
        }

        for (var i = 0; i < requests.Length; i++)
        {
            SprotoType.scene_get_role_look_info.request req = new SprotoType.scene_get_role_look_info.request();
            req.uid = requests[i].roleUid;
            Entity owner = requests[i].owner;
            UnityMMO.NetMsgDispatcher.GetInstance().SendMessage <Protocol.scene_get_role_look_info>(req, (_) =>
            {
                SprotoType.scene_get_role_look_info.response rsp = _ as SprotoType.scene_get_role_look_info.response;
                Debug.Log("rsp.result : " + rsp.result.ToString() + " owner:" + owner.ToString());
                if (rsp.result == UnityMMO.GameConst.NetResultOk)
                {
                    bool hasRoleState = m_world.GetEntityManager().HasComponent <RoleState>(owner);
                    if (hasRoleState)
                    {
                        RoleState roleState = m_world.GetEntityManager().GetComponentObject <RoleState>(owner);
                        Debug.Log("roleState.position : " + roleState.transform.localPosition.ToString());
                        //因为是异步操作,等后端发送信息过来时PostUpdateCommands已经失效了,所以不能这么用
                        // RoleLooksSpawnRequest.Create(PostUpdateCommands, (int)rsp.role_looks_info.career, roleState.transform.localPosition, roleState.transform.localRotation, owner, (int)rsp.role_looks_info.body, (int)rsp.role_looks_info.hair);
                        RoleLooksSpawnRequest.Create(m_world.GetEntityManager(), (int)rsp.role_looks_info.career, roleState.transform.localPosition, roleState.transform.localRotation, owner, (int)rsp.role_looks_info.body, (int)rsp.role_looks_info.hair);
                    }
                }
            });
        }
    }