├── Documentation~
├── serve.bat
├── scene-view.png
├── docs
│ ├── img
│ │ ├── logo.png
│ │ ├── blender.png
│ │ ├── favicon.ico
│ │ ├── mapicon.png
│ │ ├── preview.png
│ │ ├── samples.png
│ │ ├── mapiconadd.png
│ │ ├── scene-view.png
│ │ ├── tile-masks.png
│ │ ├── component-map.png
│ │ ├── tile-explorer.png
│ │ ├── tile-settings.png
│ │ ├── tile-toolbar.png
│ │ ├── component-mesh.png
│ │ ├── component-collider.png
│ │ └── component-navigator.png
│ ├── api
│ │ ├── ITilemapModule.md
│ │ ├── TilemapCollider.md
│ │ ├── TilemapMesh.md
│ │ ├── TilemapNavigator.md
│ │ ├── BaseTile.md
│ │ ├── SingleTile.md
│ │ ├── MultiTile.md
│ │ ├── TilemapGUIUtility.md
│ │ ├── TilePalette.md
│ │ ├── AutoTile.md
│ │ ├── TilemapSettings.md
│ │ ├── TilemapData.md
│ │ └── Tilemap3D.md
│ ├── samples.md
│ ├── index.md
│ ├── faq.md
│ ├── extensions.md
│ └── style
│ │ └── overwrites.css
└── mkdocs.yml
├── .gitattributes
├── Editor
├── Icons
│ ├── Map.png
│ ├── Tile.png
│ ├── Map.Mesh.png
│ ├── Tile.Auto.png
│ ├── TileBrush.png
│ ├── TileFlags.png
│ ├── TileGrid.png
│ ├── Flag-MergeA.png
│ ├── Flag-MergeB.png
│ ├── Map.Collider.png
│ ├── Module.Add.png
│ ├── Tile.Multi.png
│ ├── TileExplorer.png
│ ├── Map.Navigator.png
│ ├── Module.Process.png
│ └── Gizmo.Orientation.png
├── Drawers.meta
├── Icons.meta
├── Shaders.meta
├── Shared.meta
├── Styles.meta
├── Tools.meta
├── Utility.meta
├── Inspector.meta
├── com.fkate.tilemap3d.editor.asmdef.meta
├── Shaders
│ ├── TilePreview.shader.meta
│ ├── OrientationGizmo.shader.meta
│ └── OrientationGizmo.shader
├── Tools
│ ├── TileExplorer.cs.meta
│ ├── OrientationGizmo.cs.meta
│ └── TileMapBrushToolbar.cs.meta
├── Drawers
│ ├── TileInfoDrawer.cs.meta
│ ├── TileMaskDrawer.cs.meta
│ └── TileInfoDrawer.cs
├── Shared
│ ├── TilemapRegister.cs.meta
│ ├── TilemapSettings.cs.meta
│ └── TilemapRegister.cs
├── Utility
│ ├── TilemapCursor.cs.meta
│ ├── TilemapGUIUtility.cs.meta
│ └── TilePreviewRenderUtility.cs.meta
├── Inspector
│ ├── TileEditor.cs.meta
│ ├── Tilemap3DEditor.cs.meta
│ ├── TilemapMeshEditor.cs.meta
│ ├── TilemapColliderEditor.cs.meta
│ ├── TilemapNavigatorEditor.cs.meta
│ ├── TilemapColliderEditor.cs
│ └── TilemapMeshEditor.cs
├── Styles
│ ├── TileExplorer.uss.meta
│ ├── TilemapEditor.uss.meta
│ ├── TilemapToolbar.uss.meta
│ ├── TilemapToolbar.uss
│ ├── TilemapEditor.uss
│ └── TileExplorer.uss
└── com.fkate.tilemap3d.editor.asmdef
├── Samples~
├── World_Map_Sample
│ ├── Meshes
│ │ ├── TSet_MapSample.fbx
│ │ └── TSet_MapSample.fbx.meta
│ ├── Textures
│ │ ├── PrefabTileIcon.png
│ │ └── MapSample_Palette.png
│ ├── Editor.meta
│ ├── Meshes.meta
│ ├── Prefabs.meta
│ ├── Scenes.meta
│ ├── Scenes
│ │ └── MapSample_Scene.unity.meta
│ ├── Scripts.meta
│ ├── Textures.meta
│ ├── Tiles.meta
│ ├── Materials.meta
│ ├── Prefabs
│ │ ├── MapSample_BuildingL.prefab.meta
│ │ ├── MapSample_BuildingS.prefab.meta
│ │ └── MapSample_Explosion.prefab.meta
│ ├── Tiles
│ │ ├── MapSample_Road.asset.meta
│ │ ├── MapSample_Bridge.asset.meta
│ │ ├── MapSample_BuildingL.asset.meta
│ │ ├── MapSample_BuildingS.asset.meta
│ │ ├── MapSample_Forest.asset.meta
│ │ ├── MapSample_Other.asset.meta
│ │ ├── MapSample_Plain.asset.meta
│ │ ├── MapSample_River.asset.meta
│ │ ├── MapSample_BuildingL.asset
│ │ ├── MapSample_BuildingS.asset
│ │ ├── MapSample_Bridge.asset
│ │ ├── MapSample_Other.asset
│ │ ├── MapSample_Plain.asset
│ │ ├── MapSample_Forest.asset
│ │ └── MapSample_Road.asset
│ ├── Materials
│ │ ├── MapSample_Palette.mat.meta
│ │ ├── MapSample_Explosion.mat.meta
│ │ └── MapSample_Explosion.mat
│ ├── Editor
│ │ ├── MapSample_Register.cs.meta
│ │ └── MapSample_Register.cs
│ └── Scripts
│ │ ├── BuildingSelector.cs.meta
│ │ ├── MapRandomizer.cs.meta
│ │ ├── TilemapPrefabModule.cs.meta
│ │ ├── PrefabTile.cs.meta
│ │ ├── PrefabTile.cs
│ │ ├── BuildingSelector.cs
│ │ ├── MapRandomizer.cs
│ │ └── TilemapPrefabModule.cs
└── Pixel_Map_Sample
│ ├── Meshes
│ ├── TSet_PixelSample.fbx
│ └── TSet_PixelSample.fbx.meta
│ ├── Textures
│ ├── PixelSample_Atlas.png
│ ├── PixelSample_Parallax.png
│ ├── PixelSample_TopdownSprite.png
│ └── PixelSample_PlatformerSprite.png
│ ├── Scenes
│ ├── PixelSample_Navigation.unity
│ ├── PixelSample_2D.unity.meta
│ ├── PixelSample_Map.unity.meta
│ ├── PixelSample_Dungeon.unity.meta
│ └── PixelSample_Navigation.unity.meta
│ ├── Prefabs
│ ├── Char2D.prefab.meta
│ ├── Char3D.prefab.meta
│ ├── Splash.prefab.meta
│ ├── CameraAnchor.prefab.meta
│ ├── Rooms
│ │ ├── Room_End.prefab.meta
│ │ ├── Room_Fork.prefab.meta
│ │ ├── Room_Cross_A.prefab.meta
│ │ ├── Room_Cross_B.prefab.meta
│ │ ├── Room_Curve.prefab.meta
│ │ ├── Room_Path_A.prefab.meta
│ │ ├── Room_Path_B.prefab.meta
│ │ └── Room_Solid.prefab.meta
│ └── Rooms.meta
│ ├── Editor.meta
│ ├── Meshes.meta
│ ├── Prefabs.meta
│ ├── Scenes.meta
│ ├── Scripts.meta
│ ├── Shaders.meta
│ ├── Textures.meta
│ ├── Tiles.meta
│ ├── Animations.meta
│ ├── Materials.meta
│ ├── Materials
│ ├── PixelSample_Atlas.mat.meta
│ ├── PixelSample_Atlas_Animated.mat.meta
│ ├── PixelSample_ParallaxScrolling.mat.meta
│ ├── PixelSample_Sprite_EightDirection.mat.meta
│ ├── PixelSample_Atlas_Animated.mat
│ ├── PixelSample_ParallaxScrolling.mat
│ └── PixelSample_Sprite_EightDirection.mat
│ ├── Tiles
│ ├── PixelSample_Bricks.asset.meta
│ ├── PixelSample_Bush.asset.meta
│ ├── PixelSample_Grass.asset.meta
│ ├── PixelSample_Grass2D.asset.meta
│ ├── PixelSample_Path.asset.meta
│ ├── PixelSample_Plants.asset.meta
│ ├── PixelSample_Water.asset.meta
│ ├── PixelSample_Bricks2D.asset.meta
│ ├── PixelSample_Connectors.asset.meta
│ ├── PixelSample_Dirtwall.asset.meta
│ ├── PixelSample_FloorTiles.asset.meta
│ ├── PixelSample_Platform.asset.meta
│ ├── PixelSample_StoneFloor.asset.meta
│ ├── PixelSample_TreeStump.asset.meta
│ ├── PixelSample_Platform.asset
│ ├── PixelSample_TreeStump.asset
│ ├── PixelSample_Bush.asset
│ ├── PixelSample_Connectors.asset
│ ├── PixelSample_FloorTiles.asset
│ ├── PixelSample_StoneFloor.asset
│ ├── PixelSample_Plants.asset
│ ├── PixelSample_Dirtwall.asset
│ ├── PixelSample_Water.asset
│ ├── PixelSample_Grass.asset
│ ├── PixelSample_Bricks.asset
│ └── PixelSample_Bricks2D.asset
│ ├── Animations
│ ├── PixelSample_Topdown_Idle.anim.meta
│ ├── PixelSample_Topdown_Jump.anim.meta
│ ├── PixelSample_Topdown_Walk.anim.meta
│ ├── PixelSample_Platformer_Crouch.anim.meta
│ ├── PixelSample_Platformer_Idle.anim.meta
│ ├── PixelSample_Platformer_Jump.anim.meta
│ ├── PixelSample_Platformer_Walk.anim.meta
│ ├── PixelSample_Topdown_Animator.controller.meta
│ ├── PixelSample_Platformer_Animator.controller.meta
│ ├── PixelSample_Platformer_Crouch.anim
│ ├── PixelSample_Topdown_Jump.anim
│ ├── PixelSample_Platformer_Jump.anim
│ ├── PixelSample_Topdown_Idle.anim
│ ├── PixelSample_Platformer_Idle.anim
│ ├── PixelSample_Platformer_Walk.anim
│ └── PixelSample_Topdown_Walk.anim
│ ├── Shaders
│ ├── Unlit_Cutout_Anim.shader.meta
│ ├── Sprites_MultiDirection.shader.meta
│ ├── Unlit_ParallaxScrolling.shader.meta
│ ├── Unlit_Cutout_Anim.shader
│ └── Unlit_ParallaxScrolling.shader
│ ├── Scripts
│ ├── SimpleDungeonRoom.cs.meta
│ ├── SimpleCameraController.cs.meta
│ ├── SimpleDungeonGenerator.cs.meta
│ ├── SimplePlatformerController.cs.meta
│ ├── SimpleDungeonRoom.cs
│ └── SimpleCameraController.cs
│ └── Editor
│ ├── SimpleDungeonGeneratorEditor.cs.meta
│ └── SimpleDungeonGeneratorEditor.cs
├── LICENSE.meta
├── Readme.md.meta
├── package.json.meta
├── Third-Party-Notices.md.meta
├── Editor.meta
├── Runtime.meta
├── Runtime
├── Tiles.meta
├── Behaviour.meta
├── Objects.meta
├── Utility.meta
├── com.fkate.tilemap3d.asmdef.meta
├── Objects
│ ├── TileInfo.cs.meta
│ ├── TileMask.cs.meta
│ ├── TileMapData.cs.meta
│ ├── TilePalette.cs.meta
│ └── TileInfo.cs
├── Utility
│ ├── SharedTypes.cs.meta
│ ├── NativeMeshUtility.cs.meta
│ ├── Tilemap3DUtility.cs.meta
│ ├── TilemapDataUtility.cs.meta
│ ├── SharedTypes.cs
│ └── TilemapDataUtility.cs
├── Behaviour
│ ├── ITilemapModule.cs.meta
│ ├── Tilemap3D.cs.meta
│ ├── TilemapMesh.cs.meta
│ ├── TilemapCollider.cs.meta
│ ├── TilemapNavigator.cs.meta
│ ├── ITilemapModule.cs
│ └── Tilemap3D.cs
├── Tiles
│ ├── AutoTile.cs.meta
│ ├── BaseTile.cs.meta
│ ├── MultiTile.cs.meta
│ ├── SingleTile.cs.meta
│ ├── SingleTile.cs
│ ├── MultiTile.cs
│ └── BaseTile.cs
└── com.fkate.tilemap3d.asmdef
├── .github
└── workflows
│ └── DeployDocumentation.yml
├── package.json
├── Third-Party-Notices.md
└── LICENSE
/Documentation~/serve.bat:
--------------------------------------------------------------------------------
1 | python -m mkdocs serve
2 | pause
--------------------------------------------------------------------------------
/.gitattributes:
--------------------------------------------------------------------------------
1 | # Auto detect text files and perform LF normalization
2 | * text=auto
3 |
--------------------------------------------------------------------------------
/Editor/Icons/Map.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fkate/Tilemap-Creator-3D/HEAD/Editor/Icons/Map.png
--------------------------------------------------------------------------------
/Editor/Icons/Tile.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fkate/Tilemap-Creator-3D/HEAD/Editor/Icons/Tile.png
--------------------------------------------------------------------------------
/Editor/Icons/Map.Mesh.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fkate/Tilemap-Creator-3D/HEAD/Editor/Icons/Map.Mesh.png
--------------------------------------------------------------------------------
/Editor/Icons/Tile.Auto.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fkate/Tilemap-Creator-3D/HEAD/Editor/Icons/Tile.Auto.png
--------------------------------------------------------------------------------
/Editor/Icons/TileBrush.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fkate/Tilemap-Creator-3D/HEAD/Editor/Icons/TileBrush.png
--------------------------------------------------------------------------------
/Editor/Icons/TileFlags.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fkate/Tilemap-Creator-3D/HEAD/Editor/Icons/TileFlags.png
--------------------------------------------------------------------------------
/Editor/Icons/TileGrid.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fkate/Tilemap-Creator-3D/HEAD/Editor/Icons/TileGrid.png
--------------------------------------------------------------------------------
/Documentation~/scene-view.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fkate/Tilemap-Creator-3D/HEAD/Documentation~/scene-view.png
--------------------------------------------------------------------------------
/Editor/Icons/Flag-MergeA.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fkate/Tilemap-Creator-3D/HEAD/Editor/Icons/Flag-MergeA.png
--------------------------------------------------------------------------------
/Editor/Icons/Flag-MergeB.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fkate/Tilemap-Creator-3D/HEAD/Editor/Icons/Flag-MergeB.png
--------------------------------------------------------------------------------
/Editor/Icons/Map.Collider.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fkate/Tilemap-Creator-3D/HEAD/Editor/Icons/Map.Collider.png
--------------------------------------------------------------------------------
/Editor/Icons/Module.Add.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fkate/Tilemap-Creator-3D/HEAD/Editor/Icons/Module.Add.png
--------------------------------------------------------------------------------
/Editor/Icons/Tile.Multi.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fkate/Tilemap-Creator-3D/HEAD/Editor/Icons/Tile.Multi.png
--------------------------------------------------------------------------------
/Editor/Icons/TileExplorer.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fkate/Tilemap-Creator-3D/HEAD/Editor/Icons/TileExplorer.png
--------------------------------------------------------------------------------
/Editor/Icons/Map.Navigator.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fkate/Tilemap-Creator-3D/HEAD/Editor/Icons/Map.Navigator.png
--------------------------------------------------------------------------------
/Editor/Icons/Module.Process.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fkate/Tilemap-Creator-3D/HEAD/Editor/Icons/Module.Process.png
--------------------------------------------------------------------------------
/Documentation~/docs/img/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fkate/Tilemap-Creator-3D/HEAD/Documentation~/docs/img/logo.png
--------------------------------------------------------------------------------
/Editor/Icons/Gizmo.Orientation.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fkate/Tilemap-Creator-3D/HEAD/Editor/Icons/Gizmo.Orientation.png
--------------------------------------------------------------------------------
/Documentation~/docs/img/blender.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fkate/Tilemap-Creator-3D/HEAD/Documentation~/docs/img/blender.png
--------------------------------------------------------------------------------
/Documentation~/docs/img/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fkate/Tilemap-Creator-3D/HEAD/Documentation~/docs/img/favicon.ico
--------------------------------------------------------------------------------
/Documentation~/docs/img/mapicon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fkate/Tilemap-Creator-3D/HEAD/Documentation~/docs/img/mapicon.png
--------------------------------------------------------------------------------
/Documentation~/docs/img/preview.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fkate/Tilemap-Creator-3D/HEAD/Documentation~/docs/img/preview.png
--------------------------------------------------------------------------------
/Documentation~/docs/img/samples.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fkate/Tilemap-Creator-3D/HEAD/Documentation~/docs/img/samples.png
--------------------------------------------------------------------------------
/Documentation~/docs/img/mapiconadd.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fkate/Tilemap-Creator-3D/HEAD/Documentation~/docs/img/mapiconadd.png
--------------------------------------------------------------------------------
/Documentation~/docs/img/scene-view.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fkate/Tilemap-Creator-3D/HEAD/Documentation~/docs/img/scene-view.png
--------------------------------------------------------------------------------
/Documentation~/docs/img/tile-masks.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fkate/Tilemap-Creator-3D/HEAD/Documentation~/docs/img/tile-masks.png
--------------------------------------------------------------------------------
/Documentation~/docs/img/component-map.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fkate/Tilemap-Creator-3D/HEAD/Documentation~/docs/img/component-map.png
--------------------------------------------------------------------------------
/Documentation~/docs/img/tile-explorer.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fkate/Tilemap-Creator-3D/HEAD/Documentation~/docs/img/tile-explorer.png
--------------------------------------------------------------------------------
/Documentation~/docs/img/tile-settings.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fkate/Tilemap-Creator-3D/HEAD/Documentation~/docs/img/tile-settings.png
--------------------------------------------------------------------------------
/Documentation~/docs/img/tile-toolbar.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fkate/Tilemap-Creator-3D/HEAD/Documentation~/docs/img/tile-toolbar.png
--------------------------------------------------------------------------------
/Documentation~/docs/img/component-mesh.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fkate/Tilemap-Creator-3D/HEAD/Documentation~/docs/img/component-mesh.png
--------------------------------------------------------------------------------
/Documentation~/docs/img/component-collider.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fkate/Tilemap-Creator-3D/HEAD/Documentation~/docs/img/component-collider.png
--------------------------------------------------------------------------------
/Documentation~/docs/img/component-navigator.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fkate/Tilemap-Creator-3D/HEAD/Documentation~/docs/img/component-navigator.png
--------------------------------------------------------------------------------
/Samples~/World_Map_Sample/Meshes/TSet_MapSample.fbx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fkate/Tilemap-Creator-3D/HEAD/Samples~/World_Map_Sample/Meshes/TSet_MapSample.fbx
--------------------------------------------------------------------------------
/Samples~/Pixel_Map_Sample/Meshes/TSet_PixelSample.fbx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fkate/Tilemap-Creator-3D/HEAD/Samples~/Pixel_Map_Sample/Meshes/TSet_PixelSample.fbx
--------------------------------------------------------------------------------
/Samples~/World_Map_Sample/Textures/PrefabTileIcon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fkate/Tilemap-Creator-3D/HEAD/Samples~/World_Map_Sample/Textures/PrefabTileIcon.png
--------------------------------------------------------------------------------
/Samples~/Pixel_Map_Sample/Textures/PixelSample_Atlas.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fkate/Tilemap-Creator-3D/HEAD/Samples~/Pixel_Map_Sample/Textures/PixelSample_Atlas.png
--------------------------------------------------------------------------------
/Samples~/World_Map_Sample/Textures/MapSample_Palette.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fkate/Tilemap-Creator-3D/HEAD/Samples~/World_Map_Sample/Textures/MapSample_Palette.png
--------------------------------------------------------------------------------
/Samples~/Pixel_Map_Sample/Textures/PixelSample_Parallax.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fkate/Tilemap-Creator-3D/HEAD/Samples~/Pixel_Map_Sample/Textures/PixelSample_Parallax.png
--------------------------------------------------------------------------------
/Samples~/Pixel_Map_Sample/Scenes/PixelSample_Navigation.unity:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fkate/Tilemap-Creator-3D/HEAD/Samples~/Pixel_Map_Sample/Scenes/PixelSample_Navigation.unity
--------------------------------------------------------------------------------
/Samples~/Pixel_Map_Sample/Textures/PixelSample_TopdownSprite.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fkate/Tilemap-Creator-3D/HEAD/Samples~/Pixel_Map_Sample/Textures/PixelSample_TopdownSprite.png
--------------------------------------------------------------------------------
/LICENSE.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 73d8f889095e886469bf45eaabcc7431
3 | DefaultImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Samples~/Pixel_Map_Sample/Textures/PixelSample_PlatformerSprite.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fkate/Tilemap-Creator-3D/HEAD/Samples~/Pixel_Map_Sample/Textures/PixelSample_PlatformerSprite.png
--------------------------------------------------------------------------------
/Readme.md.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: a1d36114a86f3e544b23141fd2393402
3 | TextScriptImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/package.json.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 3cf8e907dd66ab44283775c825ccb52e
3 | PackageManifestImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Third-Party-Notices.md.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: a001691bc6076c649931c982955adf1b
3 | TextScriptImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Editor.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: c451bd0be838d124aa8c99182e892701
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Runtime.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: a9dc3fe51d6db604ca5597d358d99318
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Editor/Drawers.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: c5336b3ded797794dbd15def0882d412
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Editor/Icons.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 7d668bc8c4f898a4686b57fb98598d28
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Editor/Shaders.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 7e369ad611f40c142b9e2f24262269b8
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Editor/Shared.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 7a33d17f67d33424fb8d6373093c838e
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Editor/Styles.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 777b56b3238074c4e8b7c364b0996bbd
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Editor/Tools.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 4bebe8dfad807a542a4c555944073f0d
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Editor/Utility.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 225c8c7ba38b1a54c8674bb66f086cb7
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Runtime/Tiles.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 76d82ea92d1700e43bb0483e40e6418c
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Editor/Inspector.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: c9c2a6743f1160e4b86a7d65d04c8bdb
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Runtime/Behaviour.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 078dfad11a401c54b9e62c0d32af545a
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Runtime/Objects.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 3842f26987a424c499d76b6df0181aa9
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Runtime/Utility.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: a0426f04048c7f64b9d2868e3ce63fad
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Runtime/com.fkate.tilemap3d.asmdef.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: f62cd0bec5d37064580be83ddb60fdf2
3 | AssemblyDefinitionImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Samples~/Pixel_Map_Sample/Prefabs/Char2D.prefab.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 16e7778b29984a94dbabc80367262986
3 | PrefabImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Samples~/Pixel_Map_Sample/Prefabs/Char3D.prefab.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 5dcd20be2be657a4a9fc15dfec78d98a
3 | PrefabImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Samples~/Pixel_Map_Sample/Prefabs/Splash.prefab.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 71f1fb02d19371544a3b9f9c4383ddf3
3 | PrefabImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Editor/com.fkate.tilemap3d.editor.asmdef.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 8de667b6925c00f41a15f551feefb196
3 | AssemblyDefinitionImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Samples~/Pixel_Map_Sample/Editor.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: f15f511acb8ac8349a59998cf5e8c67c
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Samples~/Pixel_Map_Sample/Meshes.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: d72492503cfa8c34aab5528d32c7b51d
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Samples~/Pixel_Map_Sample/Prefabs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 42c53ef6bf2ba4f4084d5a22a65ed361
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Samples~/Pixel_Map_Sample/Prefabs/CameraAnchor.prefab.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: a8b7cef7161f83d47a11d9c932611cef
3 | PrefabImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Samples~/Pixel_Map_Sample/Prefabs/Rooms/Room_End.prefab.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: ba8e1a4710124ab4fb661141dafe1db7
3 | PrefabImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Samples~/Pixel_Map_Sample/Prefabs/Rooms/Room_Fork.prefab.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: c48e613754ec8f94e8f4436f871c231a
3 | PrefabImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Samples~/Pixel_Map_Sample/Scenes.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 2e114dcc154163743a70cbdbd0480103
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Samples~/Pixel_Map_Sample/Scenes/PixelSample_2D.unity.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 136b7979bb50ce040b44c2d94d578abc
3 | DefaultImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Samples~/Pixel_Map_Sample/Scenes/PixelSample_Map.unity.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 35949b8a347556d4caa24838d6a4bd9f
3 | DefaultImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Samples~/Pixel_Map_Sample/Scripts.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 56cd252a8889be14b88195a53d108d06
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Samples~/Pixel_Map_Sample/Shaders.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 39b6d563c363faa4fa70edb8f99afa59
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Samples~/Pixel_Map_Sample/Textures.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 4bf66932f33e9524e95afbf9a90c59dd
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Samples~/Pixel_Map_Sample/Tiles.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 00725e917c06c5f4aa83a8972a2e9ec6
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Samples~/World_Map_Sample/Editor.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: a8ae9bda00cd55f41a883c20554b2e00
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Samples~/World_Map_Sample/Meshes.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: b1450ed4fb7ccb247a1e59b8774cb0b5
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Samples~/World_Map_Sample/Prefabs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 1495cea33e8a3f24a9f52d7bc1e0a990
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Samples~/World_Map_Sample/Scenes.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 5755d5c8aacf4b249a0a1b17a0f71518
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Samples~/World_Map_Sample/Scenes/MapSample_Scene.unity.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: f09197d1b700db74b81f8a29b531307e
3 | DefaultImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Samples~/World_Map_Sample/Scripts.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 6939656e1ea23a74fab465a35ea054ab
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Samples~/World_Map_Sample/Textures.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 43a588ac83a388444b08c0c8c047e0c6
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Samples~/World_Map_Sample/Tiles.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 7776eb280f91355458ba8d4ce56ffaf0
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Samples~/Pixel_Map_Sample/Animations.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 2d18d30e03714a144967754ad8117c40
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Samples~/Pixel_Map_Sample/Materials.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: c9ed29e8492187c4fbd08be1d9144cf9
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Samples~/Pixel_Map_Sample/Prefabs/Rooms.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 548a13befa91bce4c82d0b6de5203073
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Samples~/Pixel_Map_Sample/Prefabs/Rooms/Room_Cross_A.prefab.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 29f2f8b3570b24443aa09a1f77d9827c
3 | PrefabImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Samples~/Pixel_Map_Sample/Prefabs/Rooms/Room_Cross_B.prefab.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: b5b696ecccccc5143824c7454dfa1521
3 | PrefabImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Samples~/Pixel_Map_Sample/Prefabs/Rooms/Room_Curve.prefab.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: fdf639e95bbb2ae4e9d2fc4f0541fec5
3 | PrefabImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Samples~/Pixel_Map_Sample/Prefabs/Rooms/Room_Path_A.prefab.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: f4088bb3d9ac66a4285e0f0f0a10307e
3 | PrefabImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Samples~/Pixel_Map_Sample/Prefabs/Rooms/Room_Path_B.prefab.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: ec0594a71d5bb0b439ad78013c64d060
3 | PrefabImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Samples~/Pixel_Map_Sample/Prefabs/Rooms/Room_Solid.prefab.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: ff31f22f7614d9049922d6aa3bf546e4
3 | PrefabImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Samples~/Pixel_Map_Sample/Scenes/PixelSample_Dungeon.unity.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 0305587a0059f1046a32f507697f43ef
3 | DefaultImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Samples~/World_Map_Sample/Materials.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 35eba92f0e0dac6489600e01b156a2ab
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Samples~/World_Map_Sample/Prefabs/MapSample_BuildingL.prefab.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 53616a1d4cb8fd24794f323fac022f8b
3 | PrefabImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Samples~/World_Map_Sample/Prefabs/MapSample_BuildingS.prefab.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 7d419b0c4d812314fbc4df5bab41c2dd
3 | PrefabImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Samples~/World_Map_Sample/Prefabs/MapSample_Explosion.prefab.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: b24e1bb545737f048b44ffa1fe1308f0
3 | PrefabImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Samples~/Pixel_Map_Sample/Scenes/PixelSample_Navigation.unity.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: a1c9a70633c5e4b43bc08ad0f11b59ad
3 | DefaultImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Samples~/World_Map_Sample/Tiles/MapSample_Road.asset.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: baebeda1abd7ec048b08a2c0b12d03bd
3 | NativeFormatImporter:
4 | externalObjects: {}
5 | mainObjectFileID: 11400000
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Samples~/Pixel_Map_Sample/Materials/PixelSample_Atlas.mat.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: df5812252ba252e458e028e0ea615e8d
3 | NativeFormatImporter:
4 | externalObjects: {}
5 | mainObjectFileID: 2100000
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Samples~/Pixel_Map_Sample/Tiles/PixelSample_Bricks.asset.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: fbda59ba8545f9d4299538ce56c854b6
3 | NativeFormatImporter:
4 | externalObjects: {}
5 | mainObjectFileID: 11400000
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Samples~/Pixel_Map_Sample/Tiles/PixelSample_Bush.asset.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: ab3eebc935586694599792855155a917
3 | NativeFormatImporter:
4 | externalObjects: {}
5 | mainObjectFileID: 11400000
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Samples~/Pixel_Map_Sample/Tiles/PixelSample_Grass.asset.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: a6de7fbd25f82d3418218cbda572e562
3 | NativeFormatImporter:
4 | externalObjects: {}
5 | mainObjectFileID: 11400000
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Samples~/Pixel_Map_Sample/Tiles/PixelSample_Grass2D.asset.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 9a77c95f6260ea74e83faff4f4b97d26
3 | NativeFormatImporter:
4 | externalObjects: {}
5 | mainObjectFileID: 11400000
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Samples~/Pixel_Map_Sample/Tiles/PixelSample_Path.asset.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 96b90bb7db664804c94d07d20d9c461a
3 | NativeFormatImporter:
4 | externalObjects: {}
5 | mainObjectFileID: 11400000
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Samples~/Pixel_Map_Sample/Tiles/PixelSample_Plants.asset.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: e20f9bdd1d5aaa148875bc3a360247e4
3 | NativeFormatImporter:
4 | externalObjects: {}
5 | mainObjectFileID: 11400000
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Samples~/Pixel_Map_Sample/Tiles/PixelSample_Water.asset.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: fef9c3cbd71cb554cb0ad04b609e18b5
3 | NativeFormatImporter:
4 | externalObjects: {}
5 | mainObjectFileID: 11400000
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Samples~/World_Map_Sample/Materials/MapSample_Palette.mat.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 6e9530b8c86f51641b39aaf421389a3a
3 | NativeFormatImporter:
4 | externalObjects: {}
5 | mainObjectFileID: 2100000
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Samples~/World_Map_Sample/Tiles/MapSample_Bridge.asset.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: d94cf00f691ad2745834867315274a10
3 | NativeFormatImporter:
4 | externalObjects: {}
5 | mainObjectFileID: 11400000
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Samples~/World_Map_Sample/Tiles/MapSample_BuildingL.asset.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: ada8b3698f15ef2499c9c997bdcd82fc
3 | NativeFormatImporter:
4 | externalObjects: {}
5 | mainObjectFileID: 11400000
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Samples~/World_Map_Sample/Tiles/MapSample_BuildingS.asset.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 6c0a98fa9b89e6441801f62dd8d86bed
3 | NativeFormatImporter:
4 | externalObjects: {}
5 | mainObjectFileID: 11400000
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Samples~/World_Map_Sample/Tiles/MapSample_Forest.asset.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: df31f46300a702342accd5d9d9b5a092
3 | NativeFormatImporter:
4 | externalObjects: {}
5 | mainObjectFileID: 11400000
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Samples~/World_Map_Sample/Tiles/MapSample_Other.asset.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: ca2105d56c5cb7a4fa6367c12234d785
3 | NativeFormatImporter:
4 | externalObjects: {}
5 | mainObjectFileID: 11400000
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Samples~/World_Map_Sample/Tiles/MapSample_Plain.asset.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: bff9fd0e39fad3b408a84003efcff210
3 | NativeFormatImporter:
4 | externalObjects: {}
5 | mainObjectFileID: 11400000
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Samples~/World_Map_Sample/Tiles/MapSample_River.asset.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 19e3db9abed7bb444b05bff671b810c8
3 | NativeFormatImporter:
4 | externalObjects: {}
5 | mainObjectFileID: 11400000
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Samples~/Pixel_Map_Sample/Tiles/PixelSample_Bricks2D.asset.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: fb8996d809a276b4b974151d12fc1c2c
3 | NativeFormatImporter:
4 | externalObjects: {}
5 | mainObjectFileID: 11400000
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Samples~/Pixel_Map_Sample/Tiles/PixelSample_Connectors.asset.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: a4fcf94360502164b99bb1be87d88d5a
3 | NativeFormatImporter:
4 | externalObjects: {}
5 | mainObjectFileID: 11400000
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Samples~/Pixel_Map_Sample/Tiles/PixelSample_Dirtwall.asset.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: af3266f664e56e645ae8dbf640dc9e05
3 | NativeFormatImporter:
4 | externalObjects: {}
5 | mainObjectFileID: 11400000
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Samples~/Pixel_Map_Sample/Tiles/PixelSample_FloorTiles.asset.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 0cf4f70bd8dfce14aa9a2653e5641ea1
3 | NativeFormatImporter:
4 | externalObjects: {}
5 | mainObjectFileID: 11400000
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Samples~/Pixel_Map_Sample/Tiles/PixelSample_Platform.asset.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 5919813f315165640a920cca895ff985
3 | NativeFormatImporter:
4 | externalObjects: {}
5 | mainObjectFileID: 11400000
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Samples~/Pixel_Map_Sample/Tiles/PixelSample_StoneFloor.asset.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 215505289d30ad64cbc9b997ec6a9132
3 | NativeFormatImporter:
4 | externalObjects: {}
5 | mainObjectFileID: 11400000
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Samples~/Pixel_Map_Sample/Tiles/PixelSample_TreeStump.asset.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 0c4b4ce1508a69141ad471bb7521daba
3 | NativeFormatImporter:
4 | externalObjects: {}
5 | mainObjectFileID: 11400000
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Samples~/World_Map_Sample/Materials/MapSample_Explosion.mat.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 9105ec3052c8cdd4581c62e64135b4d8
3 | NativeFormatImporter:
4 | externalObjects: {}
5 | mainObjectFileID: 2100000
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Samples~/Pixel_Map_Sample/Animations/PixelSample_Topdown_Idle.anim.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: f937d3d9b15d12b4b921fd3c4558dfce
3 | NativeFormatImporter:
4 | externalObjects: {}
5 | mainObjectFileID: 7400000
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Samples~/Pixel_Map_Sample/Animations/PixelSample_Topdown_Jump.anim.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 7c59f57c61628714eb468185f652f4a5
3 | NativeFormatImporter:
4 | externalObjects: {}
5 | mainObjectFileID: 7400000
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Samples~/Pixel_Map_Sample/Animations/PixelSample_Topdown_Walk.anim.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 3542c8b5fe86017469f2bb0876d11f07
3 | NativeFormatImporter:
4 | externalObjects: {}
5 | mainObjectFileID: 7400000
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Samples~/Pixel_Map_Sample/Materials/PixelSample_Atlas_Animated.mat.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: c4571d6a187162d409acc4a2274f0cc5
3 | NativeFormatImporter:
4 | externalObjects: {}
5 | mainObjectFileID: 2100000
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Samples~/Pixel_Map_Sample/Animations/PixelSample_Platformer_Crouch.anim.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 7f2729980ba5b4d4fac6b914af8df349
3 | NativeFormatImporter:
4 | externalObjects: {}
5 | mainObjectFileID: 7400000
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Samples~/Pixel_Map_Sample/Animations/PixelSample_Platformer_Idle.anim.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 151370b80baa6fe46a7c966db628cef9
3 | NativeFormatImporter:
4 | externalObjects: {}
5 | mainObjectFileID: 7400000
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Samples~/Pixel_Map_Sample/Animations/PixelSample_Platformer_Jump.anim.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: f19d39cc2876b0f47b38c5b533f6a841
3 | NativeFormatImporter:
4 | externalObjects: {}
5 | mainObjectFileID: 7400000
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Samples~/Pixel_Map_Sample/Animations/PixelSample_Platformer_Walk.anim.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 5362acdf51382d34d9a32e7975f822f7
3 | NativeFormatImporter:
4 | externalObjects: {}
5 | mainObjectFileID: 7400000
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Samples~/Pixel_Map_Sample/Materials/PixelSample_ParallaxScrolling.mat.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: d7d0f3c66ff9fda4b9548c0afc44a650
3 | NativeFormatImporter:
4 | externalObjects: {}
5 | mainObjectFileID: 2100000
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Samples~/Pixel_Map_Sample/Materials/PixelSample_Sprite_EightDirection.mat.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 950cceff8e8dd4d4baac26c9c46bc5c7
3 | NativeFormatImporter:
4 | externalObjects: {}
5 | mainObjectFileID: 2100000
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Samples~/Pixel_Map_Sample/Animations/PixelSample_Topdown_Animator.controller.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 6557af072f1268d4daa6c78d228997d8
3 | NativeFormatImporter:
4 | externalObjects: {}
5 | mainObjectFileID: 9100000
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Samples~/Pixel_Map_Sample/Animations/PixelSample_Platformer_Animator.controller.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 4ca65b56d06f77f45aa8a659d05b06f7
3 | NativeFormatImporter:
4 | externalObjects: {}
5 | mainObjectFileID: 9100000
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Editor/Shaders/TilePreview.shader.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 791cf958134e3ab4aafb151f342bd6f7
3 | ShaderImporter:
4 | externalObjects: {}
5 | defaultTextures: []
6 | nonModifiableTextures: []
7 | preprocessorOverride: 0
8 | userData:
9 | assetBundleName:
10 | assetBundleVariant:
11 |
--------------------------------------------------------------------------------
/Editor/Shaders/OrientationGizmo.shader.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: d9eee7ddb4a4f8642b05e96cdd0ca87c
3 | ShaderImporter:
4 | externalObjects: {}
5 | defaultTextures: []
6 | nonModifiableTextures: []
7 | preprocessorOverride: 0
8 | userData:
9 | assetBundleName:
10 | assetBundleVariant:
11 |
--------------------------------------------------------------------------------
/Editor/Tools/TileExplorer.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 79cb536fbcde80b45a3058cf1590ddfb
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Runtime/Objects/TileInfo.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: d554524b6e2426a4db226fa53dbae6d6
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Runtime/Objects/TileMask.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 2504e6acf8fb07646964b1e076dc4eb4
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Editor/Drawers/TileInfoDrawer.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: bfc29d9e0a59c5d44b00252d56b7aa6e
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Editor/Drawers/TileMaskDrawer.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: f7198cd1b502fd54bb0cf88a09aa7cb7
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Editor/Shared/TilemapRegister.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 2c87d8fc25818d145aa1389836beab82
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Editor/Shared/TilemapSettings.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 8ec4d1d87bdc30147b8ff90dabbd3cc3
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Editor/Tools/OrientationGizmo.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: a2643b8ed2f538a43bf6f6d824165e54
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Editor/Utility/TilemapCursor.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 993bec3d81bfa2b43b95591ff349fe22
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Runtime/Objects/TileMapData.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 1229db991cb2c2544bce9ac2f2b80f5b
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Runtime/Objects/TilePalette.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 2efdafc3123cc7147869bc0c5c89a2a4
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Runtime/Utility/SharedTypes.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: d4431587f60c75a47bece6382299bc7b
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Editor/Tools/TileMapBrushToolbar.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 8a6c74071684fe8439bebd5b45875083
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Editor/Utility/TilemapGUIUtility.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 9eeacd63751ab514aa4d45bf0b679153
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Runtime/Behaviour/ITilemapModule.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 7c50d4564ad2e914da329b05e04a7ed6
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Runtime/Utility/NativeMeshUtility.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: f6f1370d1d84bb54880fe5764b1c4001
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Runtime/Utility/Tilemap3DUtility.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: d893735c1de4af74bbab3974d614cbd3
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Runtime/Utility/TilemapDataUtility.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: d430365f3df27824d8792d43989dad73
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Editor/Utility/TilePreviewRenderUtility.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: c386a5be6b61e9d4f944736d9100135d
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Samples~/Pixel_Map_Sample/Shaders/Unlit_Cutout_Anim.shader.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 4e46e1e95c7b5d24fa14112692868110
3 | ShaderImporter:
4 | externalObjects: {}
5 | defaultTextures: []
6 | nonModifiableTextures: []
7 | preprocessorOverride: 0
8 | userData:
9 | assetBundleName:
10 | assetBundleVariant:
11 |
--------------------------------------------------------------------------------
/Samples~/Pixel_Map_Sample/Shaders/Sprites_MultiDirection.shader.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: db59671986c6d174eb045fb63a4d9246
3 | ShaderImporter:
4 | externalObjects: {}
5 | defaultTextures: []
6 | nonModifiableTextures: []
7 | preprocessorOverride: 0
8 | userData:
9 | assetBundleName:
10 | assetBundleVariant:
11 |
--------------------------------------------------------------------------------
/Samples~/Pixel_Map_Sample/Shaders/Unlit_ParallaxScrolling.shader.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: c6337d5f8b1218c4e878dd1d2ad6a065
3 | ShaderImporter:
4 | externalObjects: {}
5 | defaultTextures: []
6 | nonModifiableTextures: []
7 | preprocessorOverride: 0
8 | userData:
9 | assetBundleName:
10 | assetBundleVariant:
11 |
--------------------------------------------------------------------------------
/Samples~/Pixel_Map_Sample/Scripts/SimpleDungeonRoom.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 85ed8ce588011d5458f630b761dd4d4c
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Samples~/World_Map_Sample/Editor/MapSample_Register.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: c3cb2ce89a744d34eada612b94391c30
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Samples~/World_Map_Sample/Scripts/BuildingSelector.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 87f3af0f0eb578f45b95a117ee7ad34a
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Samples~/World_Map_Sample/Scripts/MapRandomizer.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 0f2d48a9df6101845b3909df58e41171
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Samples~/Pixel_Map_Sample/Scripts/SimpleCameraController.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 46f2681ff4cddc54a813d37349dd92db
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Samples~/Pixel_Map_Sample/Scripts/SimpleDungeonGenerator.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: eaadb65ea0d97434b8347bdd9ff85dac
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Samples~/World_Map_Sample/Scripts/TilemapPrefabModule.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: d0ec89e5fe1ae7648a973a5b0ef48e4b
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Samples~/Pixel_Map_Sample/Editor/SimpleDungeonGeneratorEditor.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 16eb2264ec3ecbf4eb08bf17bac4f52e
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Samples~/Pixel_Map_Sample/Scripts/SimplePlatformerController.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: f5428c2b3ab220842bc3b1a5db3ab6f4
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Runtime/Tiles/AutoTile.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 6e71ebfdd92a51043be0f6ee64229708
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {fileID: 2800000, guid: 33e5a77e2a0c2f342baa3f5650b9ab87, type: 3}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Runtime/Tiles/BaseTile.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 4bab731409cce6149a7cee2312866302
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {fileID: 2800000, guid: 3e6f4cef03100c549a2108448207636d, type: 3}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Runtime/Tiles/MultiTile.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 04a0ff3def4de4f408179476bda4993e
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {fileID: 2800000, guid: b17462d4527e30a4aac3a8d89b586e77, type: 3}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Runtime/Tiles/SingleTile.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 8092a004e48546b4b96947a9277b33e6
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {fileID: 2800000, guid: 3e6f4cef03100c549a2108448207636d, type: 3}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Editor/Inspector/TileEditor.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 469ada12b942d254ebc316e3f1afb8e2
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {fileID: 2800000, guid: 3e6f4cef03100c549a2108448207636d, type: 3}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Runtime/Behaviour/Tilemap3D.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: a896dfc71698fcc4db656eeebfd17f3a
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {fileID: 2800000, guid: b1c7e3670aced6346b00302fbe1c56a8, type: 3}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Runtime/Behaviour/TilemapMesh.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 2f70963ccf8020144bbcfecd78ce0fd6
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {fileID: 2800000, guid: 60cc13cf003f252408e203cdc2774be2, type: 3}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Editor/Inspector/Tilemap3DEditor.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 00daa0e5ad4403849a64deb0c91f55ef
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {fileID: 2800000, guid: b1c7e3670aced6346b00302fbe1c56a8, type: 3}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Editor/Inspector/TilemapMeshEditor.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 967908e4b24490c48b668ffa9ca69e99
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {fileID: 2800000, guid: 60cc13cf003f252408e203cdc2774be2, type: 3}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Runtime/Behaviour/TilemapCollider.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: caa50c631b8d141448eb58c6052b3ef5
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {fileID: 2800000, guid: e55233137cf74c4428c34c171ccf8052, type: 3}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Runtime/Behaviour/TilemapNavigator.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 51c6591697645694c8ae1cdf4bbfd325
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {fileID: 2800000, guid: 932b050a4c5403f419e024c78ee772bc, type: 3}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Editor/Inspector/TilemapColliderEditor.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: af8a6d00f4a945c46af23f19e57226bc
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {fileID: 2800000, guid: e55233137cf74c4428c34c171ccf8052, type: 3}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Editor/Inspector/TilemapNavigatorEditor.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: d1e612d3bc8765b499e368aa3291486f
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {fileID: 2800000, guid: 932b050a4c5403f419e024c78ee772bc, type: 3}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Editor/Styles/TileExplorer.uss.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 637f8d62d291b1f40a849acb39b58d9c
3 | ScriptedImporter:
4 | internalIDToNameTable: []
5 | externalObjects: {}
6 | serializedVersion: 2
7 | userData:
8 | assetBundleName:
9 | assetBundleVariant:
10 | script: {fileID: 12385, guid: 0000000000000000e000000000000000, type: 0}
11 | disableValidation: 0
12 |
--------------------------------------------------------------------------------
/Editor/Styles/TilemapEditor.uss.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 6bf0540aef140624db5516d10c19f08c
3 | ScriptedImporter:
4 | internalIDToNameTable: []
5 | externalObjects: {}
6 | serializedVersion: 2
7 | userData:
8 | assetBundleName:
9 | assetBundleVariant:
10 | script: {fileID: 12385, guid: 0000000000000000e000000000000000, type: 0}
11 | disableValidation: 0
12 |
--------------------------------------------------------------------------------
/Editor/Styles/TilemapToolbar.uss.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 90dd4f2b03cc65c4ba2077441335f9d8
3 | ScriptedImporter:
4 | internalIDToNameTable: []
5 | externalObjects: {}
6 | serializedVersion: 2
7 | userData:
8 | assetBundleName:
9 | assetBundleVariant:
10 | script: {fileID: 12385, guid: 0000000000000000e000000000000000, type: 0}
11 | disableValidation: 0
12 |
--------------------------------------------------------------------------------
/Samples~/World_Map_Sample/Scripts/PrefabTile.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 36443d0881d947249be08422bef68b12
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {fileID: 2800000, guid: 6b23f5e2e089a43478db369513d59a53, type: 3}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Documentation~/docs/api/ITilemapModule.md:
--------------------------------------------------------------------------------
1 | # ITilemapModule
2 | Interface for implementing modules. Should always be used in combination with Monobehaviour.
3 | Extend this class if you want to write a custom module.
4 |
5 | ## Methods
6 | |Name|Usage|
7 | |:---|:----|
8 | |BakePartial(Tilemap3D map, Box3D area)|Called when map is baked dynamicly|
9 | |Bake(Tilemap3D map)|Called when map is baked|
10 | |Clear()|Clean up module data on demand|
--------------------------------------------------------------------------------
/Samples~/Pixel_Map_Sample/Scripts/SimpleDungeonRoom.cs:
--------------------------------------------------------------------------------
1 | // Copyright (c) 2023 Felix Kate. BSD-3 license (see included license file)
2 | // Additional mask to use on tilemap prefabs
3 |
4 | using UnityEngine;
5 |
6 | namespace TilemapCreator3D.Samples {
7 | [RequireComponent(typeof(Tilemap3D))]
8 | public class SimpleDungeonRoom : MonoBehaviour {
9 | public TileMaskCompound RoomMask;
10 |
11 | public TilemapData Data => GetComponent().Data;
12 |
13 | }
14 | }
15 |
16 |
--------------------------------------------------------------------------------
/Samples~/World_Map_Sample/Editor/MapSample_Register.cs:
--------------------------------------------------------------------------------
1 | // Copyright (c) 2023 Felix Kate. BSD-3 license (see included license file)
2 |
3 | using TilemapCreator3D.EditorOnly;
4 | using UnityEditor;
5 |
6 | namespace TilemapCreator3D.Samples.EditorOnly {
7 | [InitializeOnLoad]
8 | public class MapSample_Register {
9 | static MapSample_Register () {
10 | TilemapSettings settings = TilemapSettings.instance;
11 |
12 | settings.RegisterModule();
13 | }
14 |
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/Documentation~/docs/api/TilemapCollider.md:
--------------------------------------------------------------------------------
1 | # TilemapCollider
2 | Module component for generating collider components from TilePalette and TileMapData information.
3 | Will combine adjacent box colliders into bigger boxes.
4 | Should only be called sparsly due to the baking process generating a lot of components.
5 |
6 | ## Inherited Methods
7 | |Name|Usage|
8 | |:---|:----|
9 | |BakePartial(Tilemap3D map, Box3D area)|Unused|
10 | |Bake(Tilemap3D map)|Bake box and mesh colliders to sub objects|
11 | |Clear()|Clear generated sub objects|
--------------------------------------------------------------------------------
/Runtime/com.fkate.tilemap3d.asmdef:
--------------------------------------------------------------------------------
1 | {
2 | "name": "com.fkate.tilemap3d",
3 | "rootNamespace": "",
4 | "references": [
5 | "GUID:d8b63aba1907145bea998dd612889d6b",
6 | "GUID:e0cd26848372d4e5c891c569017e11f1"
7 | ],
8 | "includePlatforms": [],
9 | "excludePlatforms": [],
10 | "allowUnsafeCode": false,
11 | "overrideReferences": false,
12 | "precompiledReferences": [],
13 | "autoReferenced": true,
14 | "defineConstraints": [],
15 | "versionDefines": [],
16 | "noEngineReferences": false
17 | }
--------------------------------------------------------------------------------
/Runtime/Behaviour/ITilemapModule.cs:
--------------------------------------------------------------------------------
1 | // Copyright (c) 2023 Felix Kate. BSD-3 license (see included license file)
2 |
3 | namespace TilemapCreator3D {
4 | public interface ITilemapModule {
5 |
6 | // Summary
7 | // Bake module only in specified area
8 | void BakePartial(Tilemap3D map, Box3D area);
9 |
10 | // Summary
11 | // Bake module
12 | void Bake(Tilemap3D map);
13 |
14 | // Summary
15 | // Clear module
16 | void Clear();
17 |
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/Runtime/Tiles/SingleTile.cs:
--------------------------------------------------------------------------------
1 | // Copyright (c) 2023 Felix Kate. BSD-3 license (see included license file)
2 |
3 | using UnityEngine;
4 |
5 | namespace TilemapCreator3D {
6 | [CreateAssetMenu(fileName = "Tile", menuName = "MapTools/Tile", order = 0)]
7 | public class SingleTile : BaseTile {
8 |
9 | public TileInfo TileInfo;
10 |
11 | public override TileInfo GetInfo(int index) => TileInfo;
12 | public override int Length => 1;
13 |
14 | public override Mesh GetTilePreview(int index) => TileInfo.Mesh;
15 |
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/Runtime/Objects/TileInfo.cs:
--------------------------------------------------------------------------------
1 | // Copyright (c) 2023 Felix Kate. BSD-3 license (see included license file)
2 | // Structs that hold the per tile information
3 |
4 | using UnityEngine;
5 |
6 | namespace TilemapCreator3D {
7 | [System.Serializable]
8 | public struct TileInfo {
9 | public Mesh Mesh;
10 | public Mesh CollisionMesh;
11 | public TileCollision Collision;
12 | }
13 |
14 |
15 | [System.Serializable]
16 | public struct TileInfoMask {
17 | public TileInfo Info;
18 | public TileMaskCompound Mask;
19 | }
20 | }
--------------------------------------------------------------------------------
/Documentation~/docs/api/TilemapMesh.md:
--------------------------------------------------------------------------------
1 | # TilemapMesh
2 | Module component for generating a mesh from TilePalette and TileMapData information.
3 |
4 | ## Properties
5 | |Type|Name|Usage|
6 | |:---|:---|:----|
7 | |**int3**|ChunkSize|Size of chunk in grid units. Zero or smaller results in the max of the dimension|
8 | |**VertexSettings**|VertexInfo|Included attributes in baking process|
9 |
10 |
11 |
12 | ## Inherited Methods
13 | |Name|Usage|
14 | |:---|:----|
15 | |BakePartial(Tilemap3D map, Box3D area)|Bake mesh information in overlapping chunks|
16 | |Bake(Tilemap3D map)|Full rebake of all chunks|
17 | |Clear()|Unused|
--------------------------------------------------------------------------------
/Samples~/Pixel_Map_Sample/Editor/SimpleDungeonGeneratorEditor.cs:
--------------------------------------------------------------------------------
1 | // Copyright (c) 2023 Felix Kate. BSD-3 license (see included license file)
2 |
3 | using UnityEditor;
4 | using UnityEngine;
5 |
6 | namespace TilemapCreator3D.Samples {
7 | [CustomEditor(typeof(SimpleDungeonGenerator))]
8 | public class SimpleDungeonGeneratorEditor : Editor {
9 | public override void OnInspectorGUI() {
10 | base.OnInspectorGUI();
11 |
12 | if(GUILayout.Button("Generate")) {
13 | (target as SimpleDungeonGenerator).Generate();
14 | EditorUtility.SetDirty(target);
15 | }
16 | }
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/Runtime/Tiles/MultiTile.cs:
--------------------------------------------------------------------------------
1 | // Copyright (c) 2023 Felix Kate. BSD-3 license (see included license file)
2 |
3 | using UnityEngine;
4 |
5 | namespace TilemapCreator3D {
6 | [CreateAssetMenu(fileName = "MultiTile", menuName = "MapTools/MultiTile", order = 1)]
7 | public class MultiTile : BaseTile {
8 |
9 | public TileInfo[] Variants;
10 |
11 | public override TileInfo GetInfo(int index) => index >= 0 && index < Variants.Length ? Variants[index] : new TileInfo();
12 | public override int Length => Variants != null ? Variants.Length : 0;
13 |
14 | public override Mesh GetTilePreview(int index) => GetInfo(index).Mesh;
15 |
16 | }
17 | }
--------------------------------------------------------------------------------
/Samples~/World_Map_Sample/Scripts/PrefabTile.cs:
--------------------------------------------------------------------------------
1 | // Copyright (c) 2023 Felix Kate. BSD-3 license (see included license file)
2 |
3 | using Unity.Mathematics;
4 | using UnityEngine;
5 |
6 | namespace TilemapCreator3D.Samples {
7 | [CreateAssetMenu(fileName = "PrefabTile", menuName = "MapTools/PrefabTile", order = 10)]
8 | public class PrefabTile : BaseTile {
9 |
10 | public GameObject Prefab;
11 | public Mesh PreviewMesh;
12 |
13 | public override TileInfo GetInfo(int index) => new TileInfo { };
14 | public override int Length => 1;
15 |
16 | public override Mesh GetTilePreview(int index) => PreviewMesh;
17 |
18 | }
19 | }
--------------------------------------------------------------------------------
/.github/workflows/DeployDocumentation.yml:
--------------------------------------------------------------------------------
1 | name: Deploy Documentation
2 | on:
3 | push:
4 | branches:
5 | - main
6 |
7 | permissions:
8 | contents: write
9 | jobs:
10 | deploy:
11 | runs-on: ubuntu-latest
12 | steps:
13 | - uses: actions/checkout@v3
14 | - uses: actions/setup-python@v4
15 | with:
16 | python-version: 3.x
17 | - uses: actions/cache@v3
18 | with:
19 | key: ${{ github.ref }}
20 | path: .cache
21 |
22 | - run: pip install mkdocs
23 |
24 | - name: deploy
25 | run: mkdocs gh-deploy --force
26 | working-directory: ./Documentation~
27 |
--------------------------------------------------------------------------------
/Editor/com.fkate.tilemap3d.editor.asmdef:
--------------------------------------------------------------------------------
1 | {
2 | "name": "com.fkate.tilemap3d.editor",
3 | "rootNamespace": "EditorOnly",
4 | "references": [
5 | "GUID:f62cd0bec5d37064580be83ddb60fdf2",
6 | "GUID:d8b63aba1907145bea998dd612889d6b",
7 | "GUID:e0cd26848372d4e5c891c569017e11f1",
8 | "GUID:478a2357cc57436488a56e564b08d223"
9 | ],
10 | "includePlatforms": [
11 | "Editor"
12 | ],
13 | "excludePlatforms": [],
14 | "allowUnsafeCode": false,
15 | "overrideReferences": false,
16 | "precompiledReferences": [],
17 | "autoReferenced": true,
18 | "defineConstraints": [],
19 | "versionDefines": [],
20 | "noEngineReferences": false
21 | }
--------------------------------------------------------------------------------
/Editor/Inspector/TilemapColliderEditor.cs:
--------------------------------------------------------------------------------
1 | // Copyright (c) 2023 Felix Kate. BSD-3 license (see included license file)
2 |
3 | using UnityEditor;
4 | using EditorOnly;
5 |
6 | namespace TilemapCreator3D.EditorOnly {
7 | [CustomEditor(typeof(TilemapCollider))]
8 | public class TilemapColliderEditor : Editor {
9 |
10 | public override void OnInspectorGUI() {
11 | EditorGUILayout.HelpBox("This module does not provide any configurable settings.\n Please use the colision based options inside the tile objects.", MessageType.Info);
12 |
13 | EditorGUILayout.Space();
14 |
15 | TilemapGUIUtility.ShowBakeOptions(target as TilemapCollider);
16 | }
17 |
18 | }
19 | }
--------------------------------------------------------------------------------
/Documentation~/docs/api/TilemapNavigator.md:
--------------------------------------------------------------------------------
1 | # TilemapNavigator
2 | Module component for generating a NavMesh from TilemapData and Tile colliders.
3 |
4 | ## Properties
5 | |Type|Name|Usage|
6 | |:---|:---|:----|
7 | |**int**|AgentPreset|Gather build settings from Navigation window preset|
8 | |**NavGenerationSettings**|GenerationSettings|Additional settings. Refer to NavMeshBuildSettings in Unitys documentation|
9 | |**NavLink**|NavLinks|Set Area, Start, End and Directionality of navigation links. The actual links are generated at runtime|
10 |
11 |
12 |
13 | ## Inherited Methods
14 | |Name|Usage|
15 | |:---|:----|
16 | |BakePartial(Tilemap3D map, Box3D area)|Unused|
17 | |Bake(Tilemap3D map)|Bake Unity NavMesh from tile information|
18 | |Clear()|Clear NavMesh|
--------------------------------------------------------------------------------
/Documentation~/docs/samples.md:
--------------------------------------------------------------------------------
1 | # Samples
2 | 
3 |
4 | ## PixelMapSample
5 | - Shows basic usage of the included tools
6 | - Includes a custom character controller for testing the different features
7 | - Navigation scene shows how to use the navigator component to build a NavMesh
8 | - 2D scene focues on setting up tiles on the XY axis
9 | - Includes a shader to show an example for animated tiles (via uv offset)
10 | - (New) Simple example for generating dungeons from map prefabs
11 |
12 | ## WorldMapSample
13 | - Shows implementation of a custom tile type and module (Prefab based)
14 | - Features an example of modifying the tilemap at runtime (select building and hit the delete key)
15 | - Features a procedural runtime generation example (hit the R key to generate)
--------------------------------------------------------------------------------
/Samples~/Pixel_Map_Sample/Tiles/PixelSample_Platform.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!114 &11400000
4 | MonoBehaviour:
5 | m_ObjectHideFlags: 0
6 | m_CorrespondingSourceObject: {fileID: 0}
7 | m_PrefabInstance: {fileID: 0}
8 | m_PrefabAsset: {fileID: 0}
9 | m_GameObject: {fileID: 0}
10 | m_Enabled: 1
11 | m_EditorHideFlags: 0
12 | m_Script: {fileID: 11500000, guid: 8092a004e48546b4b96947a9277b33e6, type: 3}
13 | m_Name: PixelSample_Platform
14 | m_EditorClassIdentifier:
15 | Material: {fileID: 2100000, guid: df5812252ba252e458e028e0ea615e8d, type: 2}
16 | CollisionLayer: 1
17 | NavigationArea: 0
18 | PreviewOrientation: {x: 20, y: 20}
19 | TileInfo:
20 | Mesh: {fileID: -986085712530410029, guid: d9f09a1bfd240c040b9587b93ecdb0c3, type: 3}
21 | CollisionMesh: {fileID: 0}
22 | Collision: 3
23 |
--------------------------------------------------------------------------------
/Samples~/World_Map_Sample/Tiles/MapSample_BuildingL.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!114 &11400000
4 | MonoBehaviour:
5 | m_ObjectHideFlags: 0
6 | m_CorrespondingSourceObject: {fileID: 0}
7 | m_PrefabInstance: {fileID: 0}
8 | m_PrefabAsset: {fileID: 0}
9 | m_GameObject: {fileID: 0}
10 | m_Enabled: 1
11 | m_EditorHideFlags: 0
12 | m_Script: {fileID: 11500000, guid: 36443d0881d947249be08422bef68b12, type: 3}
13 | m_Name: MapSample_BuildingL
14 | m_EditorClassIdentifier:
15 | Material: {fileID: 2100000, guid: 6e9530b8c86f51641b39aaf421389a3a, type: 2}
16 | CollisionLayer: 0
17 | NavigationArea: 0
18 | PreviewOrientation: {x: 20, y: 20}
19 | Prefab: {fileID: 1049787123459692064, guid: 53616a1d4cb8fd24794f323fac022f8b, type: 3}
20 | PreviewMesh: {fileID: 753240030355696831, guid: f4052364a7853fa4bb04b40a486a88fa, type: 3}
21 |
--------------------------------------------------------------------------------
/Samples~/World_Map_Sample/Tiles/MapSample_BuildingS.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!114 &11400000
4 | MonoBehaviour:
5 | m_ObjectHideFlags: 0
6 | m_CorrespondingSourceObject: {fileID: 0}
7 | m_PrefabInstance: {fileID: 0}
8 | m_PrefabAsset: {fileID: 0}
9 | m_GameObject: {fileID: 0}
10 | m_Enabled: 1
11 | m_EditorHideFlags: 0
12 | m_Script: {fileID: 11500000, guid: 36443d0881d947249be08422bef68b12, type: 3}
13 | m_Name: MapSample_BuildingS
14 | m_EditorClassIdentifier:
15 | Material: {fileID: 2100000, guid: 6e9530b8c86f51641b39aaf421389a3a, type: 2}
16 | CollisionLayer: 0
17 | NavigationArea: 0
18 | PreviewOrientation: {x: 20, y: 20}
19 | Prefab: {fileID: 1049787123459692064, guid: 7d419b0c4d812314fbc4df5bab41c2dd, type: 3}
20 | PreviewMesh: {fileID: -2894291443403166008, guid: f4052364a7853fa4bb04b40a486a88fa, type: 3}
21 |
--------------------------------------------------------------------------------
/Samples~/World_Map_Sample/Tiles/MapSample_Bridge.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!114 &11400000
4 | MonoBehaviour:
5 | m_ObjectHideFlags: 0
6 | m_CorrespondingSourceObject: {fileID: 0}
7 | m_PrefabInstance: {fileID: 0}
8 | m_PrefabAsset: {fileID: 0}
9 | m_GameObject: {fileID: 0}
10 | m_Enabled: 1
11 | m_EditorHideFlags: 0
12 | m_Script: {fileID: 11500000, guid: 8092a004e48546b4b96947a9277b33e6, type: 3}
13 | m_Name: MapSample_Bridge
14 | m_EditorClassIdentifier:
15 | Material: {fileID: 2100000, guid: 6e9530b8c86f51641b39aaf421389a3a, type: 2}
16 | CollisionLayer: 0
17 | NavigationArea: 2
18 | PreviewOrientation: {x: 20, y: 20}
19 | TileInfo:
20 | Mesh: {fileID: 1595571185946825095, guid: f4052364a7853fa4bb04b40a486a88fa, type: 3}
21 | CollisionMesh: {fileID: -3759764289550482348, guid: f4052364a7853fa4bb04b40a486a88fa, type: 3}
22 | Collision: 4
23 |
--------------------------------------------------------------------------------
/Samples~/Pixel_Map_Sample/Tiles/PixelSample_TreeStump.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!114 &11400000
4 | MonoBehaviour:
5 | m_ObjectHideFlags: 0
6 | m_CorrespondingSourceObject: {fileID: 0}
7 | m_PrefabInstance: {fileID: 0}
8 | m_PrefabAsset: {fileID: 0}
9 | m_GameObject: {fileID: 0}
10 | m_Enabled: 1
11 | m_EditorHideFlags: 0
12 | m_Script: {fileID: 11500000, guid: 8092a004e48546b4b96947a9277b33e6, type: 3}
13 | m_Name: PixelSample_TreeStump
14 | m_EditorClassIdentifier:
15 | Material: {fileID: 2100000, guid: df5812252ba252e458e028e0ea615e8d, type: 2}
16 | CollisionLayer: 0
17 | NavigationArea: 1
18 | PreviewOrientation: {x: 20, y: 20}
19 | TileInfo:
20 | Mesh: {fileID: -2770696934322964029, guid: d9f09a1bfd240c040b9587b93ecdb0c3, type: 3}
21 | CollisionMesh: {fileID: -8214483655495553327, guid: d9f09a1bfd240c040b9587b93ecdb0c3, type: 3}
22 | Collision: 4
23 |
--------------------------------------------------------------------------------
/Documentation~/docs/api/BaseTile.md:
--------------------------------------------------------------------------------
1 | # BaseTile
2 | Base class for all tiles. Inherit from it if you plan to add a custom tile.
3 |
4 | ## Properties
5 | |Type|Name|Usage|
6 | |:---|:---|:----|
7 | |**Material**|Material|Shared material of all tile meshes|
8 | |**int**|CollisionLayer|Layer generated colliders are put on|
9 | |**int**|NavigationArea|Area for NavMesh generation|
10 | |**TileInfo**|this[int]|Indexer to GetInfo()|
11 | |**int**|Length|Amount of sub variants implemented by sub classes|
12 | |**Vector2**|PreviewOrientation|Orientation of generated previews|
13 | |**Quatenrion**|PreviewRotation|PreviewOrientation as Quaternion|
14 |
15 | ## Methods
16 | |Name|Usage|
17 | |:---|:----|
18 | |GetInfo(int index)|Get tile info at index. Implemented by sub classes|
19 | |GetTilePreview(int index)|Get mesh preview. Implemented by sub classes|
20 | |PostProcessTile(TilemapData data, int3 pos)|Run custom logic over a placed tile. Implemented by sub classes|
--------------------------------------------------------------------------------
/Documentation~/docs/api/SingleTile.md:
--------------------------------------------------------------------------------
1 | # SingleTile
2 | Class describing a tile without variants.
3 |
4 | ## Properties
5 | |Type|Name|Usage|
6 | |:---|:---|:----|
7 | |**TileInfo**|TileInfo|Settings of the tile|
8 | |**int**|Length|Amount of sub variants. Always one|
9 |
10 |
11 |
12 | ## Inherited Properties
13 | |Type|Name|Usage|
14 | |:---|:---|:----|
15 | |**Material**|Material|Shared material of all tile meshes|
16 | |**int**|CollisionLayer|Layer generated colliders are put on|
17 | |**int**|NavigationArea|Area for NavMesh generation|
18 | |**TileInfo**|this[int]|Indexer to GetInfo()|
19 | |**Vector2**|PreviewOrientation|Orientation of generated previews|
20 | |**Quatenrion**|PreviewRotation|PreviewOrientation as Quaternion|
21 |
22 |
23 |
24 | ## Methods
25 | |Name|Usage|
26 | |:---|:----|
27 | |GetInfo(int index)|Always points at TileInfo|
28 | |GetTilePreview(int index)|TileInfo.Mesh|
29 | |PostProcessTile(TilemapData data, int3 pos)|Not implemented|
--------------------------------------------------------------------------------
/Editor/Inspector/TilemapMeshEditor.cs:
--------------------------------------------------------------------------------
1 | // Copyright (c) 2023 Felix Kate. BSD-3 license (see included license file)
2 |
3 | using UnityEditor;
4 | using EditorOnly;
5 |
6 | namespace TilemapCreator3D.EditorOnly {
7 | [CustomEditor(typeof(TilemapMesh))]
8 | public class TilemapMeshEditor : Editor {
9 |
10 | public override void OnInspectorGUI() {
11 | SerializedProperty chunkProp = serializedObject.FindProperty("ChunkSize");
12 | SerializedProperty vertexProp = serializedObject.FindProperty("VertexInfo");
13 |
14 | EditorGUI.BeginChangeCheck();
15 | EditorGUILayout.PropertyField(chunkProp);
16 | EditorGUILayout.PropertyField(vertexProp);
17 | if(EditorGUI.EndChangeCheck()) serializedObject.ApplyModifiedProperties();
18 |
19 | EditorGUILayout.Space();
20 |
21 | TilemapGUIUtility.ShowBakeOptions(target as TilemapMesh, true);
22 | }
23 |
24 | }
25 | }
--------------------------------------------------------------------------------
/Documentation~/docs/api/MultiTile.md:
--------------------------------------------------------------------------------
1 | # MultiTile
2 | Class describing a tile with multiple variants.
3 |
4 | ## Properties
5 | |Type|Name|Usage|
6 | |:---|:---|:----|
7 | |**TileInfo[]**|Variants|Collection of sub tiles|
8 | |**int**|Length|Sub tile count|
9 |
10 |
11 |
12 | ## Inherited Properties
13 | |Type|Name|Usage|
14 | |:---|:---|:----|
15 | |**Material**|Material|Shared material of all tile meshes|
16 | |**int**|CollisionLayer|Layer generated colliders are put on|
17 | |**int**|NavigationArea|Area for NavMesh generation|
18 | |**TileInfo**|this[int]|Indexer to GetInfo()|
19 | |**Vector2**|PreviewOrientation|Orientation of generated previews|
20 | |**Quatenrion**|PreviewRotation|PreviewOrientation as Quaternion|
21 |
22 |
23 |
24 | ## Methods
25 | |Name|Usage|
26 | |:---|:----|
27 | |GetInfo(int index)|Get sub tile at sub tile index|
28 | |GetTilePreview(int index)|Get preview mesh at sub tile index|
29 | |PostProcessTile(TilemapData data, int3 pos)|Not implemented|
--------------------------------------------------------------------------------
/Runtime/Tiles/BaseTile.cs:
--------------------------------------------------------------------------------
1 | // Copyright (c) 2023 Felix Kate. BSD-3 license (see included license file)
2 |
3 | using Unity.Mathematics;
4 | using UnityEngine;
5 |
6 | namespace TilemapCreator3D {
7 | public abstract class BaseTile : ScriptableObject {
8 |
9 | public Material Material;
10 | public int CollisionLayer;
11 | public int NavigationArea;
12 |
13 | // Necessary inherited fields
14 | public TileInfo this[int index] => GetInfo(index);
15 | public abstract int Length { get; }
16 |
17 | // Preview
18 | public Vector2 PreviewOrientation = new Vector2(20.0f, 20.0f);
19 | public Quaternion PreviewRotation => Quaternion.Euler(PreviewOrientation.y, PreviewOrientation.x, 0);
20 |
21 |
22 | public abstract TileInfo GetInfo(int index);
23 | public virtual Mesh GetTilePreview(int index) => null;
24 | public virtual void PostProcessTile(TilemapData data, int3 pos) { }
25 |
26 | }
27 | }
--------------------------------------------------------------------------------
/Samples~/Pixel_Map_Sample/Tiles/PixelSample_Bush.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!114 &11400000
4 | MonoBehaviour:
5 | m_ObjectHideFlags: 0
6 | m_CorrespondingSourceObject: {fileID: 0}
7 | m_PrefabInstance: {fileID: 0}
8 | m_PrefabAsset: {fileID: 0}
9 | m_GameObject: {fileID: 0}
10 | m_Enabled: 1
11 | m_EditorHideFlags: 0
12 | m_Script: {fileID: 11500000, guid: 04a0ff3def4de4f408179476bda4993e, type: 3}
13 | m_Name: PixelSample_Bush
14 | m_EditorClassIdentifier:
15 | Material: {fileID: 2100000, guid: df5812252ba252e458e028e0ea615e8d, type: 2}
16 | CollisionLayer: 0
17 | NavigationArea: 1
18 | PreviewOrientation: {x: 20, y: 20}
19 | Variants:
20 | - Mesh: {fileID: 2786386579460827939, guid: d9f09a1bfd240c040b9587b93ecdb0c3, type: 3}
21 | CollisionMesh: {fileID: 0}
22 | Collision: 3
23 | - Mesh: {fileID: -4572743336592788557, guid: d9f09a1bfd240c040b9587b93ecdb0c3, type: 3}
24 | CollisionMesh: {fileID: 0}
25 | Collision: 3
26 |
--------------------------------------------------------------------------------
/Samples~/World_Map_Sample/Tiles/MapSample_Other.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!114 &11400000
4 | MonoBehaviour:
5 | m_ObjectHideFlags: 0
6 | m_CorrespondingSourceObject: {fileID: 0}
7 | m_PrefabInstance: {fileID: 0}
8 | m_PrefabAsset: {fileID: 0}
9 | m_GameObject: {fileID: 0}
10 | m_Enabled: 1
11 | m_EditorHideFlags: 0
12 | m_Script: {fileID: 11500000, guid: 04a0ff3def4de4f408179476bda4993e, type: 3}
13 | m_Name: MapSample_Other
14 | m_EditorClassIdentifier:
15 | Material: {fileID: 2100000, guid: 6e9530b8c86f51641b39aaf421389a3a, type: 2}
16 | CollisionLayer: 0
17 | NavigationArea: 1
18 | PreviewOrientation: {x: 20, y: 20}
19 | Variants:
20 | - Mesh: {fileID: -4532283240223554854, guid: f4052364a7853fa4bb04b40a486a88fa, type: 3}
21 | CollisionMesh: {fileID: 0}
22 | Collision: 1
23 | - Mesh: {fileID: 2434447421095949126, guid: f4052364a7853fa4bb04b40a486a88fa, type: 3}
24 | CollisionMesh: {fileID: 0}
25 | Collision: 0
26 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "com.fkate.tilemap3d",
3 | "description": "Contains components and editors for authoring three dimensional tilemaps.\nSub component based approach including modules for mesh, collider and NavMesh generation from painted maps.\nIncludes tile types for single, multi and auto tiles.",
4 | "version": "1.0.1",
5 | "displayName": "Tilemap Creator 3D",
6 | "dependencies": {
7 | "com.unity.mathematics": "1.2.1",
8 | "com.unity.collections": "1.2.4",
9 | "com.unity.editorcoroutines": "1.0.0"
10 | },
11 | "keywords": [
12 | "editor"
13 | ],
14 | "type": "tool",
15 | "unity": "2021.3",
16 | "samples": [
17 | {
18 | "displayName": "Pixel Map",
19 | "description": "Contains basic usecase samples for the tilemap modules",
20 | "path": "Samples~/Pixel_Map_Sample"
21 | },
22 | {
23 | "displayName": "World Map",
24 | "description": "Contains examples on how to extend the tool",
25 | "path": "Samples~/World_Map_Sample"
26 | }
27 | ]
28 | }
--------------------------------------------------------------------------------
/Editor/Styles/TilemapToolbar.uss:
--------------------------------------------------------------------------------
1 | .tilemap-editor-toolbar-flags{
2 | width: auto;
3 | flex-direction: row;
4 | border-radius: 2px;
5 | padding-left: 2px;
6 | padding-right: 2px;
7 | overflow: hidden;
8 | background-color: var(--unity-colors-button-background);
9 | }
10 |
11 | .overlay-layout--toolbar-vertical .tilemap-editor-toolbar-flags{
12 | flex-direction: column;
13 | }
14 |
15 | .tilemap-editor-foldout {
16 | width: 37px;
17 | margin: 0px;
18 | border-radius: 0px;
19 | }
20 |
21 | .overlay-layout--toolbar-vertical .tilemap-editor-flagToolbar {
22 | flex-direction: column;
23 | flex-grow: 1;
24 | }
25 |
26 | .tilemap-editor-flagToggle {
27 | height: 20px;
28 | min-width: 0px;
29 | width: 30px;
30 | margin: 0px;
31 | border-radius: 0;
32 | }
33 |
34 | .overlay-layout--toolbar-vertical .tilemap-editor-flagToggle {
35 | width: 100%;
36 | margin: 0px;
37 | margin-top: 1px;
38 | }
39 |
40 | .overlay-layout--toolbar-vertical .unity-toolbar-button {
41 | flex-direction: column;
42 | flex-grow: 1;
43 | justify-content: flex-start;
44 | padding-top: 2px;
45 | }
--------------------------------------------------------------------------------
/Samples~/Pixel_Map_Sample/Materials/PixelSample_Atlas_Animated.mat:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!21 &2100000
4 | Material:
5 | serializedVersion: 8
6 | m_ObjectHideFlags: 0
7 | m_CorrespondingSourceObject: {fileID: 0}
8 | m_PrefabInstance: {fileID: 0}
9 | m_PrefabAsset: {fileID: 0}
10 | m_Name: PixelSample_Atlas_Animated
11 | m_Shader: {fileID: 4800000, guid: 4e46e1e95c7b5d24fa14112692868110, type: 3}
12 | m_ValidKeywords: []
13 | m_InvalidKeywords: []
14 | m_LightmapFlags: 4
15 | m_EnableInstancingVariants: 0
16 | m_DoubleSidedGI: 0
17 | m_CustomRenderQueue: -1
18 | stringTagMap: {}
19 | disabledShaderPasses: []
20 | m_SavedProperties:
21 | serializedVersion: 3
22 | m_TexEnvs:
23 | - _MainTex:
24 | m_Texture: {fileID: 2800000, guid: 3d8113117946d1246b23004014d71728, type: 3}
25 | m_Scale: {x: 1, y: 1}
26 | m_Offset: {x: 0, y: 0}
27 | m_Ints: []
28 | m_Floats:
29 | - _Cutoff: 0.5
30 | m_Colors:
31 | - _Parameters: {r: 0.0625, g: 0, b: 4, a: 4}
32 | m_BuildTextureStacks: []
33 |
--------------------------------------------------------------------------------
/Documentation~/docs/api/TilemapGUIUtility.md:
--------------------------------------------------------------------------------
1 | # TilemapGUIUtility (Editor only)
2 | A static helper class to draw commonly used GUI elements.
3 |
4 | ## Static Methods
5 | |Name|Usage|
6 | |:---|:----|
7 | |AreaPopup(string labelName, SerializedProperty areaProperty)|Popup type for navigation areas|
8 | |AreaColorField(Rect rect, SerializedProperty areaProperty)|Popup type for navigation areas using the area color|
9 | |AgentTypePopup(string labelName, SerializedProperty agentTypeID)|Popup type for navigation agents|
10 | |GetNavigationAreaColor(int i)|Unity internal calculation of navigation area color|
11 | |ToolbarField(GUIContent label, int value, GUIContent[] options)|Displays a toolbar like a field|
12 | |ToolbarToggleField(GUIContent label, bool value, GUIContent[] options)|Draws a toggle as a toolbar (requires exactly 2 options in array)|
13 | |ToolbarTogglePopup(GUIContent label, bool value, GUIContent[] options)|Draws a toggle as a popup (requires exactly 2 options in array)|
14 | |ShowBakeOptions<ITilemapModule>(ITilemapModule obj, bool clearingDisabled, bool bakingDisabled)|Shared module buttons|
--------------------------------------------------------------------------------
/Samples~/World_Map_Sample/Tiles/MapSample_Plain.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!114 &11400000
4 | MonoBehaviour:
5 | m_ObjectHideFlags: 0
6 | m_CorrespondingSourceObject: {fileID: 0}
7 | m_PrefabInstance: {fileID: 0}
8 | m_PrefabAsset: {fileID: 0}
9 | m_GameObject: {fileID: 0}
10 | m_Enabled: 1
11 | m_EditorHideFlags: 0
12 | m_Script: {fileID: 11500000, guid: 04a0ff3def4de4f408179476bda4993e, type: 3}
13 | m_Name: MapSample_Plain
14 | m_EditorClassIdentifier:
15 | Material: {fileID: 2100000, guid: 6e9530b8c86f51641b39aaf421389a3a, type: 2}
16 | CollisionLayer: 0
17 | NavigationArea: 0
18 | PreviewOrientation: {x: 20, y: 20}
19 | Variants:
20 | - Mesh: {fileID: 3895929317434900381, guid: f4052364a7853fa4bb04b40a486a88fa, type: 3}
21 | CollisionMesh: {fileID: 0}
22 | Collision: 1
23 | - Mesh: {fileID: 5541797124494269050, guid: f4052364a7853fa4bb04b40a486a88fa, type: 3}
24 | CollisionMesh: {fileID: 0}
25 | Collision: 1
26 | - Mesh: {fileID: -6751250802292408429, guid: f4052364a7853fa4bb04b40a486a88fa, type: 3}
27 | CollisionMesh: {fileID: 0}
28 | Collision: 1
29 |
--------------------------------------------------------------------------------
/Documentation~/docs/index.md:
--------------------------------------------------------------------------------
1 | # Tilemap Creator 3D Overview
2 |
3 | 
4 |
5 | This package contains an editor editor extension for speeding up the development with mesh based tiles inside the Unity engine.
6 | It's features and modular extensibility make it widely usable over all kind of projects both at editor and runtime.
7 |
8 | ## Features
9 | - Components for authoring tile based maps (processing via modular sub components)
10 | - Mesh based tile setups via different included types (Single / Multi / Auto)
11 | - Mesh module using Unitys Job System to efficiently combine Mesh Tiles into a large mesh (supports chunking)
12 | - Collision module to create optimized box compound colliders (supports mesh colliders if needed)
13 | - Navigation module for baking a Unity NavMesh for the map
14 | - Interfaces to provide custom modules / tiletypes if required
15 |
16 | ## Requirements
17 | Unity 2021+ (tested on 2021.3)
18 |
19 | ## Install instructions
20 | Start a new Unity Project and navigate to the Package Manager (Window > Package Manager).
21 | Open the [+] dropdown and select "Add package from git URL ...". The URL is the adress of this repository.
--------------------------------------------------------------------------------
/Documentation~/mkdocs.yml:
--------------------------------------------------------------------------------
1 | site_name: Tilemap Creator 3D Docs
2 | theme:
3 | logo: img/logo.png
4 | name: readthedocs
5 |
6 | extra_css: [style/overwrites.css]
7 |
8 | markdown_extensions:
9 | admonition: {}
10 |
11 | nav:
12 | - Home: "index.md"
13 | - Manual:
14 | - Getting started: "getting-started.md"
15 | - Tiles: "tiles.md"
16 | - Modules: "modules.md"
17 | - Samples: "samples.md"
18 | - Writing Extensions: "extensions.md"
19 | - FAQ: "faq.md"
20 | - Scripting API:
21 | - 'Tilemap3D': "api/Tilemap3D.md"
22 | - 'TilemapData': "api/TilemapData.md"
23 | - 'TilePalette': "api/TilePalette.md"
24 | - 'BaseTile': "api/BaseTile.md"
25 | - 'SingleTile': "api/SingleTile.md"
26 | - 'MultiTile': "api/MultiTile.md"
27 | - 'AutoTile': "api/AutoTile.md"
28 | - 'ITilemapModule': "api/ITilemapModule.md"
29 | - 'TilemapMesh': "api/TilemapMesh.md"
30 | - 'TilemapCollider': "api/TilemapCollider.md"
31 | - 'TilemapNavigator': "api/TilemapNavigator.md"
32 | - 'TilemapSettings': "api/TilemapSettings.md"
33 | - 'TilemapGUIUtility': "api/TilemapGUIUtility.md"
--------------------------------------------------------------------------------
/Documentation~/docs/api/TilePalette.md:
--------------------------------------------------------------------------------
1 | # TilePalette
2 | Class for holding BaseTile data inside an array. Maximum amout of tiles is 255 since the zero id is reserved for empty tiles.
3 | Generally I will not reccomend messing with the array to much but you might need to if you plan to implement a runtime editor.
4 |
5 | ## Properties
6 | |Type|Name|Usage|
7 | |:---|:---|:----|
8 | |BaseTile|this[int]|Indexer to BaseTile array|
9 | |int|Count|How many active tiles are inside the array|
10 |
11 |
12 |
13 | ## Methods
14 | |Name|Usage|
15 | |:---|:----|
16 | |TilePalette()|Constructor|
17 | |TilePalette(BaseTile[] entries)|Special constructor creating the palette from a collection (recommended for runtime setup)|
18 | |Insert(BaseTile tile, int position, ref TilemapData data)|Insert tile at position. Fixes map data to match changes. Returns true if rebuild is necessary|
19 | |Replace(BaseTile tile, int position)|Replace tile at position. Returns true if rebuild is necessary|
20 | |Delete(int position, ref TilemapData data)|Delete index at position. Fixes map data to match changes. Returns true if rebuild is necessary|
21 | |GetTile(int id)|Get tile at id point. Will ignore zero ids since they represent empty spaces|
--------------------------------------------------------------------------------
/Samples~/Pixel_Map_Sample/Tiles/PixelSample_Connectors.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!114 &11400000
4 | MonoBehaviour:
5 | m_ObjectHideFlags: 0
6 | m_CorrespondingSourceObject: {fileID: 0}
7 | m_PrefabInstance: {fileID: 0}
8 | m_PrefabAsset: {fileID: 0}
9 | m_GameObject: {fileID: 0}
10 | m_Enabled: 1
11 | m_EditorHideFlags: 0
12 | m_Script: {fileID: 11500000, guid: 04a0ff3def4de4f408179476bda4993e, type: 3}
13 | m_Name: PixelSample_Connectors
14 | m_EditorClassIdentifier:
15 | Material: {fileID: 2100000, guid: df5812252ba252e458e028e0ea615e8d, type: 2}
16 | CollisionLayer: 0
17 | NavigationArea: 0
18 | PreviewOrientation: {x: 20, y: 20}
19 | Variants:
20 | - Mesh: {fileID: -4831137956543349339, guid: d9f09a1bfd240c040b9587b93ecdb0c3, type: 3}
21 | CollisionMesh: {fileID: -6616163939135029807, guid: d9f09a1bfd240c040b9587b93ecdb0c3, type: 3}
22 | Collision: 4
23 | - Mesh: {fileID: 4577232861118397152, guid: d9f09a1bfd240c040b9587b93ecdb0c3, type: 3}
24 | CollisionMesh: {fileID: 0}
25 | Collision: 1
26 | - Mesh: {fileID: -5238860493069978881, guid: d9f09a1bfd240c040b9587b93ecdb0c3, type: 3}
27 | CollisionMesh: {fileID: -6616163939135029807, guid: d9f09a1bfd240c040b9587b93ecdb0c3, type: 3}
28 | Collision: 4
29 |
--------------------------------------------------------------------------------
/Samples~/Pixel_Map_Sample/Tiles/PixelSample_FloorTiles.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!114 &11400000
4 | MonoBehaviour:
5 | m_ObjectHideFlags: 0
6 | m_CorrespondingSourceObject: {fileID: 0}
7 | m_PrefabInstance: {fileID: 0}
8 | m_PrefabAsset: {fileID: 0}
9 | m_GameObject: {fileID: 0}
10 | m_Enabled: 1
11 | m_EditorHideFlags: 0
12 | m_Script: {fileID: 11500000, guid: 04a0ff3def4de4f408179476bda4993e, type: 3}
13 | m_Name: PixelSample_FloorTiles
14 | m_EditorClassIdentifier:
15 | Material: {fileID: 2100000, guid: df5812252ba252e458e028e0ea615e8d, type: 2}
16 | CollisionLayer: 0
17 | NavigationArea: 0
18 | PreviewOrientation: {x: 20, y: 20}
19 | Variants:
20 | - Mesh: {fileID: 5467705030471576651, guid: d9f09a1bfd240c040b9587b93ecdb0c3, type: 3}
21 | CollisionMesh: {fileID: 0}
22 | Collision: 3
23 | - Mesh: {fileID: 7435488842988369516, guid: d9f09a1bfd240c040b9587b93ecdb0c3, type: 3}
24 | CollisionMesh: {fileID: 0}
25 | Collision: 3
26 | - Mesh: {fileID: -1471915109844856378, guid: d9f09a1bfd240c040b9587b93ecdb0c3, type: 3}
27 | CollisionMesh: {fileID: 0}
28 | Collision: 3
29 | - Mesh: {fileID: -8964617063411958681, guid: d9f09a1bfd240c040b9587b93ecdb0c3, type: 3}
30 | CollisionMesh: {fileID: 0}
31 | Collision: 3
32 |
--------------------------------------------------------------------------------
/Samples~/Pixel_Map_Sample/Tiles/PixelSample_StoneFloor.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!114 &11400000
4 | MonoBehaviour:
5 | m_ObjectHideFlags: 0
6 | m_CorrespondingSourceObject: {fileID: 0}
7 | m_PrefabInstance: {fileID: 0}
8 | m_PrefabAsset: {fileID: 0}
9 | m_GameObject: {fileID: 0}
10 | m_Enabled: 1
11 | m_EditorHideFlags: 0
12 | m_Script: {fileID: 11500000, guid: 04a0ff3def4de4f408179476bda4993e, type: 3}
13 | m_Name: PixelSample_StoneFloor
14 | m_EditorClassIdentifier:
15 | Material: {fileID: 2100000, guid: df5812252ba252e458e028e0ea615e8d, type: 2}
16 | CollisionLayer: 0
17 | NavigationArea: 0
18 | PreviewOrientation: {x: 20, y: 20}
19 | Variants:
20 | - Mesh: {fileID: 5465521746643087101, guid: d9f09a1bfd240c040b9587b93ecdb0c3, type: 3}
21 | CollisionMesh: {fileID: 0}
22 | Collision: 1
23 | - Mesh: {fileID: 4598855762577059906, guid: d9f09a1bfd240c040b9587b93ecdb0c3, type: 3}
24 | CollisionMesh: {fileID: 0}
25 | Collision: 1
26 | - Mesh: {fileID: -4995452813003202604, guid: d9f09a1bfd240c040b9587b93ecdb0c3, type: 3}
27 | CollisionMesh: {fileID: 0}
28 | Collision: 1
29 | - Mesh: {fileID: -3180061171207161118, guid: d9f09a1bfd240c040b9587b93ecdb0c3, type: 3}
30 | CollisionMesh: {fileID: 0}
31 | Collision: 1
32 |
--------------------------------------------------------------------------------
/Documentation~/docs/api/AutoTile.md:
--------------------------------------------------------------------------------
1 | # AutoTile
2 | Class describing a tile using multiple variants to create borders.
3 |
4 | ## Properties
5 | |Type|Name|Usage|
6 | |:---|:---|:----|
7 | |**TileInfoMask[]**|Variants|Collection of sub tiles using TileMasks|
8 | |**int**|Length|Sub tile count|
9 | |**bool**|EightBitMask|Does the algorithm use eight or four directions|
10 | |**bool**|NoBorder|Merges tiles with the border|
11 | |**bool**|Orientation2D|Is the algorithm processing the XY layer instead of XZ|
12 | |**bool**|Isloate|Ignore tile flags and never merge to other tiles|
13 |
14 |
15 |
16 | ## Inherited Properties
17 | |Type|Name|Usage|
18 | |:---|:---|:----|
19 | |**Material**|Material|Shared material of all tile meshes|
20 | |**int**|CollisionLayer|Layer generated colliders are put on|
21 | |**int**|NavigationArea|Area for NavMesh generation|
22 | |**TileInfo**|this[int]|Indexer to GetInfo()|
23 | |**Vector2**|PreviewOrientation|Orientation of generated previews|
24 | |**Quatenrion**|PreviewRotation|PreviewOrientation as Quaternion|
25 |
26 |
27 |
28 | ## Methods
29 | |Name|Usage|
30 | |:---|:----|
31 | |GetInfo(int index)|Get sub tile at sub tile index|
32 | |GetTilePreview(int index)|Always returns first variant|
33 | |PostProcessTile(TilemapData data, int3 pos)|Fix data via auto tiling algorithm|
--------------------------------------------------------------------------------
/Editor/Shared/TilemapRegister.cs:
--------------------------------------------------------------------------------
1 | // Copyright (c) 2023 Felix Kate. BSD-3 license (see included license file)
2 |
3 | using UnityEditor;
4 | using UnityEngine;
5 |
6 | namespace TilemapCreator3D.EditorOnly {
7 | [InitializeOnLoad]
8 | public class TilemapRegister {
9 |
10 | static TilemapRegister () {
11 | TilemapSettings settings = TilemapSettings.instance;
12 |
13 | // Register flags
14 | settings.RegisterFlagContent(new GUIContent(EditorGUIUtility.Load("Packages/com.fkate.tilemap3d/Editor/Icons/Flag-MergeA.png") as Texture2D, "Merge Flag 0"), 0);
15 | settings.RegisterFlagContent(new GUIContent(EditorGUIUtility.Load("Packages/com.fkate.tilemap3d/Editor/Icons/Flag-MergeB.png") as Texture2D, "Merge Flag 1"), 1);
16 |
17 | // Register modules
18 | settings.RegisterModule();
19 | settings.RegisterModule();
20 | settings.RegisterModule();
21 | }
22 |
23 | [MenuItem("GameObject/3D Object/Tilemap3D", false, 100)]
24 | static void AddTilemap3D() {
25 | GameObject go = new GameObject("Tilemap3D");
26 | go.AddComponent();
27 | Selection.activeGameObject = go;
28 | }
29 |
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/Third-Party-Notices.md:
--------------------------------------------------------------------------------
1 | ## NavMeshComponents
2 | Includes copies of two GUI methods of Unitys NavMeshComponents Github Repository.
3 |
4 | ```
5 | //The MIT License (MIT)
6 |
7 | //Copyright (c) 2016, Unity Technologies
8 |
9 | //Permission is hereby granted, free of charge, to any person obtaining a copy
10 | //of this software and associated documentation files (the "Software"), to deal
11 | //in the Software without restriction, including without limitation the rights
12 | //to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
13 | //copies of the Software, and to permit persons to whom the Software is
14 | //furnished to do so, subject to the following conditions:
15 |
16 | //The above copyright notice and this permission notice shall be included in
17 | //all copies or substantial portions of the Software.
18 |
19 | //THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
20 | //IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
21 | //FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
22 | //AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
23 | //LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
24 | //OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
25 | //THE SOFTWARE.
26 | ```
--------------------------------------------------------------------------------
/Editor/Styles/TilemapEditor.uss:
--------------------------------------------------------------------------------
1 | .tilemap-editor-modules-header {
2 | padding-left: 4px;
3 | margin-top: 4px;
4 | -unity-font-style: bold;
5 | }
6 |
7 | .tilemap-editor-modules-list {
8 | flex-direction: column;
9 | align-items: flex-start;
10 | }
11 |
12 | .tilemap-editor-modules-element {
13 | width: 100%;
14 | margin-top: 1px;
15 | margin-bottom: 1px;
16 | flex-direction: row;
17 | flex-grow: 1;
18 | flex-shrink: 0;
19 | }
20 |
21 | .tilemap-editor-modules-empty {
22 | width: 100%;
23 | height: 20px;
24 | -unity-text-align: middle-center;
25 | color: #aaaaaa;
26 | }
27 |
28 | .tilemap-editor-modules-element:hover {
29 | background-color: #46607C;
30 | }
31 |
32 | .tilemap-editor-modules-element .unity-image {
33 | height: 16px;
34 | width: 16px;
35 | margin-left: 8px;
36 | margin-right: 8px;
37 | }
38 |
39 | .tilemap-editor-modules-buttonbar {
40 | width: 100%;
41 | padding-right: 12px;
42 | flex-direction: row-reverse;
43 | }
44 |
45 | .tilemap-editor-modules-button {
46 | width: 40px;
47 | height: 24px;
48 | margin: 0px;
49 | margin-top: -2px;
50 | padding: 4px;
51 | padding-top: 2px;
52 | padding-bottom: 2px;
53 | align-self: stretch;
54 | border-top-width: 0px;
55 | border-top-left-radius: 0px;
56 | border-top-right-radius: 0px;
57 | -unity-text-align: middle-center;
58 | }
59 |
60 | .tilemap-editor-modules-button:hover {
61 | background-color: #585858;
62 | }
63 |
--------------------------------------------------------------------------------
/Editor/Styles/TileExplorer.uss:
--------------------------------------------------------------------------------
1 | .tilemap-explorer-toolbar {
2 | flex-direction: row-reverse;
3 | }
4 |
5 | .tilemap-explorer-gridview {
6 | flex-grow: 1;
7 | }
8 |
9 | .unity-scroll-view__content-container {
10 | flex-direction: row;
11 | flex-wrap: wrap;
12 | height: auto;
13 | margin-right: 4px;
14 | }
15 |
16 | .tilemap-explorer-searchfield {
17 | max-width: 100%;
18 | }
19 |
20 | .tilemap-explorer-slider {
21 | width: 60px;
22 | margin-right: 16px;
23 | }
24 |
25 | .tilemap-explorer-tile {
26 | flex-direction: column;
27 | height: 100px;
28 | width: 100px;
29 | background-color: rgba(0, 0, 0, 0);
30 | border-width: 0px;
31 | }
32 |
33 | .tilemap-explorer-tile:hover {
34 | background-color: var(--unity-colors-highlight-background-hover);
35 | }
36 |
37 | .tilemap-explorer-tile:checked {
38 | background-color: var(--unity-colors-highlight-background);
39 | }
40 |
41 | .tilemap-explorer-tile .unity-image {
42 | flex-grow: 1;
43 | flex-shrink: 1;
44 | height: 64px;
45 | }
46 |
47 | .tilemap-explorer-tile .unity-label {
48 | height: 20px;
49 | align-self: center;
50 | width: 90%;
51 | flex-grow: 1;
52 | flex-shrink: 1;
53 | font-size: 10px;
54 | -unity-text-align: middle-center;
55 | white-space: nowrap;
56 | overflow: hidden;
57 | }
58 |
59 | .tilemap-explorer-dragarea {
60 | height: 100px;
61 | width: 100px;
62 | padding: 20px;
63 | background-color: var(--unity-colors-highlight-background-hover);
64 | }
--------------------------------------------------------------------------------
/Samples~/Pixel_Map_Sample/Materials/PixelSample_ParallaxScrolling.mat:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!21 &2100000
4 | Material:
5 | serializedVersion: 8
6 | m_ObjectHideFlags: 0
7 | m_CorrespondingSourceObject: {fileID: 0}
8 | m_PrefabInstance: {fileID: 0}
9 | m_PrefabAsset: {fileID: 0}
10 | m_Name: PixelSample_ParallaxScrolling
11 | m_Shader: {fileID: 4800000, guid: c6337d5f8b1218c4e878dd1d2ad6a065, type: 3}
12 | m_ValidKeywords: []
13 | m_InvalidKeywords: []
14 | m_LightmapFlags: 4
15 | m_EnableInstancingVariants: 0
16 | m_DoubleSidedGI: 0
17 | m_CustomRenderQueue: -1
18 | stringTagMap: {}
19 | disabledShaderPasses: []
20 | m_SavedProperties:
21 | serializedVersion: 3
22 | m_TexEnvs:
23 | - _MainTex:
24 | m_Texture: {fileID: 2800000, guid: e2586c533d7289c41be640add5fda44f, type: 3}
25 | m_Scale: {x: 1, y: 1}
26 | m_Offset: {x: 0, y: 0}
27 | m_Ints: []
28 | m_Floats:
29 | - _Aspect: 2
30 | m_Colors:
31 | - _Depth: {r: 0.1, g: 0.25, b: 0.4, a: 0}
32 | - _Layer0: {r: 0.33333334, g: 0.22352943, b: 0.34901962, a: 1}
33 | - _Layer1: {r: 0.39607847, g: 0.56078434, b: 0.50980395, a: 1}
34 | - _Layer2: {r: 0.21568629, g: 0.3137255, b: 0.43921572, a: 1}
35 | - _Layer3: {r: 0.16470589, g: 0.16470589, b: 0.19607843, a: 1}
36 | - _Offset1: {r: 1, g: 0, b: 0, a: 0}
37 | - _Scroll: {r: -0.25, g: 0, b: 0, a: 0}
38 | m_BuildTextureStacks: []
39 |
--------------------------------------------------------------------------------
/Samples~/Pixel_Map_Sample/Tiles/PixelSample_Plants.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!114 &11400000
4 | MonoBehaviour:
5 | m_ObjectHideFlags: 0
6 | m_CorrespondingSourceObject: {fileID: 0}
7 | m_PrefabInstance: {fileID: 0}
8 | m_PrefabAsset: {fileID: 0}
9 | m_GameObject: {fileID: 0}
10 | m_Enabled: 1
11 | m_EditorHideFlags: 0
12 | m_Script: {fileID: 11500000, guid: 04a0ff3def4de4f408179476bda4993e, type: 3}
13 | m_Name: PixelSample_Plants
14 | m_EditorClassIdentifier:
15 | Material: {fileID: 2100000, guid: c4571d6a187162d409acc4a2274f0cc5, type: 2}
16 | CollisionLayer: 0
17 | TileInfo:
18 | Name:
19 | Mesh: {fileID: -710132387105968623, guid: d9f09a1bfd240c040b9587b93ecdb0c3, type: 3}
20 | CollisionMesh: {fileID: 0}
21 | Collision: 0
22 | PreviewOrientation: {x: 20, y: 20}
23 | Variants:
24 | - Name:
25 | Mesh: {fileID: -710132387105968623, guid: d9f09a1bfd240c040b9587b93ecdb0c3, type: 3}
26 | CollisionMesh: {fileID: 0}
27 | Collision: 0
28 | - Name:
29 | Mesh: {fileID: 9103412536451510288, guid: d9f09a1bfd240c040b9587b93ecdb0c3, type: 3}
30 | CollisionMesh: {fileID: 0}
31 | Collision: 0
32 | - Name:
33 | Mesh: {fileID: -84809459145646691, guid: d9f09a1bfd240c040b9587b93ecdb0c3, type: 3}
34 | CollisionMesh: {fileID: 0}
35 | Collision: 0
36 | - Name:
37 | Mesh: {fileID: -6406369764948320581, guid: d9f09a1bfd240c040b9587b93ecdb0c3, type: 3}
38 | CollisionMesh: {fileID: 0}
39 | Collision: 0
40 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | BSD 3-Clause License
2 |
3 | Copyright (c) 2023, Felix Kate
4 | All rights reserved.
5 |
6 | Redistribution and use in source and binary forms, with or without
7 | modification, are permitted provided that the following conditions are met:
8 |
9 | 1. Redistributions of source code must retain the above copyright notice, this
10 | list of conditions and the following disclaimer.
11 |
12 | 2. Redistributions in binary form must reproduce the above copyright notice,
13 | this list of conditions and the following disclaimer in the documentation
14 | and/or other materials provided with the distribution.
15 |
16 | 3. Neither the name of the copyright holder nor the names of its
17 | contributors may be used to endorse or promote products derived from
18 | this software without specific prior written permission.
19 |
20 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
23 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
24 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
25 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
26 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
27 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
28 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30 |
--------------------------------------------------------------------------------
/Editor/Shaders/OrientationGizmo.shader:
--------------------------------------------------------------------------------
1 | // Copyright (c) 2023 Felix Kate. BSD-3 license (see included license file)
2 |
3 | Shader "Hidden/OrientationGizmo" {
4 | Properties {
5 | _MainTex ("Font", CUBE) = "black"
6 | }
7 | SubShader {
8 | Tags { "RenderType"="Opaque" "Queue"="Geometry" }
9 |
10 | Pass {
11 | CGPROGRAM
12 | #pragma vertex vert
13 | #pragma fragment frag
14 |
15 | #include "UnityCG.cginc"
16 |
17 | struct vertIn {
18 | float4 vertex : POSITION;
19 | };
20 |
21 | struct vertOut {
22 | float4 position : SV_POSITION;
23 | float3 texcoord : TEXCOORD;
24 | };
25 |
26 | vertOut vert (vertIn input) {
27 | vertOut output;
28 |
29 | output.position = UnityObjectToClipPos(input.vertex);
30 | output.texcoord = input.vertex;
31 |
32 | return output;
33 | }
34 |
35 | samplerCUBE _MainTex;
36 |
37 | fixed4 frag(vertOut input) : SV_Target{
38 | float3 normal = input.texcoord * 2.0f;
39 |
40 | normal = sign(normal) * smoothstep(0.75, 1.0, abs(normal));
41 |
42 | float3 uv = float3(input.texcoord.x * -1, input.texcoord.yz);
43 | float3 font = texCUBE(_MainTex, uv).xyz;
44 |
45 | float diff = max(0, dot(normalize(float3(1, 1, -1)), normal));
46 |
47 | return float4(font + diff * 0.1, 0);
48 | }
49 | ENDCG
50 | }
51 | }
52 | }
53 |
--------------------------------------------------------------------------------
/Documentation~/docs/api/TilemapSettings.md:
--------------------------------------------------------------------------------
1 | # TilemapSettings (Editor only)
2 |
3 | Settings object that gets stored in ProjectRoot/UserSettings. Save serialization is called when switching away from an active tilemap.
4 | Values are mainly modified by package interfaces but can be freely set for extensions as well.
5 |
6 | ## Properties
7 | |Type|Name|Usage|
8 | |:---|:---|:----|
9 | |**int**|Index|Active index of the cursor (zero is empty)|
10 | |**int**|Variant|Active sub index of the cursor|
11 | |**int**|Rotation|Active rotation of the cursor (0-3)|
12 | |**TileFlags**|Flags|Active flags of the cursor|
13 | |**bool**|ShowGrid|Shows or hides the grid|
14 | |**int**|GridLayer|Active working layer of the grid|
15 | |**int**|GridAxis|Display axis of the grid (0=x 1=y 2=z)|
16 | |**float3**|GridSize|Size of a single cell. Should match the provided tile mesh size|
17 | |**bool**|PreviewMode|Toggles between shape and textured preview|
18 | |**int**|Randomizer|Tile placing setting (0=none 1=variant 2=rotation 3=both)|
19 | |**float**|ExplorerTileSize|Display size of tiles in the explorer (should be set via slider)|
20 | |**Action**|OnTilePick|Subscribe to recive a change notification once a tile is picked|
21 | |List<System.Type>|Modules|List of registered modules|
22 | |GUIContent[]|FlagContent|List of registered flag buttons|
23 | |Material|PreviewMaterial|Single instance to ("Hidden/TilePreview")|
24 |
25 |
26 |
27 | ## Methods
28 | |Name|Usage|
29 | |:---|:----|
30 | |SaveSettings()|Save current settings to file|
31 | |SyncToMap(Tilemap3D map)|Limit ranges to current tilemap|
32 | |GetAxis()|Get axis order from settings as int3|
33 | |RegisterModule<iTilemapModule>()|Register a module to show in the module menu|
34 | |RegisterFlagContent(GUIContent content, int id)|Register a custom flag (0 and 1 are used by autotiling)|
35 | |SettingsFromTile(TilemapData.Tile tile)|Copy the tile data to settings and call OnTilePick|
--------------------------------------------------------------------------------
/Samples~/Pixel_Map_Sample/Animations/PixelSample_Platformer_Crouch.anim:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!74 &7400000
4 | AnimationClip:
5 | m_ObjectHideFlags: 0
6 | m_CorrespondingSourceObject: {fileID: 0}
7 | m_PrefabInstance: {fileID: 0}
8 | m_PrefabAsset: {fileID: 0}
9 | m_Name: PixelSample_Platformer_Crouch
10 | serializedVersion: 6
11 | m_Legacy: 0
12 | m_Compressed: 0
13 | m_UseHighQualityCurve: 1
14 | m_RotationCurves: []
15 | m_CompressedRotationCurves: []
16 | m_EulerCurves: []
17 | m_PositionCurves: []
18 | m_ScaleCurves: []
19 | m_FloatCurves: []
20 | m_PPtrCurves:
21 | - curve:
22 | - time: 0
23 | value: {fileID: -244275455, guid: 44c73d7570b2828429c238885eef829b, type: 3}
24 | attribute: m_Sprite
25 | path:
26 | classID: 212
27 | script: {fileID: 0}
28 | m_SampleRate: 60
29 | m_WrapMode: 0
30 | m_Bounds:
31 | m_Center: {x: 0, y: 0, z: 0}
32 | m_Extent: {x: 0, y: 0, z: 0}
33 | m_ClipBindingConstant:
34 | genericBindings:
35 | - serializedVersion: 2
36 | path: 0
37 | attribute: 0
38 | script: {fileID: 0}
39 | typeID: 212
40 | customType: 23
41 | isPPtrCurve: 1
42 | pptrCurveMapping:
43 | - {fileID: -244275455, guid: 44c73d7570b2828429c238885eef829b, type: 3}
44 | m_AnimationClipSettings:
45 | serializedVersion: 2
46 | m_AdditiveReferencePoseClip: {fileID: 0}
47 | m_AdditiveReferencePoseTime: 0
48 | m_StartTime: 0
49 | m_StopTime: 0.016666668
50 | m_OrientationOffsetY: 0
51 | m_Level: 0
52 | m_CycleOffset: 0
53 | m_HasAdditiveReferencePose: 0
54 | m_LoopTime: 0
55 | m_LoopBlend: 0
56 | m_LoopBlendOrientation: 0
57 | m_LoopBlendPositionY: 0
58 | m_LoopBlendPositionXZ: 0
59 | m_KeepOriginalOrientation: 0
60 | m_KeepOriginalPositionY: 1
61 | m_KeepOriginalPositionXZ: 0
62 | m_HeightFromFeet: 0
63 | m_Mirror: 0
64 | m_EditorCurves: []
65 | m_EulerEditorCurves: []
66 | m_HasGenericRootTransform: 0
67 | m_HasMotionFloatCurves: 0
68 | m_Events: []
69 |
--------------------------------------------------------------------------------
/Documentation~/docs/api/TilemapData.md:
--------------------------------------------------------------------------------
1 | # TilemapData
2 | Struct holding the tilemap data inside a one dimensional int array. The array can be accessed via a set of methods.
3 |
4 | ## Properties
5 | |Type|Name|Usage|
6 | |:---|:---|:----|
7 | |int|Width|Width of the volume|
8 | |int|Height|Height of the volume|
9 | |int|Depth|Depth of the volume|
10 | |int3|Size|Width height and depth of the volume|
11 | |int|Length|Length of the data array|
12 | |TileMapData.Tile|this[int, int, int]|Indexer to data from coordinate tripplet|
13 | |TileMapData.Tile|this[int3]|Indexer to data from int3|
14 | |TileMapData.Tile|this[int]|Indexer directly to raw data array|
15 |
16 |
17 |
18 | ## Methods
19 | |Name|Usage|
20 | |:---|:----|
21 | |TilemapData(int width, int height, int depth)|Constructor|
22 | |GetIndex(int x, int y, int z)|Convert position to array index|
23 | |InRange(int x, int y, int z)|Check if position is inside volume|
24 | |InRange(int index)|Check if index is inside data array|
25 | |Resize(int width, int height, int depth)|Resize the data volume while maintaining content|
26 |
27 |
28 |
29 |
30 | # TilemapData.Tile
31 | Helper struct to convert stored integer into four bytes.
32 |
33 | ## Properties
34 | |Type|Name|Usage|
35 | |:---|:---|:----|
36 | |**byte**|id|Index of the tile data. Zero index means empty tile|
37 | |**byte**|variant|Subvariant of the given index|
38 | |**byte**|rotation|Rotation between 0-3|
39 | |**byte**|flags|Aditional bitflags stored inside a byte|
40 |
41 |
42 |
43 | ## Methods
44 | |Name|Usage|
45 | |:---|:----|
46 | |GetFlags()|Get flags as TileFlags bit mask|
47 | |HasFlag(TileFlags flag)|Check if the tile has the given flag. Returns bool|
48 | |GetRotation()|Get rotation as a quaternion|
49 |
50 |
51 |
52 |
53 | # TilemapDataUtility
54 | Static extension methods for TilemapData.
55 |
56 | ## Static Methods
57 | |Name|Usage|
58 | |:---|:----|
59 | |CopyData(this TilemapData target, TilemapData source, int3 pos)|Copy data from source to target starting at the set position|
60 | |ClearArea(this TilemapData data, int3 pos, int3 size)|Clear all data in the given area|
61 | |Clear(this TilemapData data)|Clear the whole TilemapData array|
--------------------------------------------------------------------------------
/Samples~/Pixel_Map_Sample/Animations/PixelSample_Topdown_Jump.anim:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!74 &7400000
4 | AnimationClip:
5 | m_ObjectHideFlags: 0
6 | m_CorrespondingSourceObject: {fileID: 0}
7 | m_PrefabInstance: {fileID: 0}
8 | m_PrefabAsset: {fileID: 0}
9 | m_Name: PixelSample_Topdown_Jump
10 | serializedVersion: 6
11 | m_Legacy: 0
12 | m_Compressed: 0
13 | m_UseHighQualityCurve: 1
14 | m_RotationCurves: []
15 | m_CompressedRotationCurves: []
16 | m_EulerCurves: []
17 | m_PositionCurves: []
18 | m_ScaleCurves: []
19 | m_FloatCurves: []
20 | m_PPtrCurves:
21 | - curve:
22 | - time: 0
23 | value: {fileID: 763200097, guid: f7ffe24d582bd5c429135a5bc9451628, type: 3}
24 | - time: 0.33333334
25 | value: {fileID: -367902098, guid: f7ffe24d582bd5c429135a5bc9451628, type: 3}
26 | attribute: m_Sprite
27 | path:
28 | classID: 212
29 | script: {fileID: 0}
30 | m_SampleRate: 60
31 | m_WrapMode: 0
32 | m_Bounds:
33 | m_Center: {x: 0, y: 0, z: 0}
34 | m_Extent: {x: 0, y: 0, z: 0}
35 | m_ClipBindingConstant:
36 | genericBindings:
37 | - serializedVersion: 2
38 | path: 0
39 | attribute: 0
40 | script: {fileID: 0}
41 | typeID: 212
42 | customType: 23
43 | isPPtrCurve: 1
44 | pptrCurveMapping:
45 | - {fileID: 763200097, guid: f7ffe24d582bd5c429135a5bc9451628, type: 3}
46 | - {fileID: -367902098, guid: f7ffe24d582bd5c429135a5bc9451628, type: 3}
47 | m_AnimationClipSettings:
48 | serializedVersion: 2
49 | m_AdditiveReferencePoseClip: {fileID: 0}
50 | m_AdditiveReferencePoseTime: 0
51 | m_StartTime: 0
52 | m_StopTime: 0.35000002
53 | m_OrientationOffsetY: 0
54 | m_Level: 0
55 | m_CycleOffset: 0
56 | m_HasAdditiveReferencePose: 0
57 | m_LoopTime: 0
58 | m_LoopBlend: 0
59 | m_LoopBlendOrientation: 0
60 | m_LoopBlendPositionY: 0
61 | m_LoopBlendPositionXZ: 0
62 | m_KeepOriginalOrientation: 0
63 | m_KeepOriginalPositionY: 1
64 | m_KeepOriginalPositionXZ: 0
65 | m_HeightFromFeet: 0
66 | m_Mirror: 0
67 | m_EditorCurves: []
68 | m_EulerEditorCurves: []
69 | m_HasGenericRootTransform: 0
70 | m_HasMotionFloatCurves: 0
71 | m_Events: []
72 |
--------------------------------------------------------------------------------
/Samples~/Pixel_Map_Sample/Animations/PixelSample_Platformer_Jump.anim:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!74 &7400000
4 | AnimationClip:
5 | m_ObjectHideFlags: 0
6 | m_CorrespondingSourceObject: {fileID: 0}
7 | m_PrefabInstance: {fileID: 0}
8 | m_PrefabAsset: {fileID: 0}
9 | m_Name: PixelSample_Platformer_Jump
10 | serializedVersion: 6
11 | m_Legacy: 0
12 | m_Compressed: 0
13 | m_UseHighQualityCurve: 1
14 | m_RotationCurves: []
15 | m_CompressedRotationCurves: []
16 | m_EulerCurves: []
17 | m_PositionCurves: []
18 | m_ScaleCurves: []
19 | m_FloatCurves: []
20 | m_PPtrCurves:
21 | - curve:
22 | - time: 0
23 | value: {fileID: 1678873606, guid: 44c73d7570b2828429c238885eef829b, type: 3}
24 | - time: 0.16666667
25 | value: {fileID: 401633413, guid: 44c73d7570b2828429c238885eef829b, type: 3}
26 | attribute: m_Sprite
27 | path:
28 | classID: 212
29 | script: {fileID: 0}
30 | m_SampleRate: 60
31 | m_WrapMode: 0
32 | m_Bounds:
33 | m_Center: {x: 0, y: 0, z: 0}
34 | m_Extent: {x: 0, y: 0, z: 0}
35 | m_ClipBindingConstant:
36 | genericBindings:
37 | - serializedVersion: 2
38 | path: 0
39 | attribute: 0
40 | script: {fileID: 0}
41 | typeID: 212
42 | customType: 23
43 | isPPtrCurve: 1
44 | pptrCurveMapping:
45 | - {fileID: 1678873606, guid: 44c73d7570b2828429c238885eef829b, type: 3}
46 | - {fileID: 401633413, guid: 44c73d7570b2828429c238885eef829b, type: 3}
47 | m_AnimationClipSettings:
48 | serializedVersion: 2
49 | m_AdditiveReferencePoseClip: {fileID: 0}
50 | m_AdditiveReferencePoseTime: 0
51 | m_StartTime: 0
52 | m_StopTime: 0.18333334
53 | m_OrientationOffsetY: 0
54 | m_Level: 0
55 | m_CycleOffset: 0
56 | m_HasAdditiveReferencePose: 0
57 | m_LoopTime: 0
58 | m_LoopBlend: 0
59 | m_LoopBlendOrientation: 0
60 | m_LoopBlendPositionY: 0
61 | m_LoopBlendPositionXZ: 0
62 | m_KeepOriginalOrientation: 0
63 | m_KeepOriginalPositionY: 1
64 | m_KeepOriginalPositionXZ: 0
65 | m_HeightFromFeet: 0
66 | m_Mirror: 0
67 | m_EditorCurves: []
68 | m_EulerEditorCurves: []
69 | m_HasGenericRootTransform: 0
70 | m_HasMotionFloatCurves: 0
71 | m_Events: []
72 |
--------------------------------------------------------------------------------
/Runtime/Behaviour/Tilemap3D.cs:
--------------------------------------------------------------------------------
1 | // Copyright (c) 2023 Felix Kate. BSD-3 license (see included license file)
2 |
3 | using System.Collections.Generic;
4 | using Unity.Mathematics;
5 | using UnityEngine;
6 |
7 | namespace TilemapCreator3D {
8 | public class Tilemap3D : MonoBehaviour {
9 |
10 | public TilePalette Palette = new TilePalette();
11 |
12 | public TilemapData Data = new TilemapData(4, 4, 4);
13 | public float3 GridSize = new float3(1, 1, 1);
14 |
15 | // Move data one layer up for easier acsess
16 | public int Width => Data.Width;
17 | public int Height => Data.Height;
18 | public int Depth => Data.Depth;
19 |
20 | public int3 Size => Data.Size;
21 | public int Length => Data.Length;
22 | public Box3D Area => new Box3D(0, Size);
23 |
24 | public TilemapData.Tile this[int3 pos] {
25 | get => Data[pos];
26 | set => Data[pos] = value;
27 | }
28 |
29 | // Modules are only cached if needed
30 | public List Modules {
31 | get {
32 | if(_modules == null) RefreshModules();
33 | return _modules;
34 | }
35 | }
36 |
37 | private List _modules;
38 |
39 | public void BakeDynamic() => BakeDynamic(new Box3D(new int3(0, 0, 0), Data.Size - 1));
40 |
41 | public void BakeDynamic(Box3D area) {
42 | if(_modules == null) RefreshModules();
43 |
44 | for(int i = 0; i < _modules.Count; i++) {
45 | _modules[i].BakePartial(this, area);
46 | }
47 | }
48 |
49 | public void Bake() {
50 | if(_modules == null) RefreshModules();
51 |
52 | for(int i = 0; i < _modules.Count; i++) {
53 | _modules[i].Bake(this);
54 | }
55 | }
56 |
57 | public void RefreshModules() {
58 | _modules = new List(transform.childCount);
59 | for(int i = 0; i < transform.childCount; i++) {
60 | ITilemapModule module = transform.GetChild(i).GetComponent();
61 | if(module != null) _modules.Add(module);
62 | }
63 | }
64 |
65 | }
66 | }
--------------------------------------------------------------------------------
/Samples~/World_Map_Sample/Tiles/MapSample_Forest.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!114 &11400000
4 | MonoBehaviour:
5 | m_ObjectHideFlags: 0
6 | m_CorrespondingSourceObject: {fileID: 0}
7 | m_PrefabInstance: {fileID: 0}
8 | m_PrefabAsset: {fileID: 0}
9 | m_GameObject: {fileID: 0}
10 | m_Enabled: 1
11 | m_EditorHideFlags: 0
12 | m_Script: {fileID: 11500000, guid: 6e71ebfdd92a51043be0f6ee64229708, type: 3}
13 | m_Name: MapSample_Forest
14 | m_EditorClassIdentifier:
15 | Material: {fileID: 2100000, guid: 6e9530b8c86f51641b39aaf421389a3a, type: 2}
16 | CollisionLayer: 0
17 | NavigationArea: 1
18 | PreviewOrientation: {x: 0, y: 90}
19 | EightBitMask: 0
20 | NoBorder: 0
21 | Orientation2D: 0
22 | Isolate: 1
23 | Variants:
24 | - Info:
25 | Mesh: {fileID: -7388323935446629336, guid: f4052364a7853fa4bb04b40a486a88fa, type: 3}
26 | CollisionMesh: {fileID: 0}
27 | Collision: 0
28 | Mask:
29 | Type: 0
30 | Mask: 0
31 | Variants:
32 | - Info:
33 | Mesh: {fileID: 8178963523154660687, guid: f4052364a7853fa4bb04b40a486a88fa, type: 3}
34 | CollisionMesh: {fileID: 0}
35 | Collision: 0
36 | Mask:
37 | Type: 1
38 | Mask: 16
39 | Variants: 400000000800000002000000
40 | - Info:
41 | Mesh: {fileID: 6067625909637732033, guid: f4052364a7853fa4bb04b40a486a88fa, type: 3}
42 | CollisionMesh: {fileID: 0}
43 | Collision: 0
44 | Mask:
45 | Type: 1
46 | Mask: 24
47 | Variants: 420000001800000042000000
48 | - Info:
49 | Mesh: {fileID: -7218664230128223602, guid: f4052364a7853fa4bb04b40a486a88fa, type: 3}
50 | CollisionMesh: {fileID: 0}
51 | Collision: 0
52 | Mask:
53 | Type: 1
54 | Mask: 18
55 | Variants: 50000000480000000a000000
56 | - Info:
57 | Mesh: {fileID: 2865367827149072120, guid: f4052364a7853fa4bb04b40a486a88fa, type: 3}
58 | CollisionMesh: {fileID: 0}
59 | Collision: 0
60 | Mask:
61 | Type: 1
62 | Mask: 26
63 | Variants: 52000000580000004a000000
64 | - Info:
65 | Mesh: {fileID: -408246132349770669, guid: f4052364a7853fa4bb04b40a486a88fa, type: 3}
66 | CollisionMesh: {fileID: 0}
67 | Collision: 0
68 | Mask:
69 | Type: 0
70 | Mask: 90
71 | Variants:
72 |
--------------------------------------------------------------------------------
/Samples~/Pixel_Map_Sample/Tiles/PixelSample_Dirtwall.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!114 &11400000
4 | MonoBehaviour:
5 | m_ObjectHideFlags: 0
6 | m_CorrespondingSourceObject: {fileID: 0}
7 | m_PrefabInstance: {fileID: 0}
8 | m_PrefabAsset: {fileID: 0}
9 | m_GameObject: {fileID: 0}
10 | m_Enabled: 1
11 | m_EditorHideFlags: 0
12 | m_Script: {fileID: 11500000, guid: 6e71ebfdd92a51043be0f6ee64229708, type: 3}
13 | m_Name: PixelSample_Dirtwall
14 | m_EditorClassIdentifier:
15 | Material: {fileID: 2100000, guid: df5812252ba252e458e028e0ea615e8d, type: 2}
16 | CollisionLayer: 0
17 | NavigationArea: 0
18 | PreviewOrientation: {x: 20, y: 20}
19 | EightBitMask: 0
20 | NoBorder: 1
21 | Orientation2D: 0
22 | Isolate: 0
23 | Variants:
24 | - Info:
25 | Name:
26 | Mesh: {fileID: 7792445426215390975, guid: d9f09a1bfd240c040b9587b93ecdb0c3, type: 3}
27 | CollisionMesh: {fileID: 0}
28 | Collision: 1
29 | Mask:
30 | Type: 0
31 | Mask: 0
32 | Variants:
33 | - Info:
34 | Name:
35 | Mesh: {fileID: 1888981660390306200, guid: d9f09a1bfd240c040b9587b93ecdb0c3, type: 3}
36 | CollisionMesh: {fileID: 0}
37 | Collision: 1
38 | Mask:
39 | Type: 1
40 | Mask: 16
41 | Variants: 400000000800000002000000
42 | - Info:
43 | Name:
44 | Mesh: {fileID: 5830037663989252264, guid: d9f09a1bfd240c040b9587b93ecdb0c3, type: 3}
45 | CollisionMesh: {fileID: 0}
46 | Collision: 1
47 | Mask:
48 | Type: 1
49 | Mask: 24
50 | Variants: 420000001800000042000000
51 | - Info:
52 | Name:
53 | Mesh: {fileID: 5824501116915285244, guid: d9f09a1bfd240c040b9587b93ecdb0c3, type: 3}
54 | CollisionMesh: {fileID: 0}
55 | Collision: 1
56 | Mask:
57 | Type: 1
58 | Mask: 18
59 | Variants: 50000000480000000a000000
60 | - Info:
61 | Name:
62 | Mesh: {fileID: -3153387451231025169, guid: d9f09a1bfd240c040b9587b93ecdb0c3, type: 3}
63 | CollisionMesh: {fileID: 0}
64 | Collision: 1
65 | Mask:
66 | Type: 1
67 | Mask: 26
68 | Variants: 52000000580000004a000000
69 | - Info:
70 | Name:
71 | Mesh: {fileID: 0}
72 | CollisionMesh: {fileID: 0}
73 | Collision: 1
74 | Mask:
75 | Type: 0
76 | Mask: 90
77 | Variants:
78 |
--------------------------------------------------------------------------------
/Samples~/Pixel_Map_Sample/Tiles/PixelSample_Water.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!114 &11400000
4 | MonoBehaviour:
5 | m_ObjectHideFlags: 0
6 | m_CorrespondingSourceObject: {fileID: 0}
7 | m_PrefabInstance: {fileID: 0}
8 | m_PrefabAsset: {fileID: 0}
9 | m_GameObject: {fileID: 0}
10 | m_Enabled: 1
11 | m_EditorHideFlags: 0
12 | m_Script: {fileID: 11500000, guid: 6e71ebfdd92a51043be0f6ee64229708, type: 3}
13 | m_Name: PixelSample_Water
14 | m_EditorClassIdentifier:
15 | Material: {fileID: 2100000, guid: c4571d6a187162d409acc4a2274f0cc5, type: 2}
16 | CollisionLayer: 4
17 | NavigationArea: 0
18 | PreviewOrientation: {x: 20, y: 20}
19 | EightBitMask: 0
20 | Orientation2D: 0
21 | Variants:
22 | - Info:
23 | Name:
24 | Mesh: {fileID: -6769214164185090501, guid: d9f09a1bfd240c040b9587b93ecdb0c3, type: 3}
25 | CollisionMesh: {fileID: 0}
26 | Collision: 0
27 | Mask:
28 | Type: 0
29 | Mask: 0
30 | Variants:
31 | - Info:
32 | Name:
33 | Mesh: {fileID: -2256902234221395796, guid: d9f09a1bfd240c040b9587b93ecdb0c3, type: 3}
34 | CollisionMesh: {fileID: 0}
35 | Collision: 0
36 | Mask:
37 | Type: 1
38 | Mask: 16
39 | Variants: 400000000800000002000000
40 | - Info:
41 | Name:
42 | Mesh: {fileID: -4270519608471497230, guid: d9f09a1bfd240c040b9587b93ecdb0c3, type: 3}
43 | CollisionMesh: {fileID: 0}
44 | Collision: 0
45 | Mask:
46 | Type: 1
47 | Mask: 24
48 | Variants: 420000001800000042000000
49 | - Info:
50 | Name:
51 | Mesh: {fileID: -1056717464928533288, guid: d9f09a1bfd240c040b9587b93ecdb0c3, type: 3}
52 | CollisionMesh: {fileID: 0}
53 | Collision: 0
54 | Mask:
55 | Type: 1
56 | Mask: 18
57 | Variants: 50000000480000000a000000
58 | - Info:
59 | Name:
60 | Mesh: {fileID: 4565433839699826893, guid: d9f09a1bfd240c040b9587b93ecdb0c3, type: 3}
61 | CollisionMesh: {fileID: 0}
62 | Collision: 0
63 | Mask:
64 | Type: 1
65 | Mask: 26
66 | Variants: 52000000580000004a000000
67 | - Info:
68 | Name:
69 | Mesh: {fileID: 8760989875873613999, guid: d9f09a1bfd240c040b9587b93ecdb0c3, type: 3}
70 | CollisionMesh: {fileID: 0}
71 | Collision: 0
72 | Mask:
73 | Type: 0
74 | Mask: 90
75 | Variants:
76 |
--------------------------------------------------------------------------------
/Samples~/Pixel_Map_Sample/Tiles/PixelSample_Grass.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!114 &11400000
4 | MonoBehaviour:
5 | m_ObjectHideFlags: 0
6 | m_CorrespondingSourceObject: {fileID: 0}
7 | m_PrefabInstance: {fileID: 0}
8 | m_PrefabAsset: {fileID: 0}
9 | m_GameObject: {fileID: 0}
10 | m_Enabled: 1
11 | m_EditorHideFlags: 0
12 | m_Script: {fileID: 11500000, guid: 6e71ebfdd92a51043be0f6ee64229708, type: 3}
13 | m_Name: PixelSample_Grass
14 | m_EditorClassIdentifier:
15 | Material: {fileID: 2100000, guid: df5812252ba252e458e028e0ea615e8d, type: 2}
16 | CollisionLayer: 0
17 | NavigationArea: 0
18 | PreviewOrientation: {x: 20, y: 20}
19 | EightBitMask: 0
20 | NoBorder: 1
21 | Orientation2D: 0
22 | Variants:
23 | - Info:
24 | Name:
25 | Mesh: {fileID: 1561329762080483012, guid: d9f09a1bfd240c040b9587b93ecdb0c3, type: 3}
26 | CollisionMesh: {fileID: 0}
27 | Collision: 1
28 | Mask:
29 | Type: 0
30 | Mask: 0
31 | Variants:
32 | - Info:
33 | Name:
34 | Mesh: {fileID: -2774206240508401126, guid: d9f09a1bfd240c040b9587b93ecdb0c3, type: 3}
35 | CollisionMesh: {fileID: 0}
36 | Collision: 1
37 | Mask:
38 | Type: 1
39 | Mask: 16
40 | Variants: 400000000800000002000000
41 | - Info:
42 | Name:
43 | Mesh: {fileID: -2668356972260448150, guid: d9f09a1bfd240c040b9587b93ecdb0c3, type: 3}
44 | CollisionMesh: {fileID: 0}
45 | Collision: 1
46 | Mask:
47 | Type: 1
48 | Mask: 24
49 | Variants: 420000001800000042000000
50 | - Info:
51 | Name:
52 | Mesh: {fileID: -2044741469621387366, guid: d9f09a1bfd240c040b9587b93ecdb0c3, type: 3}
53 | CollisionMesh: {fileID: 0}
54 | Collision: 1
55 | Mask:
56 | Type: 1
57 | Mask: 18
58 | Variants: 50000000480000000a000000
59 | - Info:
60 | Name:
61 | Mesh: {fileID: -2419977703697535096, guid: d9f09a1bfd240c040b9587b93ecdb0c3, type: 3}
62 | CollisionMesh: {fileID: 0}
63 | Collision: 1
64 | Mask:
65 | Type: 1
66 | Mask: 26
67 | Variants: 52000000580000004a000000
68 | - Info:
69 | Name:
70 | Mesh: {fileID: 4275672641661112483, guid: d9f09a1bfd240c040b9587b93ecdb0c3, type: 3}
71 | CollisionMesh: {fileID: 0}
72 | Collision: 1
73 | Mask:
74 | Type: 0
75 | Mask: 90
76 | Variants:
77 |
--------------------------------------------------------------------------------
/Samples~/Pixel_Map_Sample/Scripts/SimpleCameraController.cs:
--------------------------------------------------------------------------------
1 | // Copyright (c) 2023 Felix Kate. BSD-3 license (see included license file)
2 | // Example code for a simple camera controller that only moves when the player is outside it's focus bounds
3 |
4 | using Unity.Mathematics;
5 | using UnityEngine;
6 |
7 | namespace TilemapCreator3D.Samples {
8 | public class SimpleCameraController : MonoBehaviour {
9 |
10 | public Camera Camera;
11 | public Transform Target;
12 | public float3 FocusBounds = new float3(5, 5, 5);
13 | public float CameraSpeed = 2.5f;
14 |
15 | public bool LimitCamera = false;
16 | public Bounds CameraBounds = new Bounds(Vector3.zero, Vector3.one);
17 |
18 | public void LateUpdate() {
19 | if(Target == null) return;
20 |
21 | float dt = Time.deltaTime;
22 |
23 | Transform trs = transform;
24 |
25 | float3 position = trs.position;
26 | quaternion rotation = trs.rotation;
27 | float3 globalTarget = Target.position;
28 | float3 localTarget = trs.InverseTransformPoint(globalTarget);
29 | float3 halfBounds = FocusBounds * 0.5f;
30 |
31 | float3 absTarget = math.abs(localTarget);
32 |
33 | // If player is out of focus move camera anchor towards it
34 | if(absTarget.x > halfBounds.x) position += math.mul(rotation, new float3(math.sign(localTarget.x) * absTarget.x, 0, 0));
35 | if(absTarget.y > halfBounds.y) position += math.mul(rotation, new float3(0, math.sign(localTarget.y) * absTarget.y, 0));
36 | if(absTarget.z > halfBounds.z) position += math.mul(rotation, new float3(0, 0, math.sign(localTarget.z) * absTarget.z));
37 |
38 | if(LimitCamera) {
39 | position = math.clamp(position, CameraBounds.min, CameraBounds.max);
40 | }
41 |
42 | trs.position = Vector3.MoveTowards(trs.position, position, CameraSpeed * dt);
43 | }
44 |
45 |
46 | public void OnDrawGizmosSelected() {
47 | if(LimitCamera) {
48 | Gizmos.color = Color.cyan;
49 | Gizmos.DrawWireCube(CameraBounds.center, CameraBounds.size);
50 | }
51 |
52 | Gizmos.matrix = transform.localToWorldMatrix;
53 | Gizmos.color = Color.white;
54 |
55 | Gizmos.DrawWireCube(new float3(0, 0, 0), FocusBounds);
56 | }
57 |
58 | }
59 | }
--------------------------------------------------------------------------------
/Documentation~/docs/api/Tilemap3D.md:
--------------------------------------------------------------------------------
1 | # Tilemap3D
2 | Main component for tilemap generation. Use Data modification in combination with one of the bake methods to update the map.
3 |
4 | ## Properties
5 | |Type|Name|Usage|
6 | |:---|:---|:----|
7 | |**TilePalette**|Palette|Tile palette stored in the map|
8 | |**TileMapData**|Data|Map data. Read and write to it to modify the map|
9 | |**float3**|GridSize|Size of a single cell. Should match the provided tile mesh size|
10 | |int|Width|Getter to Data.Width|
11 | |int|Height|Getter to Data.Height|
12 | |int|Depth|Getter to Data.Depth|
13 | |int3|Size|Getter to Data.Size|
14 | |int|Length|Getter to Data.Length|
15 | |Box3D|Area|Local bounds of the map|
16 | |TileMapData.Tile|this[int3]|Indexer to Data[int3]|
17 | |ITilemapModule|Modules|Current list of tilemap modules in children|
18 |
19 |
20 |
21 | ## Methods
22 | |Name|Usage|
23 | |:---|:----|
24 | |BakeDynamic(Box3D area)|Rebake dynamic module content within area|
25 | |BakeDynamic()|Rebake dynamic module content for the whole map|
26 | |Bake()|Bake static module content for the whole map|
27 | |RefreshModules()|Force update to module list|
28 |
29 |
30 |
31 |
32 | # Tilemap3DUtility
33 | Static extension methods for Tilemap3D.
34 |
35 | ## Static Methods
36 | |Name|Usage|
37 | |:---|:----|
38 | |GetLayerPlane(int axis, int layer)|Calculate a local space plane on the given axis (0x-1y-2z) for the given layer|
39 | |RaycastLayer(this Tilemap3D map, Ray ray, Plane plane, out int3 hit)|Raycast a local space plane. Input ray is in worldspace and will be transformed into grid space. Returns false if hit is outside bounds|
40 | |GridToWorld(this Tilemap3D map, int3 position, float3 pivot)|Returns the map position at the given pivot (0-1 range) in world coordinates|
41 | |GridToWorld(this Tilemap3D map, int3 position)|Returns the map position in world coordinates|
42 | |GridToLocal(this Tilemap3D map, int3 position, float3 pivot)|Returns the map position at the given pivot (0-1 range) in local coordinates|
43 | |GridToLocal(this Tilemap3D map, int3 position)|Returns the map position in local coordinates|
44 | |WorldToGrid(this Tilemap3D map, float3 position)|Returns the map grid position at given world position (this includes out of bounds)|
45 | |ReconstructPosition(this Tilemap3D map, int index)|Converts index into xyz coordinate|
46 | |InBounds(this Tilemap3D map, int3 position)|Checks if the given grid coordinates are in bounds|
47 | |PostProcessTiles(this Tilemap3D map, Box3D area)|Post processes area and it's neighbours. Returns the area containing it's neighbours|
--------------------------------------------------------------------------------
/Samples~/World_Map_Sample/Tiles/MapSample_Road.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!114 &11400000
4 | MonoBehaviour:
5 | m_ObjectHideFlags: 0
6 | m_CorrespondingSourceObject: {fileID: 0}
7 | m_PrefabInstance: {fileID: 0}
8 | m_PrefabAsset: {fileID: 0}
9 | m_GameObject: {fileID: 0}
10 | m_Enabled: 1
11 | m_EditorHideFlags: 0
12 | m_Script: {fileID: 11500000, guid: 6e71ebfdd92a51043be0f6ee64229708, type: 3}
13 | m_Name: MapSample_Road
14 | m_EditorClassIdentifier:
15 | Material: {fileID: 2100000, guid: 6e9530b8c86f51641b39aaf421389a3a, type: 2}
16 | CollisionLayer: 0
17 | NavigationArea: 2
18 | PreviewOrientation: {x: 0, y: 90}
19 | EightBitMask: 0
20 | NoBorder: 1
21 | Orientation2D: 0
22 | Isolate: 0
23 | Variants:
24 | - Info:
25 | Mesh: {fileID: 1220458114217829902, guid: f4052364a7853fa4bb04b40a486a88fa, type: 3}
26 | CollisionMesh: {fileID: 1220458114217829902, guid: f4052364a7853fa4bb04b40a486a88fa, type: 3}
27 | Collision: 4
28 | Mask:
29 | Type: 0
30 | Mask: 0
31 | Variants:
32 | - Info:
33 | Mesh: {fileID: -2046168829206276837, guid: f4052364a7853fa4bb04b40a486a88fa, type: 3}
34 | CollisionMesh: {fileID: -2046168829206276837, guid: f4052364a7853fa4bb04b40a486a88fa, type: 3}
35 | Collision: 4
36 | Mask:
37 | Type: 1
38 | Mask: 16
39 | Variants: 400000000800000002000000
40 | - Info:
41 | Mesh: {fileID: -3016801825565858393, guid: f4052364a7853fa4bb04b40a486a88fa, type: 3}
42 | CollisionMesh: {fileID: -3016801825565858393, guid: f4052364a7853fa4bb04b40a486a88fa, type: 3}
43 | Collision: 4
44 | Mask:
45 | Type: 1
46 | Mask: 24
47 | Variants: 420000001800000042000000
48 | - Info:
49 | Mesh: {fileID: -2235564855433077237, guid: f4052364a7853fa4bb04b40a486a88fa, type: 3}
50 | CollisionMesh: {fileID: -2235564855433077237, guid: f4052364a7853fa4bb04b40a486a88fa, type: 3}
51 | Collision: 4
52 | Mask:
53 | Type: 1
54 | Mask: 18
55 | Variants: 50000000480000000a000000
56 | - Info:
57 | Mesh: {fileID: -1046366615879006865, guid: f4052364a7853fa4bb04b40a486a88fa, type: 3}
58 | CollisionMesh: {fileID: -1046366615879006865, guid: f4052364a7853fa4bb04b40a486a88fa, type: 3}
59 | Collision: 4
60 | Mask:
61 | Type: 1
62 | Mask: 26
63 | Variants: 52000000580000004a000000
64 | - Info:
65 | Mesh: {fileID: 8161468496515083924, guid: f4052364a7853fa4bb04b40a486a88fa, type: 3}
66 | CollisionMesh: {fileID: 8161468496515083924, guid: f4052364a7853fa4bb04b40a486a88fa, type: 3}
67 | Collision: 4
68 | Mask:
69 | Type: 0
70 | Mask: 90
71 | Variants:
72 |
--------------------------------------------------------------------------------
/Samples~/Pixel_Map_Sample/Animations/PixelSample_Topdown_Idle.anim:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!74 &7400000
4 | AnimationClip:
5 | m_ObjectHideFlags: 0
6 | m_CorrespondingSourceObject: {fileID: 0}
7 | m_PrefabInstance: {fileID: 0}
8 | m_PrefabAsset: {fileID: 0}
9 | m_Name: PixelSample_Topdown_Idle
10 | serializedVersion: 6
11 | m_Legacy: 0
12 | m_Compressed: 0
13 | m_UseHighQualityCurve: 1
14 | m_RotationCurves: []
15 | m_CompressedRotationCurves: []
16 | m_EulerCurves: []
17 | m_PositionCurves: []
18 | m_ScaleCurves: []
19 | m_FloatCurves: []
20 | m_PPtrCurves:
21 | - curve:
22 | - time: 0
23 | value: {fileID: -1552090290, guid: f7ffe24d582bd5c429135a5bc9451628, type: 3}
24 | - time: 0.16666667
25 | value: {fileID: 588126179, guid: f7ffe24d582bd5c429135a5bc9451628, type: 3}
26 | - time: 0.33333334
27 | value: {fileID: -1552090290, guid: f7ffe24d582bd5c429135a5bc9451628, type: 3}
28 | - time: 0.5
29 | value: {fileID: 763200097, guid: f7ffe24d582bd5c429135a5bc9451628, type: 3}
30 | - time: 0.6666667
31 | value: {fileID: -1552090290, guid: f7ffe24d582bd5c429135a5bc9451628, type: 3}
32 | attribute: m_Sprite
33 | path:
34 | classID: 212
35 | script: {fileID: 0}
36 | m_SampleRate: 60
37 | m_WrapMode: 0
38 | m_Bounds:
39 | m_Center: {x: 0, y: 0, z: 0}
40 | m_Extent: {x: 0, y: 0, z: 0}
41 | m_ClipBindingConstant:
42 | genericBindings:
43 | - serializedVersion: 2
44 | path: 0
45 | attribute: 0
46 | script: {fileID: 0}
47 | typeID: 212
48 | customType: 23
49 | isPPtrCurve: 1
50 | pptrCurveMapping:
51 | - {fileID: -1552090290, guid: f7ffe24d582bd5c429135a5bc9451628, type: 3}
52 | - {fileID: 588126179, guid: f7ffe24d582bd5c429135a5bc9451628, type: 3}
53 | - {fileID: -1552090290, guid: f7ffe24d582bd5c429135a5bc9451628, type: 3}
54 | - {fileID: 763200097, guid: f7ffe24d582bd5c429135a5bc9451628, type: 3}
55 | - {fileID: -1552090290, guid: f7ffe24d582bd5c429135a5bc9451628, type: 3}
56 | m_AnimationClipSettings:
57 | serializedVersion: 2
58 | m_AdditiveReferencePoseClip: {fileID: 0}
59 | m_AdditiveReferencePoseTime: 0
60 | m_StartTime: 0
61 | m_StopTime: 0.68333334
62 | m_OrientationOffsetY: 0
63 | m_Level: 0
64 | m_CycleOffset: 0
65 | m_HasAdditiveReferencePose: 0
66 | m_LoopTime: 1
67 | m_LoopBlend: 0
68 | m_LoopBlendOrientation: 0
69 | m_LoopBlendPositionY: 0
70 | m_LoopBlendPositionXZ: 0
71 | m_KeepOriginalOrientation: 0
72 | m_KeepOriginalPositionY: 1
73 | m_KeepOriginalPositionXZ: 0
74 | m_HeightFromFeet: 0
75 | m_Mirror: 0
76 | m_EditorCurves: []
77 | m_EulerEditorCurves: []
78 | m_HasGenericRootTransform: 0
79 | m_HasMotionFloatCurves: 0
80 | m_Events: []
81 |
--------------------------------------------------------------------------------
/Samples~/Pixel_Map_Sample/Animations/PixelSample_Platformer_Idle.anim:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!74 &7400000
4 | AnimationClip:
5 | m_ObjectHideFlags: 0
6 | m_CorrespondingSourceObject: {fileID: 0}
7 | m_PrefabInstance: {fileID: 0}
8 | m_PrefabAsset: {fileID: 0}
9 | m_Name: PixelSample_Platformer_Idle
10 | serializedVersion: 6
11 | m_Legacy: 0
12 | m_Compressed: 0
13 | m_UseHighQualityCurve: 1
14 | m_RotationCurves: []
15 | m_CompressedRotationCurves: []
16 | m_EulerCurves: []
17 | m_PositionCurves: []
18 | m_ScaleCurves: []
19 | m_FloatCurves: []
20 | m_PPtrCurves:
21 | - curve:
22 | - time: 0
23 | value: {fileID: 1295815649, guid: 44c73d7570b2828429c238885eef829b, type: 3}
24 | - time: 0.16666667
25 | value: {fileID: 639178818, guid: 44c73d7570b2828429c238885eef829b, type: 3}
26 | - time: 0.33333334
27 | value: {fileID: 1295815649, guid: 44c73d7570b2828429c238885eef829b, type: 3}
28 | - time: 0.5
29 | value: {fileID: 1678873606, guid: 44c73d7570b2828429c238885eef829b, type: 3}
30 | - time: 0.6666667
31 | value: {fileID: 1295815649, guid: 44c73d7570b2828429c238885eef829b, type: 3}
32 | attribute: m_Sprite
33 | path:
34 | classID: 212
35 | script: {fileID: 0}
36 | m_SampleRate: 60
37 | m_WrapMode: 0
38 | m_Bounds:
39 | m_Center: {x: 0, y: 0, z: 0}
40 | m_Extent: {x: 0, y: 0, z: 0}
41 | m_ClipBindingConstant:
42 | genericBindings:
43 | - serializedVersion: 2
44 | path: 0
45 | attribute: 0
46 | script: {fileID: 0}
47 | typeID: 212
48 | customType: 23
49 | isPPtrCurve: 1
50 | pptrCurveMapping:
51 | - {fileID: 1295815649, guid: 44c73d7570b2828429c238885eef829b, type: 3}
52 | - {fileID: 639178818, guid: 44c73d7570b2828429c238885eef829b, type: 3}
53 | - {fileID: 1295815649, guid: 44c73d7570b2828429c238885eef829b, type: 3}
54 | - {fileID: 1678873606, guid: 44c73d7570b2828429c238885eef829b, type: 3}
55 | - {fileID: 1295815649, guid: 44c73d7570b2828429c238885eef829b, type: 3}
56 | m_AnimationClipSettings:
57 | serializedVersion: 2
58 | m_AdditiveReferencePoseClip: {fileID: 0}
59 | m_AdditiveReferencePoseTime: 0
60 | m_StartTime: 0
61 | m_StopTime: 0.68333334
62 | m_OrientationOffsetY: 0
63 | m_Level: 0
64 | m_CycleOffset: 0
65 | m_HasAdditiveReferencePose: 0
66 | m_LoopTime: 1
67 | m_LoopBlend: 0
68 | m_LoopBlendOrientation: 0
69 | m_LoopBlendPositionY: 0
70 | m_LoopBlendPositionXZ: 0
71 | m_KeepOriginalOrientation: 0
72 | m_KeepOriginalPositionY: 1
73 | m_KeepOriginalPositionXZ: 0
74 | m_HeightFromFeet: 0
75 | m_Mirror: 0
76 | m_EditorCurves: []
77 | m_EulerEditorCurves: []
78 | m_HasGenericRootTransform: 0
79 | m_HasMotionFloatCurves: 0
80 | m_Events: []
81 |
--------------------------------------------------------------------------------
/Samples~/Pixel_Map_Sample/Animations/PixelSample_Platformer_Walk.anim:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!74 &7400000
4 | AnimationClip:
5 | m_ObjectHideFlags: 0
6 | m_CorrespondingSourceObject: {fileID: 0}
7 | m_PrefabInstance: {fileID: 0}
8 | m_PrefabAsset: {fileID: 0}
9 | m_Name: PixelSample_Platformer_Walk
10 | serializedVersion: 6
11 | m_Legacy: 0
12 | m_Compressed: 0
13 | m_UseHighQualityCurve: 1
14 | m_RotationCurves: []
15 | m_CompressedRotationCurves: []
16 | m_EulerCurves: []
17 | m_PositionCurves: []
18 | m_ScaleCurves: []
19 | m_FloatCurves: []
20 | m_PPtrCurves:
21 | - curve:
22 | - time: 0
23 | value: {fileID: 1295815649, guid: 44c73d7570b2828429c238885eef829b, type: 3}
24 | - time: 0.16666667
25 | value: {fileID: -1559747740, guid: 44c73d7570b2828429c238885eef829b, type: 3}
26 | - time: 0.33333334
27 | value: {fileID: 1295815649, guid: 44c73d7570b2828429c238885eef829b, type: 3}
28 | - time: 0.5
29 | value: {fileID: 101758747, guid: 44c73d7570b2828429c238885eef829b, type: 3}
30 | - time: 0.6666667
31 | value: {fileID: 1295815649, guid: 44c73d7570b2828429c238885eef829b, type: 3}
32 | attribute: m_Sprite
33 | path:
34 | classID: 212
35 | script: {fileID: 0}
36 | m_SampleRate: 60
37 | m_WrapMode: 0
38 | m_Bounds:
39 | m_Center: {x: 0, y: 0, z: 0}
40 | m_Extent: {x: 0, y: 0, z: 0}
41 | m_ClipBindingConstant:
42 | genericBindings:
43 | - serializedVersion: 2
44 | path: 0
45 | attribute: 0
46 | script: {fileID: 0}
47 | typeID: 212
48 | customType: 23
49 | isPPtrCurve: 1
50 | pptrCurveMapping:
51 | - {fileID: 1295815649, guid: 44c73d7570b2828429c238885eef829b, type: 3}
52 | - {fileID: -1559747740, guid: 44c73d7570b2828429c238885eef829b, type: 3}
53 | - {fileID: 1295815649, guid: 44c73d7570b2828429c238885eef829b, type: 3}
54 | - {fileID: 101758747, guid: 44c73d7570b2828429c238885eef829b, type: 3}
55 | - {fileID: 1295815649, guid: 44c73d7570b2828429c238885eef829b, type: 3}
56 | m_AnimationClipSettings:
57 | serializedVersion: 2
58 | m_AdditiveReferencePoseClip: {fileID: 0}
59 | m_AdditiveReferencePoseTime: 0
60 | m_StartTime: 0
61 | m_StopTime: 0.68333334
62 | m_OrientationOffsetY: 0
63 | m_Level: 0
64 | m_CycleOffset: 0
65 | m_HasAdditiveReferencePose: 0
66 | m_LoopTime: 1
67 | m_LoopBlend: 0
68 | m_LoopBlendOrientation: 0
69 | m_LoopBlendPositionY: 0
70 | m_LoopBlendPositionXZ: 0
71 | m_KeepOriginalOrientation: 0
72 | m_KeepOriginalPositionY: 1
73 | m_KeepOriginalPositionXZ: 0
74 | m_HeightFromFeet: 0
75 | m_Mirror: 0
76 | m_EditorCurves: []
77 | m_EulerEditorCurves: []
78 | m_HasGenericRootTransform: 0
79 | m_HasMotionFloatCurves: 0
80 | m_Events: []
81 |
--------------------------------------------------------------------------------
/Samples~/Pixel_Map_Sample/Animations/PixelSample_Topdown_Walk.anim:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!74 &7400000
4 | AnimationClip:
5 | m_ObjectHideFlags: 0
6 | m_CorrespondingSourceObject: {fileID: 0}
7 | m_PrefabInstance: {fileID: 0}
8 | m_PrefabAsset: {fileID: 0}
9 | m_Name: PixelSample_Topdown_Walk
10 | serializedVersion: 6
11 | m_Legacy: 0
12 | m_Compressed: 0
13 | m_UseHighQualityCurve: 1
14 | m_RotationCurves: []
15 | m_CompressedRotationCurves: []
16 | m_EulerCurves: []
17 | m_PositionCurves: []
18 | m_ScaleCurves: []
19 | m_FloatCurves: []
20 | m_PPtrCurves:
21 | - curve:
22 | - time: 0
23 | value: {fileID: -1552090290, guid: f7ffe24d582bd5c429135a5bc9451628, type: 3}
24 | - time: 0.16666667
25 | value: {fileID: -753598451, guid: f7ffe24d582bd5c429135a5bc9451628, type: 3}
26 | - time: 0.33333334
27 | value: {fileID: -1552090290, guid: f7ffe24d582bd5c429135a5bc9451628, type: 3}
28 | - time: 0.5
29 | value: {fileID: -367902098, guid: f7ffe24d582bd5c429135a5bc9451628, type: 3}
30 | - time: 0.6666667
31 | value: {fileID: -1552090290, guid: f7ffe24d582bd5c429135a5bc9451628, type: 3}
32 | attribute: m_Sprite
33 | path:
34 | classID: 212
35 | script: {fileID: 0}
36 | m_SampleRate: 60
37 | m_WrapMode: 0
38 | m_Bounds:
39 | m_Center: {x: 0, y: 0, z: 0}
40 | m_Extent: {x: 0, y: 0, z: 0}
41 | m_ClipBindingConstant:
42 | genericBindings:
43 | - serializedVersion: 2
44 | path: 0
45 | attribute: 0
46 | script: {fileID: 0}
47 | typeID: 212
48 | customType: 23
49 | isPPtrCurve: 1
50 | pptrCurveMapping:
51 | - {fileID: -1552090290, guid: f7ffe24d582bd5c429135a5bc9451628, type: 3}
52 | - {fileID: -753598451, guid: f7ffe24d582bd5c429135a5bc9451628, type: 3}
53 | - {fileID: -1552090290, guid: f7ffe24d582bd5c429135a5bc9451628, type: 3}
54 | - {fileID: -367902098, guid: f7ffe24d582bd5c429135a5bc9451628, type: 3}
55 | - {fileID: -1552090290, guid: f7ffe24d582bd5c429135a5bc9451628, type: 3}
56 | m_AnimationClipSettings:
57 | serializedVersion: 2
58 | m_AdditiveReferencePoseClip: {fileID: 0}
59 | m_AdditiveReferencePoseTime: 0
60 | m_StartTime: 0
61 | m_StopTime: 0.68333334
62 | m_OrientationOffsetY: 0
63 | m_Level: 0
64 | m_CycleOffset: 0
65 | m_HasAdditiveReferencePose: 0
66 | m_LoopTime: 1
67 | m_LoopBlend: 0
68 | m_LoopBlendOrientation: 0
69 | m_LoopBlendPositionY: 0
70 | m_LoopBlendPositionXZ: 0
71 | m_KeepOriginalOrientation: 0
72 | m_KeepOriginalPositionY: 1
73 | m_KeepOriginalPositionXZ: 0
74 | m_HeightFromFeet: 0
75 | m_Mirror: 0
76 | m_EditorCurves: []
77 | m_EulerEditorCurves: []
78 | m_HasGenericRootTransform: 0
79 | m_HasMotionFloatCurves: 0
80 | m_Events: []
81 |
--------------------------------------------------------------------------------
/Samples~/Pixel_Map_Sample/Shaders/Unlit_Cutout_Anim.shader:
--------------------------------------------------------------------------------
1 | // Unity built-in shader source. Copyright (c) 2016 Unity Technologies. MIT license (see license.txt)
2 |
3 | // Unlit alpha-cutout shader.
4 | // - no lighting
5 | // - no lightmap support
6 | // - no per-material color
7 |
8 | // Edited version to include uv offset animation
9 |
10 | Shader "Unlit/Transparent Cutout Animated" {
11 | Properties{
12 | _MainTex("Base (RGB) Trans (A)", 2D) = "white" {}
13 | _Cutoff("Alpha cutoff", Range(0,1)) = 0.5
14 | _Parameters ("AnimOffset (XY) Frames (Z) Speed (W)", Vector) = (0.25, 0.0, 4.0, 1.0)
15 | }
16 | SubShader{
17 | Tags {"Queue" = "AlphaTest" "IgnoreProjector" = "true" "RenderType" = "TransparentCutout"}
18 | LOD 100
19 |
20 | Lighting Off
21 |
22 | Pass {
23 | CGPROGRAM
24 | #pragma vertex vert
25 | #pragma fragment frag
26 | #pragma target 2.0
27 | #pragma multi_compile_fog
28 |
29 | #include "UnityCG.cginc"
30 |
31 | struct appdata_t {
32 | float4 vertex : POSITION;
33 | float2 texcoord : TEXCOORD0;
34 | UNITY_VERTEX_INPUT_INSTANCE_ID
35 | };
36 |
37 | struct v2f {
38 | float4 vertex : SV_POSITION;
39 | float2 texcoord : TEXCOORD0;
40 | UNITY_FOG_COORDS(1)
41 | UNITY_VERTEX_OUTPUT_STEREO
42 | };
43 |
44 | sampler2D _MainTex;
45 | float4 _MainTex_ST;
46 | fixed _Cutoff;
47 | fixed4 _Parameters;
48 |
49 | v2f vert(appdata_t v) {
50 | v2f o;
51 | UNITY_SETUP_INSTANCE_ID(v);
52 | UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o);
53 | o.vertex = UnityObjectToClipPos(v.vertex);
54 | o.texcoord = TRANSFORM_TEX(v.texcoord, _MainTex);
55 |
56 | float frame = floor(_Time.y * _Parameters.w % _Parameters.z);
57 |
58 | o.texcoord += frame * _Parameters.xy;
59 |
60 | UNITY_TRANSFER_FOG(o,o.vertex);
61 | return o;
62 | }
63 |
64 | fixed4 frag(v2f i) : SV_Target {
65 | fixed4 col = tex2D(_MainTex, i.texcoord);
66 | clip(col.a - _Cutoff);
67 | UNITY_APPLY_FOG(i.fogCoord, col);
68 | return col;
69 | }
70 | ENDCG
71 | }
72 | }
73 |
74 | }
--------------------------------------------------------------------------------
/Samples~/Pixel_Map_Sample/Materials/PixelSample_Sprite_EightDirection.mat:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!21 &2100000
4 | Material:
5 | serializedVersion: 8
6 | m_ObjectHideFlags: 0
7 | m_CorrespondingSourceObject: {fileID: 0}
8 | m_PrefabInstance: {fileID: 0}
9 | m_PrefabAsset: {fileID: 0}
10 | m_Name: PixelSample_Sprite_EightDirection
11 | m_Shader: {fileID: 4800000, guid: db59671986c6d174eb045fb63a4d9246, type: 3}
12 | m_ValidKeywords: []
13 | m_InvalidKeywords: []
14 | m_LightmapFlags: 4
15 | m_EnableInstancingVariants: 0
16 | m_DoubleSidedGI: 0
17 | m_CustomRenderQueue: -1
18 | stringTagMap: {}
19 | disabledShaderPasses: []
20 | m_SavedProperties:
21 | serializedVersion: 3
22 | m_TexEnvs:
23 | - _AlphaTex:
24 | m_Texture: {fileID: 0}
25 | m_Scale: {x: 1, y: 1}
26 | m_Offset: {x: 0, y: 0}
27 | - _BumpMap:
28 | m_Texture: {fileID: 0}
29 | m_Scale: {x: 1, y: 1}
30 | m_Offset: {x: 0, y: 0}
31 | - _DetailAlbedoMap:
32 | m_Texture: {fileID: 0}
33 | m_Scale: {x: 1, y: 1}
34 | m_Offset: {x: 0, y: 0}
35 | - _DetailMask:
36 | m_Texture: {fileID: 0}
37 | m_Scale: {x: 1, y: 1}
38 | m_Offset: {x: 0, y: 0}
39 | - _DetailNormalMap:
40 | m_Texture: {fileID: 0}
41 | m_Scale: {x: 1, y: 1}
42 | m_Offset: {x: 0, y: 0}
43 | - _EmissionMap:
44 | m_Texture: {fileID: 0}
45 | m_Scale: {x: 1, y: 1}
46 | m_Offset: {x: 0, y: 0}
47 | - _MainTex:
48 | m_Texture: {fileID: 0}
49 | m_Scale: {x: 1, y: 1}
50 | m_Offset: {x: 0, y: 0}
51 | - _MetallicGlossMap:
52 | m_Texture: {fileID: 0}
53 | m_Scale: {x: 1, y: 1}
54 | m_Offset: {x: 0, y: 0}
55 | - _OcclusionMap:
56 | m_Texture: {fileID: 0}
57 | m_Scale: {x: 1, y: 1}
58 | m_Offset: {x: 0, y: 0}
59 | - _ParallaxMap:
60 | m_Texture: {fileID: 0}
61 | m_Scale: {x: 1, y: 1}
62 | m_Offset: {x: 0, y: 0}
63 | m_Ints: []
64 | m_Floats:
65 | - PixelSnap: 0
66 | - _BumpScale: 1
67 | - _Cutoff: 0.5
68 | - _DetailNormalMapScale: 1
69 | - _DstBlend: 0
70 | - _EnableExternalAlpha: 0
71 | - _GlossMapScale: 1
72 | - _Glossiness: 0.5
73 | - _GlossyReflections: 1
74 | - _Metallic: 0
75 | - _Mode: 0
76 | - _OcclusionStrength: 1
77 | - _Parallax: 0.02
78 | - _SmoothnessTextureChannel: 0
79 | - _SpecularHighlights: 1
80 | - _SrcBlend: 1
81 | - _UVSec: 0
82 | - _ZWrite: 1
83 | m_Colors:
84 | - _Color: {r: 1, g: 1, b: 1, a: 1}
85 | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
86 | - _Flip: {r: 1, g: 1, b: 1, a: 1}
87 | - _Offset: {r: 0, g: 0, b: 1, a: 1}
88 | - _RendererColor: {r: 1, g: 1, b: 1, a: 1}
89 | - _Settings: {r: 0.125, g: 0, b: 8, a: 0}
90 | m_BuildTextureStacks: []
91 |
--------------------------------------------------------------------------------
/Documentation~/docs/faq.md:
--------------------------------------------------------------------------------
1 | # FAQ
2 | ## Can this be used to create games of genre X?
3 | | Genre | Support | Comments |
4 | |:----------|:--------|:----------------------------------------------------------------------|
5 | | Topdown | Yes | Main focus of the tool |
6 | | Rougelike | Yes | Procedural map generation not included |
7 | | 2.5D | "Yes" | Limited support on modules |
8 | | 2D | No | Use Unity Tilemap instead |
9 | | Blockgame | No | Data is stored in a fixed length array (not intended for huge worlds) |
10 |
11 | ## Why only Unity 2021+
12 | Unity 2019 does not support the new Mesh API and 2020 does not support custom toolbars.
13 |
14 | ## Where can I find the documentation?
15 | There is a subfolder called ~Documentation. In there you can find a selection of articles about the general usage.
16 |
17 | ## Is this URP/HDRP compatible?
18 | Yes.
19 |
20 | ## Is the tilemap runtime compatible?
21 | Yes and no. All the tile logic and meshing methods should be usable at runtime.
22 | The interface is Unity Editor only though so you will have to write your own runtime interface.
23 |
24 | ## I have an issue?
25 | Since this is a hobby project I do not offer live support. If you encountered a bug file an issue on the repository page.
26 | If it's about a feature request or something covered in the FAQ I might not feel inclined to answer though.
27 |
28 | ## Why is it not on the Asset Store?
29 | a) I don't see a lot of value from selling it. The maintenance cost / revenue ballance does not seem worth it
30 | b) I want to give users the ability to easily accsess and learn from the code
31 |
32 | ## Can I include this as part of a commercial offering?
33 | Please do not sell the source or include it inside a product sold via the Asset Store.
34 | Everything else is totally fine with me and covered by the license.
35 |
36 | ## Where do I get the tile meshes from?
37 | Sources of compatible 3D meshes are not common so you are for most part on your own.
38 | You can use a modeling tool like Blender to create your own tiles. There is a section in the documentation that goes over this topic.
39 |
40 | ## Can I contribute?
41 | The package itself is feature complete and I would like to keep the amount of contributors to a minimum so in most cases the answer is no.
42 | To avoid bloating the package itself new features are intended to be added as modules (check the documentation and the WorldMapSample to get a genreal idea).
43 | If you require some larger scale modifications to the source please create a fork instead.
44 |
45 | ## I created something using the package? (custom module or game)
46 | Feel free to drop me a message (mail is at the bottom of my portfolio page) and I will give you a shoutout in the documentation.
--------------------------------------------------------------------------------
/Documentation~/docs/extensions.md:
--------------------------------------------------------------------------------
1 | # Extending the tool
2 | The package has multiple interfaces that allow the user to add his/her custom script components into the pipeline.
3 | I reccomend taking a look at the WorldMap sample which shows some actual implementations.
4 |
5 | ## Adding a custom tile type
6 | Create a new class extending the Tilemap3D.BaseTile.
7 | Tile types are centered around the TileInfo struct which consists of { Mesh / CollisionType / CollisionMesh }
8 | Each tile also recives a sub index that can be used if a tile has multiple variants.
9 | If your tile targets a custom module that does not need this information (example one that adds GameObjects) feel free to return an empty TileInfo.
10 |
11 | ```csharp
12 | public class CustomTile:BaseTile {
13 | // How many sub tile variants are expected
14 | public override int Length { get; }
15 |
16 | // Give reference to the tile info struct used to store mesh / collisiontype / collisionmesh at the requested variant index
17 | public override TileInfo GetInfo(int index);
18 |
19 | // Which mesh should the picker show?
20 | public override Mesh GetTilePreview(int index) => null;
21 |
22 | // This will run after tile placement is complete. It can be used for adjusting tiles depending on their environment
23 | public override void PostProcessTile(ref TileMapData data, int3 pos) { }
24 | }
25 | ```
26 |
27 | ## Add a custom module
28 | Create a Monobehaviour that includes the interface Tilemap3D.ITilemapModule.
29 | To register a module for easier access refer to the next section.
30 | The structure of a module is as follows:
31 |
32 | ```csharp
33 | public class MyModule:Monobehaviour, ITilemapModule {
34 | // Used to update a specific part of the tilemap immediatly on tile placement. Keep heavy calculations to a minimum
35 | public void BakePartial(Tilemap map, Box3D area) {}
36 |
37 | // Bake calculation or garbage heavy data on demans
38 | void Bake(Tilemap map);
39 |
40 | // Clear baked data on demand
41 | void Clear();
42 | }
43 | ```
44 |
45 | ## Register an extension in the editor
46 | Create a new static class and and give it an appropriate name.
47 | The class needs the **[InitializeOnLoad]** attribute to register before everything else.
48 | Inside the class add a static constrctor with the same name as the class.
49 | Use the TilemapSettings class inside the Tilemap3D.EditorOnly namespace to register your additions.
50 |
51 | ```csharp
52 | [InitializeOnLoad]
53 | public class MyRegisterClass {
54 | static MyRegisterClass () {
55 | // Register a module to the Tilemap dropdown
56 | TilemapSettings.instance.RegisterModule();
57 |
58 | // Register a flag to be shown in the toolbar (Up to 8 flags in total. Flag 0 and 1 are already used by autotile)
59 | TilemapSettings.instance.RegisterFlagContent(new GUIContent(image, tooltip), yourID);
60 | }
61 | }
62 | ```
--------------------------------------------------------------------------------
/Runtime/Utility/SharedTypes.cs:
--------------------------------------------------------------------------------
1 | // Copyright (c) 2023 Felix Kate. BSD-3 license (see included license file)
2 | using Unity.Mathematics;
3 |
4 | namespace TilemapCreator3D {
5 |
6 | public struct Box3D {
7 | public int3 Min { get; }
8 | public int3 Max { get; }
9 | public int3 Size { get; }
10 |
11 | public int Width => Size.x;
12 | public int Height => Size.y;
13 | public int Depth => Size.z;
14 |
15 | public bool NoArea => Min.Equals(Max);
16 |
17 | public Box3D(int3 min, int3 max) {
18 | Min = min;
19 | Max = math.max(min, max);
20 | Size = max - min;
21 | }
22 |
23 |
24 | // Summary
25 | // Expand box by the given amount in all directions
26 | public Box3D Expand(int amount) {
27 | return new Box3D(Min - amount, Max + amount);
28 | }
29 |
30 |
31 | // Summary
32 | // Clamp boxes size to the min and max point
33 | public Box3D Clamp(int3 min, int3 max) {
34 | return new Box3D(math.max(Min, min), math.min(Max, max));
35 | }
36 |
37 |
38 | // Summary
39 | // Go through each element of the box and return the position (execution order z-y-x axis)
40 | public void ForEach(System.Action action) {
41 | for(int z = Min.z; z <= Max.z; z++) {
42 | for(int y = Min.y; y <= Max.y; y++) {
43 | for(int x = Min.x; x <= Max.x; x++) {
44 | // Measured execution time between action invoke and having the loops is almost the same
45 | action.Invoke(new int3(x, y, z));
46 | }
47 | }
48 | }
49 | }
50 |
51 |
52 | // Summary
53 | // Does the box contain the given point
54 | public bool Contains(int3 point) {
55 | return point.x >= Min.x && point.y >= Min.y && point.z >= Min.z && point.x <= Max.x && point.y <= Max.y && point.z <= Max.z;
56 | }
57 |
58 |
59 | // Summary
60 | // Does the box overlap the given box
61 | public bool Overlaps(Box3D box) {
62 | return Min.x <= box.Max.x && Max.x >= box.Min.x && Min.y <= box.Max.y && Max.y >= box.Min.y && Min.z <= box.Max.z && Max.z >= box.Min.z;
63 | }
64 |
65 |
66 | // Summary
67 | // Custom string output for debug purposes
68 | public override string ToString() {
69 | return string.Format("Min {0} | Max {1} | Size {2}", Min, Max, Size);
70 | }
71 | }
72 |
73 |
74 | public enum TileCollision : int {
75 | None = 0,
76 | Box = 1,
77 | BoxExtend = 2,
78 | MeshBounds = 3,
79 | MeshConvex = 4,
80 | MeshComplex = 5
81 | }
82 |
83 |
84 | public enum TileFlags : byte {
85 | None = 0,
86 | F0 = 1,
87 | F1 = 2,
88 | F2 = 4,
89 | F3 = 8,
90 | F4 = 16,
91 | F5 = 32,
92 | F6 = 64,
93 | F7 = 128
94 | }
95 |
96 | }
--------------------------------------------------------------------------------
/Samples~/Pixel_Map_Sample/Tiles/PixelSample_Bricks.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!114 &11400000
4 | MonoBehaviour:
5 | m_ObjectHideFlags: 0
6 | m_CorrespondingSourceObject: {fileID: 0}
7 | m_PrefabInstance: {fileID: 0}
8 | m_PrefabAsset: {fileID: 0}
9 | m_GameObject: {fileID: 0}
10 | m_Enabled: 1
11 | m_EditorHideFlags: 0
12 | m_Script: {fileID: 11500000, guid: 6e71ebfdd92a51043be0f6ee64229708, type: 3}
13 | m_Name: PixelSample_Bricks
14 | m_EditorClassIdentifier:
15 | Material: {fileID: 2100000, guid: df5812252ba252e458e028e0ea615e8d, type: 2}
16 | CollisionLayer: 0
17 | NavigationArea: 1
18 | PreviewOrientation: {x: 20, y: 20}
19 | EightBitMask: 1
20 | NoBorder: 1
21 | Orientation2D: 0
22 | Isolate: 0
23 | Variants:
24 | - Info:
25 | Mesh: {fileID: -8406798909975519538, guid: d9f09a1bfd240c040b9587b93ecdb0c3, type: 3}
26 | CollisionMesh: {fileID: 0}
27 | Collision: 2
28 | Mask:
29 | Type: 0
30 | Mask: 0
31 | Variants:
32 | - Info:
33 | Mesh: {fileID: -4492573976091621629, guid: d9f09a1bfd240c040b9587b93ecdb0c3, type: 3}
34 | CollisionMesh: {fileID: 0}
35 | Collision: 2
36 | Mask:
37 | Type: 1
38 | Mask: 22
39 | Variants: d0000000680000000b000000
40 | - Info:
41 | Mesh: {fileID: -4492573976091621629, guid: d9f09a1bfd240c040b9587b93ecdb0c3, type: 3}
42 | CollisionMesh: {fileID: 0}
43 | Collision: 2
44 | Mask:
45 | Type: 1
46 | Mask: 30
47 | Variants: d2000000780000004b000000
48 | - Info:
49 | Mesh: {fileID: -4492573976091621629, guid: d9f09a1bfd240c040b9587b93ecdb0c3, type: 3}
50 | CollisionMesh: {fileID: 0}
51 | Collision: 2
52 | Mask:
53 | Type: 1
54 | Mask: 86
55 | Variants: d80000006a0000001b000000
56 | - Info:
57 | Mesh: {fileID: -4492573976091621629, guid: d9f09a1bfd240c040b9587b93ecdb0c3, type: 3}
58 | CollisionMesh: {fileID: 0}
59 | Collision: 2
60 | Mask:
61 | Type: 1
62 | Mask: 94
63 | Variants: da0000007a0000005b000000
64 | - Info:
65 | Mesh: {fileID: 1587082272621258132, guid: d9f09a1bfd240c040b9587b93ecdb0c3, type: 3}
66 | CollisionMesh: {fileID: 0}
67 | Collision: 2
68 | Mask:
69 | Type: 1
70 | Mask: 31
71 | Variants: d6000000f80000006b000000
72 | - Info:
73 | Mesh: {fileID: 1587082272621258132, guid: d9f09a1bfd240c040b9587b93ecdb0c3, type: 3}
74 | CollisionMesh: {fileID: 0}
75 | Collision: 2
76 | Mask:
77 | Type: 1
78 | Mask: 95
79 | Variants: de000000fa0000007b000000
80 | - Info:
81 | Mesh: {fileID: 7174605060465005657, guid: d9f09a1bfd240c040b9587b93ecdb0c3, type: 3}
82 | CollisionMesh: {fileID: 0}
83 | Collision: 2
84 | Mask:
85 | Type: 1
86 | Mask: 223
87 | Variants: fe000000fb0000007f000000
88 | - Info:
89 | Mesh: {fileID: -3368942186756413547, guid: d9f09a1bfd240c040b9587b93ecdb0c3, type: 3}
90 | CollisionMesh: {fileID: 0}
91 | Collision: 2
92 | Mask:
93 | Type: 0
94 | Mask: 255
95 | Variants:
96 |
--------------------------------------------------------------------------------
/Samples~/Pixel_Map_Sample/Shaders/Unlit_ParallaxScrolling.shader:
--------------------------------------------------------------------------------
1 | // Copyright (c) 2023 Felix Kate. BSD-3 license (see included license file)
2 | // A custom skybox shader for displaying a 2D parralax effect
3 |
4 | Shader "Unlit/Unlit_ParallaxScrolling"
5 | {
6 | Properties {
7 | _MainTex ("Texture", 2D) = "white" {}
8 | _Layer0 ("Layer 0", Color) = (1, 1, 1, 1)
9 | _Layer1 ("Layer 1", Color) = (0.5, 0.5, 0.5, 1)
10 | _Layer2 ("Layer 2", Color) = (0.25, 0.25, 0.25, 1)
11 | _Layer3 ("Layer 3", Color) = (0, 0, 0, 1)
12 | _Depth ("Layer Depth", Vector) = (0, 0.25, 0.5, 0.0)
13 | _Scroll ("Layer Scroll", Vector) = (0.5, 0.0, 0.0, 0.0)
14 | }
15 | SubShader {
16 | Tags { "RenderType"="Opaque" "RenderType" = "Background" "PreviewType" = "Skybox" }
17 |
18 | Pass {
19 | CGPROGRAM
20 | #pragma vertex vert
21 | #pragma fragment frag
22 |
23 | #include "UnityCG.cginc"
24 |
25 | struct appdata {
26 | float4 vertex : POSITION;
27 | float2 texcoord : TEXCOORD0;
28 | };
29 |
30 | struct v2f {
31 | float4 vertex : SV_POSITION;
32 | float4 screenPos : TEXCOORD0;
33 | float2 camDir : TEXCOORD1;
34 | };
35 |
36 | sampler2D _MainTex;
37 | fixed3 _Layer0;
38 | fixed3 _Layer1;
39 | fixed3 _Layer2;
40 | fixed3 _Layer3;
41 | fixed3 _Depth;
42 | fixed2 _Scroll;
43 |
44 | v2f vert (appdata v) {
45 | v2f o;
46 |
47 | o.vertex = UnityObjectToClipPos(v.vertex);
48 | o.screenPos = ComputeScreenPos(o.vertex);
49 | o.camDir = unity_CameraToWorld._m02_m12_m22.xy;
50 |
51 | return o;
52 | }
53 |
54 | fixed4 frag(v2f i) : SV_Target{
55 | float aspect = _ScreenParams.x / _ScreenParams.y;
56 |
57 | float2 cameraPos = _WorldSpaceCameraPos.xy;
58 | float2 baseLayerPos = (i.screenPos.xy / i.screenPos.w);
59 | baseLayerPos.x *= aspect;
60 |
61 | float2 layer0Pos = baseLayerPos + i.camDir * _Depth.x;
62 | float2 layer1Pos = baseLayerPos + i.camDir * _Depth.y;
63 | float2 layer2Pos = baseLayerPos + i.camDir * _Depth.z;
64 |
65 | layer0Pos += cameraPos.xy * _Scroll * _Depth.x;
66 | layer1Pos += cameraPos.xy * _Scroll * _Depth.y;
67 | layer2Pos += cameraPos.xy * _Scroll * _Depth.z;
68 |
69 | fixed3 mask;
70 | mask.x = tex2D(_MainTex, layer0Pos).r;
71 | mask.y = tex2D(_MainTex, layer1Pos).g;
72 | mask.z = tex2D(_MainTex, layer2Pos).b;
73 |
74 | fixed3 c = lerp(_Layer3, _Layer2, mask.z);
75 | c = lerp(c, _Layer1, mask.y);
76 | c = lerp(c, _Layer0, mask.x);
77 |
78 | return fixed4(c, 1);
79 | }
80 | ENDCG
81 | }
82 | }
83 | }
84 |
--------------------------------------------------------------------------------
/Samples~/World_Map_Sample/Meshes/TSet_MapSample.fbx.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: f4052364a7853fa4bb04b40a486a88fa
3 | ModelImporter:
4 | serializedVersion: 21300
5 | internalIDToNameTable: []
6 | externalObjects: {}
7 | materials:
8 | materialImportMode: 0
9 | materialName: 0
10 | materialSearch: 1
11 | materialLocation: 1
12 | animations:
13 | legacyGenerateAnimations: 4
14 | bakeSimulation: 0
15 | resampleCurves: 1
16 | optimizeGameObjects: 0
17 | removeConstantScaleCurves: 1
18 | motionNodeName:
19 | rigImportErrors:
20 | rigImportWarnings:
21 | animationImportErrors:
22 | animationImportWarnings:
23 | animationRetargetingWarnings:
24 | animationDoRetargetingWarnings: 0
25 | importAnimatedCustomProperties: 0
26 | importConstraints: 0
27 | animationCompression: 1
28 | animationRotationError: 0.5
29 | animationPositionError: 0.5
30 | animationScaleError: 0.5
31 | animationWrapMode: 0
32 | extraExposedTransformPaths: []
33 | extraUserProperties: []
34 | clipAnimations: []
35 | isReadable: 1
36 | meshes:
37 | lODScreenPercentages: []
38 | globalScale: 1
39 | meshCompression: 0
40 | addColliders: 0
41 | useSRGBMaterialColor: 1
42 | sortHierarchyByName: 1
43 | importVisibility: 0
44 | importBlendShapes: 0
45 | importCameras: 0
46 | importLights: 0
47 | nodeNameCollisionStrategy: 1
48 | fileIdsGeneration: 2
49 | swapUVChannels: 0
50 | generateSecondaryUV: 0
51 | useFileUnits: 1
52 | keepQuads: 0
53 | weldVertices: 1
54 | bakeAxisConversion: 1
55 | preserveHierarchy: 0
56 | skinWeightsMode: 0
57 | maxBonesPerVertex: 4
58 | minBoneWeight: 0.001
59 | optimizeBones: 1
60 | meshOptimizationFlags: -1
61 | indexFormat: 0
62 | secondaryUVAngleDistortion: 8
63 | secondaryUVAreaDistortion: 15.000001
64 | secondaryUVHardAngle: 88
65 | secondaryUVMarginMethod: 1
66 | secondaryUVMinLightmapResolution: 40
67 | secondaryUVMinObjectScale: 1
68 | secondaryUVPackMargin: 4
69 | useFileScale: 1
70 | tangentSpace:
71 | normalSmoothAngle: 60
72 | normalImportMode: 0
73 | tangentImportMode: 3
74 | normalCalculationMode: 4
75 | legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0
76 | blendShapeNormalImportMode: 1
77 | normalSmoothingSource: 0
78 | referencedClips: []
79 | importAnimation: 0
80 | humanDescription:
81 | serializedVersion: 3
82 | human: []
83 | skeleton: []
84 | armTwist: 0.5
85 | foreArmTwist: 0.5
86 | upperLegTwist: 0.5
87 | legTwist: 0.5
88 | armStretch: 0.05
89 | legStretch: 0.05
90 | feetSpacing: 0
91 | globalScale: 1
92 | rootMotionBoneName:
93 | hasTranslationDoF: 0
94 | hasExtraRoot: 1
95 | skeletonHasParents: 1
96 | lastHumanDescriptionAvatarSource: {instanceID: 0}
97 | autoGenerateAvatarMappingIfUnspecified: 1
98 | animationType: 0
99 | humanoidOversampling: 1
100 | avatarSetup: 0
101 | addHumanoidExtraRootOnlyWhenUsingAvatar: 1
102 | remapMaterialsIfMaterialImportModeIsNone: 0
103 | additionalBone: 0
104 | userData:
105 | assetBundleName:
106 | assetBundleVariant:
107 |
--------------------------------------------------------------------------------
/Samples~/World_Map_Sample/Scripts/BuildingSelector.cs:
--------------------------------------------------------------------------------
1 | // Copyright (c) 2023 Felix Kate. BSD-3 license (see included license file)
2 | // Class to show how to manipulate the tilemap at runtime
3 |
4 | using System.Collections;
5 | using Unity.Mathematics;
6 | using UnityEngine;
7 |
8 | namespace TilemapCreator3D.Samples {
9 | public class BuildingSelector : MonoBehaviour {
10 |
11 | private const byte WATER_INDEX = 1;
12 |
13 | private static ParticleSystem _sharedEffect;
14 |
15 | [SerializeField] private Mesh _selectionMesh;
16 | [SerializeField] private Material _selectionMaterial;
17 | [SerializeField] private ParticleSystem _explosionEffect;
18 | [SerializeField] private int _explosionRadius = 2;
19 |
20 | private bool _selected;
21 |
22 | public void Update() {
23 | if(_selected != false) {
24 | Transform trs = transform;
25 | Vector3 scale = Vector3.one * (1.0f + Mathf.Sin(Time.timeSinceLevelLoad * 4.0f) * 0.05f);
26 |
27 | Graphics.DrawMesh(_selectionMesh, Matrix4x4.TRS(trs.position, trs.rotation, scale), _selectionMaterial, gameObject.layer);
28 |
29 | if(Input.GetKeyDown(KeyCode.Delete)) {
30 | StartCoroutine("Explode");
31 | _selected = false;
32 | }
33 | }
34 | }
35 |
36 | private IEnumerator Explode() {
37 | // Create single reusable effect instance and explode it at position
38 | if(_sharedEffect == null) {
39 | _sharedEffect = Instantiate(_explosionEffect.gameObject).GetComponent();
40 | }
41 |
42 | ParticleSystem.MainModule mainMod = _sharedEffect.main;
43 | mainMod.startSizeMultiplier = _explosionRadius * 2 + 2;
44 |
45 | _sharedEffect.transform.position = transform.position;
46 | if(!_sharedEffect.isPlaying) _sharedEffect.Play();
47 | _sharedEffect.Emit(1);
48 |
49 | yield return new WaitForSeconds(0.5f);
50 |
51 | // Go over explosion area in tilemap and set ids (ground floor covered in water everything else clear)
52 | Tilemap3D map = GetComponentInParent();
53 | if(map != null) {
54 | int2 mapCoordinate = map.WorldToGrid(transform.position).xz;
55 |
56 | int2 min = mapCoordinate - _explosionRadius;
57 | int2 max = mapCoordinate + _explosionRadius;
58 |
59 | Box3D area = new Box3D(new int3(min.x, 0, min.y), new int3(max.x, map.Height - 1, max.y));
60 |
61 | area.ForEach((int3 pos) => {
62 | if(!map.InBounds(pos) || math.length(new int2(pos.xz - mapCoordinate)) > _explosionRadius + 0.5f) return;
63 |
64 | map.Data[pos] = new TilemapData.Tile { id = (pos.y == 0 ? WATER_INDEX : (byte) 0) };
65 | });
66 |
67 | // Call map methods for update (warning: rebuilding mesh at runtime needs models to be read/write enabled)
68 | map.PostProcessTiles(area);
69 | map.BakeDynamic();
70 | }
71 | }
72 |
73 | public void OnMouseDown() {
74 | _selected = !_selected;
75 | }
76 |
77 | }
78 | }
--------------------------------------------------------------------------------
/Samples~/World_Map_Sample/Materials/MapSample_Explosion.mat:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!21 &2100000
4 | Material:
5 | serializedVersion: 8
6 | m_ObjectHideFlags: 0
7 | m_CorrespondingSourceObject: {fileID: 0}
8 | m_PrefabInstance: {fileID: 0}
9 | m_PrefabAsset: {fileID: 0}
10 | m_Name: MapSample_Explosion
11 | m_Shader: {fileID: 211, guid: 0000000000000000f000000000000000, type: 0}
12 | m_ValidKeywords:
13 | - _ALPHABLEND_ON
14 | m_InvalidKeywords: []
15 | m_LightmapFlags: 0
16 | m_EnableInstancingVariants: 0
17 | m_DoubleSidedGI: 0
18 | m_CustomRenderQueue: 3000
19 | stringTagMap:
20 | RenderType: Transparent
21 | disabledShaderPasses:
22 | - GRABPASS
23 | m_SavedProperties:
24 | serializedVersion: 3
25 | m_TexEnvs:
26 | - _BumpMap:
27 | m_Texture: {fileID: 0}
28 | m_Scale: {x: 1, y: 1}
29 | m_Offset: {x: 0, y: 0}
30 | - _DetailAlbedoMap:
31 | m_Texture: {fileID: 0}
32 | m_Scale: {x: 1, y: 1}
33 | m_Offset: {x: 0, y: 0}
34 | - _DetailMask:
35 | m_Texture: {fileID: 0}
36 | m_Scale: {x: 1, y: 1}
37 | m_Offset: {x: 0, y: 0}
38 | - _DetailNormalMap:
39 | m_Texture: {fileID: 0}
40 | m_Scale: {x: 1, y: 1}
41 | m_Offset: {x: 0, y: 0}
42 | - _EmissionMap:
43 | m_Texture: {fileID: 0}
44 | m_Scale: {x: 1, y: 1}
45 | m_Offset: {x: 0, y: 0}
46 | - _MainTex:
47 | m_Texture: {fileID: 0}
48 | m_Scale: {x: 1, y: 1}
49 | m_Offset: {x: 0, y: 0}
50 | - _MetallicGlossMap:
51 | m_Texture: {fileID: 0}
52 | m_Scale: {x: 1, y: 1}
53 | m_Offset: {x: 0, y: 0}
54 | - _OcclusionMap:
55 | m_Texture: {fileID: 0}
56 | m_Scale: {x: 1, y: 1}
57 | m_Offset: {x: 0, y: 0}
58 | - _ParallaxMap:
59 | m_Texture: {fileID: 0}
60 | m_Scale: {x: 1, y: 1}
61 | m_Offset: {x: 0, y: 0}
62 | m_Ints: []
63 | m_Floats:
64 | - _BlendOp: 0
65 | - _BumpScale: 1
66 | - _CameraFadingEnabled: 0
67 | - _CameraFarFadeDistance: 2
68 | - _CameraNearFadeDistance: 1
69 | - _ColorMode: 0
70 | - _Cull: 2
71 | - _Cutoff: 0.5
72 | - _DetailNormalMapScale: 1
73 | - _DistortionBlend: 0.5
74 | - _DistortionEnabled: 0
75 | - _DistortionStrength: 1
76 | - _DistortionStrengthScaled: 0
77 | - _DstBlend: 10
78 | - _EmissionEnabled: 0
79 | - _FlipbookMode: 0
80 | - _GlossMapScale: 1
81 | - _Glossiness: 0.5
82 | - _GlossyReflections: 1
83 | - _LightingEnabled: 0
84 | - _Metallic: 0
85 | - _Mode: 2
86 | - _OcclusionStrength: 1
87 | - _Parallax: 0.02
88 | - _SmoothnessTextureChannel: 0
89 | - _SoftParticlesEnabled: 0
90 | - _SoftParticlesFarFadeDistance: 1
91 | - _SoftParticlesNearFadeDistance: 0
92 | - _SpecularHighlights: 1
93 | - _SrcBlend: 5
94 | - _UVSec: 0
95 | - _ZWrite: 0
96 | m_Colors:
97 | - _CameraFadeParams: {r: 0, g: Infinity, b: 0, a: 0}
98 | - _Color: {r: 1, g: 1, b: 1, a: 1}
99 | - _ColorAddSubDiff: {r: -1, g: 1, b: 0, a: 0}
100 | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
101 | - _SoftParticleFadeParams: {r: 0, g: 0, b: 0, a: 0}
102 | m_BuildTextureStacks: []
103 |
--------------------------------------------------------------------------------
/Samples~/World_Map_Sample/Scripts/MapRandomizer.cs:
--------------------------------------------------------------------------------
1 | // Copyright (c) 2023 Felix Kate. BSD-3 license (see included license file)
2 | // Script to show an example of a very simple procedural map generation algorithm.
3 | // Only meant as a showcase so values are hardcoded for the sample
4 |
5 | using Unity.Mathematics;
6 | using UnityEngine;
7 |
8 | namespace TilemapCreator3D.Samples {
9 | [RequireComponent(typeof(Tilemap3D))]
10 | public class MapRandomizer : MonoBehaviour {
11 |
12 | // IDs of the tiles used in the generation
13 | [SerializeField] private byte IDWater = 1;
14 | [SerializeField] private byte IDPlain = 2;
15 | [SerializeField] private byte IDForest = 4;
16 | [SerializeField] private byte IDMountain = 6;
17 | [SerializeField] private byte IDBuildingA = 7;
18 | [SerializeField] private byte IDBuildingB = 8;
19 |
20 | private Tilemap3D _tilemap;
21 |
22 | public void Start() {
23 | _tilemap = GetComponent();
24 | }
25 |
26 | public void Update() {
27 | if(Input.GetKeyDown(KeyCode.R)) Rebuild();
28 | }
29 |
30 | private void Rebuild() {
31 | _tilemap.Data.Clear();
32 |
33 | Unity.Mathematics.Random random = new Unity.Mathematics.Random((uint) ((Time.timeSinceLevelLoad * 133) % 6973));
34 |
35 | // Prepare randoms for perlins
36 | float2 offsetFloor = random.NextFloat2() * 379321;
37 | float2 offsetForest = random.NextFloat2() * 7913321;
38 | float2 offsetMountain = random.NextFloat2() * 56731;
39 |
40 | for(int x = 0; x < _tilemap.Width; x++) {
41 | for(int z = 0; z < _tilemap.Depth; z++) {
42 | float noiseFloor = Perlin(x + offsetFloor.x, z + offsetFloor.y);
43 | float noiseForest = Perlin(x + offsetForest.x, z + offsetForest.y, 0.2f);
44 | float noiseMountain = Perlin(x + offsetMountain.x, z + offsetMountain.y, 0.4f);
45 |
46 | byte id = IDWater;
47 |
48 | if(noiseFloor >= 0.5) id = IDPlain; // 1 Water 2 Plain
49 | byte variant = (byte) (random.NextInt() % _tilemap.Palette.GetTile(id).Length);
50 |
51 | _tilemap[new int3(x, 0, z)] = new TilemapData.Tile{ id = id, variant = variant };
52 |
53 | // Upper layer
54 | if(id == IDPlain) {
55 | id = 0;
56 |
57 | if(noiseForest > 0.5f) id = IDForest;
58 | if(noiseMountain > 0.75f) id = IDMountain;
59 |
60 | float building = random.NextFloat() % 1;
61 | if(building > 0.985f) id = IDBuildingA;
62 | else if (building > 0.96f) id = IDBuildingB;
63 |
64 | _tilemap[new int3(x, 1, z)] = new TilemapData.Tile{ id = id };
65 | }
66 | }
67 | }
68 |
69 | // Update map
70 | _tilemap.PostProcessTiles(_tilemap.Area);
71 | _tilemap.BakeDynamic();
72 | }
73 |
74 | private float Perlin(float x, float y, float scale = 0.1f) {
75 | x *= scale;
76 | y *= scale;
77 |
78 | return Mathf.PerlinNoise(x, y);
79 | }
80 |
81 | }
82 | }
83 |
--------------------------------------------------------------------------------
/Samples~/Pixel_Map_Sample/Meshes/TSet_PixelSample.fbx.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: d9f09a1bfd240c040b9587b93ecdb0c3
3 | ModelImporter:
4 | serializedVersion: 21300
5 | internalIDToNameTable: []
6 | externalObjects:
7 | - first:
8 | type: UnityEngine:Material
9 | assembly: UnityEngine.CoreModule
10 | name: Tileset
11 | second: {fileID: 2100000, guid: df5812252ba252e458e028e0ea615e8d, type: 2}
12 | materials:
13 | materialImportMode: 0
14 | materialName: 0
15 | materialSearch: 1
16 | materialLocation: 1
17 | animations:
18 | legacyGenerateAnimations: 4
19 | bakeSimulation: 0
20 | resampleCurves: 1
21 | optimizeGameObjects: 0
22 | removeConstantScaleCurves: 1
23 | motionNodeName:
24 | rigImportErrors:
25 | rigImportWarnings:
26 | animationImportErrors:
27 | animationImportWarnings:
28 | animationRetargetingWarnings:
29 | animationDoRetargetingWarnings: 0
30 | importAnimatedCustomProperties: 0
31 | importConstraints: 0
32 | animationCompression: 1
33 | animationRotationError: 0.5
34 | animationPositionError: 0.5
35 | animationScaleError: 0.5
36 | animationWrapMode: 0
37 | extraExposedTransformPaths: []
38 | extraUserProperties: []
39 | clipAnimations: []
40 | isReadable: 1
41 | meshes:
42 | lODScreenPercentages: []
43 | globalScale: 1
44 | meshCompression: 0
45 | addColliders: 0
46 | useSRGBMaterialColor: 1
47 | sortHierarchyByName: 1
48 | importVisibility: 0
49 | importBlendShapes: 0
50 | importCameras: 0
51 | importLights: 0
52 | nodeNameCollisionStrategy: 1
53 | fileIdsGeneration: 2
54 | swapUVChannels: 0
55 | generateSecondaryUV: 0
56 | useFileUnits: 1
57 | keepQuads: 0
58 | weldVertices: 1
59 | bakeAxisConversion: 1
60 | preserveHierarchy: 0
61 | skinWeightsMode: 0
62 | maxBonesPerVertex: 4
63 | minBoneWeight: 0.001
64 | optimizeBones: 1
65 | meshOptimizationFlags: -1
66 | indexFormat: 0
67 | secondaryUVAngleDistortion: 8
68 | secondaryUVAreaDistortion: 15.000001
69 | secondaryUVHardAngle: 88
70 | secondaryUVMarginMethod: 1
71 | secondaryUVMinLightmapResolution: 40
72 | secondaryUVMinObjectScale: 1
73 | secondaryUVPackMargin: 4
74 | useFileScale: 1
75 | tangentSpace:
76 | normalSmoothAngle: 60
77 | normalImportMode: 0
78 | tangentImportMode: 3
79 | normalCalculationMode: 4
80 | legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0
81 | blendShapeNormalImportMode: 1
82 | normalSmoothingSource: 0
83 | referencedClips: []
84 | importAnimation: 0
85 | humanDescription:
86 | serializedVersion: 3
87 | human: []
88 | skeleton: []
89 | armTwist: 0.5
90 | foreArmTwist: 0.5
91 | upperLegTwist: 0.5
92 | legTwist: 0.5
93 | armStretch: 0.05
94 | legStretch: 0.05
95 | feetSpacing: 0
96 | globalScale: 1
97 | rootMotionBoneName:
98 | hasTranslationDoF: 0
99 | hasExtraRoot: 1
100 | skeletonHasParents: 1
101 | lastHumanDescriptionAvatarSource: {instanceID: 0}
102 | autoGenerateAvatarMappingIfUnspecified: 1
103 | animationType: 0
104 | humanoidOversampling: 1
105 | avatarSetup: 0
106 | addHumanoidExtraRootOnlyWhenUsingAvatar: 1
107 | remapMaterialsIfMaterialImportModeIsNone: 0
108 | additionalBone: 0
109 | userData:
110 | assetBundleName:
111 | assetBundleVariant:
112 |
--------------------------------------------------------------------------------
/Documentation~/docs/style/overwrites.css:
--------------------------------------------------------------------------------
1 | :root {
2 | --bg-nav: #343131;
3 | --bg-nav__active: #272525;
4 | --bg-nav__hover: #4e4a4a;
5 | --bg-nav__selected: #57a0ef;
6 | --c-nav__active: white;
7 | --c-nav__selected: #b3b3b3;
8 | }
9 |
10 | .wy-body-for-nav {
11 | margin: 0px auto;
12 | max-width: 1200px;
13 | background: rgba(0,0,0,0.05);
14 | font-family: "Open Sans", sans-serif;
15 | }
16 |
17 | .wy-nav-side {
18 | top: 0;
19 | bottom: 50;
20 | height: auto;
21 | }
22 |
23 | @media only screen and (min-width: 769px) {
24 | .wy-nav-side {
25 | left: inherit;
26 | }
27 | }
28 |
29 | .rst-versions {
30 | left: inherit;
31 | background-color: var(--bg-nav__active);
32 | }
33 |
34 | .rst-versions .rst-current-version {
35 | background-color: var(--bg-nav__active);
36 | }
37 |
38 | .wy-side-nav-search {
39 | background-color: var(--bg-nav);
40 | }
41 |
42 | .wy-side-nav-search input {
43 | border: none;
44 | box-shadow: none;
45 | height: 32px;
46 | }
47 |
48 | #rtd-search-form {
49 | padding-left: 8px;
50 | padding-right: 8px;
51 | }
52 |
53 | .wy-menu-vertical a {
54 | color: var(--c-nav__selected);
55 | font-weight: bold;
56 | }
57 |
58 | .wy-menu-vertical a:hover {
59 | color: var(--c-nav__active);
60 | background-color: transparent;
61 | font-weight: bold;
62 | }
63 |
64 | .wy-menu-vertical {
65 | background: 0;
66 | width: 1000px;
67 | }
68 |
69 | .wy-menu-vertical li.toctree-l1.current > a {
70 | background: var(--bg-nav__hover);
71 | border: none;
72 | }
73 |
74 | .wy-menu-vertical li.toctree-l1.current > a:hover {
75 | background: var(--bg-nav__hover);
76 | }
77 |
78 |
79 | .wy-menu-vertical li.toctree-l2.current li.toctree-l3 > a {
80 | background: none;
81 | }
82 |
83 | .wy-menu-vertical li.toctree-l2.current > a {
84 | background: transparent;
85 | }
86 |
87 | .wy-menu-vertical li.current {
88 | background: transparent;
89 | }
90 |
91 | .wy-menu-vertical li.current a {
92 | color: var(--c-nav__selected);
93 | background-color: transparent;
94 | border-right: 0;
95 | }
96 |
97 | .wy-menu-vertical li.current a:hover {
98 | background-color: transparent;
99 | color: var(--c-nav__active);
100 | }
101 |
102 | .wy-menu-vertical li.current > a {
103 | background-color: var(--bg-nav__hover);
104 | color: var(--c-nav__active);
105 | border: 0;
106 | }
107 |
108 | .wy-menu-vertical li.current > a:hover {
109 | background-color: transparent;
110 | }
111 |
112 | .wy-menu-vertical li.current > a button.toctree-expand::before {
113 | content: "▼";
114 | color: var(--c-nav__active);
115 | font-weight: bold;
116 | }
117 |
118 | .wy-menu-vertical li button.toctree-expand::before {
119 | content: "►";
120 | color: var(--c-nav__selected);
121 | font-weight: bold;
122 | }
123 |
124 | .icon-home::before {
125 | content: "Docs";
126 | color: var(--bg-nav__selected);
127 | }
128 |
129 | footer {
130 | margin-top: 48px;
131 | }
132 |
133 | h1, h2, h3 {
134 | font-family: "Open Sans", sans-serif;
135 | }
136 |
137 | p {
138 | margin: 0 0 12px 0;
139 | }
140 |
141 | .rst-content h1 {
142 | margin: 0 0 8px 0;
143 | }
144 |
145 | .rst-content h2 {
146 | margin: 16px 0 8px 0;
147 | }
148 |
149 | .rst-content img {
150 | display: inline-block;
151 | vertical-align: top;
152 | }
153 |
154 | .rst-content .section ul li {
155 | margin-bottom: 12px;
156 | }
157 |
158 | .category-spacer {
159 | width: 100%;
160 | height: 64px;
161 | background-color: red;
162 | }
163 |
164 | th, td {
165 | padding-left: 4px;
166 | padding-right: 4px;
167 | }
168 |
169 | code {
170 | margin-bottom: 24px;
171 | }
--------------------------------------------------------------------------------
/Editor/Drawers/TileInfoDrawer.cs:
--------------------------------------------------------------------------------
1 | // Copyright (c) 2023 Felix Kate. BSD-3 license (see included license file)
2 |
3 | using UnityEditor;
4 | using UnityEngine;
5 |
6 | namespace TilemapCreator3D.EditorOnly {
7 | [CustomPropertyDrawer(typeof(TileInfo))]
8 | public class TileInfoDrawer : PropertyDrawer {
9 |
10 | public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) {
11 | EditorGUI.BeginProperty(position, label, property);
12 |
13 | position.x += 16.0f;
14 | position.width -= 16.0f;
15 |
16 | float singleLine = EditorGUIUtility.singleLineHeight;
17 | float lineOffset = singleLine + EditorGUIUtility.standardVerticalSpacing;
18 |
19 | SerializedProperty meshProperty = property.FindPropertyRelative("Mesh");
20 | SerializedProperty collisionMeshProperty = property.FindPropertyRelative("CollisionMesh");
21 | SerializedProperty collisionProperty = property.FindPropertyRelative("Collision");
22 |
23 | Rect headerRect = new Rect(position.x, position.y, position.width, EditorGUIUtility.singleLineHeight);
24 | float offset = headerRect.height + EditorGUIUtility.standardVerticalSpacing;
25 |
26 | GUI.Box(new Rect(position.x - 16.0f, position.y, position.width + 18.0f, position.height - 4.0f), "", "ChannelStripBg");
27 |
28 | EditorGUI.LabelField(new Rect(position.x, position.y + 3.0f, position.width, singleLine), label, EditorStyles.label);
29 |
30 | position.y += offset + 4;
31 | position.height -= offset;
32 |
33 | EditorGUI.PropertyField(new Rect(position.x, position.y, position.width, singleLine), meshProperty);
34 | EditorGUI.PropertyField(new Rect(position.x, position.y + lineOffset, position.width, singleLine), collisionProperty);
35 | EditorGUI.PropertyField(new Rect(position.x, position.y + lineOffset * 2, position.width, singleLine), collisionMeshProperty);
36 |
37 | EditorGUI.EndProperty();
38 | }
39 |
40 |
41 | public override float GetPropertyHeight(SerializedProperty property,GUIContent label) {
42 | float lineOffset = EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
43 |
44 | return lineOffset * 4.5f;
45 | }
46 |
47 | }
48 |
49 |
50 | [CustomPropertyDrawer(typeof(TileInfoMask))]
51 | public class TileInfoMaskDrawer : PropertyDrawer {
52 |
53 | public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) {
54 | EditorGUI.BeginProperty(position, label, property);
55 |
56 | float singleLine = EditorGUIUtility.singleLineHeight;
57 | float lineOffset = singleLine + EditorGUIUtility.standardVerticalSpacing;
58 |
59 | SerializedProperty infoProp = property.FindPropertyRelative("Info");
60 | SerializedProperty maskProp = property.FindPropertyRelative("Mask");
61 |
62 | float maskSpace = lineOffset * 2 + singleLine - 1;
63 |
64 | EditorGUI.PropertyField(new Rect(position.x, position.y, position.width - maskSpace - 10.0f, position.height), infoProp, label);
65 | EditorGUI.PropertyField(new Rect(position.x + position.width - maskSpace, position.y, maskSpace, position.height), maskProp, new GUIContent());
66 |
67 | EditorGUI.EndProperty();
68 | }
69 |
70 |
71 | public override float GetPropertyHeight(SerializedProperty property, GUIContent label) {
72 | return EditorGUI.GetPropertyHeight(property.FindPropertyRelative("Info"));
73 | }
74 |
75 | }
76 | }
--------------------------------------------------------------------------------
/Runtime/Utility/TilemapDataUtility.cs:
--------------------------------------------------------------------------------
1 | // Copyright (c) 2023 Felix Kate. BSD-3 license (see included license file)
2 |
3 | using Unity.Mathematics;
4 |
5 | namespace TilemapCreator3D {
6 | public static class TilemapDataUtility {
7 |
8 | // Summary
9 | // Copy volume data from source to target volume with offset
10 | public static void CopyData(this TilemapData target, TilemapData source, int3 pos) {
11 | pos = math.min(pos, target.Size - 1);
12 | int3 size = math.min(source.Size, target.Size - pos);
13 |
14 | // Out of range
15 | if(size.x == 0 || size.y == 0 || size.z == 0) return;
16 |
17 | for(int z = 0; z < size.z; z++) {
18 | for(int y = 0; y < size.y; y++) {
19 | for(int x = 0; x < size.x; x++) {
20 | int3 tar = pos + new int3(x, y, z);
21 |
22 | target[tar.x, tar.y, tar.z] = source[x, y, z];
23 | }
24 | }
25 | }
26 | }
27 |
28 |
29 | // Summary
30 | // Copy volume data with rotation on Y axis
31 | public static void CopyDataRotated(this TilemapData target, TilemapData source, int3 pos, int rotation) {
32 | bool axisSwap = rotation % 2 == 1;
33 | bool invertX = rotation == 1 || rotation == 2;
34 | bool invertZ = rotation == 3 || rotation == 2;
35 |
36 | int3 sourceSize = axisSwap ? new int3(source.Depth, source.Height, source.Width) : source.Size;
37 |
38 | pos = math.min(pos, target.Size - 1);
39 | int3 size = math.min(sourceSize, target.Size - pos);
40 |
41 | // Out of range
42 | if(size.x == 0 || size.y == 0 || size.z == 0) return;
43 |
44 | for(int z = 0; z < size.z; z++) {
45 | for(int y = 0; y < size.y; y++) {
46 | for(int x = 0; x < size.x; x++) {
47 | int3 tar = pos + new int3(x, y, z);
48 |
49 | int3 p = axisSwap ? new int3(z, y, x) : new int3(x, y, z);
50 | //if(inverted) p = sourceSize - p - 1;
51 | if(invertX) p.x = sourceSize.x - p.x - 1;
52 | if(invertZ) p.z = sourceSize.z - p.z - 1;
53 |
54 | TilemapData.Tile tile = source[p.x, p.y, p.z];
55 | tile.rotation = (byte) ((tile.rotation + rotation) % 4);
56 |
57 | target[tar.x, tar.y, tar.z] = tile;
58 | }
59 | }
60 | }
61 | }
62 |
63 |
64 | // Summary
65 | // Copy volume data from source to target volume with offset
66 | public static void ClearArea(this TilemapData data, int3 pos, int3 size) {
67 | pos = math.min(pos, data.Size - 1);
68 | size = math.min(size, data.Size - pos);
69 |
70 | // Out of range
71 | if(size.x == 0 || size.y == 0 || size.z == 0) return;
72 |
73 | for(int z = 0; z < size.z; z++) {
74 | for(int y = 0; y < size.y; y++) {
75 | for(int x = 0; x < size.x; x++) {
76 | int3 tar = pos + new int3(x, y, z);
77 |
78 | data[tar.x, tar.y, tar.z] = new TilemapData.Tile();
79 | }
80 | }
81 | }
82 | }
83 |
84 |
85 | // Summary
86 | // Clear all data
87 | public static void Clear(this TilemapData data) {
88 | for(int i = 0; i < data.Length; i++) data[i] = new TilemapData.Tile();
89 | }
90 |
91 | }
92 | }
--------------------------------------------------------------------------------
/Samples~/World_Map_Sample/Scripts/TilemapPrefabModule.cs:
--------------------------------------------------------------------------------
1 | // Copyright (c) 2023 Felix Kate. BSD-3 license (see included license file)
2 | // Example of a custom module to add prefab tiles to the tile map. Warning: This might not be the most performant approach and is meant as an example only.
3 |
4 | using System.Collections.Generic;
5 | using Unity.Mathematics;
6 | using UnityEngine;
7 |
8 | namespace TilemapCreator3D.Samples {
9 | public class TilemapPrefabModule : MonoBehaviour, ITilemapModule {
10 |
11 | private const int BASE_CAPACITY = 64;
12 |
13 | // Use dictionary for faster lookup
14 | private Dictionary _cachedObjects;
15 |
16 | public void Bake(Tilemap3D map) {
17 | // Nothing static to bake because we want immediate visual feedback
18 | }
19 |
20 | public void BakePartial(Tilemap3D map, Box3D area) {
21 | Transform trs = transform;
22 |
23 | // Cache preexisting gameobjects if necessary (since dictionaries cannot be serialized)
24 | if(_cachedObjects == null) {
25 | _cachedObjects = new Dictionary(math.max(trs.childCount, BASE_CAPACITY));
26 | for(int i = 0; i < trs.childCount; i++) {
27 | Transform childTrs = trs.GetChild(i);
28 | int3 pos = (int3) math.floor((float3) childTrs.localPosition);
29 |
30 | _cachedObjects.Add(pos, childTrs.gameObject);
31 | }
32 | }
33 |
34 | TilemapData data = map.Data;
35 | TilePalette palette = map.Palette;
36 |
37 | area.ForEach((int3 pos) => {
38 | TilemapData.Tile tile = data[pos];
39 | BaseTile bTile = palette.GetTile(tile.id);
40 | PrefabTile pTile = bTile as PrefabTile;
41 |
42 | // Search for existing object in dictionary
43 | GameObject existingInstance = null, newInstance = null;
44 | _cachedObjects.TryGetValue(pos, out existingInstance);
45 |
46 | // Only process if tile is valid
47 | if(pTile != null && pTile.Prefab != null) {
48 | // If we are updating in editor create prefab instance
49 | #if UNITY_EDITOR
50 | newInstance = (GameObject) UnityEditor.PrefabUtility.InstantiatePrefab(pTile.Prefab, transform);
51 | #else
52 | newInstance = Instantiate(pTile.Prefab, transform);
53 | #endif
54 |
55 | // Always correct transform due to possible changes in rotation
56 | Transform instTrs = newInstance.transform;
57 | instTrs.localPosition = map.GridToLocal(pos);
58 | instTrs.localRotation = tile.GetRotation();
59 | instTrs.localScale = Vector3.one;
60 | }
61 |
62 | // Remove existing if no longer needed
63 | if(existingInstance != null) {
64 | #if UNITY_EDITOR
65 | DestroyImmediate(existingInstance);
66 | #else
67 | Destroy(existingInstance);
68 | #endif
69 | }
70 |
71 | if(newInstance != null) {
72 | if(_cachedObjects.ContainsKey(pos)) _cachedObjects[pos] = newInstance;
73 | else _cachedObjects.Add(pos, newInstance);
74 | } else {
75 | if(_cachedObjects.ContainsKey(pos)) _cachedObjects.Remove(pos);
76 | }
77 | });
78 | }
79 |
80 | public void Clear() {
81 | // Nothing to clear
82 | }
83 |
84 | }
85 | }
86 |
--------------------------------------------------------------------------------
/Samples~/Pixel_Map_Sample/Tiles/PixelSample_Bricks2D.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!114 &11400000
4 | MonoBehaviour:
5 | m_ObjectHideFlags: 0
6 | m_CorrespondingSourceObject: {fileID: 0}
7 | m_PrefabInstance: {fileID: 0}
8 | m_PrefabAsset: {fileID: 0}
9 | m_GameObject: {fileID: 0}
10 | m_Enabled: 1
11 | m_EditorHideFlags: 0
12 | m_Script: {fileID: 11500000, guid: 6e71ebfdd92a51043be0f6ee64229708, type: 3}
13 | m_Name: PixelSample_Bricks2D
14 | m_EditorClassIdentifier:
15 | Material: {fileID: 2100000, guid: df5812252ba252e458e028e0ea615e8d, type: 2}
16 | CollisionLayer: 0
17 | NavigationArea: 0
18 | PreviewOrientation: {x: 20, y: 20}
19 | EightBitMask: 0
20 | NoBorder: 0
21 | Orientation2D: 1
22 | Isolate: 0
23 | Variants:
24 | - Info:
25 | Mesh: {fileID: 9007396973671173383, guid: d9f09a1bfd240c040b9587b93ecdb0c3, type: 3}
26 | CollisionMesh: {fileID: 0}
27 | Collision: 1
28 | Mask:
29 | Type: 0
30 | Mask: 0
31 | Variants:
32 | - Info:
33 | Mesh: {fileID: 6987408558647153412, guid: d9f09a1bfd240c040b9587b93ecdb0c3, type: 3}
34 | CollisionMesh: {fileID: 0}
35 | Collision: 1
36 | Mask:
37 | Type: 2
38 | Mask: 16
39 | Variants: 08000000
40 | - Info:
41 | Mesh: {fileID: 1194820100772978284, guid: d9f09a1bfd240c040b9587b93ecdb0c3, type: 3}
42 | CollisionMesh: {fileID: 0}
43 | Collision: 1
44 | Mask:
45 | Type: 0
46 | Mask: 24
47 | Variants:
48 | - Info:
49 | Mesh: {fileID: -1584773010523944668, guid: d9f09a1bfd240c040b9587b93ecdb0c3, type: 3}
50 | CollisionMesh: {fileID: 0}
51 | Collision: 1
52 | Mask:
53 | Type: 0
54 | Mask: 64
55 | Variants:
56 | - Info:
57 | Mesh: {fileID: -2571957678576722453, guid: d9f09a1bfd240c040b9587b93ecdb0c3, type: 3}
58 | CollisionMesh: {fileID: 0}
59 | Collision: 1
60 | Mask:
61 | Type: 2
62 | Mask: 80
63 | Variants: 48000000
64 | - Info:
65 | Mesh: {fileID: 3333803597913664952, guid: d9f09a1bfd240c040b9587b93ecdb0c3, type: 3}
66 | CollisionMesh: {fileID: 0}
67 | Collision: 1
68 | Mask:
69 | Type: 0
70 | Mask: 88
71 | Variants:
72 | - Info:
73 | Mesh: {fileID: 330508479358708411, guid: d9f09a1bfd240c040b9587b93ecdb0c3, type: 3}
74 | CollisionMesh: {fileID: 0}
75 | Collision: 1
76 | Mask:
77 | Type: 0
78 | Mask: 66
79 | Variants:
80 | - Info:
81 | Mesh: {fileID: 9096401717526318790, guid: d9f09a1bfd240c040b9587b93ecdb0c3, type: 3}
82 | CollisionMesh: {fileID: 0}
83 | Collision: 1
84 | Mask:
85 | Type: 2
86 | Mask: 82
87 | Variants: 4a000000
88 | - Info:
89 | Mesh: {fileID: 6326850960227396872, guid: d9f09a1bfd240c040b9587b93ecdb0c3, type: 3}
90 | CollisionMesh: {fileID: 0}
91 | Collision: 1
92 | Mask:
93 | Type: 0
94 | Mask: 90
95 | Variants:
96 | - Info:
97 | Mesh: {fileID: -6514213036786581196, guid: d9f09a1bfd240c040b9587b93ecdb0c3, type: 3}
98 | CollisionMesh: {fileID: 0}
99 | Collision: 1
100 | Mask:
101 | Type: 0
102 | Mask: 2
103 | Variants:
104 | - Info:
105 | Mesh: {fileID: 3791528765758345936, guid: d9f09a1bfd240c040b9587b93ecdb0c3, type: 3}
106 | CollisionMesh: {fileID: 0}
107 | Collision: 1
108 | Mask:
109 | Type: 2
110 | Mask: 18
111 | Variants: 0a000000
112 | - Info:
113 | Mesh: {fileID: -3142739166472724036, guid: d9f09a1bfd240c040b9587b93ecdb0c3, type: 3}
114 | CollisionMesh: {fileID: 0}
115 | Collision: 1
116 | Mask:
117 | Type: 0
118 | Mask: 26
119 | Variants:
120 |
--------------------------------------------------------------------------------