public void Erase(Tilemap tilemap, Vector2 localPos) { int minGridX = m_brushTilemap.MinGridX; int minGridY = m_brushTilemap.MinGridY; int maxGridX = m_brushTilemap.MaxGridX; int maxGridY = m_brushTilemap.MaxGridY; if (IsUndoEnabled) { #if UNITY_EDITOR Undo.RecordObject(tilemap, Tilemap.k_UndoOpName + tilemap.name); Undo.RecordObjects(tilemap.GetComponentsInChildren <TilemapChunk>(), Tilemap.k_UndoOpName + tilemap.name); #endif } tilemap.IsUndoEnabled = IsUndoEnabled; int dstGy = BrushUtil.GetGridY(localPos, tilemap.CellSize); for (int gridY = minGridY; gridY <= maxGridY; ++gridY, ++dstGy) { int dstGx = BrushUtil.GetGridX(localPos, tilemap.CellSize); for (int gridX = minGridX; gridX <= maxGridX; ++gridX, ++dstGx) { tilemap.SetTileData(dstGx, dstGy, Tileset.k_TileData_Empty); } } tilemap.UpdateMeshImmediate(); tilemap.IsUndoEnabled = false; }
public void Paint(Tilemap tilemap, Vector2 localPos) { int minGridX = m_brushTilemap.MinGridX; int minGridY = m_brushTilemap.MinGridY; int maxGridX = m_brushTilemap.MaxGridX; int maxGridY = m_brushTilemap.MaxGridY; if (IsUndoEnabled) { #if UNITY_EDITOR Undo.RecordObject(tilemap, Tilemap.k_UndoOpName + tilemap.name); Undo.RecordObjects(tilemap.GetComponentsInChildren <TilemapChunk>(), Tilemap.k_UndoOpName + tilemap.name); #endif } tilemap.IsUndoEnabled = IsUndoEnabled; int dstGy = BrushUtil.GetGridY(localPos, tilemap.CellSize); for (int gridY = minGridY; gridY <= maxGridY; ++gridY, ++dstGy) { int dstGx = BrushUtil.GetGridX(localPos, tilemap.CellSize); for (int gridX = minGridX; gridX <= maxGridX; ++gridX, ++dstGx) { uint tileData = m_brushTilemap.GetTileData(gridX, gridY); if ( tileData != Tileset.k_TileData_Empty || // don't copy empty tiles m_brushTilemap.GridWidth == 1 && m_brushTilemap.GridHeight == 1 // unless the brush size is one ) { tilemap.SetTileData(dstGx, dstGy, tileData); } } } tilemap.UpdateMeshImmediate(); tilemap.IsUndoEnabled = false; }
void SetTilemapChunkHideFlag(HideFlags flags, bool value) { TilemapChunk[] chunks = m_tilemap.GetComponentsInChildren <TilemapChunk>(); foreach (TilemapChunk chunk in chunks) { if (value) { chunk.gameObject.hideFlags |= flags; } else { chunk.gameObject.hideFlags &= ~flags; } } }
public void FloodFill(Tilemap tilemap, Vector2 localPos, uint tileData) { if (IsUndoEnabled) { #if UNITY_EDITOR Undo.RecordObject(tilemap, Tilemap.k_UndoOpName + tilemap.name); Undo.RecordObjects(tilemap.GetComponentsInChildren <TilemapChunk>(), Tilemap.k_UndoOpName + tilemap.name); #endif } tilemap.IsUndoEnabled = IsUndoEnabled; TilemapDrawingUtils.FloodFill(tilemap, localPos, tileData); tilemap.UpdateMeshImmediate(); tilemap.IsUndoEnabled = false; }
public void CutRect(Tilemap tilemap, int startGridX, int startGridY, int endGridX, int endGridY) { if (IsUndoEnabled) { #if UNITY_EDITOR Undo.RecordObject(tilemap, Tilemap.k_UndoOpName + tilemap.name); Undo.RecordObjects(tilemap.GetComponentsInChildren <TilemapChunk>(), Tilemap.k_UndoOpName + tilemap.name); #endif } tilemap.IsUndoEnabled = IsUndoEnabled; for (int gridY = startGridY; gridY <= endGridY; ++gridY) { for (int gridX = startGridX; gridX <= endGridX; ++gridX) { BrushTilemap.SetTileData(gridX - startGridX, gridY - startGridY, tilemap.GetTileData(gridX, gridY)); tilemap.SetTileData(gridX, gridY, Tileset.k_TileData_Empty); } } BrushTilemap.UpdateMeshImmediate(); tilemap.UpdateMeshImmediate(); tilemap.IsUndoEnabled = false; }