示例#1
0
    // Update is called once per frame
    //void Update()
    //{
    //    if (isOnline)
    //    {
    //        lock (cli.sendLockObject)
    //        {

    //            Debug.Log(cli.sendTask.Count);
    //            Byte[] temp = StructToArray();
    //            cli.sendTask.Enqueue(temp);
    //            Debug.Log("Enqueue " + temp.Length );
    //        }


    //        //if (cli.recvTask.Count > 0)
    //        //{

    //        //    byte[] buf = cli.recvTask.Dequeue();
    //        //    Debug.Log("recv Pakcet" + buf.Length);

    //        //    //                StructFurniture temp = fromBytes(buf);
    //        //    //              Debug.Log(temp.name);
    //        //}


    //    }
    //}

    public void Clear()
    {
        Debug.Log("Clear Room");
        // 전체 삭제
        isLocalPlayer LocalPlayer = GameObject.Find("LocalPlayer").GetComponent <isLocalPlayer>();

        foreach (Transform child in transform)
        {
            LocalPlayer.CmdDeleteFurniture(child.gameObject);
        }

        ObjDataList obj = new ObjDataList();

        GameObject[] wallTexture = new GameObject[6];
        wallTexture[0] = GameObject.Find("Room").transform.Find("Top").gameObject;
        wallTexture[1] = GameObject.Find("Room").transform.Find("Wall1").gameObject;
        wallTexture[2] = GameObject.Find("Room").transform.Find("Wall2").gameObject;
        wallTexture[3] = GameObject.Find("Room").transform.Find("Wall3").gameObject;
        wallTexture[4] = GameObject.Find("Room").transform.Find("Wall4").gameObject;
        wallTexture[5] = GameObject.Find("Room").transform.Find("Bottom").gameObject;

        int[] walls = new int[6] {
            obj.top, obj.wall1, obj.wall2, obj.wall3, obj.wall4, obj.bottom
        };

        for (int i = 0; i < wallTexture.Length; i++)
        {
            //벽지 초기화
            LocalPlayer.CmdSetSyncWallTexture(wallTexture[i], 0, walls[0]);
            LocalPlayer.CmdSetSyncWallTexture(wallTexture[i], 0, -1);
            //wallTexture[i].GetComponent<MeshRenderer>().material.mainTexture = FurnitureTextures[walls[0]];
            //wallTexture[i].GetComponent<DropObject>().SetMaterial(FurnitureTextures[walls[0]]);
            //wallTexture[i].GetComponent<DropObject>().textureName = FurnitureTextures[walls[0]].name;
        }
    }
示例#2
0
    public void saveSlot(int idx)
    {
        //가구를 리스트에 담아서 반환하는 함수 호출
        ObjDataList obj =
            Furniture.GetComponent <FurnitureManager>().FurnitureToList();

        //가구 정보를 담는 리스트 클래스를 JSON 으로 변경
        string jsonData = JsonUtility.ToJson(obj, true);

        //JSON 파일 저장할 경로 설정
        //string path = Path.Combine(Application.dataPath, "objData.json");
        ////JSON 파일로 저장
        //File.WriteAllText(path, jsonData);

        if (Client.instance != null)
        {
            //방장
            //if(Client.instance.isOwner)
            if (true)
            {
                Client.instance.Save(jsonData, idx);
            }
        }
        else
        {
            string path = Path.Combine(Application.dataPath, "objData.json");
            //JSON 파일로 저장
            File.WriteAllText(path, jsonData);
        }
        audio.clip = SaveSound;
        audio.Play();
        timestamp(true);
    }
示例#3
0
    public void loadSlot(int idx)
    {
        if (idx != 5)
        {
            Furniture.GetComponent <FurnitureManager>().Clear();
            if (Client.instance != null)
            {
                //방장
                if (Client.instance.isOwner)
                {
                    string jsonData = Client.instance.Load(idx);

                    //읽어온 JSON 파일을 가구 정보를 담는 리스트 객체(ObjDataList)로 변환
                    ObjDataList obj = JsonUtility.FromJson <ObjDataList>(jsonData);

                    Furniture.GetComponent <FurnitureManager>().ListToFurniture(obj);

                    Client.instance.roomType = idx;
                }
            }
            else
            {
                //JSON 파일 불러올 경로 설정
                string path = Path.Combine(Application.dataPath, "objData.json");
                //JSON 파일 불러옴
                string jsonData = File.ReadAllText(path);

                //읽어온 JSON 파일을 가구 정보를 담는 리스트 객체(ObjDataList)로 변환
                ObjDataList obj = JsonUtility.FromJson <ObjDataList>(jsonData);

                Furniture.GetComponent <FurnitureManager>().ListToFurniture(obj);
            }
            audio.clip = LoadSound;
            audio.Play();
        }

        else
        {
            Furniture.GetComponent <FurnitureManager>().Clear();
            Back();
        }
    }
示例#4
0
    public void ListToFurniture(ObjDataList obj)
    {
        //가구 생성에 필요한 스크립트 호출
        isLocalPlayer LocalPlayer = GameObject.Find("LocalPlayer").GetComponent <isLocalPlayer>();


        //벽 객체 받아옴
        Debug.Log(obj.objDataList.Count);
        GameObject[] wallTexture = new GameObject[6];
        wallTexture[0] = GameObject.Find("Room").transform.Find("Top").gameObject;
        wallTexture[1] = GameObject.Find("Room").transform.Find("Wall1").gameObject;
        wallTexture[2] = GameObject.Find("Room").transform.Find("Wall2").gameObject;
        wallTexture[3] = GameObject.Find("Room").transform.Find("Wall3").gameObject;
        wallTexture[4] = GameObject.Find("Room").transform.Find("Wall4").gameObject;
        wallTexture[5] = GameObject.Find("Room").transform.Find("Bottom").gameObject;

        //저장된 리스트에서 벽지 정보 받아옴
        int[] walls = new int[6] {
            obj.top, obj.wall1, obj.wall2, obj.wall3, obj.wall4, obj.bottom
        };

        //벽지 씌워줌
        for (int i = 0; i < wallTexture.Length; i++)
        {
            if (walls[i] != -1)
            {
                LocalPlayer.CmdSetSyncWallTexture(wallTexture[i], 0, walls[i]);

                //wallTexture[i].GetComponent<MeshRenderer>().material.mainTexture = FurnitureTextures[walls[i]];
                //wallTexture[i].GetComponent<DropObject>().SetMaterial(FurnitureTextures[walls[i]]);
                //wallTexture[i].GetComponent<DropObject>().textureName = FurnitureTextures[walls[i]].name;
            }
            else
            {
                LocalPlayer.CmdSetSyncWallTexture(wallTexture[i], 0, 0);
            }
        }


        //리스트의 길이 만큼 반복
        for (int i = 0; i < obj.objDataList.Count; i++)
        {
            //가구 이름 받아옴
            string name = obj.objDataList[i].name;


            LocalPlayer.SpawnObjectRot(name, obj.objDataList[i].position, obj.objDataList[i].rotation, obj.objDataList[i].textures);


            ////이름에 맞는 가구 Prefab Load
            //GameObject NewGameObject = Resources.Load("Prefabs/" + name) as GameObject;
            ////Load 된 Prefab을 가구 정보에 맞게 생성
            //GameObject newObj = Instantiate(NewGameObject, obj.objDataList[i].position, obj.objDataList[i].rotation);
            //newObj.name = name;
            //int cnt = newObj.transform.childCount;

            ////자식 오브젝트가 없는 경우 자기 자신 오브젝트에 Drop Object
            //if (cnt == 0)
            //{
            //    //씌워진 텍스쳐가 없는 경우 혹은 Drop Object가  경우 break;
            //    if (obj.objDataList[i].textures[0] == -1) break;
            //    LocalPlayer.CmdSetSyncListInt(newObj, 0, obj.objDataList[i].textures[0]);
            //    //newObj.GetComponent<MeshRenderer>().material.mainTexture = FurnitureTextures[obj.objDataList[i].textures[0]];
            //    //newObj.GetComponent<DropObject>().SetMaterial(FurnitureTextures[obj.objDataList[i].textures[0]]);
            //    //newObj.GetComponent<DropObject>().textureName = FurnitureTextures[obj.objDataList[i].textures[0]].name;

            //}
            ////자식 오브젝트가 있는 경우 자식 오브젝트에 Drop Object
            //else
            //{
            //    for (int j = 0; j < cnt; j++)
            //    {
            //        if (newObj.transform.GetChild(j).GetComponent<MeshRenderer>() != null)
            //        {
            //            if (obj.objDataList[i].textures[j] == -1)
            //            {
            //                continue;
            //            }
            //            LocalPlayer.CmdSetSyncListInt(newObj, j, obj.objDataList[i].textures[j]);
            //            //newObj.transform.GetChild(j).GetComponent<MeshRenderer>().material.mainTexture = FurnitureTextures[obj.objDataList[i].textures[j]];
            //            //newObj.transform.GetChild(j).GetComponent<DropObject>().SetMaterial(FurnitureTextures[obj.objDataList[i].textures[j]]);
            //            //newObj.transform.GetChild(j).GetComponent<DropObject>().textureName = FurnitureTextures[obj.objDataList[i].textures[j]].name;
            //            //Debug.Log(newObj.transform.GetChild(j).GetComponent<DropObject>().textureName);
            //        }

            //    }
            //}
        }
    }
示例#5
0
    public ObjDataList FurnitureToList()
    {
        //자식 객체 카운트 구함
        int childCnt = transform.childCount;
        int len      = FurnitureTextures.Length;

        //가구정보들을 담는 리스트 객체 초기화
        ObjDataList obj = new ObjDataList();

        string[] wallTexture = new  string[6];
        wallTexture[0] = GameObject.Find("Room").transform.Find("Top").GetComponent <DropObject>().textureName;
        wallTexture[1] = GameObject.Find("Room").transform.Find("Wall1").GetComponent <DropObject>().textureName;
        wallTexture[2] = GameObject.Find("Room").transform.Find("Wall2").GetComponent <DropObject>().textureName;
        wallTexture[3] = GameObject.Find("Room").transform.Find("Wall3").GetComponent <DropObject>().textureName;
        wallTexture[4] = GameObject.Find("Room").transform.Find("Wall4").GetComponent <DropObject>().textureName;
        wallTexture[5] = GameObject.Find("Room").transform.Find("Bottom").GetComponent <DropObject>().textureName;


        if (wallTexture[0] == "")
        {
            obj.top = -1;
        }
        if (wallTexture[1] == "")
        {
            obj.wall1 = -1;
        }
        if (wallTexture[2] == "")
        {
            obj.wall2 = -1;
        }
        if (wallTexture[3] == "")
        {
            obj.wall3 = -1;
        }
        if (wallTexture[4] == "")
        {
            obj.wall4 = -1;
        }
        if (wallTexture[5] == "")
        {
            obj.bottom = -1;
        }

        for (int k = 0; k < len; k++)
        {
            //Debug.Log(cur.GetChild(j).GetComponent<DropObject>().textureName + ", " + FurnitureTextures[k]);

            if (FurnitureTextures[k].name == wallTexture[0])
            {
                obj.top = k;
            }
            if (FurnitureTextures[k].name == wallTexture[1])
            {
                obj.wall1 = k;
            }
            if (FurnitureTextures[k].name == wallTexture[2])
            {
                obj.wall2 = k;
            }
            if (FurnitureTextures[k].name == wallTexture[3])
            {
                obj.wall3 = k;
            }
            if (FurnitureTextures[k].name == wallTexture[4])
            {
                obj.wall4 = k;
            }
            if (FurnitureTextures[k].name == wallTexture[5])
            {
                obj.bottom = k;
            }
        }
        obj.objDataList = new List <ObjData>();

        //총 가구 개수 만큼 리스트에 추가함
        for (int i = 0; i < childCnt; i++)
        {
            //자식 가구 Transform 받아옴
            Transform cur = transform.GetChild(i);

            //가구 정보 담는 객체 생성
            ObjData objData = new ObjData();
            objData.textures = new int[10];

            //가구 정보 할당
            objData.position = cur.position;
            objData.rotation = cur.rotation;
            objData.name     = cur.name;



            //색 저장
            int cnt = cur.childCount;


            if (cnt > 0)
            {
                for (int j = 0; j < cnt; j++)
                {
                    if (cur.GetChild(j).GetComponent <DropObject>() == null)
                    {
                        continue;
                    }
                    if (cur.GetChild(j).GetComponent <MeshRenderer>() != null)
                    {
                        if (cur.GetChild(j).GetComponent <DropObject>().textureName == "")
                        {
                            objData.textures[j] = -1;
                        }


                        for (int k = 0; k < len; k++)
                        {
                            //Debug.Log(cur.GetChild(j).GetComponent<DropObject>().textureName + ", " + FurnitureTextures[k]);
                            if (FurnitureTextures[k].name == cur.GetChild(j).GetComponent <DropObject>().textureName)
                            {
                                Debug.Log(cur.GetChild(j).GetComponent <DropObject>().textureName + ", " + FurnitureTextures[k].name);
                                objData.textures[j] = k;
                            }
                        }

                        //Debug.Log(cur.GetChild(j).GetComponent<MeshRenderer>().material.mainTexture.name);
                    }
                }
            }
            else
            {
                if (cur.GetComponent <DropObject>() != null)
                {
                    if (cur.GetComponent <DropObject>().textureName == "")
                    {
                        objData.textures[0] = -1;
                    }
                    else
                    {
                        for (int k = 0; k < len; k++)
                        {
                            //Debug.Log(cur.GetChild(j).GetComponent<DropObject>().textureName + ", " + FurnitureTextures[k]);
                            if (FurnitureTextures[k].name == cur.GetComponent <DropObject>().textureName)
                            {
                                Debug.Log(cur.GetComponent <DropObject>().textureName + ", " + FurnitureTextures[k].name);
                                objData.textures[0] = k;
                            }
                        }
                    }
                }
            }

            //리스트에 가구 정보 추가
            obj.objDataList.Add(objData);
        }
        return(obj);
    }