//private bool PointOnWall(Point p, WallData wall)
 //{
 //    return PointOnWall(p.pos, wall);
 //}
 private bool PointOnWall(Vector2 v2, WallData wall)
 {
     float wallLen = Vector2.Distance(wall.point1.pos, wall.point2.pos);
     float len1 = Vector2.Distance(wall.point1.pos, v2);
     float len2 = Vector2.Distance(wall.point2.pos, v2);
     if (len1 + len2 - wallLen > 0.01f)
     {
         return false;
     }
     return true;
 }
Example #2
0
    public void GetPrefab_LevelElementIsWallData_ReturnWallPrefab()
    {
        // Arrange
        WallData wallData = Substitute.For <WallData>(dummyPos);

        // Act
        GameObject actualResult = prefabTable.GetPrefab(wallData);

        // Assert
        NUnit.Framework.Assert.IsNotNull(actualResult);
        NUnit.Framework.Assert.AreEqual(prefabTable.wallPrefab, actualResult);
    }
Example #3
0
    public void SetWallText(GameObject wall, string text, bool is_correct, int index)
    {
        WallData c = wall.AddComponent <WallData>();

        c.correct = is_correct;
        c.index   = index;
        Vector3    pos = wall.transform.position + new Vector3(0, 0, -1.1f);
        GameObject txt = Instantiate(text_prefab, pos, Quaternion.Euler(0, 0, 0));

        txt.GetComponent <TextMeshPro>().SetText(text);
        txt.GetComponent <TextMeshPro>().alignment = (TextAlignmentOptions.Center);
    }
Example #4
0
    public Vector3 GetPos(WallSideData wallside)
    {
        WallData       wall    = wallside.targetWall;
        List <Vector2> v2s     = GetWallVerticesPos(wall);
        Vector2        v21     = wallside.forward == true ? v2s[1] : v2s[4];
        Vector2        v22     = wallside.forward == true ? v2s[2] : v2s[5];
        float          c       = wallside.forward == true ? wall.c5 : wall.c6;
        Vector3        v2start = linefunc.GetDisPoint(wall.a, wall.b, c, v21.x, v21.y);
        Vector3        v2end   = linefunc.GetDisPoint(wall.a, wall.b, c, v22.x, v22.y);

        return((v2start + v2end) / 2);
    }
Example #5
0
    private void StreightAndCurvedWallsTest()
    {
        var nextWall = WallData.CreateStreight(new Vector2(0f, 0f), new Vector2(0f, 2f), 0.2f, 2f);
        var prevWall = WallData.CreateStreight(new Vector2(3f, 2f), new Vector2(3f, 0f), 0.1f, 2f);

        var curvedWall1 = WallData.CreateCurved(
            new Vector2(3f, 0f),
            new Vector2(1.5f, -1.5f),
            new Vector2(0f, 0f),
            0.15f,
            2f,
            new[]
        {
            new OpeningData(OpeningType.Outer, CreateBezierHoleShape(), 0.05f),
            new OpeningData(OpeningType.Inner, CreateRectHoleShape())
        });

        var curvedWall2 = curvedWall1.Reverse();

/*        var curvedWall2 = WallData.CreateCurved (
 *          new Vector2 (3f, 0f),
 *          new Vector2 (1.5f, -1.5f),
 *          new Vector2 (0f, 0f),
 *          0.15f,
 *          2f,
 *          new[]
 *          {
 *              new OpeningData (OpeningType.Through, CreateBezierHoleShape (), 0.05f),
 *              new OpeningData (OpeningType.Through, CreateRectHoleShape ())
 *          });*/

        var matrix       = Matrix3x2.CreateTranslation(0f, 3f);
        var streightWall = WallData.CreateStreight(
            new Vector2(3f, 0f),
            new Vector2(0f, 0f),
            0.3f,
            2f,
            new[]
        {
            new OpeningData(OpeningType.Through, CreateBezierHoleShape()),
            new OpeningData(OpeningType.Through, CreateRectHoleShape())
        });

        RoomMeshesGenerator.CreateWallMeshes(curvedWall1, null, null);
//        SingleWallTest (streightWall.Transform (matrix), nextWall.Transform (matrix), prevWall.Transform (matrix));
        RoomMeshesGenerator.CreateWallMeshes(streightWall.Transform(matrix), nextWall.Transform(matrix), null);

        matrix = Matrix3x2.CreateTranslation(0f, -3f);
        RoomMeshesGenerator.CreateWallMeshes(
            curvedWall2.Transform(matrix),
            prevWall.Reverse().Transform(matrix),
            nextWall.Reverse().Transform(matrix));
    }
Example #6
0
 public WallSpawner(
     BuildingList buildingList,
     BuildingMapMatrixUpdater buildingMapMatrixUpdater,
     WallData wallData,
     MapLayerMatrixManager mapLayerMatrixManager,
     MapLayerMatrix mapLayerMatrixWalls
     ) : base(buildingList, buildingMapMatrixUpdater)
 {
     _wallData = wallData;
     _mapLayerMatrixManager = mapLayerMatrixManager;
     _mapLayerMatrixWalls   = mapLayerMatrixWalls;
 }
Example #7
0
    void AddAngle(int _id)
    {
        GameObject go = Instantiate(placedPrefab);

        go.transform.SetParent(container);

        WallData wallData = new WallData();

        wallData.anglesGO = go;
        wallData.id       = _id;
        walls.Add(wallData);
    }
Example #8
0
 private void finishDrawingWall()
 {
     CurrentlyDrawnWall.RemoveLastPoint();
     if (CurrentlyDrawnWall.anchors.Count <= 1)
     {
         FurnitureList.Remove(CurrentlyDrawnWall);
         listBox1.Refresh();
     }
     CurrentlyDrawnWall = null;
     SelectButton(WallButton);
     DrawDesign();
 }
Example #9
0
    /// <summary>
    /// Create wall data from list.
    /// </summary>
    /// <returns>List of LevelElementData.</returns>
    private List <LevelElementData> GetAdditionalWallData()
    {
        List <LevelElementData> walls = new List <LevelElementData>();

        foreach (JsonWallStructure wallStructure in wallElements)
        {
            WallData data = new WallData(new Vector2Int(wallStructure.Position.x, wallStructure.Position.y));
            walls.Add(data);
        }

        return(walls);
    }
 public void AddWall(WallData wall, bool whithoutChange = false)
 {
     //Debug.LogWarning("addWall " + wall.point1To2Data.id + " " + wall.point2To1Data.id);
     if (whithoutChange == false)
     {
         wall.point1To2Data.targetWall = wall;
         wall.point2To1Data.targetWall = wall;
         wall.point1To2Data.materialData = new MaterialData(-1, "3D/texture2D/wall3d.assetbundle");
         wall.point2To1Data.materialData = new MaterialData(-1, "3D/texture2D/wall3d.assetbundle");
         //Debug.LogWarning("AddWall " + wall.point1.guid+ " " + wall.point2.guid);
     }
     wallList.Add(wall);
 }
        private static OpeningPoint2D ProjectOpeningPoint(
            Vector2 openingPoint,
            WallData wall,
            UnfoldedCurve unfoldedWall,
            UnfoldedCurve unfoldedWallSide,
            Func <WallPointNormals, Vector2> normalGetter)
        {
/*            Debug.Log (
 *              $"unwrappedWall {string.Join (",", Array.ConvertAll (unwrappedWall.UnwrappedPoints, x => x.ToString ()))}");
 *
 *          Debug.Log (
 *              $"unwrappedWallSide {string.Join (",", Array.ConvertAll (unwrappedWallSide.UnwrappedPoints, x => x.ToString ()))}");*/

            var wallPoints = wall.Points;

            for (int i = 1; i < wallPoints.Length; i++)
            {
                if (openingPoint.x > unfoldedWall.UnfoldedPoints[i].X)
                {
                    continue;
                }

                var normals       = wall.Normals.Value;
                var normal        = normalGetter(normals[i]);
                var prevNormal    = normalGetter(normals[i - 1]);
                var averageNormal = normal + prevNormal;
                var unwrapped     = unfoldedWall
                                    .Unfold(new Vector2(openingPoint.x, 0f))
                                    .ToUnityVector2();

//                var unwrappedDebug = new Vector3 (unwrapped.x, openingPoint.y, unwrapped.y);

                var unwrappedOnSide = unwrapped.TransposePoint(averageNormal, wall.Width / 2f);
                var wrappedOnSide   = unfoldedWallSide.Fold(unwrappedOnSide);
                var result          = new Vector2(wrappedOnSide.x, openingPoint.y);

//                var unwrappedOnSideDebug = new Vector3 (unwrappedOnSide.x, openingPoint.y, unwrappedOnSide.y);

//                Debug.DrawLine(unwrappedDebug, unwrappedOnSideDebug, color, float.MaxValue);
//                Debug.DrawLine(unwrappedDebug, unwrappedOnSideDebug + new Vector3(normal.x, 0f, normal.y), Color.yellow, float.MaxValue);

/*
 *              Debug.Log (
 *                  $"openingPoint {openingPoint} unwrapped {unwrapped} unwrappedOnSide {unwrappedOnSide} wrappedOnSide {wrappedOnSide} result {result}");
 */

                return(new OpeningPoint2D(result, -averageNormal));
            }

            throw new NotImplementedException();
        }
Example #12
0
    public WallData GetHelpWallData(Point pointFrom, Point pointTo)
    {
        WallData wallData = null;

        for (int i = 0; i < helperData.helpLineList.Count; i++)
        {
            WallData item = data.wallList[i];
            if (item.equle(pointFrom, pointTo))
            {
                wallData = item;
            }
        }
        return(wallData);
    }
 private Vector3 calculateRotation(WallData data)
 {
     switch (data.wall) {
     case HallNode.Wall.RIGHT:
         return new Vector3 (0f, 90f, 0f);
     case HallNode.Wall.LEFT:
         return new Vector3 (0f, -90f, 0f);
     case HallNode.Wall.TOP:
         return new Vector3 (0f, 0f, 0f);
     case HallNode.Wall.BOTTOM:
         return new Vector3 (0f, 180f, 0f);
     }
     return new Vector3 (0f, 0f, 0f);
 }
Example #14
0
    public List <WallData> GetWallList(Point target)
    {
        List <WallData> list = new List <WallData>();

        for (int i = 0; i < data.wallList.Count; i++)
        {
            WallData item = data.wallList[i];
            if (item.Contines(target))
            {
                list.Add(item);
            }
        }
        return(list);
    }
Example #15
0
    public void Load(int id)
    {
        if (File.Exists(Application.persistentDataPath + "/" + roomScript.GetSaveFolderName() + "/wall" + id.ToString() + ".dat"))
        {
            BinaryFormatter binary = new BinaryFormatter();
            FileStream      file   = File.Open(Application.persistentDataPath + "/" + roomScript.GetSaveFolderName() + "/wall" + id.ToString() + ".dat", FileMode.Open);
            WallData        dat    = (WallData)binary.Deserialize(file);
            file.Close();

            transform.localRotation = new Quaternion(dat.rx, dat.ry, dat.rz, dat.rw);
            transform.localScale    = new Vector3(dat.sx, dat.sy, dat.sz);
            transform.position      = new Vector3(dat.px, dat.py, dat.pz);
            transform.SetSiblingIndex(dat.siblingIndex);
        }
    }
Example #16
0
    public float GetSideLength(WallSideData wallside)
    {
        WallData       wall    = wallside.targetWall;
        List <Vector2> v2s     = GetWallVerticesPos(wall);
        Vector2        v21     = wallside.forward == true ? v2s[1] : v2s[4];
        Vector2        v22     = wallside.forward == true ? v2s[2] : v2s[5];
        float          c       = wallside.forward == true ? wall.c5 : wall.c6;
        Vector3        v2start = linefunc.GetDisPoint(wall.a, wall.b, c, v21.x, v21.y);
        Vector3        v2end   = linefunc.GetDisPoint(wall.a, wall.b, c, v22.x, v22.y);
        float          angle   = linefunc.GetAngle(v2end - v2start);
        float          dis     = Mathf.RoundToInt(Vector2.Distance(v2start, v2end) * 1000);

        dis = dis * (int)defaultSettings.DefaultUnit / 1000;
        return(dis);
    }
Example #17
0
    private bool CheckRemove(Point pointF, Point ifRemove, Point pointT)
    {
        WallData wallF      = data.GetWall(pointF, ifRemove);
        WallData wallT      = data.GetWall(pointT, ifRemove);
        bool     isParallel = wallfunc.IsParallel(wallF, wallT);

        if (isParallel == true)
        {
            data.AddWall(pointF, pointT, wallF.height, wallF.width);
            data.RemoveWall(wallF);
            data.RemoveWall(wallT);
            data.RemovePoint(ifRemove);
        }
        return(isParallel);
    }
Example #18
0
    private void WallsTest()
    {
        var walls = new Walls();

        walls.AddWallData(WallData.CreateCurved(-2f, -2f, -4f, -0f, -2, 2, 0.3f, 2f));
        walls.AddWallData(
            WallData.CreateStreight(-2f, 2f, 0f, 2f, 0.4f, 2f, null, WidthChangeType.Type2));
        walls.AddWallData(WallData.CreateStreight(0f, 2f, 2f, 2f, 0.1f, 1f));
        walls.AddWallData(WallData.CreateStreight(2f, 2f, 2f, -2f, 0.2f, 2f));
        walls.AddWallData(WallData.CreateStreight(2f, -2f, -2f, -2f, 0.5f, 2f));

//        var walls = new Dictionary<Vector2, List<WallData>> ();


/*        var walls = new[]
 *      {
 * //            BaseWallData.CreateStreight (new Vector2 (-2, -2), new Vector2 (-2, 2), 0.2f, 2f),
 *          WallData.CreateCurved (new Vector2 (-2, -2), new Vector2 (-4, -0), new Vector2 (-2, 2), 0.3f, 2f),
 *          WallData.CreateStreight (new Vector2 (-2, 2), new Vector2 (0, 2), 0.4f, 2f, null, WidthChangeType.Type2),
 *          WallData.CreateStreight (new Vector2 (0, 2), new Vector2 (2, 2), 0.1f, 1f),
 *          WallData.CreateStreight (new Vector2 (2, 2), new Vector2 (2, -2), 0.2f, 2f),
 *          WallData.CreateStreight (new Vector2 (2, -2), new Vector2 (-2, -2), 0.5f, 2f)
 *      };*/

/*        var walls = new[]
 *      {
 *          WallData.CreateStreight (new Vector2 (0, -2), new Vector2 (-2, 0), 0.2f, 2f),
 *          WallData.CreateStreight (new Vector2 (-2, 0), new Vector2 (0, 2), 0.2f, 2f),
 *          WallData.CreateStreight (new Vector2 (0, 2), new Vector2 (2, 0), 0.2f, 2f),
 *          WallData.CreateStreight (new Vector2 (2, 0), new Vector2 (0, -2), 0.2f, 2f)
 *      };*/

/*        var wallsCount = walls.Count;
 *      for (int i = 0; i < wallsCount; i++) {
 *          var prevIndex = (i - 1 + wallsCount) % wallsCount;
 *          var nextIndex = (i + 1) % wallsCount;
 *
 *          var meshes = WallMeshesGenerator.GetWallMeshes (walls[prevIndex], walls[i], walls[nextIndex]);
 *          var parent = new GameObject ($"Wall {i}").transform;
 *          for (int j = 0; j < meshes.Length; j++) {
 *              var mesh = meshes[j];
 *              MeshGenerator
 *                  .CreateGameObject (mesh.name, mesh)
 *                  .transform
 *                  .SetParent (parent, false);
 *          }
 *      }*/
    }
Example #19
0
    private void OpenDisInput()
    {
        minDis = float.MaxValue;
        Vector2 pos = GetV2WithoutY(target.position);

        minPos = pos;
        WallData wall     = disView.data;
        int      sidetype = lineFunc.Clockwise(pos, wall.point1.pos, wall.point2.pos);

        if (sidetype == 0)
        {
            sidetype = 1;
        }
        for (int i = 0; i < vertexs.Count; i++)
        {
            Vector2 vertexspos = vertexs[i];
            float   dis        = wall.GetDis(vertexspos);
            int     sidetypei  = lineFunc.Clockwise(vertexspos, wall.point1.pos, wall.point2.pos);

            if (sidetypei == 0)
            {
                dis = 0;
            }
            else if (sidetypei != sidetype)
            {
                dis = -dis;
            }
            dis -= wall.width / 2;
            if (dis < minDis)
            {
                minDis = dis;
                minPos = vertexspos;
            }
            else if (dis == minDis)
            {
                if (vertexspos.x < minPos.x || vertexspos.y < minPos.y)
                {
                    minPos = vertexspos;
                }
            }
        }

        UITool.SetActionTrue(obj);
        Cancel();
        optionsPage.inputUnit.onClick.AddListener(onOpenInput);
        optionsPage.ok.onClick.AddListener(Ok);
        optionsPage.cancel.onClick.AddListener(Cancel);
    }
        private List <WallData> GetWallsData()
        {
            List <WallData> _wallsData = new List <WallData>();

            foreach (Transform _wall in walls.transform)
            {
                WallData _wallData = new WallData()
                {
                    position = _wall.position,
                    rotation = new RotationData(_wall.rotation),
                    size     = _wall.localScale
                };
                _wallsData.Add(_wallData);
            }
            return(_wallsData);
        }
Example #21
0
 public WallSideData getSideById(int id, OriginalInputData inputdata)
 {
     for (int i = 0; i < inputdata.wallList.Count; i++)
     {
         WallData wall = inputdata.wallList[i];
         if (wall.point1To2Data.guid == id)
         {
             return(wall.point1To2Data);
         }
         if (wall.point2To1Data.guid == id)
         {
             return(wall.point2To1Data);
         }
     }
     return(null);
 }
Example #22
0
    /// <summary>
    /// 找到walls围成的房间
    /// </summary>
    public RoomData GetRoom(List <WallData> walls)
    {
        if (walls.Count == 0 || walls == null)
        {
            return(null);
        }
        getroomhelp.Clear();
        getroomhelp.InsertRange(0, walls);
        WallData wall0   = getroomhelp[0];
        RoomData room1   = data.GetRoom(wall0.point1, wall0.point2);
        RoomData room2   = data.GetRoom(wall0.point2, wall0.point1);
        bool     isRoom1 = room1 != null ? true : false;
        bool     isRoom2 = room2 != null ? true : false;

        if (isRoom1 == false && isRoom2 == false)
        {
            return(null);
        }
        for (int k = 0; k < getroomhelp.Count; k++)
        {
            WallData wallk  = getroomhelp[k];
            RoomData roomk1 = data.GetRoom(wallk.point1, wallk.point2);
            RoomData roomk2 = data.GetRoom(wallk.point2, wallk.point1);
            if (isRoom1 == true)
            {
                isRoom1 = roomk1 == room1 || roomk2 == room1;
            }
            if (isRoom2 == true)
            {
                isRoom2 = roomk1 == room2 || roomk2 == room2;
            }
            if (isRoom1 == false && isRoom2 == false)
            {
                return(null);
            }
        }
        if (isRoom1)
        {
            return(room1);
        }
        if (isRoom2)
        {
            return(room2);
        }
        return(null);
    }
Example #23
0
    public bool OnMaxAngleRoom(WallData walldata)
    {
        for (int i = 0; i < maxAngleRooms.Count; i++)
        {
            RoomData room = maxAngleRooms[i];
            if (room.sideList.Contains(walldata.point1To2Data))
            {
                return(true);
            }
            if (room.sideList.Contains(walldata.point2To1Data))
            {
                return(true);
            }
        }

        return(false);
    }
Example #24
0
        private async Task <bool> ProcessContactFeeds(List <FeedOperationDetails> fodList)
        {
            List <WallService.WallRequestData> requestData = new List <WallService.WallRequestData>();

            using (List <FeedOperationDetails> .Enumerator enumerator = fodList.GetEnumerator())
            {
                while (enumerator.MoveNext())
                {
                    FeedOperationDetails current = enumerator.Current;
                    requestData.Add(new WallService.WallRequestData()
                    {
                        UserId = RemoteIdHelper.GetItemIdByRemoteId(current.OwnerRemoteId),
                        Offset = this.GetRequiredOffset(current),
                        Count  = current.ItemCount
                    });
                }
            }
            BackendResult <List <WallData>, ResultCode> res = await WallService.Current.GetWallForManyUsers(requestData);

            if (res.ResultCode != ResultCode.Succeeded)
            {
                return(false);
            }
            for (int i = 0; i < fodList.Count && i < res.ResultData.Count; ++i)
            {
                FeedOperationDetails fod             = fodList[i];
                WallData             currentWallData = res.ResultData[i];
                int  nextOffset = this.GetRequiredOffset(fod) + currentWallData.wall.Count;
                Feed feed       = await SocialManager.OpenContactFeedAsync(fod);

                foreach (WallPost wallPost in currentWallData.wall)
                {
                    FeedItem feedItem = this.CreateFeedItem(wallPost, currentWallData.groups, currentWallData.profiles, true);
                    if (feedItem != null)
                    {
                        this.SetRequiredOffset(feedItem, nextOffset);
                        ((ICollection <FeedItem>)feed.Items).Add(feedItem);
                    }
                }
                await feed.SaveAsync();

                currentWallData = null;
            }
            return(true);
        }
Example #25
0
    public override void mPhoneUpdate()
    {
        base.mPhoneUpdate();
        if (uguiHitUI.uiHited == true || Input.touchCount != 1)
        {
            return;
        }
        Touch touch = Input.GetTouch(0);

        Vector2 inputPos = GetScreenToWorldPos(touch.position);

        if (lastMousePos == inputPos && touch.phase != TouchPhase.Ended && touch.phase != TouchPhase.Canceled)
        {
            return;
        }
        lastMousePos = inputPos;

        targetWall = null;
        float   Angle   = targetObj.transform.rotation.eulerAngles.z;
        Vector3 world2d = inputCamera.ScreenToWorldPoint(touch.position);

        for (int i = 0; i < data.wallList.Count; i++)
        {
            if (targetVO.type != 2)
            {
                GoodsOnWall(data.wallList[i], ref world2d, ref Angle);
            }
            else
            {
                GoodsInWall(data.wallList[i], ref world2d, ref Angle);
            }
        }
        world2d.z = -5 - targetProduct.defaultHeight;
        targetObj.transform.position = world2d;
        if (touch.phase == TouchPhase.Ended || touch.phase == TouchPhase.Canceled)
        {
            undoHelper.save();
            Vector3     angle       = targetObj.transform.rotation.eulerAngles;
            Vector3     world3d     = world2d.x * Vector3.right + world2d.y * Vector3.forward;
            Product     product     = mainpagedata.getProduct(targetVO.seekId);
            ProductData productData = data.AddProduct(targetVO.id, world3d, angle.z, product, targetWall, targetVO.type);
            RefreshView();
            ToSelectGoodsState(productData);
        }
    }
Example #26
0
    private void RoomsFinderTest()
    {
        var walls = new Walls();

        walls.AddWallData(WallData.CreateStreight(1f, 2f, 0f, 3f, 0.1f, 2f));
        walls.AddWallData(WallData.CreateStreight(0f, 2f, 0f, 3f, 0.1f, 2f));

        walls.AddWallData(WallData.CreateStreight(1f, 1f, 0.5f, 0.5f, 0.1f, 2f));
        walls.AddWallData(WallData.CreateStreight(0f, 0f, 0f, 2f, 0.1f, 2f));
        walls.AddWallData(WallData.CreateStreight(0f, 2f, 1f, 2f, 0.1f, 2f));
        walls.AddWallData(WallData.CreateStreight(1f, 2f, 1f, 3f, 0.1f, 2f));
        walls.AddWallData(WallData.CreateStreight(1f, 3f, 4f, 3f, 0.1f, 2f));
        walls.AddWallData(WallData.CreateStreight(4f, 3f, 2f, 2f, 0.1f, 2f));
        walls.AddWallData(WallData.CreateStreight(2f, 2f, 1f, 2f, 0.1f, 2f));
        walls.AddWallData(WallData.CreateStreight(2f, 2f, 2f, 0f, 0.1f, 2f));
        walls.AddWallData(WallData.CreateStreight(2f, 0f, 0f, 0f, 0.1f, 2f));
        walls.AddWallData(WallData.CreateStreight(1f, 2f, 1f, 1f, 0.1f, 2f));
        walls.AddWallData(WallData.CreateStreight(2f, 0f, 1.5f, 0.5f, 0.1f, 2f));
        walls.AddWallData(WallData.CreateStreight(1.5f, 0.5f, 1.5f, 1f, 0.1f, 2f));
        walls.AddWallData(WallData.CreateStreight(1.5f, 1f, 1f, 1f, 0.1f, 2f));


        walls.AddWallData(WallData.CreateStreight(10f, 10f, 10f, 15f, 0.1f, 2f));
        walls.AddWallData(WallData.CreateStreight(10f, 15f, 15f, 15f, 0.1f, 2f));
        walls.AddWallData(WallData.CreateStreight(15f, 15f, 15f, 10f, 0.1f, 2f));
        walls.AddWallData(WallData.CreateStreight(15f, 10f, 10f, 10f, 0.1f, 2f));

        walls.AddWallData(WallData.CreateStreight(11f, 11f, 11f, 13f, 0.1f, 2f));
        walls.AddWallData(WallData.CreateStreight(11f, 13f, 13f, 13f, 0.1f, 2f));
        walls.AddWallData(WallData.CreateStreight(13f, 13f, 13f, 11f, 0.1f, 2f));
        walls.AddWallData(WallData.CreateStreight(13f, 11f, 11f, 11f, 0.1f, 2f));


/*        walls.AddWallData (WallData.CreateStreight (0f, 0f, 0f, 2f, 0.1f, 2f));
 *      walls.AddWallData (WallData.CreateStreight (0f, 2f, 2f, 2f, 0.1f, 2f));
 *      walls.AddWallData (WallData.CreateStreight (2f, 2f, 2f, 0f, 0.1f, 2f));
 *      walls.AddWallData (WallData.CreateStreight (0f, 0f, 2f, 0f, 0.1f, 2f));*/

/*        walls.AddWallData (WallData.CreateStreight (2f, 2f, 3f, 2f, 0.1f, 2f));
 *      walls.AddWallData (WallData.CreateStreight (3f, 2f, 3f, 0f, 0.1f, 2f));
 *      walls.AddWallData (WallData.CreateStreight (3f, 0f, 2f, 0f, 0.1f, 2f));*/


        RoomMeshesGenerator.CreateRoomMeshes(walls);
    }
Example #27
0
    private WallData[] GetNearestWall(Point point, Point other)
    {
        float        maxAngle     = -1;
        float        minAngle     = 361;
        WallData     maxAngleWall = null;
        WallData     minAngleWall = null;
        List <Point> list         = data.GetNearestPoints(point);

        for (int i = 0; i < list.Count; i++)
        {
            Point item = list[i];
            if (item == other)
            {
                continue;
            }

            WallData temp = GetWallData(point, item);
            if (temp == null)
            {
                Debug.LogWarning("GetWallData(point, wallData.point2) == null; i = " + i);
                continue;
            }
            float angle = GetAngle(other, point, temp);
            if (angle > maxAngle)
            {
                maxAngleWall = temp;
                maxAngle     = angle;
            }
            if (angle < minAngle)
            {
                minAngleWall = temp;
                minAngle     = angle;
            }
        }

        if (minAngleWall == maxAngleWall && maxAngleWall == null)
        {
            //没有相临墙
            return(null);
        }

        return(new WallData[2] {
            minAngleWall, maxAngleWall
        });
    }
Example #28
0
    void OnCollisionEnter(Collision collision)
    {
        if (collision.gameObject.name.Equals("boop"))
        {
            WallData hit_wall = collision.collider.GetComponent <WallData>();
            if (is_left[hit_wall.index] == true)
            {
                Destroy(left_walls[hit_wall.index].gameObject, 5);
                Destroy(right_walls[hit_wall.index].gameObject.GetComponent <BoxCollider>());
            }
            else
            {
                Destroy(left_walls[hit_wall.index].gameObject.GetComponent <BoxCollider>());
                Destroy(right_walls[hit_wall.index].gameObject, 5);
            }

            print(String.Format("boopest {0} {1}", hit_wall.correct, hit_wall.index));
            num_answered = num_answered + 1;
            int remaining = problemset_len - num_answered;
            //SetWallsRemaining(remaining);
            if (remaining <= 0)
            {
                StartCoroutine(GameOverDelay(3));
            }
            else
            {
                SetTargetText(hit_wall.index + 1);
            }

            if (hit_wall.correct)
            {
                print("correct");
                score = score + 1;
                ChangeSpeed(3);
                SetWallsRemaining(score);
            }
            else
            {
                print("wrong");
                ChangeSpeed(-3);
            }
            left_walls[hit_wall.index].gameObject.name  = "answered";
            right_walls[hit_wall.index].gameObject.name = "answered";
        }
    }
    /// <summary>
    /// Creates wall objects based on the stored data
    /// </summary>
    /// <param name="wallsParent">Transform that will serve as the parent for the new walls</param>
    /// <param name="wallPrefab">Prefab of a wall</param>
    public static void LoadWalls(Transform wallsParent, GameObject wallPrefab)
    {
        // Get the amount of walls
        ChildAmountData wallAmData  = SaveSystem.LoadWallAmount();
        int             amountWalls = wallAmData.GetChildAmount();

        // Load each wall
        for (int i = 0; i < amountWalls; ++i)
        {
            // Get the data for the wall
            WallData wallData = SaveSystem.LoadWall(i);
            // Create the new wall as a child of the wall parent
            GameObject wallObj = Object.Instantiate(wallPrefab, wallsParent);

            // Set its transform components
            wallObj.transform.position = wallData.GetPosition();
        }
    }
Example #30
0
    private float GetAngle(Point end, Point start, WallData temp)
    {
        float angle1  = linefunc.GetAngle(end.pos - start.pos);
        Point tempEnd = temp.point1;

        if (tempEnd == start)
        {
            tempEnd = temp.point2;
        }
        float angle2 = linefunc.GetAngle(tempEnd.pos - start.pos);
        float angle  = angle2 - angle1;

        if (angle < 0)
        {
            angle += 360;
        }
        return(angle);
    }
Example #31
0
    void OnAddAngle(UnityEngine.XR.ARSubsystems.TrackableId trackeableID, Vector3 pos, Quaternion rot)
    {
        WallData   wallData = GetWallData(trackeableID);
        GameObject go       = Instantiate(placedPrefab);

        go.transform.SetParent(container);
        go.transform.position = pos;
        go.transform.rotation = rot;

        if (wallData == null)
        {
            wallData              = new WallData();
            wallData.anglesGO     = new List <GameObject>();
            wallData.trackeableID = trackeableID;
            walls.Add(wallData);
        }
        wallData.anglesGO.Add(go);
    }
 private Vector3 calculatePosition(WallData data)
 {
     float offset = ((data.afterLenght + data.beforeLenght + 1f) / 2) - data.beforeLenght - 0.5f;
     Vector3 pos;
     switch (data.wall) {
     case HallNode.Wall.TOP:
         pos = new Vector3 (data.position.x + offset, 0f, -data.position.y + 0.5f) * scale.getHallWidth ();
         break;
     case HallNode.Wall.BOTTOM:
         pos = new Vector3 (data.position.x + offset, 0f, -data.position.y - 0.5f) * scale.getHallWidth ();
         break;
     case HallNode.Wall.LEFT:
         pos = new Vector3 (data.position.x - 0.5f, 0f, -data.position.y - offset) * scale.getHallWidth ();;
         break;
     default:
         pos = new Vector3 (data.position.x + 0.5f, 0f, -data.position.y - offset) * scale.getHallWidth ();;
         break;
     }
     pos.y = scale.getHallHeight () / 2f;
     return pos;
 }
    private void generateWallData(int i, int j, Vector2 offset, HallNode.Wall wall)
    {
        if(hall.hasWallAt(i, j, wall)){
            string key = i+","+j;
            string keyPos1 = (i+offset.x)+","+(j+offset.y);
            string keyPos2 = (i-offset.x)+","+(j-offset.y);
            if(hallWalls.ContainsKey(keyPos1) && hallWalls[keyPos1].ContainsKey(wall)){
                hallWalls[keyPos1][wall].beforeLenght++;
                if(hallWalls.ContainsKey(key)){
                    hallWalls[key].Add(wall, hallWalls[keyPos1][wall]);
                }
                else{
                    hallWalls.Add(key, new Dictionary<HallNode.Wall, WallData>());
                    hallWalls[key].Add(wall, hallWalls[keyPos1][wall]);
                    //walls.Add(hallWalls[key][wall]);
                }

            }
            else if(hallWalls.ContainsKey(keyPos2) && hallWalls[keyPos2].ContainsKey(wall)){
                hallWalls[keyPos2][wall].afterLenght++;
                if(hallWalls.ContainsKey(key)){
                    hallWalls[key].Add(wall, hallWalls[keyPos2][wall]);
                }
                else{
                    hallWalls.Add(key, new Dictionary<HallNode.Wall, WallData>());
                    hallWalls[key].Add(wall, hallWalls[keyPos2][wall]);
                    //walls.Add(hallWalls[key][wall]);
                }
            }
            else{
                WallData wallData = new WallData(i, j, wall);
                if(hallWalls.ContainsKey(key)){
                    hallWalls[key].Add(wall, wallData);
                }
                else{
                    Dictionary<HallNode.Wall, WallData> dic = new Dictionary<HallNode.Wall, WallData>();
                    dic.Add(wall, wallData);
                    hallWalls.Add(key, dic);
                }

                walls.Add(wallData);
            }
        }
    }
    private void generateWallMesh(WallData data)
    {
        //GameObject cube = GameObject.CreatePrimitive(PrimitiveType.Cube);
        GameObject cube = wallBuilder.generateWall (data.afterLenght + data.beforeLenght + 1, 1);
        cube.name = "Wall (" + data.position.x + "," + data.position.y + ") " + data.wall.ToString ();

        Transform parent = GameObject.Find ("Hall").transform;
        //cube.GetComponent<MeshRenderer> ().material = Game.GetInstance ().roomMaterial.wallMaterial;
        cube.transform.parent = parent;
        cube.transform.position = calculatePosition(data);
        cube.transform.localScale = new Vector3 (scale.getHallWidth(), scale.getHallHeight(), 1f);
        cube.transform.Rotate (calculateRotation(data));
    }