void Start() { // Use Simplex Terrain and our basic Marching Cubes algorithm terrGen = new SimplexTerrainGenerator (); // Generate the lookup table for the 256 first pass smoothed surface net possibilities SurfaceNetLookupTable.GenerateSmoothedPointLocations(Smoothing); // Set the MeshGenerator of your choice //meshGen = new RegularCubeMeshGenerator (); //meshGen = new MarchingCubesMeshGenerator(); meshGen = new SurfaceNetsMeshGenerator(); world = new WorldData (terrGen, meshGen, ChunkXSize, ChunkYSize); // Add chunks to the list of nearby chunks for instantiation during runtime // Reduces black screen load time nearbyChunks = new List<Chunk> (); for (int i=0; i<world.chunks.GetLength(0); i++) { for (int j=0; j<i+1 && j<world.chunks.GetLength(1); j++) { nearbyChunks.Add (world.chunks [i, j]); } for (int k=0; k<i; k++) { nearbyChunks.Add (world.chunks[k,i]); } } }
void Start() { // Use Simplex Terrain and our basic Marching Cubes algorithm terrGen = new SimplexTerrainGenerator(); meshGen = new MarchingCubesMeshGenerator(); world = new WorldData(terrGen, meshGen); // Grab the meshfilter from our current object // Replace the mesh data with calculated mesh data from WorldData var meshfilter = GetComponent<MeshFilter>(); Mesh mesh = new Mesh(); Chunk testChunk = world.chunks[0,0]; mesh.vertices = testChunk.vertices; mesh.uv = testChunk.uvRays; mesh.triangles = testChunk.triangles; meshfilter.mesh = mesh; //meshfilter.mesh.vertices = world.vertices; //meshfilter.mesh.uv = world.uvRays; //meshfilter.mesh.triangles = world.triangles; // Update the mesh collider to use the graphical mesh for the physics engine mesh.RecalculateNormals(); var meshcollider = GetComponent<MeshCollider>(); meshcollider.sharedMesh = mesh; }
public WorldData(IGenerateTerrain terrGen, IMeshGenerator meshGen) { points = new bool[ChunkXSize,ChunkYSize,ZSize]; TerrainGenerator = terrGen; MeshGenerator = meshGen; TerrainGenerator.GenerateTerrain(this); MeshGenerator.GenerateMesh(this); }
public WorldData(IGenerateTerrain terrGen, IMeshGenerator meshGen) { chunks = new Chunk[numChunksX,numChunksY]; TerrainGenerator = terrGen; MeshGenerator = meshGen; RegenerateWorld(); }
public WorldData(IGenerateTerrain terrGen, IMeshGenerator meshGen, int chunksX, int chunksY) { numChunksX = chunksX; numChunksY = chunksY; chunks = new Chunk[numChunksX,numChunksY]; TerrainGenerator = terrGen; MeshGenerator = meshGen; RegenerateWorld(); }
void Start() { terrGen = new SimplexTerrainGenerator(); meshGen = new MarchingCubesMeshGenerator(); world = new WorldData(terrGen, meshGen); transform.Rotate(new Vector3(2, 2, 2)); var meshfilter = GetComponent<MeshFilter>(); Mesh mesh = new Mesh(); mesh.vertices = world.vertices; mesh.uv = world.uvRays; mesh.triangles = world.triangles; //meshfilter.mesh.vertices = world.vertices; //meshfilter.mesh.uv = world.uvRays; //meshfilter.mesh.triangles = world.triangles; meshfilter.mesh = mesh; mesh.RecalculateNormals(); var meshcollider = GetComponent<MeshCollider>(); meshcollider.sharedMesh = mesh; //var thing = GetComponent<MeshRenderer>(); }
public Chunk(int xPos, int yPos, int xySize, int zSize, IGenerateTerrain terrGen, IMeshGenerator meshGen, WorldData world) { TerrainGenerator = terrGen; MeshGenerator = meshGen; XYSize = xySize; ZSize = zSize; XPosition = xPos; YPosition = yPos; upperLimit = new int[XYSize+2, XYSize+2]; lowerLimit = new int[XYSize+2, XYSize+2]; blocks = new Block[xySize+2, xySize+2, zSize]; for(int i=0; i<blocks.GetLength(0); i++) { for (int j=0; j<blocks.GetLength(1); j++) { for (int k=0; k<blocks.GetLength(2); k++) { blocks[i,j,k] = new Block(); } } } this.world = world; }