From ba02ef7803be0014e6348bbf2e442029677fcb84 Mon Sep 17 00:00:00 2001 From: BlackMATov Date: Sat, 6 Feb 2016 17:42:19 +0600 Subject: [PATCH] create tiled prefab --- .../Maps/isometric_grass_and_water.asset | 11 +- .../Maps/isometric_grass_and_water.png.meta | 2 +- .../Maps/isometric_grass_and_water.tmx | 736 +++++++++++++----- .../Internal/Editor/TiledMapAssetEditor.cs | 51 +- .../Internal/Editor/TiledMapPostprocessor.cs | 1 + Assets/IsoTools/Tiled/TiledMapAsset.cs | 2 + UnityIso.userprefs | 7 +- 7 files changed, 593 insertions(+), 217 deletions(-) diff --git a/Assets/IsoTools/Tiled/Examples/Maps/isometric_grass_and_water.asset b/Assets/IsoTools/Tiled/Examples/Maps/isometric_grass_and_water.asset index 60ca3c0..ce8e14f 100644 --- a/Assets/IsoTools/Tiled/Examples/Maps/isometric_grass_and_water.asset +++ b/Assets/IsoTools/Tiled/Examples/Maps/isometric_grass_and_water.asset @@ -12,8 +12,8 @@ MonoBehaviour: m_Name: isometric_grass_and_water m_EditorClassIdentifier: Data: - Width: 14 - Height: 16 + Width: 20 + Height: 20 TileWidth: 64 TileHeight: 32 Orientation: 0 @@ -25,13 +25,13 @@ MonoBehaviour: OffsetX: 0 OffsetY: 0 Visible: 1 - Tiles: 01000000020000000100000010000000170000000e0000000400000001000000030000000200000001000000010000000100000002000000040000000500000006000000080000001300000007000000030000000400000003000000040000000300000001000000010000000200000001000000080000000700000002000000030000000400000004000000010000000200000004000000020000000100000003000000040000000100000002000000020000000100000001000000020000000400000005000000110000000d0000000d000000060000000100000003000000060000000200000003000000050000000d00000006000000030000000800000013000000130000000c0000000e00000001000000020000000a000000110000000d000000150000000f0000000700000003000000020000000400000001000000100000000a0000000600000003000000180000000b000000130000000700000004000000010000000100000005000000060000000100000010000000180000000e000000040000000f00000007000000040000000200000005000000060000000200000008000000160000000d00000009000000180000000e000000020000000400000004000000030000000100000008000000070000000400000001000000080000000c00000018000000170000000e00000002000000010000000200000004000000020000000200000003000000030000000400000003000000080000000f0000000c00000012000000030000000300000003000000050000000d00000006000000010000000200000002000000020000000300000004000000100000001200000001000000020000000400000010000000180000000a00000006000000020000000400000003000000040000000200000014000000120000000200000003000000010000001400000017000000180000000a00000006000000030000000300000004000000030000000800000007000000040000000400000002000000080000000c00000017000000180000001200000004000000030000000100000004000000030000000400000003000000040000000100000002000000080000000c000000180000000e000000040000000100000003000000020000000200000004000000040000000300000004000000030000000200000008000000130000000700000002000000020000000300000003000000020000000100000004000000 + Tiles: 010000000100000001000000010000000100000001000000010000000200000001000000030000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000050000000d00000006000000010000000100000001000000050000000d00000006000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000014000000170000000a0000000d0000000d0000000d00000009000000170000000a0000000d00000006000000010000000100000001000000010000000100000001000000010000000100000001000000140000001800000018000000180000001800000018000000180000001700000017000000170000000a0000000d0000000d00000006000000010000000100000001000000010000000100000001000000100000001700000018000000180000001700000018000000170000001700000018000000170000001800000018000000170000000a000000110000001100000006000000010000000100000001000000100000001700000018000000170000001800000018000000170000001700000017000000180000001800000017000000170000001700000018000000170000000a0000000600000001000000050000000900000018000000180000001800000018000000170000000b0000000c00000018000000180000001800000017000000170000001800000018000000170000001800000012000000010000001000000018000000180000001800000018000000180000000b000000070000001400000018000000170000001800000017000000180000001800000018000000180000001700000012000000010000001400000018000000180000001700000017000000170000000e0000000100000014000000180000001800000018000000180000001800000018000000170000000b0000000f0000000700000001000000080000000c00000017000000180000000b0000000f0000000700000002000000100000001700000017000000180000001800000017000000180000000b00000007000000010000000100000001000000010000001400000018000000170000001200000001000000010000000400000008000000130000000c0000000b0000000c000000170000000b0000000700000001000000010000000100000001000000010000001000000017000000180000001200000004000000010000000100000001000000010000000800000007000000100000001700000012000000010000000100000001000000010000000100000001000000080000000f0000000f000000070000000300000003000000010000000200000002000000040000000500000009000000180000000e0000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000004000000040000000500000009000000180000000b0000000700000001000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000050000000d0000000900000018000000180000000e0000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000100000001800000017000000170000000b0000000700000001000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000010000001400000017000000170000000b00000007000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000080000000f0000000f00000007000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000010000000300000001000000030000000200000001000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000030000000100000004000000010000000100000001000000010000000100000001000000010000000100000001000000 Properties: [] - Name: Tile Layer 2 OffsetX: 0 OffsetY: -100 - Visible: 1 - Tiles: 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000010000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000001000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000100000001000000 + Visible: 0 + Tiles: 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000100000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000010000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000001000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 Properties: - em - @@ -51,4 +51,5 @@ MonoBehaviour: Properties: - tileset prop - hgf + Name: isometric_grass_and_water PixelsPerUnit: 100 diff --git a/Assets/IsoTools/Tiled/Examples/Maps/isometric_grass_and_water.png.meta b/Assets/IsoTools/Tiled/Examples/Maps/isometric_grass_and_water.png.meta index 1999c5e..c70de00 100644 --- a/Assets/IsoTools/Tiled/Examples/Maps/isometric_grass_and_water.png.meta +++ b/Assets/IsoTools/Tiled/Examples/Maps/isometric_grass_and_water.png.meta @@ -1,6 +1,6 @@ fileFormatVersion: 2 guid: 221bc03dca62748f284639c0b399875b -timeCreated: 1454747267 +timeCreated: 1454758669 licenseType: Free TextureImporter: fileIDToRecycleName: diff --git a/Assets/IsoTools/Tiled/Examples/Maps/isometric_grass_and_water.tmx b/Assets/IsoTools/Tiled/Examples/Maps/isometric_grass_and_water.tmx index fb3cfc8..f35677e 100644 --- a/Assets/IsoTools/Tiled/Examples/Maps/isometric_grass_and_water.tmx +++ b/Assets/IsoTools/Tiled/Examples/Maps/isometric_grass_and_water.tmx @@ -1,5 +1,5 @@ - + @@ -40,235 +40,411 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + - - - - - - - + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - + + + + + + + + + + + + + + + + + - + + + + + + + + + + - - - - - + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - + + + + + + + + + + + + + + + - - - + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + @@ -467,9 +643,73 @@ - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -495,9 +735,121 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Assets/IsoTools/Tiled/Internal/Editor/TiledMapAssetEditor.cs b/Assets/IsoTools/Tiled/Internal/Editor/TiledMapAssetEditor.cs index e667b3b..9024286 100644 --- a/Assets/IsoTools/Tiled/Internal/Editor/TiledMapAssetEditor.cs +++ b/Assets/IsoTools/Tiled/Internal/Editor/TiledMapAssetEditor.cs @@ -121,6 +121,36 @@ namespace IsoTools.Tiled.Internal { }); } + // ------------------------------------------------------------------------ + // + // Functions + // + // ------------------------------------------------------------------------ + + void CreateTiledMapPrefab() { + var tiled_map = CreateTiledMapOnScene(); + if ( tiled_map ) { + var asset_path = AssetDatabase.GetAssetPath(_asset); + var prefab_path = Path.Combine(Path.GetDirectoryName(asset_path), _asset.Name + ".prefab"); + PrefabUtility.CreatePrefab(prefab_path, tiled_map); + DestroyImmediate(tiled_map, true); + /// \TODO undo support + } + } + + GameObject CreateTiledMapOnScene() { + var map_go = new GameObject(_asset.Name); + try { + CreateTiledMap(map_go); + } catch ( Exception e ) { + Debug.LogErrorFormat("Create tiled map error: {0}", e.Message); + DestroyImmediate(map_go, true); + map_go = null; + } + Undo.RegisterCreatedObjectUndo(map_go, "Create TiledMap"); + return map_go; + } + // ------------------------------------------------------------------------ // // Messages @@ -132,22 +162,15 @@ namespace IsoTools.Tiled.Internal { } public override void OnInspectorGUI() { - var ppu_prop = serializedObject.FindProperty("PixelsPerUnit"); - if ( ppu_prop != null ) { - serializedObject.UpdateIfDirtyOrScript(); - EditorGUILayout.Slider(ppu_prop, Mathf.Epsilon, 1000); - serializedObject.ApplyModifiedProperties(); + DrawDefaultInspector(); + EditorGUILayout.BeginHorizontal(); + if ( GUILayout.Button("Create map prefab") ) { + CreateTiledMapPrefab(); } - if ( GUILayout.Button("Create tiled map on scene") ) { - var map_go = new GameObject("TiledMap"); - try { - CreateTiledMap(map_go); - } catch ( Exception e ) { - Debug.LogErrorFormat("Create tiled map error: {0}", e.Message); - DestroyImmediate(map_go, true); - } - Undo.RegisterCreatedObjectUndo(map_go, "Create TiledMap"); + if ( GUILayout.Button("Create map on scene") ) { + CreateTiledMapOnScene(); } + EditorGUILayout.EndHorizontal(); } } } diff --git a/Assets/IsoTools/Tiled/Internal/Editor/TiledMapPostprocessor.cs b/Assets/IsoTools/Tiled/Internal/Editor/TiledMapPostprocessor.cs index 0550c4b..27e3278 100644 --- a/Assets/IsoTools/Tiled/Internal/Editor/TiledMapPostprocessor.cs +++ b/Assets/IsoTools/Tiled/Internal/Editor/TiledMapPostprocessor.cs @@ -32,6 +32,7 @@ namespace IsoTools.Tiled.Internal { AssetDatabase.CreateAsset(new_asset, new_asset_path); } new_asset.Data = tile_map_data; + new_asset.Name = Path.GetFileNameWithoutExtension(new_asset_path); EditorUtility.SetDirty(new_asset); AssetDatabase.SaveAssets(); } diff --git a/Assets/IsoTools/Tiled/TiledMapAsset.cs b/Assets/IsoTools/Tiled/TiledMapAsset.cs index 5b15899..62b55a0 100644 --- a/Assets/IsoTools/Tiled/TiledMapAsset.cs +++ b/Assets/IsoTools/Tiled/TiledMapAsset.cs @@ -44,7 +44,9 @@ namespace IsoTools.Tiled { } public class TiledMapAsset : ScriptableObject { + [HideInInspector] public TiledMapData Data = new TiledMapData(); + public string Name = string.Empty; public float PixelsPerUnit = 100.0f; } } diff --git a/UnityIso.userprefs b/UnityIso.userprefs index 9a0da8e..8535ea8 100644 --- a/UnityIso.userprefs +++ b/UnityIso.userprefs @@ -2,13 +2,10 @@ - + - - - - +