Beispiel #1
0
        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
                    }
                }
            }
        }
Beispiel #4
0
 public void GetCube(int _x, int _y, int _z, out SmallCube _c)
 {
     m_array.GetCube(_x, _y, _z, out _c);
 }