public VoxelMeshGenerator(VoxelManager parent, VoxelDataGenerator vdata) : base(parent) { resolution = vdata.resolution + Vector3.One; //add 3 (10 Faces mean 11 Vertecies) //prepareData(); surfaceMesh = new Mesh(); //generateMesh(); }
public VoxelMeshGenerator(VoxelManager parent, VoxelDataGenerator vdata) : base(parent) { resolution = vdata.resolution + Vector3.One; //add 3 (10 Faces mean 11 Vertecies) //prepareData(); surfaceMesh = new Mesh(); //generateMesh(); }
public VoxelChunk(VoxelManager parent, Vector3 start, Vector3 end) : base(parent) { this.start = start; this.end = end; voxelData = new VoxelDataGenerator(this, start, end); meshHelper = new VoxelMeshGenerator(this, voxelData); Position = (end + start) / 2f; generateSurface(); wasUpdated = false; //generateDebugSurface(); //generateSurfaceMesh(); //scene.generateParticleSys(); surface.isVisible = false; }
public VoxelChunk(VoxelManager parent, Vector3 start ,Vector3 end) : base(parent) { this.start = start; this.end = end; voxelData = new VoxelDataGenerator(this, start, end); meshHelper = new VoxelMeshGenerator(this, voxelData); Position = (end + start) / 2f; generateSurface(); wasUpdated = false; //generateDebugSurface(); //generateSurfaceMesh(); //scene.generateParticleSys(); surface.isVisible = false; }
public Mesh generateMesh(VoxelDataGenerator vdata) { gameWindow.sw.Start(); vdata.generateVoxelData(); prepareData(); //int[] data = vdata.data; float vSize = 0.5f / vdata.resolution.X; Vector3 up = new Vector3(0, 1, 0); Vector3 right = new Vector3(1, 0, 0); Vector3 front = new Vector3(0, 0, 1); Vector3 back = new Vector3(0, 0, -1); Vector3 down = new Vector3(0, -1, 0); Vector3 left = new Vector3(-1, 0, 0); for (int i = 0; i < vdata.voxelAmnt; i++) { Vector3 postion = vdata.idToNumber(i); if (vdata.getData(i) == 1) { bool isBorder = vdata.isBorder(i); if (vdata.getRelativeData(i,up) == 0) { generateTopFace(i, isBorder, postion); } if (vdata.getRelativeData(i,right) == 0) { generateRightFace(i, isBorder, postion); } if (vdata.getRelativeData(i,front) == 0) { generateFrontFace(i, isBorder, postion); } if (vdata.getRelativeData(i,back) == 0) { generateBackFace(i, isBorder, postion); } if (vdata.getRelativeData(i,left) == 0) { generateLeftFace(i, isBorder, postion); } if (vdata.getRelativeData(i,down) == 0) { generateDownFace(i, isBorder, postion); } } } vdata.deleteCage(); performSmoothing(); performCubicMapping(); surfaceMesh.positionVboDataList = positions; surfaceMesh.textureVboDataList = textureCoords; surfaceMesh.normalVboDataList = normals; surfaceMesh.FaceList = Faces; gameWindow.meshLoader.parseFaceList(ref surfaceMesh, false); gameWindow.meshLoader.generateVBO(ref surfaceMesh); gameWindow.sw.Stop(); gameWindow.log("generated Chunk:" + gameWindow.sw.Elapsed); return surfaceMesh; }
public Mesh generateMesh(VoxelDataGenerator vdata) { gameWindow.sw.Start(); vdata.generateVoxelData(); prepareData(); //int[] data = vdata.data; float vSize = 0.5f / vdata.resolution.X; Vector3 up = new Vector3(0, 1, 0); Vector3 right = new Vector3(1, 0, 0); Vector3 front = new Vector3(0, 0, 1); Vector3 back = new Vector3(0, 0, -1); Vector3 down = new Vector3(0, -1, 0); Vector3 left = new Vector3(-1, 0, 0); for (int i = 0; i < vdata.voxelAmnt; i++) { Vector3 postion = vdata.idToNumber(i); if (vdata.getData(i) == 1) { bool isBorder = vdata.isBorder(i); if (vdata.getRelativeData(i, up) == 0) { generateTopFace(i, isBorder, postion); } if (vdata.getRelativeData(i, right) == 0) { generateRightFace(i, isBorder, postion); } if (vdata.getRelativeData(i, front) == 0) { generateFrontFace(i, isBorder, postion); } if (vdata.getRelativeData(i, back) == 0) { generateBackFace(i, isBorder, postion); } if (vdata.getRelativeData(i, left) == 0) { generateLeftFace(i, isBorder, postion); } if (vdata.getRelativeData(i, down) == 0) { generateDownFace(i, isBorder, postion); } } } vdata.deleteCage(); performSmoothing(); performCubicMapping(); surfaceMesh.positionVboDataList = positions; surfaceMesh.textureVboDataList = textureCoords; surfaceMesh.normalVboDataList = normals; surfaceMesh.FaceList = Faces; gameWindow.meshLoader.parseFaceList(ref surfaceMesh, false); gameWindow.meshLoader.generateVBO(ref surfaceMesh); gameWindow.sw.Stop(); gameWindow.log("generated Chunk:" + gameWindow.sw.Elapsed); return(surfaceMesh); }