PPU for tiled layers

This commit is contained in:
2016-02-06 14:44:06 +06:00
parent 244b672b23
commit 0ed90de773
5 changed files with 48 additions and 33 deletions

View File

@@ -28,10 +28,10 @@ MonoBehaviour:
Tiles: 01000000020000000100000010000000170000000e0000000400000001000000030000000200000001000000010000000100000002000000040000000500000006000000080000001300000007000000030000000400000003000000040000000300000001000000010000000200000001000000080000000700000002000000030000000400000004000000010000000200000004000000020000000100000003000000040000000100000002000000020000000100000001000000020000000400000005000000110000000d0000000d000000060000000100000003000000060000000200000003000000050000000d00000006000000030000000800000013000000130000000c0000000e00000001000000020000000a000000110000000d000000150000000f0000000700000003000000020000000400000001000000100000000a0000000600000003000000180000000b000000130000000700000004000000010000000100000005000000060000000100000010000000180000000e000000040000000f00000007000000040000000200000005000000060000000200000008000000160000000d00000009000000180000000e000000020000000400000004000000030000000100000008000000070000000400000001000000080000000c00000018000000170000000e00000002000000010000000200000004000000020000000200000003000000030000000400000003000000080000000f0000000c00000012000000030000000300000003000000050000000d00000006000000010000000200000002000000020000000300000004000000100000001200000001000000020000000400000010000000180000000a00000006000000020000000400000003000000040000000200000014000000120000000200000003000000010000001400000017000000180000000a00000006000000030000000300000004000000030000000800000007000000040000000400000002000000080000000c00000017000000180000001200000004000000030000000100000004000000030000000400000003000000040000000100000002000000080000000c000000180000000e000000040000000100000003000000020000000200000004000000040000000300000004000000030000000200000008000000130000000700000002000000020000000300000003000000020000000100000004000000 Tiles: 01000000020000000100000010000000170000000e0000000400000001000000030000000200000001000000010000000100000002000000040000000500000006000000080000001300000007000000030000000400000003000000040000000300000001000000010000000200000001000000080000000700000002000000030000000400000004000000010000000200000004000000020000000100000003000000040000000100000002000000020000000100000001000000020000000400000005000000110000000d0000000d000000060000000100000003000000060000000200000003000000050000000d00000006000000030000000800000013000000130000000c0000000e00000001000000020000000a000000110000000d000000150000000f0000000700000003000000020000000400000001000000100000000a0000000600000003000000180000000b000000130000000700000004000000010000000100000005000000060000000100000010000000180000000e000000040000000f00000007000000040000000200000005000000060000000200000008000000160000000d00000009000000180000000e000000020000000400000004000000030000000100000008000000070000000400000001000000080000000c00000018000000170000000e00000002000000010000000200000004000000020000000200000003000000030000000400000003000000080000000f0000000c00000012000000030000000300000003000000050000000d00000006000000010000000200000002000000020000000300000004000000100000001200000001000000020000000400000010000000180000000a00000006000000020000000400000003000000040000000200000014000000120000000200000003000000010000001400000017000000180000000a00000006000000030000000300000004000000030000000800000007000000040000000400000002000000080000000c00000017000000180000001200000004000000030000000100000004000000030000000400000003000000040000000100000002000000080000000c000000180000000e000000040000000100000003000000020000000200000004000000040000000300000004000000030000000200000008000000130000000700000002000000020000000300000003000000020000000100000004000000
Properties: [] Properties: []
- Name: Tile Layer 2 - Name: Tile Layer 2
OffsetX: 150 OffsetX: 0
OffsetY: -150 OffsetY: -100
Visible: 0 Visible: 1
Tiles: 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000003000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 Tiles: 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000010000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000001000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000100000001000000
Properties: Properties:
- em - em
- -
@@ -51,3 +51,4 @@ MonoBehaviour:
Properties: Properties:
- tileset prop - tileset prop
- hgf - hgf
PixelsPerUnit: 100

View File

@@ -1,6 +1,6 @@
fileFormatVersion: 2 fileFormatVersion: 2
guid: 221bc03dca62748f284639c0b399875b guid: 221bc03dca62748f284639c0b399875b
timeCreated: 1454699157 timeCreated: 1454747267
licenseType: Free licenseType: Free
TextureImporter: TextureImporter:
fileIDToRecycleName: fileIDToRecycleName:

View File

@@ -268,7 +268,7 @@
<tile gid="4"/> <tile gid="4"/>
</data> </data>
</layer> </layer>
<layer name="Tile Layer 2" width="14" height="16" visible="0" offsetx="150" offsety="-150"> <layer name="Tile Layer 2" width="14" height="16" offsetx="0" offsety="-100">
<properties> <properties>
<property name="em" value=""/> <property name="em" value=""/>
<property name="layer prop" value="765"/> <property name="layer prop" value="765"/>
@@ -334,8 +334,6 @@
<tile gid="0"/> <tile gid="0"/>
<tile gid="0"/> <tile gid="0"/>
<tile gid="0"/> <tile gid="0"/>
<tile gid="4"/>
<tile gid="3"/>
<tile gid="0"/> <tile gid="0"/>
<tile gid="0"/> <tile gid="0"/>
<tile gid="0"/> <tile gid="0"/>
@@ -348,13 +346,6 @@
<tile gid="0"/> <tile gid="0"/>
<tile gid="0"/> <tile gid="0"/>
<tile gid="0"/> <tile gid="0"/>
<tile gid="4"/>
<tile gid="3"/>
<tile gid="0"/>
<tile gid="0"/>
<tile gid="0"/>
<tile gid="0"/>
<tile gid="0"/>
<tile gid="0"/> <tile gid="0"/>
<tile gid="0"/> <tile gid="0"/>
<tile gid="0"/> <tile gid="0"/>
@@ -476,6 +467,9 @@
<tile gid="0"/> <tile gid="0"/>
<tile gid="0"/> <tile gid="0"/>
<tile gid="0"/> <tile gid="0"/>
<tile gid="1"/>
<tile gid="1"/>
<tile gid="1"/>
<tile gid="0"/> <tile gid="0"/>
<tile gid="0"/> <tile gid="0"/>
<tile gid="0"/> <tile gid="0"/>
@@ -487,6 +481,9 @@
<tile gid="0"/> <tile gid="0"/>
<tile gid="0"/> <tile gid="0"/>
<tile gid="0"/> <tile gid="0"/>
<tile gid="1"/>
<tile gid="1"/>
<tile gid="1"/>
<tile gid="0"/> <tile gid="0"/>
<tile gid="0"/> <tile gid="0"/>
<tile gid="0"/> <tile gid="0"/>
@@ -498,6 +495,9 @@
<tile gid="0"/> <tile gid="0"/>
<tile gid="0"/> <tile gid="0"/>
<tile gid="0"/> <tile gid="0"/>
<tile gid="1"/>
<tile gid="1"/>
<tile gid="1"/>
</data> </data>
</layer> </layer>
<objectgroup name="Object Layer 1" visible="0"> <objectgroup name="Object Layer 1" visible="0">

View File

@@ -26,29 +26,35 @@ namespace IsoTools.Tiled.Internal {
var tiled_map = map_go.AddComponent<TiledMap>(); var tiled_map = map_go.AddComponent<TiledMap>();
tiled_map.Asset = _asset; tiled_map.Asset = _asset;
tiled_map.Properties = new TiledMapProperties(_asset.Data.Properties); tiled_map.Properties = new TiledMapProperties(_asset.Data.Properties);
foreach ( var layer in _asset.Data.Layers ) { for ( int i = 0, e = _asset.Data.Layers.Count; i < e; ++i ) {
CreateTiledMapLayer(tiled_map, layer); 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); var layer_go = new GameObject(layer_data.Name);
layer_go.transform.SetParent(map.transform, false); 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); layer_go.SetActive(layer_data.Visible);
var tiled_layer = layer_go.AddComponent<TiledMapLayer>(); var tiled_layer = layer_go.AddComponent<TiledMapLayer>();
tiled_layer.Asset = _asset; tiled_layer.Asset = _asset;
tiled_layer.Properties = new TiledMapProperties(layer_data.Properties); tiled_layer.Properties = new TiledMapProperties(layer_data.Properties);
for ( var i = 0; i < _asset.Data.Height; ++i ) { for ( var tile_y = 0; tile_y < _asset.Data.Height; ++tile_y ) {
for ( var j = 0; j < _asset.Data.Width; ++j ) { for ( var tile_x = 0; tile_x < _asset.Data.Width; ++tile_x ) {
CreateTileMapTile(tiled_layer, layer_data, j, i); CreateTileMapTile(tiled_layer, layer_index, tile_x, tile_y);
} }
} }
} }
void CreateTileMapTile(TiledMapLayer layer, TiledMapLayerData layer_data, int j, int i) { void CreateTileMapTile(TiledMapLayer layer, int layer_index, int tile_x, int tile_y) {
var tile_gid = layer_data.Tiles[i*_asset.Data.Width + j]; 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 ) { if ( tile_gid > 0 ) {
var asset_path = AssetDatabase.GetAssetPath(_asset); var asset_path = AssetDatabase.GetAssetPath(_asset);
if ( string.IsNullOrEmpty(asset_path) ) { if ( string.IsNullOrEmpty(asset_path) ) {
@@ -85,18 +91,20 @@ namespace IsoTools.Tiled.Internal {
tile_tileset_sprite_name, tile_gid, layer_data.Name)); 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.SetParent(layer.transform, false);
tile_go.transform.localPosition = tile_go.transform.localPosition =
iso_world.IsoToScreen(IsoUtils.Vec3FromXY( iso_world.IsoToScreen(IsoUtils.Vec3FromXY(iso_x, iso_y));
-i + _asset.Data.Height - 1,
-j + _asset.Data.Width - 1));
tile_go.transform.localPosition += new Vector3( tile_go.transform.localPosition += new Vector3(
tileset.TileOffsetX / tile_sprite.pixelsPerUnit, tileset.TileOffsetX / _asset.PixelsPerUnit,
tileset.TileOffsetY / tile_sprite.pixelsPerUnit, tileset.TileOffsetY / _asset.PixelsPerUnit,
-(i + j) * iso_world.stepDepth); (iso_x + iso_y + layer_index) * iso_world.stepDepth);
var tiled_tile = tile_go.AddComponent<TiledMapTile>(); var tiled_tile = tile_go.AddComponent<TiledMapTile>();
tiled_tile.Asset = _asset; tiled_tile.Asset = _asset;
@@ -124,7 +132,12 @@ namespace IsoTools.Tiled.Internal {
} }
public override void OnInspectorGUI() { 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") ) { if ( GUILayout.Button("Create tiled map on scene") ) {
var map_go = new GameObject("TiledMap"); var map_go = new GameObject("TiledMap");
try { try {

View File

@@ -44,6 +44,7 @@ namespace IsoTools.Tiled {
} }
public class TiledMapAsset : ScriptableObject { public class TiledMapAsset : ScriptableObject {
public TiledMapData Data = new TiledMapData(); public TiledMapData Data = new TiledMapData();
public float PixelsPerUnit = 100.0f;
} }
} }