Example #1
0
        private void AddEdgeNeighbor(NeighborEdge edge, DispSubNeighbor neighbor)
        {
            var min  = new Vector2(0f, 0f);
            var size = 1f;

            if (neighbor.Span != NeighborSpan.CornerToCorner || neighbor.NeighborSpan != NeighborSpan.CornerToCorner)
            {
                // TODO
                return;
            }

            switch (edge)
            {
            case NeighborEdge.Left: min.X -= size; break;

            case NeighborEdge.Bottom: min.Y -= size; break;

            case NeighborEdge.Right: min.X += 1f; break;

            case NeighborEdge.Top: min.Y += 1f; break;
            }

            var disp = _bspFile.DisplacementManager[neighbor.NeighborIndex];

            if (_neighbors.Any(x => x.Displacement == disp))
            {
                return;
            }

            _neighbors.Add(new Neighbor(this, disp, neighbor.NeighborOrientation, min, min + new Vector2(size, size)));
        }
Example #2
0
        public DispNeighbor GetEdgeNeighbor(NeighborEdge edge)
        {
            switch ((int)edge)
            {
            case 0:
                return(_edgeNeighbor0);

            case 1:
                return(_edgeNeighbor1);

            case 2:
                return(_edgeNeighbor2);

            case 3:
                return(_edgeNeighbor3);

            default:
                throw new IndexOutOfRangeException();
            }
        }