SEToolbox.Interop.Asteroids.MyVoxelContentCell.SetToEmpty C# (CSharp) Method

SetToEmpty() public method

public SetToEmpty ( ) : void
return void
        public void SetToEmpty()
        {
            this.CellType = MyVoxelCellType.EMPTY;
            this._voxelContentSum = 0;
            this._voxelFullCells = 0;
            this._voxelPartCells = 0;
            this._voxelEmptyCells = MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS_TOTAL;
            this.CheckCellType();
        }

Usage Example

コード例 #1
0
ファイル: MyVoxelMap.cs プロジェクト: Stevolk/SEToolbox
        public void RemoveContent(string materialName, string replaceFillMaterial)
        {
            var materialIndex = SpaceEngineersCore.Resources.GetMaterialIndex(materialName);
            var replaceMaterialIndex = materialIndex;
            if (!string.IsNullOrEmpty(replaceFillMaterial))
                replaceMaterialIndex = SpaceEngineersCore.Resources.GetMaterialIndex(replaceFillMaterial);
            Vector3I cellCoord;

            for (cellCoord.X = 0; cellCoord.X < _dataCellsCount.X; cellCoord.X++)
            {
                for (cellCoord.Y = 0; cellCoord.Y < _dataCellsCount.Y; cellCoord.Y++)
                {
                    for (cellCoord.Z = 0; cellCoord.Z < _dataCellsCount.Z; cellCoord.Z++)
                    {
                        var voxelCell = _voxelContentCells[cellCoord.X][cellCoord.Y][cellCoord.Z];
                        var matCell = _voxelMaterialCells[cellCoord.X][cellCoord.Y][cellCoord.Z];

                        if (voxelCell == null)
                        {
                            //  Voxel wasn't found in cell dictionary, so cell must be FULL
                            if (matCell.IsSingleMaterialForWholeCell)
                            {
                                if (matCell.SingleMaterial == materialIndex)
                                {
                                    var newCell = new MyVoxelContentCell();
                                    _voxelContentCells[cellCoord.X][cellCoord.Y][cellCoord.Z] = newCell;
                                    newCell.SetToEmpty();
                                    matCell.Reset(replaceMaterialIndex, 0xff);
                                }
                            }
                            else
                            {
                                // A full cell, with mixed materials.
                                Vector3I voxelCoordInCell;
                                MyVoxelContentCell newCell = null;

                                for (voxelCoordInCell.X = 0; voxelCoordInCell.X < MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS; voxelCoordInCell.X++)
                                {
                                    for (voxelCoordInCell.Y = 0; voxelCoordInCell.Y < MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS; voxelCoordInCell.Y++)
                                    {
                                        for (voxelCoordInCell.Z = 0; voxelCoordInCell.Z < MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS; voxelCoordInCell.Z++)
                                        {
                                            var material = matCell.GetMaterial(ref voxelCoordInCell);

                                            if (material == materialIndex)
                                            {
                                                if (newCell == null)
                                                {
                                                    newCell = new MyVoxelContentCell();
                                                    _voxelContentCells[cellCoord.X][cellCoord.Y][cellCoord.Z] = newCell;
                                                }

                                                newCell.SetVoxelContent(0x00, ref voxelCoordInCell);
                                                matCell.SetMaterialAndIndestructibleContent(replaceMaterialIndex, 0xff, ref voxelCoordInCell);
                                            }
                                        }
                                    }
                                }
                            }
                        }
                        else if (voxelCell.CellType == MyVoxelCellType.MIXED)
                        {
                            if (matCell.IsSingleMaterialForWholeCell)
                            {
                                if (matCell.SingleMaterial == materialIndex)
                                {
                                    voxelCell.SetToEmpty();
                                    matCell.Reset(replaceMaterialIndex, 0xff);
                                }
                            }
                            else
                            {
                                // A mixed cell, with mixed materials.
                                Vector3I voxelCoordInCell;
                                for (voxelCoordInCell.X = 0; voxelCoordInCell.X < MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS; voxelCoordInCell.X++)
                                {
                                    for (voxelCoordInCell.Y = 0; voxelCoordInCell.Y < MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS; voxelCoordInCell.Y++)
                                    {
                                        for (voxelCoordInCell.Z = 0; voxelCoordInCell.Z < MyVoxelConstants.VOXEL_DATA_CELL_SIZE_IN_VOXELS; voxelCoordInCell.Z++)
                                        {
                                            var material = matCell.GetMaterial(ref voxelCoordInCell);

                                            if (material == materialIndex)
                                            {
                                                voxelCell.SetVoxelContent(0x00, ref voxelCoordInCell);
                                                matCell.SetMaterialAndIndestructibleContent(replaceMaterialIndex, 0xff, ref voxelCoordInCell);
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
All Usage Examples Of SEToolbox.Interop.Asteroids.MyVoxelContentCell::SetToEmpty