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))); }
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(); } }