public void OnMapUpdated() { Ensure.IsEditor(); this.GameObject.DestroyAllChildrenImmediate(); // if the map was removed, then no need to create a new map if (this.TmxAsset == null || this.Tilemaps == null || this.Tilemaps.Count == 0) { return; } if (this.TilemapPrefab == null) { FlaiDebug.LogErrorWithTypeTag <TilemapContainer>("TilemapPrefab is null - aborting!"); return; } foreach (TilemapData data in this.Tilemaps) { FlaiDebug.LogWithTypeTag <TilemapContainer>("Building a tilemap \"{2}\" ({0}x{1})", data.Width, data.Height, data.Name); GameObject tilemap = this.TilemapPrefab.Instantiate(); if (data.HasProperty("CreateColliders")) { bool value; if (bool.TryParse(data.GetProperty("CreateColliders"), out value)) { tilemap.Get <Tilemap>().CreateColliders = value; } } tilemap.name = data.Name.NullIfEmpty() ?? "Tilemap"; tilemap.SetParent(this.GameObject); tilemap.SetLayer("Tiles"); try { tilemap.Get <Tilemap>().CreateFrom(data, this.TmxAsset.TilesetManager); } catch { FlaiDebug.LogErrorWithTypeTag <TilemapContainer>("Error - Aborting"); throw; } this.TmxAsset.NeedsRefresh = false; } }
private void DrawMapDataField() { TilemapContainer tilemap = this.Target; TmxAsset tmxAsset = (TmxAsset)EditorGUILayout.ObjectField("Map Data", tilemap.TmxAsset, typeof(TmxAsset), false); if (tilemap.TmxAsset != null && tmxAsset == null) { FlaiDebug.LogWithTypeTag <TilemapContainerInspector>("Map Data set null!"); } if (tilemap.TmxAsset != tmxAsset || (tilemap.TmxAsset != null && tilemap.TmxAsset.NeedsRefresh)) { tilemap.TmxAsset = tmxAsset; tilemap.OnMapUpdated(); EditorUtility.SetDirty(tilemap); } }
protected static void OnPostprocessAllAssets(string[] importedAssets, string[] deletedAssets, string[] movedAssets, string[] movedFromPath) { if (importedAssets == null) { return; } foreach (string tilemapAsset in importedAssets.Where(asset => asset != null && asset.EndsWith(".tmx"))) { if (tilemapAsset == null) { continue; } const string TilemapPath = "Assets/Tile Maps/Maps/"; string fileName = Path.GetFileNameWithoutExtension(tilemapAsset); string finalPath = Path.Combine(TilemapPath, fileName) + ".asset"; // ensure that the directory exists Directory.CreateDirectory(TilemapPath); TmxAsset tmxAsset = TilemapLoader.LoadTilemap(tilemapAsset); TmxAsset previous = (TmxAsset)AssetDatabase.LoadAssetAtPath(finalPath, typeof(TmxAsset)); if (previous != null) { previous.CopyFrom(tmxAsset); FlaiDebug.LogWithTypeTag <TilemapImporter>("Tilemap {0} updated!", fileName); EditorUtility.SetDirty(previous); } else { AssetDatabase.CreateAsset(tmxAsset, finalPath); EditorUtility.SetDirty(tmxAsset); FlaiDebug.LogWithTypeTag <TilemapImporter>("Tilemap {0} imported succesfully!", fileName); } TilemapImporter.SaveTilemapFile(tilemapAsset); AssetDatabase.DeleteAsset(tilemapAsset); } AssetDatabase.Refresh(); AssetDatabase.SaveAssets(); }