コード例 #1
0
    public override void RefreshView()
    {
        //Debug.Log("view2D RefreshView");
        RefreshGameObjs();
        base.RefreshView();

        #region room
        for (int i = 0; i < data.roomList.Count; i++)
        {
            GameObject obj  = floors[i];
            RoomView   view = obj.GetComponent <RoomView>();
            RoomData   room = data.roomList[i];
            view.SetData(room);
            List <Vector2> v2s = roomfunc.SetMesh(obj, room);
            Vector2        v2  = v2s[0];
            obj.transform.localPosition = new Vector3(v2.x, v2.y, obj.transform.localPosition.z);
            for (int k = 0; k < v2s.Count; k++)
            {
                v2s[k] = v2s[k] - v2;
            }
            MaterialData           floor = room.floor;
            List <List <Vector2> > list  = linefunc.SetMesh(v2s, obj, floor.offsetX, floor.offsetY, floor.rotation, floor.tileSize_x, floor.tileSize_y, true);
            if (list != null)
            {
                roomfunc.SetArea(areas[i], list, v2);
            }
            if (selectObjData == room)
            {
                if (selectRoom == null)
                {
                    selectRoom = prefabs.GetNewInstance_selectRoom().gameObject;
                }
                selectRoom.transform.localPosition = obj.transform.localPosition - Vector3.forward;
                linefunc.SetMesh(v2s, selectRoom, floor.offsetX, floor.offsetY, floor.rotation, floor.tileSize_x, floor.tileSize_y, true);
                selectRoom.SetActive(true);
            }
            Transform tran     = areas[i].transform.FindChild("name");
            TextMesh  textmesh = tran.GetComponent <TextMesh>();
            textmesh.text = room.type;
        }

        if ((selectObjData == null || selectObjData is RoomData == false) && selectRoom != null)
        {
            selectRoom.SetActive(false);
        }
        #endregion

        #region wall
        for (int i = 0; i < data.wallList.Count; i++)
        {
            WallData walldata = data.wallList[i];

            GameObject wallline     = wallLines[i];
            GameObject wallLeft     = wallsideLines[2 * i];
            GameObject wallRight    = wallsideLines[2 * i + 1];
            GameObject wallLeftEnd  = wallEndLines[2 * i];
            GameObject wallRightEnd = wallEndLines[2 * i + 1];
            if (walldata.hide == true)
            {
                wallline.SetActive(false);
                wallLeft.SetActive(false);
                wallRight.SetActive(false);
                wallLeftEnd.SetActive(false);
                wallRightEnd.SetActive(false);

                showLenLines[2 * i + 1].SetActive(false);
                showLenPoints[4 * i + 2].SetActive(false);
                showLenPoints[4 * i + 3].SetActive(false);
                showWords[2 * i + 1].SetActive(false);

                showLenLines[2 * i].SetActive(false);
                showLenPoints[4 * i].SetActive(false);
                showLenPoints[4 * i + 1].SetActive(false);
                showWords[2 * i].SetActive(false);
                continue;
            }
            else
            {
                wallline.SetActive(true);
                wallLeft.SetActive(true);
                wallRight.SetActive(true);
                //wallLeftEnd.SetActive(true);
                //wallRightEnd.SetActive(true);

                //showLenLines[2 * i + 1].SetActive(true);
                //showLenPoints[4 * i + 2].SetActive(true);
                //showLenPoints[4 * i + 3].SetActive(true);
                //showWords[2 * i + 1].SetActive(true);

                //showLenLines[2 * i].SetActive(true);
                //showLenPoints[4 * i].SetActive(true);
                //showLenPoints[4 * i + 1].SetActive(true);
                //showWords[2 * i].SetActive(true);
            }
            List <Vector2> tempList;
            SetObjWithData(walldata, wallline, wallLeft, wallRight, wallLeftEnd, wallRightEnd, out tempList);

            RoomData side1OnRoom = data.WallSideOnRoom(walldata.point1To2Data);
            RoomData side2OnRoom = data.WallSideOnRoom(walldata.point2To1Data);
            if (side2OnRoom != null)
            {
                ///左侧显示
                GameObject showline  = showLenLines[2 * i + 1];
                GameObject showLeft  = showLenPoints[4 * i + 2];
                GameObject showRight = showLenPoints[4 * i + 3];
                GameObject showWord  = showWords[2 * i + 1];
                SetShowObjWithData(walldata, showline, showLeft, showRight, showWord, tempList[4], tempList[5], walldata.c4);
            }
            if (side1OnRoom != null || side2OnRoom == null)
            {
                ///右侧显示
                GameObject showline  = showLenLines[2 * i];
                GameObject showLeft  = showLenPoints[4 * i];
                GameObject showRight = showLenPoints[4 * i + 1];
                GameObject showWord  = showWords[2 * i];
                SetShowObjWithData(walldata, showline, showLeft, showRight, showWord, tempList[1], tempList[2], walldata.c3);
            }
        }

        if ((selectObjData == null || selectObjData is WallData == false) && selectWall != null)
        {
            selectWall.SetActive(false);
        }
        if ((selectObjData is ProductData == false || selectGoodsdisedWalldata == null) && selectDisedwall != null)
        {
            selectDisedwall.SetActive(false);
        }
        #endregion

        #region point
        for (int i = 0; i < data.pointList.Count; i++)
        {
            Point   p   = data.pointList[i];
            Vector2 pos = p.pos;
            //Debug.LogWarning("show "+ pos);
            wallPoints[i].transform.localPosition = new Vector3(pos.x, pos.y, wallPoints[i].transform.localPosition.z);
            wallPoints[i].name = "Point " + p.guid;
            PointView view = wallPoints[i].GetComponent <PointView>();
            if (view == null)
            {
                Debug.LogWarning("wallPoints[i].GetComponent<PointView>() == null"); continue;
            }
            view.SetData(p);
            if (selectObjData == p)
            {
                if (selectPoint == null)
                {
                    selectPoint = prefabs.GetNewInstance_selectPoint().gameObject;
                }
                selectPoint.transform.localPosition = wallPoints[i].transform.localPosition - Vector3.forward;
                selectPoint.SetActive(true);
            }
        }
        if ((selectObjData == null || selectObjData is Point == false) && selectPoint != null)
        {
            selectPoint.SetActive(false);
        }
        #endregion

        #region setWallLength
        for (int i = 0; i < inputWallLengths.Count; i++)
        {
            inputWallLengths[i].SetActive(false);
        }
        if (selectObjData is WallData)
        {
            WallData wall        = selectObjData as WallData;
            int      wallIndex   = data.wallList.IndexOf(wall);
            RoomData side1OnRoom = data.WallSideOnRoom(wall.point1To2Data);
            RoomData side2OnRoom = data.WallSideOnRoom(wall.point2To1Data);
            if (side1OnRoom != null)
            {
                tempSideList = new List <Point>();

                GameObject          goF     = inputWallLengths[3];
                SetLengthHandleView viewF   = goF.GetComponent <SetLengthHandleView>();
                WallSideData        indexF1 = roomfunc.GetNearCrossSide(side1OnRoom, wall.point1To2Data, true, tempSideList);
                viewF.SetData(indexF1);
                goF.SetActive(true);

                GameObject          goT     = inputWallLengths[4];
                SetLengthHandleView viewT   = goT.GetComponent <SetLengthHandleView>();
                WallSideData        indexT1 = roomfunc.GetNearCrossSide(side1OnRoom, wall.point1To2Data, false, tempSideList);
                viewT.SetData(indexT1);
                goT.SetActive(true);

                viewF.otherdata           = indexT1;
                viewT.otherdata           = indexF1;
                viewF.ForT                = true;
                viewT.ForT                = false;
                viewF.isParallelPointList = tempSideList;
                viewT.isParallelPointList = tempSideList;
            }
            if (side2OnRoom != null)
            {
                tempSideList = new List <Point>();

                GameObject          goF     = inputWallLengths[1];
                SetLengthHandleView viewF   = goF.GetComponent <SetLengthHandleView>();
                WallSideData        indexF2 = roomfunc.GetNearCrossSide(side2OnRoom, wall.point2To1Data, true, tempSideList);
                viewF.SetData(indexF2);
                goF.SetActive(true);

                GameObject          goT     = inputWallLengths[2];
                SetLengthHandleView viewT   = goT.GetComponent <SetLengthHandleView>();
                WallSideData        indexT2 = roomfunc.GetNearCrossSide(side2OnRoom, wall.point2To1Data, false, tempSideList);
                viewT.SetData(indexT2);
                goT.SetActive(true);

                viewF.otherdata           = indexT2;
                viewT.otherdata           = indexF2;
                viewF.ForT                = true;
                viewT.ForT                = false;
                viewF.isParallelPointList = tempSideList;
                viewT.isParallelPointList = tempSideList;
            }

            GameObject go = inputWallLengths[0];
            if (side1OnRoom == null && side2OnRoom == null)
            {
                WallSideData        side = wall.point1To2Data;
                SetLengthHandleView view = go.GetComponent <SetLengthHandleView>();
                view.SetData(side);
                view.otherdata = null;
                go.SetActive(true);
            }
            else
            {
                go.SetActive(false);
            }
        }
        #endregion
    }
コード例 #2
0
 public void setData(SetLengthHandleView view, Action exit)
 {
     this.bringData = view;
     this.deleExit  = exit;
     control.OpenInput(currentWall.text.text, currentWall.text, onChange);
 }