Ejemplo n.º 1
0
    // public static void Create(EntityCommandBuffer commandBuffer, int career, Vector3 position, Quaternion rotation, Entity ownerEntity, int body, int hair)
    // {
    //     Debug.Log("create 1");
    //     var data = new RoleLooksSpawnRequest(career, position, rotation, ownerEntity, body, hair);
    //     Debug.Log("create 2");
    //     commandBuffer.CreateEntity();
    //     Debug.Log("create 3");
    //     commandBuffer.AddComponent(data);
    //     Debug.Log("create 4");
    // }

    public static void Create(EntityManager entityMgr, int career, Vector3 position, Quaternion rotation, Entity ownerEntity, int body, int hair)
    {
        var    data   = new RoleLooksSpawnRequest(career, position, rotation, ownerEntity, body, hair);
        Entity entity = entityMgr.CreateEntity(typeof(RoleLooksSpawnRequest));

        entityMgr.SetComponentData(entity, data);
    }
Ejemplo n.º 2
0
    protected override void OnUpdate()
    {
        // Debug.Log("on OnUpdate role looks system");
        var requestArray = SpawnGroup.ToComponentDataArray <RoleLooksSpawnRequest>(Allocator.TempJob);

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

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

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

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

        for (var i = 0; i < spawnRequests.Length; i++)
        {
            var request = spawnRequests[i];
            // var playerState = EntityManager.GetComponentObject<RoleState>(request.ownerEntity);
            var looksInfo = EntityManager.GetComponentData <LooksInfo>(request.ownerEntity);
            int career    = request.career;
            int body      = request.body;
            int hair      = request.hair;
            // Debug.Log("body : "+body+" hair:"+hair);
            string bodyPath = ResPath.GetRoleBodyResPath(career, body);
            string hairPath = ResPath.GetRoleHairResPath(career, hair);
            // Debug.Log("SpawnRoleLooks bodyPath : "+bodyPath);
            XLuaFramework.ResourceManager.GetInstance().LoadAsset <GameObject>(bodyPath, delegate(UnityEngine.Object[] objs) {
                if (objs != null && objs.Length > 0)
                {
                    GameObject bodyObj        = objs[0] as GameObject;
                    GameObjectEntity bodyOE   = m_world.Spawn <GameObjectEntity>(bodyObj);
                    var parentTrans           = EntityManager.GetComponentObject <Transform>(request.ownerEntity);
                    parentTrans.localPosition = request.position;
                    bodyOE.transform.SetParent(parentTrans);
                    bodyOE.transform.localPosition = Vector3.zero;
                    bodyOE.transform.localRotation = Quaternion.identity;
                    ECSHelper.UpdateNameboardHeight(request.ownerEntity, bodyOE.transform);
                    LoadHair(hairPath, bodyOE.transform.Find("head"));
                    // Debug.Log("load ok role model");
                    looksInfo.CurState    = LooksInfo.State.Loaded;
                    looksInfo.LooksEntity = bodyOE.Entity;
                    EntityManager.SetComponentData <LooksInfo>(request.ownerEntity, looksInfo);
                }
                else
                {
                    Debug.LogError("cannot fine file " + bodyPath);
                }
            });
        }
        requestEntityArray.Dispose();
        requestArray.Dispose();
    }
Ejemplo n.º 3
0
    protected override void OnUpdate()
    {
        // Debug.Log("on OnUpdate role looks system");
        var requestArray = SpawnGroup.GetComponentDataArray <RoleLooksSpawnRequest>();

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

        var requestEntityArray = SpawnGroup.GetEntityArray();

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

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

        for (var i = 0; i < spawnRequests.Length; i++)
        {
            var request = spawnRequests[i];
            // var playerState = EntityManager.GetComponentObject<RoleState>(request.ownerEntity);
            var looksInfo = EntityManager.GetComponentData <LooksInfo>(request.ownerEntity);
            int career    = request.career;
            int body      = request.body;
            int hair      = request.hair;
            Debug.Log("body : " + body + " hair:" + hair);
            int bodyID = 1000 + career * 100 + body;
            int hairID = 1000 + career * 100 + hair;
            // string careerPath = UnityMMO.GameConst.GetRoleCareerResPath(career);
            string roleResPath = "Assets/AssetBundleRes/role";
            string bodyPath    = roleResPath + "/body/body_" + bodyID + "/model_body_" + bodyID + ".prefab";
            string hairPath    = roleResPath + "/hair/hair_" + hairID + "/model_hair_" + hairID + ".prefab";
            Debug.Log("SpawnRoleLooks bodyPath : " + bodyPath);
            XLuaFramework.ResourceManager.GetInstance().LoadAsset <GameObject>(bodyPath, delegate(UnityEngine.Object[] objs) {
                if (objs != null && objs.Length > 0)
                {
                    GameObject bodyObj        = objs[0] as GameObject;
                    GameObjectEntity bodyOE   = m_world.Spawn <GameObjectEntity>(bodyObj);
                    var parentTrans           = EntityManager.GetComponentObject <Transform>(request.ownerEntity);
                    parentTrans.localPosition = request.position;
                    bodyOE.transform.SetParent(parentTrans);
                    bodyOE.transform.localPosition = Vector3.zero;
                    bodyOE.transform.localRotation = Quaternion.identity;
                    LoadHair(hairPath, bodyOE.transform.Find("head"));
                    Debug.Log("load ok role model");
                    looksInfo.CurState    = LooksInfo.State.Loaded;
                    looksInfo.LooksEntity = bodyOE.Entity;
                    EntityManager.SetComponentData <LooksInfo>(request.ownerEntity, looksInfo);
                }
                else
                {
                    Debug.LogError("cannot fine file " + bodyPath);
                }
            });
        }
    }
Ejemplo n.º 4
0
    public static void Create(EntityCommandBuffer commandBuffer, int career, Vector3 position, Quaternion rotation, Entity ownerEntity, int body, int hair)
    {
        var data = new RoleLooksSpawnRequest(career, position, rotation, ownerEntity, body, hair);

        commandBuffer.CreateEntity();
        commandBuffer.AddComponent(data);
    }
Ejemplo n.º 5
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();
    }
Ejemplo n.º 6
0
    protected override void OnUpdate()
    {
        // Debug.Log("on OnUpdate role looks system");
        var requestArray = SpawnGroup.GetComponentDataArray <RoleLooksSpawnRequest>();

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

        var requestEntityArray = SpawnGroup.GetEntityArray();

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

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

        for (var i = 0; i < spawnRequests.Length; i++)
        {
            var    request     = spawnRequests[i];
            var    playerState = EntityManager.GetComponentObject <RoleState>(request.ownerEntity);
            int    career      = request.career;
            int    body        = request.body;
            int    hair        = request.hair;
            int    bodyID      = 1000 + career * 100 + body;
            int    hairID      = 1000 + career * 100 + hair;
            string careerPath  = UnityMMO.GameConst.GetRoleCareerResPath(career);
            string bodyPath    = careerPath + "/body/body_" + bodyID + "/model_body_" + bodyID + ".prefab";
            string hairPath    = careerPath + "/hair/hair_" + hairID + "/model_hair_" + hairID + ".prefab";
            Debug.Log("SpawnRoleLooks bodyPath : " + bodyPath);
            XLuaFramework.ResourceManager.GetInstance().LoadAsset <GameObject>(bodyPath, delegate(UnityEngine.Object[] objs) {
                if (objs != null && objs.Length > 0)
                {
                    GameObject bodyObj      = objs[0] as GameObject;
                    GameObjectEntity bodyOE = m_world.Spawn <GameObjectEntity>(bodyObj);
                    bodyOE.transform.SetParent(UnityMMO.RoleMgr.GetInstance().RoleContainer);
                    bodyOE.transform.localPosition = request.position;
                    bodyOE.GetComponent <Rigidbody>().isKinematic = true;
                    playerState.looksEntity = bodyOE.Entity;
                    LoadHair(hairPath, bodyOE.transform.Find("head"));
                }
                else
                {
                    Debug.LogError("cannot fine file " + bodyPath);
                }
            });
        }
    }
Ejemplo n.º 7
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);
                    }
                }
            });
        }
    }