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 61046c9..60ca3c0 100644 --- a/Assets/IsoTools/Tiled/Examples/Maps/isometric_grass_and_water.asset +++ b/Assets/IsoTools/Tiled/Examples/Maps/isometric_grass_and_water.asset @@ -28,10 +28,10 @@ MonoBehaviour: Tiles: 01000000020000000100000010000000170000000e0000000400000001000000030000000200000001000000010000000100000002000000040000000500000006000000080000001300000007000000030000000400000003000000040000000300000001000000010000000200000001000000080000000700000002000000030000000400000004000000010000000200000004000000020000000100000003000000040000000100000002000000020000000100000001000000020000000400000005000000110000000d0000000d000000060000000100000003000000060000000200000003000000050000000d00000006000000030000000800000013000000130000000c0000000e00000001000000020000000a000000110000000d000000150000000f0000000700000003000000020000000400000001000000100000000a0000000600000003000000180000000b000000130000000700000004000000010000000100000005000000060000000100000010000000180000000e000000040000000f00000007000000040000000200000005000000060000000200000008000000160000000d00000009000000180000000e000000020000000400000004000000030000000100000008000000070000000400000001000000080000000c00000018000000170000000e00000002000000010000000200000004000000020000000200000003000000030000000400000003000000080000000f0000000c00000012000000030000000300000003000000050000000d00000006000000010000000200000002000000020000000300000004000000100000001200000001000000020000000400000010000000180000000a00000006000000020000000400000003000000040000000200000014000000120000000200000003000000010000001400000017000000180000000a00000006000000030000000300000004000000030000000800000007000000040000000400000002000000080000000c00000017000000180000001200000004000000030000000100000004000000030000000400000003000000040000000100000002000000080000000c000000180000000e000000040000000100000003000000020000000200000004000000040000000300000004000000030000000200000008000000130000000700000002000000020000000300000003000000020000000100000004000000 Properties: [] - Name: Tile Layer 2 - OffsetX: 150 - OffsetY: -150 - Visible: 0 - Tiles: 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000003000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + OffsetX: 0 + OffsetY: -100 + Visible: 1 + Tiles: 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000010000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000001000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000100000001000000 Properties: - em - @@ -51,3 +51,4 @@ MonoBehaviour: Properties: - tileset prop - hgf + 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 deaef57..1999c5e 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: 1454699157 +timeCreated: 1454747267 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 77f4cfa..fb3cfc8 100644 --- a/Assets/IsoTools/Tiled/Examples/Maps/isometric_grass_and_water.tmx +++ b/Assets/IsoTools/Tiled/Examples/Maps/isometric_grass_and_water.tmx @@ -268,7 +268,7 @@ - + @@ -334,8 +334,6 @@ - - @@ -348,13 +346,6 @@ - - - - - - - @@ -476,6 +467,9 @@ + + + @@ -487,6 +481,9 @@ + + + @@ -498,6 +495,9 @@ + + + diff --git a/Assets/IsoTools/Tiled/Internal/Editor/TiledMapAssetEditor.cs b/Assets/IsoTools/Tiled/Internal/Editor/TiledMapAssetEditor.cs index d773f24..e667b3b 100644 --- a/Assets/IsoTools/Tiled/Internal/Editor/TiledMapAssetEditor.cs +++ b/Assets/IsoTools/Tiled/Internal/Editor/TiledMapAssetEditor.cs @@ -26,29 +26,35 @@ namespace IsoTools.Tiled.Internal { var tiled_map = map_go.AddComponent(); tiled_map.Asset = _asset; tiled_map.Properties = new TiledMapProperties(_asset.Data.Properties); - foreach ( var layer in _asset.Data.Layers ) { - CreateTiledMapLayer(tiled_map, layer); + for ( int i = 0, e = _asset.Data.Layers.Count; i < e; ++i ) { + CreateTiledMapLayer(tiled_map, i); } } - void CreateTiledMapLayer(TiledMap map, TiledMapLayerData layer_data) { + void CreateTiledMapLayer(TiledMap map, int layer_index) { + var layer_data = _asset.Data.Layers[layer_index]; + var layer_go = new GameObject(layer_data.Name); layer_go.transform.SetParent(map.transform, false); - layer_go.transform.localPosition = IsoUtils.Vec3FromXY(layer_data.OffsetX, -layer_data.OffsetY); + layer_go.transform.localPosition = IsoUtils.Vec3FromXY( + layer_data.OffsetX / _asset.PixelsPerUnit, + -layer_data.OffsetY / _asset.PixelsPerUnit); layer_go.SetActive(layer_data.Visible); var tiled_layer = layer_go.AddComponent(); tiled_layer.Asset = _asset; tiled_layer.Properties = new TiledMapProperties(layer_data.Properties); - for ( var i = 0; i < _asset.Data.Height; ++i ) { - for ( var j = 0; j < _asset.Data.Width; ++j ) { - CreateTileMapTile(tiled_layer, layer_data, j, i); + for ( var tile_y = 0; tile_y < _asset.Data.Height; ++tile_y ) { + for ( var tile_x = 0; tile_x < _asset.Data.Width; ++tile_x ) { + CreateTileMapTile(tiled_layer, layer_index, tile_x, tile_y); } } } - void CreateTileMapTile(TiledMapLayer layer, TiledMapLayerData layer_data, int j, int i) { - var tile_gid = layer_data.Tiles[i*_asset.Data.Width + j]; + void CreateTileMapTile(TiledMapLayer layer, int layer_index, int tile_x, int tile_y) { + var layer_data = _asset.Data.Layers[layer_index]; + + var tile_gid = layer_data.Tiles[tile_y * _asset.Data.Width + tile_x]; if ( tile_gid > 0 ) { var asset_path = AssetDatabase.GetAssetPath(_asset); if ( string.IsNullOrEmpty(asset_path) ) { @@ -85,18 +91,20 @@ namespace IsoTools.Tiled.Internal { tile_tileset_sprite_name, tile_gid, layer_data.Name)); } - var tile_go = new GameObject(string.Format("Tile_{0}_{1}", j, i)); + var iso_x = -tile_y + _asset.Data.Height - 1; + var iso_y = -tile_x + _asset.Data.Width - 1; + + var tile_go = new GameObject(string.Format( + "Tile_{0}_{1}", iso_x, iso_y)); tile_go.transform.SetParent(layer.transform, false); tile_go.transform.localPosition = - iso_world.IsoToScreen(IsoUtils.Vec3FromXY( - -i + _asset.Data.Height - 1, - -j + _asset.Data.Width - 1)); + iso_world.IsoToScreen(IsoUtils.Vec3FromXY(iso_x, iso_y)); tile_go.transform.localPosition += new Vector3( - tileset.TileOffsetX / tile_sprite.pixelsPerUnit, - tileset.TileOffsetY / tile_sprite.pixelsPerUnit, - -(i + j) * iso_world.stepDepth); + tileset.TileOffsetX / _asset.PixelsPerUnit, + tileset.TileOffsetY / _asset.PixelsPerUnit, + (iso_x + iso_y + layer_index) * iso_world.stepDepth); var tiled_tile = tile_go.AddComponent(); tiled_tile.Asset = _asset; @@ -124,7 +132,12 @@ namespace IsoTools.Tiled.Internal { } public override void OnInspectorGUI() { - DrawDefaultInspector(); + var ppu_prop = serializedObject.FindProperty("PixelsPerUnit"); + if ( ppu_prop != null ) { + serializedObject.UpdateIfDirtyOrScript(); + EditorGUILayout.Slider(ppu_prop, Mathf.Epsilon, 1000); + serializedObject.ApplyModifiedProperties(); + } if ( GUILayout.Button("Create tiled map on scene") ) { var map_go = new GameObject("TiledMap"); try { diff --git a/Assets/IsoTools/Tiled/TiledMapAsset.cs b/Assets/IsoTools/Tiled/TiledMapAsset.cs index eb19985..5b15899 100644 --- a/Assets/IsoTools/Tiled/TiledMapAsset.cs +++ b/Assets/IsoTools/Tiled/TiledMapAsset.cs @@ -44,6 +44,7 @@ namespace IsoTools.Tiled { } public class TiledMapAsset : ScriptableObject { - public TiledMapData Data = new TiledMapData(); + public TiledMapData Data = new TiledMapData(); + public float PixelsPerUnit = 100.0f; } }