mirror of
https://github.com/BlackMATov/unity-iso-tools.git
synced 2025-12-15 01:12:05 +07:00
PPU for tiled layers
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 221bc03dca62748f284639c0b399875b
|
||||
timeCreated: 1454699157
|
||||
timeCreated: 1454747267
|
||||
licenseType: Free
|
||||
TextureImporter:
|
||||
fileIDToRecycleName:
|
||||
|
||||
@@ -268,7 +268,7 @@
|
||||
<tile gid="4"/>
|
||||
</data>
|
||||
</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>
|
||||
<property name="em" value=""/>
|
||||
<property name="layer prop" value="765"/>
|
||||
@@ -334,8 +334,6 @@
|
||||
<tile gid="0"/>
|
||||
<tile gid="0"/>
|
||||
<tile gid="0"/>
|
||||
<tile gid="4"/>
|
||||
<tile gid="3"/>
|
||||
<tile gid="0"/>
|
||||
<tile gid="0"/>
|
||||
<tile gid="0"/>
|
||||
@@ -348,13 +346,6 @@
|
||||
<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"/>
|
||||
@@ -476,6 +467,9 @@
|
||||
<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"/>
|
||||
@@ -487,6 +481,9 @@
|
||||
<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"/>
|
||||
@@ -498,6 +495,9 @@
|
||||
<tile gid="0"/>
|
||||
<tile gid="0"/>
|
||||
<tile gid="0"/>
|
||||
<tile gid="1"/>
|
||||
<tile gid="1"/>
|
||||
<tile gid="1"/>
|
||||
</data>
|
||||
</layer>
|
||||
<objectgroup name="Object Layer 1" visible="0">
|
||||
|
||||
@@ -26,29 +26,35 @@ namespace IsoTools.Tiled.Internal {
|
||||
var tiled_map = map_go.AddComponent<TiledMap>();
|
||||
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<TiledMapLayer>();
|
||||
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<TiledMapTile>();
|
||||
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 {
|
||||
|
||||
@@ -45,5 +45,6 @@ namespace IsoTools.Tiled {
|
||||
|
||||
public class TiledMapAsset : ScriptableObject {
|
||||
public TiledMapData Data = new TiledMapData();
|
||||
public float PixelsPerUnit = 100.0f;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user