private List <VoxelDesc> MakeVoxelsList(CubeArray3D _array) { List <VoxelDesc> list = new List <VoxelDesc>(); SmallCube cube; int x, y, z; for (x = 0; x < _array.CUBESIZEX; x++) { for (y = 0; y < _array.CUBESIZEY; y++) { for (z = 0; z < _array.CUBESIZEZ; z++) { _array.GetCube(x, y, z, out cube); if (cube.byMatL0 != 0) { var vd = new VoxelDesc(); vd.x = x; vd.y = y; vd.z = z; vd.i = (int)cube.byMatL0; list.Add(vd); } } } } return(list); }
static public CubeArray3D ReSize(CubeArray3D _array, int _newsizeX, int _newsizeY, int _newsizeZ) { Debug.Assert(_newsizeX != _array.CUBESIZEX || _newsizeY == _array.CUBESIZEY || _newsizeZ == _array.CUBESIZEZ); CubeArray3D newCubeArray = new CubeArray3D(); newCubeArray.SetSize(_newsizeX, _newsizeY, _newsizeZ); int middleX = (_array.CUBESIZEX >> 1); int middleY = (_array.CUBESIZEY >> 1); int middleZ = (_array.CUBESIZEZ >> 1); int newmiddleX = (_newsizeX >> 1); int newmiddleY = (_newsizeY >> 1); int newmiddleZ = (_newsizeZ >> 1); SmallCube c; int x, y, z; int x2, y2, z2; for (x = 0; x < _array.CUBESIZEX; x++) { for (z = 0; z < _array.CUBESIZEZ; z++) { for (y = 0; y < _array.CUBESIZEY; y++) { x2 = (x - middleX) + newmiddleX; y2 = (y - middleY) + newmiddleY; z2 = (z - middleZ) + newmiddleZ; if (x2 < 0 || y2 < 0 || z2 < 0) { continue; } if (x2 >= _newsizeX || y2 >= _newsizeY || z2 >= _newsizeZ) { continue; } _array.GetCube(x, y, z, out c); //Get Source if (c.byMatL0 != 0) { //Set destination newCubeArray.SetCube(x2, y2, z2, c); } } } } //Return new buffer return(newCubeArray); }
static public void Copy(CubeArray3D _src, CubeArray3D _dst) { _dst.Clear(); _dst.SetSize(_src.CUBESIZEX, _src.CUBESIZEY, _src.CUBESIZEZ); SmallCube c; int x, y, z; for (x = 0; x < _src.CUBESIZEX; x++) { for (z = 0; z < _src.CUBESIZEZ; z++) { for (y = 0; y < _src.CUBESIZEY; y++) { _src.GetCube(x, y, z, out c); //Get Source _dst.SetCube(x, y, z, c); //Set Destination } } } }
public void GetCube(int _x, int _y, int _z, out SmallCube _c) { m_array.GetCube(_x, _y, _z, out _c); }