void Initialize() { if (shapeGenerator == null) { shapeGenerator = new shapeGenerator(shapeSettings); } if (meshFilters == null || meshFilters.Length == 0) { meshFilters = new MeshFilter[6]; } terrainFaces = new TerrainFace[6]; Vector3[] directions = { Vector3.up, Vector3.down, Vector3.left, Vector3.right, Vector3.forward, Vector3.back }; for (int i = 0; i < 6; i++) { if (meshFilters[i] == null) { GameObject meshObj = new GameObject("mesh"); meshObj.transform.parent = transform; meshObj.AddComponent <MeshRenderer>().sharedMaterial = new Material(Shader.Find("Standard")); meshFilters[i] = meshObj.AddComponent <MeshFilter>(); meshFilters[i].sharedMesh = new Mesh(); } terrainFaces[i] = new TerrainFace(shapeGenerator, meshFilters[i].sharedMesh, resolution, directions[i]); } }
public TerrainFace(shapeGenerator shapeGenerator, Mesh mesh, int resolution, Vector3 localUp) { this.shapeGenerator = shapeGenerator; this.mesh = mesh; this.resolution = resolution; this.localUp = localUp; axisA = new Vector3(localUp.y, localUp.z, localUp.x); axisB = Vector3.Cross(localUp, axisA); }