private void DrawTileToLayers() { bool fx = false; bool fy = false; int rot = 0; for (int i = 0; i < this.pyxelTilemap.layers.Length; i++) { STETilemap map = pyxelEdit.transform.Find(this.pyxelTilemap.layers[i].name).GetComponent <STETilemap>(); for (int t = 0; t < this.pyxelTilemap.layers[i].tiles.Length; t++) { int tileID = this.pyxelTilemap.layers[i].tiles[t].tile; rot = this.pyxelTilemap.layers[i].tiles[t].rot; fx = this.pyxelTilemap.layers[i].tiles[t].flipX; fy = (rot == 2) ? true : false; if (rot == 2) { fx = !fx; } int x = this.pyxelTilemap.layers[i].tiles[t].x; int y = (this.pyxelTilemap.tileshigh - this.pyxelTilemap.layers[i].tiles[t].y) - 1; if (tileID < 0) { map.Erase(x, y); } else { TileData tileData = new TileData(); tileData.brushId = 0; tileData.tileId = this.pyxelTilemap.layers[i].tiles[t].tile; tileData.flipHorizontal = fx; tileData.flipVertical = fy; map.SetTileData(x, y, tileData.BuildData()); } } map.UpdateMesh(); } }
protected override void ProceedUse(List <Vector2> pTiles) { NeedBase energyNeed = PlayerNeedManager.Instance.GetNeed("Energy"); energyNeed.Change(-CurrentTool.EnergyCost * (ToolCursorManager.Instance.CursorIndex + 1)); List <Vector2> tiles = pTiles; foreach (Vector2 tile in tiles) { if (CheckTileValidity(tile)) { STETilemap affectedLayer = GetTileAffectedLayer(tile); uint rawData = affectedLayer.GetTileData(tile); TileData tileData = new TileData(rawData); foreach (AffectedTerrain terrain in AffectedTerrains) { if (affectedLayer.name == terrain.LayerName) { tileData.brushId = terrain.BrushId; } } if (affectedLayer.name == "Dirt") { FarmPlot plot = GetPlot(tile); if (plot != null) { Destroy(plot.gameObject); } } affectedLayer.SetTileData(tile, tileData.BuildData()); affectedLayer.UpdateMeshImmediate(); FindObjectOfType <PlayerInventory>().RemoveFromStack(Toolbar.Instance.SelectedSlot.ReferencedItemStack, 1); if (Toolbar.Instance.SelectedSlot.ReferencedItemStack == null) { return; } } } }
void SetTileData(Vector2 pTileWorldPos, TileData pTileData) { OccupiedLayer.SetTileData(pTileWorldPos, pTileData.BuildData()); OccupiedLayer.UpdateMeshImmediate(); }