private IEnumerator Func(object[] arg1)
    {
        yield return(new WaitForEndOfFrame());

        PreScanData preScanData = new PreScanData();

        TouchCaptureScreen.Instance.AoutCaptureScreenImage();

        yield return(new WaitForSeconds(0.01f));

        yield return(new WaitForEndOfFrame());

        yield return(new WaitForSeconds(0.01f));

        yield return(new WaitForEndOfFrame());

        Texture2D texture = TouchCaptureScreen.Instance.texture;

        string textureEncoding = "";

        if (texture != null)
        {
            byte[] bytes = texture.EncodeToJPG();
            GameObject.DestroyImmediate(texture, true);
            if (inputMachine.currentInputIs2D)
            {
                //prefabs.helpCamera.gameObject.SetActive(false);
            }
            textureEncoding = System.Convert.ToBase64String(bytes,
                                                            0,
                                                            bytes.Length,
                                                            Base64FormattingOptions.None
                                                            );
            Debug.LogWarning("截屏成功");
        }
        else
        {
            Debug.LogWarning("截屏失败");
        }

        preScanData.imagemeta = textureEncoding;
        preScanData.id        = scandataList.Count;
        preScanData.position  = prefabs.mainCamera.transform.position;
        preScanData.rotate    = prefabs.mainCamera.transform.rotation.eulerAngles;
        preScanData.focaseP   = camera3DState.focaseP;
        preScanData.follow    = camera3DState.follow;

        undoHelper.save();
        scandataList.Add(preScanData);

        cameraViewScroll.Display(scandataList);
        UITool.SetActionTrue(cameraViewPage.RectCameraViewScroll.gameObject);
        UITool.SetActionFalse(cameraViewPage.cameraViewAdd.gameObject);
    }
    private void OnItemClick(int index)
    {
        PreScanData itemdata = scandataList[index] as PreScanData;

        prefabs.mainCamera.transform.position = itemdata.position;
        prefabs.mainCamera.transform.rotation = Quaternion.Euler(itemdata.rotate);
        camera3DState.follow  = itemdata.follow;
        camera3DState.focaseP = itemdata.focaseP;
        //exit();
        Debug.Log("显示 相机视图");
    }
Example #3
0
    /// <summary>
    /// 保存一次数据  使用方法:应该先使用保存 再更改变化
    /// </summary>
    public void save()
    {
        //Debug.Log("Saved");
        if (undoDatas.Count > 100)
        {
            undoDatas.RemoveAt(0);
        }

        currentData.data.ResetId();
        currentData.SaveId++;

        ///新保存的数据
        TotalData inputdata = new TotalData();

        inputdata.SaveId         = currentData.SaveId;
        inputdata.schemeManifest = currentData.schemeManifest;

        for (int i = 0; i < currentData.data.wallList.Count; i++)
        {
            WallData wall    = currentData.data.wallList[i];
            WallData newWall = new WallData();
            newWall.guid   = wall.guid;
            newWall.height = wall.height;
            newWall.width  = wall.width;
            Point p1 = getPointById(wall.point1.guid, inputdata.data);
            if (p1 == null)
            {
                p1      = new Point();
                p1.guid = wall.point1.guid;
                p1.pos  = wall.point1.pos;
                inputdata.data.AddPoint(p1);
            }
            newWall.point1 = p1;
            Point p2 = getPointById(wall.point2.guid, inputdata.data);
            if (p2 == null)
            {
                p2      = new Point();
                p2.guid = wall.point2.guid;
                p2.pos  = wall.point2.pos;
                inputdata.data.AddPoint(p2);
            }
            newWall.point2 = p2;
            WallSideData newSide1 = new WallSideData();
            newSide1.guid    = wall.point1To2Data.guid;
            newSide1.forward = wall.point1To2Data.forward;
            MaterialData materialData = new MaterialData();
            materialData.textureURI = wall.point1To2Data.materialData.textureURI;
            materialData.id         = wall.point1To2Data.materialData.id;
            materialData.guid       = wall.point1To2Data.materialData.guid;
            materialData.seekId     = wall.point1To2Data.materialData.seekId;
            materialData.color      = wall.point1To2Data.materialData.color;
            materialData.tileSize_x = wall.point1To2Data.materialData.tileSize_x;
            materialData.tileSize_y = wall.point1To2Data.materialData.tileSize_y;
            materialData.rotation   = wall.point1To2Data.materialData.rotation;
            materialData.offsetX    = wall.point1To2Data.materialData.offsetX;
            materialData.offsetY    = wall.point1To2Data.materialData.offsetY;
            newSide1.materialData   = materialData;
            //newSide1.texture = wall.point1To2Data.texture;
            //newSide1.mesh = wall.point1To2Data.mesh;
            newSide1.targetWall = newWall;

            TBaseboard newTBaseboard = new TBaseboard(true);
            newTBaseboard.guid    = wall.point1To2Data.tBaseboard.guid;
            newTBaseboard.id      = wall.point1To2Data.tBaseboard.id;
            newTBaseboard.hide    = wall.point1To2Data.tBaseboard.hide;
            newTBaseboard.isT     = wall.point1To2Data.tBaseboard.isT;
            newTBaseboard.type    = wall.point1To2Data.tBaseboard.type;
            newTBaseboard.width   = wall.point1To2Data.tBaseboard.width;
            newTBaseboard.height  = wall.point1To2Data.tBaseboard.height;
            newTBaseboard.disRoot = wall.point1To2Data.tBaseboard.disRoot;
            if (wall.point1To2Data.tBaseboard.materialData != null)
            {
                MaterialData tMaterialData = new MaterialData();
                tMaterialData.textureURI   = wall.point1To2Data.tBaseboard.materialData.textureURI;
                tMaterialData.id           = wall.point1To2Data.tBaseboard.materialData.id;
                tMaterialData.guid         = wall.point1To2Data.tBaseboard.materialData.guid;
                tMaterialData.seekId       = wall.point1To2Data.tBaseboard.materialData.seekId;
                tMaterialData.color        = wall.point1To2Data.tBaseboard.materialData.color;
                tMaterialData.tileSize_x   = wall.point1To2Data.tBaseboard.materialData.tileSize_x;
                tMaterialData.tileSize_y   = wall.point1To2Data.tBaseboard.materialData.tileSize_y;
                tMaterialData.rotation     = wall.point1To2Data.tBaseboard.materialData.rotation;
                tMaterialData.offsetX      = wall.point1To2Data.tBaseboard.materialData.offsetX;
                tMaterialData.offsetY      = wall.point1To2Data.tBaseboard.materialData.offsetY;
                newTBaseboard.materialData = tMaterialData;//wall.point1To2Data.tBaseboard.materialData;
            }
            newSide1.tBaseboard = newTBaseboard;
            TBaseboard newTopBaseboard = new TBaseboard(true);
            newTopBaseboard.guid    = wall.point1To2Data.topBaseboard.guid;
            newTopBaseboard.id      = wall.point1To2Data.topBaseboard.id;
            newTopBaseboard.hide    = wall.point1To2Data.topBaseboard.hide;
            newTopBaseboard.isT     = wall.point1To2Data.topBaseboard.isT;
            newTopBaseboard.type    = wall.point1To2Data.topBaseboard.type;
            newTopBaseboard.width   = wall.point1To2Data.topBaseboard.width;
            newTopBaseboard.height  = wall.point1To2Data.topBaseboard.height;
            newTopBaseboard.disRoot = wall.point1To2Data.topBaseboard.disRoot;
            if (wall.point1To2Data.topBaseboard.materialData != null)
            {
                MaterialData topMaterialData = new MaterialData();
                topMaterialData.textureURI   = wall.point1To2Data.topBaseboard.materialData.textureURI;
                topMaterialData.id           = wall.point1To2Data.topBaseboard.materialData.id;
                topMaterialData.guid         = wall.point1To2Data.topBaseboard.materialData.guid;
                topMaterialData.seekId       = wall.point1To2Data.topBaseboard.materialData.seekId;
                topMaterialData.color        = wall.point1To2Data.topBaseboard.materialData.color;
                topMaterialData.tileSize_x   = wall.point1To2Data.topBaseboard.materialData.tileSize_x;
                topMaterialData.tileSize_y   = wall.point1To2Data.topBaseboard.materialData.tileSize_y;
                topMaterialData.rotation     = wall.point1To2Data.topBaseboard.materialData.rotation;
                topMaterialData.offsetX      = wall.point1To2Data.topBaseboard.materialData.offsetX;
                topMaterialData.offsetY      = wall.point1To2Data.topBaseboard.materialData.offsetY;
                newTopBaseboard.materialData = topMaterialData;
            }
            newSide1.topBaseboard = newTopBaseboard;

            newWall.point1To2Data = newSide1;

            WallSideData newSide2 = new WallSideData();
            newSide2.guid    = wall.point2To1Data.guid;
            newSide2.forward = wall.point2To1Data.forward;
            MaterialData materialData2 = new MaterialData();
            materialData2.textureURI = wall.point2To1Data.materialData.textureURI;
            materialData2.id         = wall.point2To1Data.materialData.id;
            materialData2.guid       = wall.point2To1Data.materialData.guid;
            materialData2.seekId     = wall.point2To1Data.materialData.seekId;
            materialData2.color      = wall.point2To1Data.materialData.color;
            materialData2.tileSize_x = wall.point2To1Data.materialData.tileSize_x;
            materialData2.tileSize_y = wall.point2To1Data.materialData.tileSize_y;
            materialData2.rotation   = wall.point2To1Data.materialData.rotation;
            materialData2.offsetX    = wall.point2To1Data.materialData.offsetX;
            materialData2.offsetY    = wall.point2To1Data.materialData.offsetY;
            newSide2.materialData    = materialData2;
            //newSide2.texture = wall.point2To1Data.texture;
            //newSide2.mesh = wall.point2To1Data.mesh;
            newSide2.targetWall = newWall;

            TBaseboard newTBaseboard2 = new TBaseboard(true);
            newTBaseboard2.guid    = wall.point2To1Data.tBaseboard.guid;
            newTBaseboard2.id      = wall.point2To1Data.tBaseboard.id;
            newTBaseboard2.hide    = wall.point2To1Data.tBaseboard.hide;
            newTBaseboard2.isT     = wall.point2To1Data.tBaseboard.isT;
            newTBaseboard2.type    = wall.point2To1Data.tBaseboard.type;
            newTBaseboard2.width   = wall.point2To1Data.tBaseboard.width;
            newTBaseboard2.height  = wall.point2To1Data.tBaseboard.height;
            newTBaseboard2.disRoot = wall.point2To1Data.tBaseboard.disRoot;
            if (wall.point2To1Data.tBaseboard.materialData != null)
            {
                MaterialData tMaterialData2 = new MaterialData();
                tMaterialData2.textureURI   = wall.point2To1Data.tBaseboard.materialData.textureURI;
                tMaterialData2.id           = wall.point2To1Data.tBaseboard.materialData.id;
                tMaterialData2.guid         = wall.point2To1Data.tBaseboard.materialData.guid;
                tMaterialData2.seekId       = wall.point2To1Data.tBaseboard.materialData.seekId;
                tMaterialData2.color        = wall.point2To1Data.tBaseboard.materialData.color;
                tMaterialData2.tileSize_x   = wall.point2To1Data.tBaseboard.materialData.tileSize_x;
                tMaterialData2.tileSize_y   = wall.point2To1Data.tBaseboard.materialData.tileSize_y;
                tMaterialData2.rotation     = wall.point2To1Data.tBaseboard.materialData.rotation;
                tMaterialData2.offsetX      = wall.point2To1Data.tBaseboard.materialData.offsetX;
                tMaterialData2.offsetY      = wall.point2To1Data.tBaseboard.materialData.offsetY;
                newTBaseboard2.materialData = tMaterialData2;//wall.point2To1Data.tBaseboard.materialData;
            }
            newSide2.tBaseboard = newTBaseboard2;
            TBaseboard newTopBaseboard2 = new TBaseboard(true);
            newTopBaseboard2.guid    = wall.point2To1Data.topBaseboard.guid;
            newTopBaseboard2.id      = wall.point2To1Data.topBaseboard.id;
            newTopBaseboard2.hide    = wall.point2To1Data.topBaseboard.hide;
            newTopBaseboard2.isT     = wall.point2To1Data.topBaseboard.isT;
            newTopBaseboard2.type    = wall.point2To1Data.topBaseboard.type;
            newTopBaseboard2.width   = wall.point2To1Data.topBaseboard.width;
            newTopBaseboard2.height  = wall.point2To1Data.topBaseboard.height;
            newTopBaseboard2.disRoot = wall.point2To1Data.topBaseboard.disRoot;
            if (wall.point2To1Data.topBaseboard.materialData != null)
            {
                MaterialData topMaterialData2 = new MaterialData();
                topMaterialData2.textureURI   = wall.point2To1Data.topBaseboard.materialData.textureURI;
                topMaterialData2.id           = wall.point2To1Data.topBaseboard.materialData.id;
                topMaterialData2.guid         = wall.point2To1Data.topBaseboard.materialData.guid;
                topMaterialData2.seekId       = wall.point2To1Data.topBaseboard.materialData.seekId;
                topMaterialData2.color        = wall.point2To1Data.topBaseboard.materialData.color;
                topMaterialData2.tileSize_x   = wall.point2To1Data.topBaseboard.materialData.tileSize_x;
                topMaterialData2.tileSize_y   = wall.point2To1Data.topBaseboard.materialData.tileSize_y;
                topMaterialData2.rotation     = wall.point2To1Data.topBaseboard.materialData.rotation;
                topMaterialData2.offsetX      = wall.point2To1Data.topBaseboard.materialData.offsetX;
                topMaterialData2.offsetY      = wall.point2To1Data.topBaseboard.materialData.offsetY;
                newTopBaseboard2.materialData = topMaterialData2;
            }
            newSide2.topBaseboard = newTopBaseboard2;

            newWall.point2To1Data = newSide2;

            inputdata.data.AddWall(newWall, true);
        }
        for (int i = 0; i < currentData.data.roomList.Count; i++)
        {
            RoomData room    = currentData.data.roomList[i];
            RoomData newroom = new RoomData();
            newroom.pointList     = new List <Point>();
            newroom.guid          = room.guid;
            newroom.name          = room.name;
            newroom.type          = room.type;
            newroom.ceilingHeight = room.ceilingHeight;
            //newroom.floor = room.floor;
            //newroom.ceiling = room.ceiling;

            MaterialData materialData = new MaterialData();
            materialData.textureURI = room.floor.textureURI;
            materialData.id         = room.floor.id;
            materialData.guid       = room.floor.guid;
            materialData.seekId     = room.floor.seekId;
            materialData.color      = room.floor.color;
            materialData.tileSize_x = room.floor.tileSize_x;
            materialData.tileSize_y = room.floor.tileSize_y;
            materialData.rotation   = room.floor.rotation;
            materialData.offsetX    = room.floor.offsetX;
            materialData.offsetY    = room.floor.offsetY;
            newroom.floor           = materialData;

            MaterialData materialData2 = new MaterialData();
            materialData2.textureURI = room.ceiling.textureURI;
            materialData2.id         = room.ceiling.id;
            materialData2.guid       = room.ceiling.guid;
            materialData2.seekId     = room.ceiling.seekId;
            materialData2.color      = room.ceiling.color;
            materialData2.tileSize_x = room.ceiling.tileSize_x;
            materialData2.tileSize_y = room.ceiling.tileSize_y;
            materialData2.rotation   = room.ceiling.rotation;
            materialData2.offsetX    = room.ceiling.offsetX;
            materialData2.offsetY    = room.ceiling.offsetY;
            newroom.ceiling          = materialData2;

            for (int k = 0; k < room.sideList.Count; k++)
            {
                WallSideData side    = room.sideList[k];
                WallSideData aimside = getSideById(side.guid, inputdata.data);
                if (aimside != null)
                {
                    newroom.sideList.Add(aimside);
                }
                else
                {
                    Debug.LogWarning("aimside == null");
                }
            }
            for (int k = 0; k < room.pointList.Count; k++)
            {
                Point point    = room.pointList[k];
                Point aimpoint = getPointById(point.guid, inputdata.data);
                newroom.pointList.Add(aimpoint);
            }
            inputdata.data.roomList.Add(newroom);
        }

        for (int i = 0; i < currentData.data.productDataList.Count; i++)
        {
            ProductData product    = currentData.data.productDataList[i];
            ProductData newproduct = new ProductData(product.id, product.position, product.rotate, product.seekId, product.height, product.type);
            newproduct.guid  = product.guid;
            newproduct.hide  = product.hide;
            newproduct.scale = product.scale;
            if (product.targetWall != null)
            {
                newproduct.targetWall = inputdata.data.GetWall(product.targetWall.guid);
            }
            else
            {
                newproduct.targetWall = null;
            }
            inputdata.data.productDataList.Add(newproduct);
        }

        for (int i = 0; i < currentData.data.maxAngleRooms.Count; i++)
        {
            RoomData room    = currentData.data.maxAngleRooms[i];
            RoomData newroom = new RoomData();
            newroom.pointList     = new List <Point>();
            newroom.guid          = room.guid;
            newroom.name          = room.name;
            newroom.type          = room.type;
            newroom.ceilingHeight = room.ceilingHeight;
            //newroom.floor = room.floor;
            //newroom.ceiling = room.ceiling;

            MaterialData materialData = new MaterialData();
            materialData.textureURI = room.floor.textureURI;
            materialData.id         = room.floor.id;
            materialData.guid       = room.floor.guid;
            materialData.seekId     = room.floor.seekId;
            materialData.color      = room.floor.color;
            materialData.tileSize_x = room.floor.tileSize_x;
            materialData.tileSize_y = room.floor.tileSize_y;
            materialData.rotation   = room.floor.rotation;
            materialData.offsetX    = room.floor.offsetX;
            materialData.offsetY    = room.floor.offsetY;
            newroom.floor           = materialData;

            MaterialData materialData2 = new MaterialData();
            materialData2.textureURI = room.ceiling.textureURI;
            materialData2.id         = room.ceiling.id;
            materialData2.guid       = room.ceiling.guid;
            materialData2.seekId     = room.ceiling.seekId;
            materialData2.color      = room.ceiling.color;
            materialData2.tileSize_x = room.ceiling.tileSize_x;
            materialData2.tileSize_y = room.ceiling.tileSize_y;
            materialData2.rotation   = room.ceiling.rotation;
            materialData2.offsetX    = room.ceiling.offsetX;
            materialData2.offsetY    = room.ceiling.offsetY;
            newroom.ceiling          = materialData2;

            for (int k = 0; k < room.sideList.Count; k++)
            {
                WallSideData side    = room.sideList[k];
                WallSideData aimside = getSideById(side.guid, inputdata.data);
                if (aimside != null)
                {
                    newroom.sideList.Add(aimside);
                }
                else
                {
                    Debug.LogWarning("aimside == null");
                }
            }
            for (int k = 0; k < room.pointList.Count; k++)
            {
                Point point    = room.pointList[k];
                Point aimpoint = getPointById(point.guid, inputdata.data);
                newroom.pointList.Add(aimpoint);
            }
            inputdata.data.maxAngleRooms.Add(newroom);
        }

        for (int i = 0; i < currentData.data.preScanDatas.Count; i++)
        {
            PreScanData scanData    = currentData.data.preScanDatas[i] as PreScanData;
            PreScanData newScanData = new PreScanData();
            newScanData.id        = scanData.id;
            newScanData.position  = scanData.position;
            newScanData.rotate    = scanData.rotate;
            newScanData.imagemeta = scanData.imagemeta;
            inputdata.data.preScanDatas.Add(newScanData);
        }

        inputdata.data.defaultsettings = currentData.data.defaultsettings;

        undoDatas.Add(inputdata);

        redoDatas.Clear();

        //jsonCacheManager.SaveSchemeToLocal();

        Resources.UnloadUnusedAssets();
    }
    public void DeSerialize(Dictionary<string, object> dic)
    {
        pointList.Clear();
        wallList.Clear();
        productDataList.Clear();
        roomList.Clear();
        productList = new List<Product>();
        preScanDatas.Clear();

        foreach (string key in dic.Keys)
        {
            switch (key)
            {
                case "pointList":
                    {
                        object obj = MyJsonTool.getValue(dic, key);
                        List<object> list = obj as List<object>;
                        for (int i = 0; i < list.Count; i++)
                        {
                            Point point = new Point();
                            point.DeSerialize(list[i] as Dictionary<string, object>);
                            pointList.Add(point);
                        }
                    }
                    break;
                case "wallList":
                    {
                        object obj = MyJsonTool.getValue(dic, key);
                        List<object> list = obj as List<object>;
                        for (int i = 0; i < list.Count; i++)
                        {
                            WallData wall = new WallData();
                            wall.DeSerialize(list[i] as Dictionary<string, object>);
                            wallList.Add(wall);
                        }
                    }
                    break;
                case "productDataList":
                    {
                        object obj = MyJsonTool.getValue(dic, key);
                        List<object> list = obj as List<object>;
                        for (int i = 0; i < list.Count; i++)
                        {
                            ProductData productdata = new ProductData();
                            productdata.DeSerialize(list[i] as Dictionary<string, object>);
                            productDataList.Add(productdata);
                        }
                    }
                    break;
                case "roomList":
                    {
                        object obj = MyJsonTool.getValue(dic, key);
                        List<object> list = obj as List<object>;
                        for (int i = 0; i < list.Count; i++)
                        {
                            RoomData room = new RoomData();
                            room.DeSerialize(list[i] as Dictionary<string, object>);
                            roomList.Add(room);
                        }
                    }
                    break;
                case "productList":
                    {
                        object obj = MyJsonTool.getValue(dic, key);
                        if (obj == null)
                        {
                            productList = null;
                            break;
                        }
                        List<object> list = obj as List<object>;
                        for (int i = 0; i < list.Count; i++)
                        {
                            Product product = new Product();
                            if (isOld)
                            {
                                JsonProduct jsonData = new JsonProduct();
                                jsonData.DeSerialize(list[i] as Dictionary<string, object>);
                                jsonData.WriteToData(product);
                            }
                            else {
                                product.DeSerialize(list[i] as Dictionary<string, object>);
                            }
                            productList.Add(product);
                            //if(product)
                        }
                    }
                    break;
                case "defaultsettings":
                    {
                        object obj = MyJsonTool.getValue(dic, key);
                        defaultsettings.DeSerialize(obj as Dictionary<string, object>);
                    }
                    break;
                case "maxAngleRooms":
                    {
                        object obj = MyJsonTool.getValue(dic, key);
                        List<object> list = obj as List<object>;
                        for (int i = 0; i < list.Count; i++)
                        {
                            RoomData room = new RoomData();
                            room.DeSerialize(list[i] as Dictionary<string, object>);
                            maxAngleRooms.Add(room);
                        }
                    }
                    break;
                case "preScanDatas":
                    {
                        object obj = MyJsonTool.getValue(dic, key);
                        List<object> list = obj as List<object>;
                        for (int i = 0; i < list.Count; i++)
                        {
                            PreScanData prescan = new PreScanData();
                            prescan.DeSerialize(list[i] as Dictionary<string, object>);
                            preScanDatas.Add(prescan);
                        }
                    }
                    break;
                default:
                    break;
            }
        }

        //恢复关联
        Dictionary<int, Point> pointDic = new Dictionary<int, Point>();
        Dictionary<int, WallData> wallDic = new Dictionary<int, WallData>();
        Dictionary<int, WallSideData> tempSideDic = new Dictionary<int, WallSideData>();
        for (int i = 0; i < pointList.Count; i++)
        {
            pointDic.Add(pointList[i].guid, pointList[i]);
        }
        for (int i = 0; i < wallList.Count; i++)
        {
            wallDic.Add(wallList[i].guid, wallList[i]);
            WallData wall = wallList[i];
            if (pointDic.ContainsKey(wall.point1Guid) == false)
            {
                Debug.LogError("wall.point1Guid = "+ wall.point1Guid + "对应的Point不存在");
            }
            else {
                wall.point1 = pointDic[wall.point1Guid];
            }
            if (pointDic.ContainsKey(wall.point2Guid) == false)
            {
                Debug.LogError("wall.point2Guid = " + wall.point2Guid + "对应的Point不存在");
            }
            else {
                wall.point2 = pointDic[wall.point2Guid];
            }
            wall.point1To2Data.targetWall = wall;
            wall.point2To1Data.targetWall = wall;
            tempSideDic.Add(wall.point1To2Data.guid, wall.point1To2Data);
            tempSideDic.Add(wall.point2To1Data.guid, wall.point2To1Data);
        }
        for (int i = 0; i < productDataList.Count; i++)
        {
            ProductData productData = productDataList[i];
            if (productData.targetWallGuid != -1)
            {
                if (wallDic.ContainsKey(productData.targetWallGuid))
                {
                    productData.targetWall = wallDic[productData.targetWallGuid];
                }
                else
                {
                    Debug.LogError("productData.targetWallGuid = "+ productData.targetWallGuid + "对应的Wall不存在");
                    productData.targetWall = null;
                }
            }
            else {
                productData.targetWall = null;
            }
        }
        for (int i = 0; i < roomList.Count; i++)
        {
            RoomData room = roomList[i];
            for (int k = 0; k < room.sideListGuids.Count; k++)
            {
                if (tempSideDic.ContainsKey(room.sideListGuids[k]) == false)
                {
                    Debug.LogError("room.sideListGuids[k] = " + room.sideListGuids[k] + "对应的WallSideData不存在");
                    continue;
                }
                room.sideList.Add(tempSideDic[room.sideListGuids[k]]);
            }
            room.pointList = new List<Point>();
            for (int k = 0; k < room.pointListGuids.Count; k++)
            {
                if (pointDic.ContainsKey(room.pointListGuids[k]) == false)
                {
                    Debug.LogError("room.pointListGuids[k] = " + room.pointListGuids[k] + "对应的Point不存在");
                    continue;
                }
                room.pointList.Add(pointDic[room.pointListGuids[k]]);
            }
        }

        for (int i = 0; i < maxAngleRooms.Count; i++)
        {
            RoomData room = maxAngleRooms[i];
            for (int k = 0; k < room.sideListGuids.Count; k++)
            {
                if (tempSideDic.ContainsKey(room.sideListGuids[k]) == false)
                {
                    Debug.LogError("room.sideListGuids[k] = " + room.sideListGuids[k] + "对应的WallSideData不存在");
                    continue;
                }
                room.sideList.Add(tempSideDic[room.sideListGuids[k]]);
            }
            room.pointList = new List<Point>();
            for (int k = 0; k < room.pointListGuids.Count; k++)
            {
                if (pointDic.ContainsKey(room.pointListGuids[k]) == false)
                {
                    Debug.LogError("room.pointListGuids[k] = " + room.pointListGuids[k] + "对应的Point不存在");
                    continue;
                }
                room.pointList.Add(pointDic[room.pointListGuids[k]]);
            }
        }

        MainPageUIData.Instance.productDic.Clear();
        MainPageUIData.Instance.GoodsDic.Clear();

        if (productList != null)
        {
            for (int i = 0; i < productList.Count; i++)
            {
                MainPageUIData.Instance.AddProduct(productList[i]);
            }
        }
    }