private void Allocate(SgtTerrainCube cube) { foreach (var quad in cube.Quads) { Allocate(quad); } }
private void Dispose(SgtTerrainCube cube) { foreach (var quad in cube.Quads) { Dispose(quad); } }
public SgtTerrainQuad(SgtTerrainCube newCube, int newFace, double newTwist, double3 newCubeC, double3 newCubeH, double3 newCubeV) { cube = newCube; face = newFace; twist = newTwist; cubeC = SgtTerrainTopology.Tilt(newCubeC); cubeH = SgtTerrainTopology.Tilt(newCubeH); cubeV = SgtTerrainTopology.Tilt(newCubeV); cubeO = math.cross(math.normalize(cubeH), cubeV); Allocate(); }
private void UpdateLists() { var distanceCount = GetDepth(smallestTriangleSize); if (distanceCount > distances.Count) { for (var i = distances.Count; i < distanceCount; i++) { distances.Add(0.0); } } else if (distances.Count > distanceCount) { for (var i = distances.Count - 1; i >= distanceCount; i--) { distances.RemoveAt(i); } } var cubeCount = distanceCount + 1; if (cubeCount > cubes.Count) { for (var i = cubes.Count; i < cubeCount; i++) { var cube = new SgtTerrainCube(this); cubes.Add(cube); Allocate(cube); } } else if (cubes.Count > cubeCount) { for (var i = cubes.Count - 1; i >= cubeCount; i--) { Dispose(cubes[i]); cubes.RemoveAt(i); } } for (var i = 0; i < cubeCount; i++) { cubes[i].Setup(i, resolution << i); } }