Pārlūkot izejas kodu

First real commit

Axel Nordh 1 mēnesi atpakaļ
vecāks
revīzija
01e15a5197
100 mainītis faili ar 15941 papildinājumiem un 0 dzēšanām
  1. 5 0
      .vscode/extensions.json
  2. 10 0
      .vscode/launch.json
  3. 71 0
      .vscode/settings.json
  4. 795 0
      Assets/DefaultVolumeProfile.asset
  5. 8 0
      Assets/DefaultVolumeProfile.asset.meta
  6. 1057 0
      Assets/InputSystem_Actions.inputactions
  7. 14 0
      Assets/InputSystem_Actions.inputactions.meta
  8. 8 0
      Assets/Material.meta
  9. 51 0
      Assets/Material/FloorMaterial.mat
  10. 8 0
      Assets/Material/FloorMaterial.mat.meta
  11. 221 0
      Assets/Material/WallMaterial.mat
  12. 8 0
      Assets/Material/WallMaterial.mat.meta
  13. 8 0
      Assets/Prefabs.meta
  14. 8 0
      Assets/Scenes.meta
  15. 352 0
      Assets/Scenes/SampleScene.unity
  16. 7 0
      Assets/Scenes/SampleScene.unity.meta
  17. 8 0
      Assets/Scripts.meta
  18. 159 0
      Assets/Scripts/AsyncMazeGenerator.cs
  19. 2 0
      Assets/Scripts/AsyncMazeGenerator.cs.meta
  20. 329 0
      Assets/Scripts/ChunkedMazeRenderer.cs
  21. 2 0
      Assets/Scripts/ChunkedMazeRenderer.cs.meta
  22. 319 0
      Assets/Scripts/MazeAIEntity.cs
  23. 2 0
      Assets/Scripts/MazeAIEntity.cs.meta
  24. 175 0
      Assets/Scripts/MazeCameraController.cs
  25. 2 0
      Assets/Scripts/MazeCameraController.cs.meta
  26. 67 0
      Assets/Scripts/MazeConfig.cs
  27. 2 0
      Assets/Scripts/MazeConfig.cs.meta
  28. 194 0
      Assets/Scripts/MazeController.cs
  29. 2 0
      Assets/Scripts/MazeController.cs.meta
  30. 240 0
      Assets/Scripts/MazeData.cs
  31. 2 0
      Assets/Scripts/MazeData.cs.meta
  32. 230 0
      Assets/Scripts/MazeExample.cs
  33. 2 0
      Assets/Scripts/MazeExample.cs.meta
  34. 210 0
      Assets/Scripts/MazeFogOfWar.cs
  35. 2 0
      Assets/Scripts/MazeFogOfWar.cs.meta
  36. 439 0
      Assets/Scripts/MazeGenerator.cs
  37. 2 0
      Assets/Scripts/MazeGenerator.cs.meta
  38. 195 0
      Assets/Scripts/MazePathfinder.cs
  39. 2 0
      Assets/Scripts/MazePathfinder.cs.meta
  40. 394 0
      Assets/Scripts/MazeRenderer.cs
  41. 2 0
      Assets/Scripts/MazeRenderer.cs.meta
  42. 99 0
      Assets/Scripts/MazeRendererSetup.cs
  43. 2 0
      Assets/Scripts/MazeRendererSetup.cs.meta
  44. 69 0
      Assets/Scripts/MazeRoom.cs
  45. 2 0
      Assets/Scripts/MazeRoom.cs.meta
  46. 69 0
      Assets/Scripts/MazeTile.cs
  47. 2 0
      Assets/Scripts/MazeTile.cs.meta
  48. 795 0
      Assets/Scripts/MeshMazeRenderer.cs
  49. 2 0
      Assets/Scripts/MeshMazeRenderer.cs.meta
  50. 61 0
      Assets/Scripts/TileGenerator.cs
  51. 2 0
      Assets/Scripts/TileGenerator.cs.meta
  52. 8 0
      Assets/Settings.meta
  53. 42 0
      Assets/Settings/Lit2DSceneTemplate.scenetemplate
  54. 8 0
      Assets/Settings/Lit2DSceneTemplate.scenetemplate.meta
  55. 69 0
      Assets/Settings/Renderer2D.asset
  56. 8 0
      Assets/Settings/Renderer2D.asset.meta
  57. 8 0
      Assets/Settings/Scenes.meta
  58. 740 0
      Assets/Settings/Scenes/URP2DSceneTemplate.unity
  59. 7 0
      Assets/Settings/Scenes/URP2DSceneTemplate.unity.meta
  60. 143 0
      Assets/Settings/UniversalRP.asset
  61. 8 0
      Assets/Settings/UniversalRP.asset.meta
  62. 8 0
      Assets/UI.meta
  63. 1067 0
      Assets/UI/CombinedFloorAndWallPalett.prefab
  64. 7 0
      Assets/UI/CombinedFloorAndWallPalett.prefab.meta
  65. 39 0
      Assets/UI/FloorTile.asset
  66. 8 0
      Assets/UI/FloorTile.asset.meta
  67. 8 0
      Assets/UI/Tilemaps.meta
  68. 36 0
      Assets/UI/Tilemaps/dungeon_floor_.asset
  69. 8 0
      Assets/UI/Tilemaps/dungeon_floor_.asset.meta
  70. 36 0
      Assets/UI/Tilemaps/dungeon_floor_2.asset
  71. 8 0
      Assets/UI/Tilemaps/dungeon_floor_2.asset.meta
  72. 36 0
      Assets/UI/Tilemaps/dungeon_floor_3.asset
  73. 8 0
      Assets/UI/Tilemaps/dungeon_floor_3.asset.meta
  74. 36 0
      Assets/UI/Tilemaps/dungeon_floor_4.asset
  75. 8 0
      Assets/UI/Tilemaps/dungeon_floor_4.asset.meta
  76. 36 0
      Assets/UI/Tilemaps/dungeon_floor_5.asset
  77. 8 0
      Assets/UI/Tilemaps/dungeon_floor_5.asset.meta
  78. 36 0
      Assets/UI/Tilemaps/dungeon_floor_6.asset
  79. 8 0
      Assets/UI/Tilemaps/dungeon_floor_6.asset.meta
  80. 36 0
      Assets/UI/Tilemaps/dungeon_floor_7.asset
  81. 8 0
      Assets/UI/Tilemaps/dungeon_floor_7.asset.meta
  82. 36 0
      Assets/UI/Tilemaps/dungeon_floor_8.asset
  83. 8 0
      Assets/UI/Tilemaps/dungeon_floor_8.asset.meta
  84. 36 0
      Assets/UI/Tilemaps/dungeon_floor_9.asset
  85. 8 0
      Assets/UI/Tilemaps/dungeon_floor_9.asset.meta
  86. BIN
      Assets/UI/Tilemaps/dungeon_tiles.png
  87. 6350 0
      Assets/UI/Tilemaps/dungeon_tiles.png.meta
  88. 36 0
      Assets/UI/Tilemaps/dungeon_tiles_0.asset
  89. 8 0
      Assets/UI/Tilemaps/dungeon_tiles_0.asset.meta
  90. 36 0
      Assets/UI/Tilemaps/dungeon_tiles_1.asset
  91. 8 0
      Assets/UI/Tilemaps/dungeon_tiles_1.asset.meta
  92. 36 0
      Assets/UI/Tilemaps/dungeon_tiles_10.asset
  93. 8 0
      Assets/UI/Tilemaps/dungeon_tiles_10.asset.meta
  94. 36 0
      Assets/UI/Tilemaps/dungeon_tiles_11.asset
  95. 8 0
      Assets/UI/Tilemaps/dungeon_tiles_11.asset.meta
  96. 36 0
      Assets/UI/Tilemaps/dungeon_tiles_12.asset
  97. 8 0
      Assets/UI/Tilemaps/dungeon_tiles_12.asset.meta
  98. 36 0
      Assets/UI/Tilemaps/dungeon_tiles_13.asset
  99. 8 0
      Assets/UI/Tilemaps/dungeon_tiles_13.asset.meta
  100. 36 0
      Assets/UI/Tilemaps/dungeon_tiles_14.asset

+ 5 - 0
.vscode/extensions.json

@@ -0,0 +1,5 @@
+{
+    "recommendations": [
+      "visualstudiotoolsforunity.vstuc"
+    ]
+}

+ 10 - 0
.vscode/launch.json

@@ -0,0 +1,10 @@
+{
+    "version": "0.2.0",
+    "configurations": [
+        {
+            "name": "Attach to Unity",
+            "type": "vstuc",
+            "request": "attach"
+        }
+     ]
+}

+ 71 - 0
.vscode/settings.json

@@ -0,0 +1,71 @@
+{
+    "files.exclude": {
+        "**/.DS_Store": true,
+        "**/.git": true,
+        "**/.vs": true,
+        "**/.gitmodules": true,
+        "**/.vsconfig": true,
+        "**/*.booproj": true,
+        "**/*.pidb": true,
+        "**/*.suo": true,
+        "**/*.user": true,
+        "**/*.userprefs": true,
+        "**/*.unityproj": true,
+        "**/*.dll": true,
+        "**/*.exe": true,
+        "**/*.pdf": true,
+        "**/*.mid": true,
+        "**/*.midi": true,
+        "**/*.wav": true,
+        "**/*.gif": true,
+        "**/*.ico": true,
+        "**/*.jpg": true,
+        "**/*.jpeg": true,
+        "**/*.png": true,
+        "**/*.psd": true,
+        "**/*.tga": true,
+        "**/*.tif": true,
+        "**/*.tiff": true,
+        "**/*.3ds": true,
+        "**/*.3DS": true,
+        "**/*.fbx": true,
+        "**/*.FBX": true,
+        "**/*.lxo": true,
+        "**/*.LXO": true,
+        "**/*.ma": true,
+        "**/*.MA": true,
+        "**/*.obj": true,
+        "**/*.OBJ": true,
+        "**/*.asset": true,
+        "**/*.cubemap": true,
+        "**/*.flare": true,
+        "**/*.mat": true,
+        "**/*.meta": true,
+        "**/*.prefab": true,
+        "**/*.unity": true,
+        "build/": true,
+        "Build/": true,
+        "Library/": true,
+        "library/": true,
+        "obj/": true,
+        "Obj/": true,
+        "Logs/": true,
+        "logs/": true,
+        "ProjectSettings/": true,
+        "UserSettings/": true,
+        "temp/": true,
+        "Temp/": true
+    },
+    "files.associations": {
+        "*.asset": "yaml",
+        "*.meta": "yaml",
+        "*.prefab": "yaml",
+        "*.unity": "yaml",
+    },
+    "explorer.fileNesting.enabled": true,
+    "explorer.fileNesting.patterns": {
+        "*.sln": "*.csproj",
+        "*.slnx": "*.csproj"
+    },
+    "dotnet.defaultSolution": "MazeWalkerTv.slnx"
+}

+ 795 - 0
Assets/DefaultVolumeProfile.asset

@@ -0,0 +1,795 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &-8186968272690591729
+MonoBehaviour:
+  m_ObjectHideFlags: 3
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 0}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 3eb4b772797da9440885e8bd939e9560, type: 3}
+  m_Name: ColorCurves
+  m_EditorClassIdentifier: 
+  active: 1
+  master:
+    m_OverrideState: 1
+    m_Value:
+      <length>k__BackingField: 2
+      m_Loop: 0
+      m_ZeroValue: 0
+      m_Range: 1
+      m_Curve:
+        serializedVersion: 2
+        m_Curve:
+        - serializedVersion: 3
+          time: 0
+          value: 0
+          inSlope: 1
+          outSlope: 1
+          tangentMode: 0
+          weightedMode: 0
+          inWeight: 0
+          outWeight: 0
+        - serializedVersion: 3
+          time: 1
+          value: 1
+          inSlope: 1
+          outSlope: 1
+          tangentMode: 0
+          weightedMode: 0
+          inWeight: 0
+          outWeight: 0
+        m_PreInfinity: 2
+        m_PostInfinity: 2
+        m_RotationOrder: 4
+  red:
+    m_OverrideState: 1
+    m_Value:
+      <length>k__BackingField: 2
+      m_Loop: 0
+      m_ZeroValue: 0
+      m_Range: 1
+      m_Curve:
+        serializedVersion: 2
+        m_Curve:
+        - serializedVersion: 3
+          time: 0
+          value: 0
+          inSlope: 1
+          outSlope: 1
+          tangentMode: 0
+          weightedMode: 0
+          inWeight: 0
+          outWeight: 0
+        - serializedVersion: 3
+          time: 1
+          value: 1
+          inSlope: 1
+          outSlope: 1
+          tangentMode: 0
+          weightedMode: 0
+          inWeight: 0
+          outWeight: 0
+        m_PreInfinity: 2
+        m_PostInfinity: 2
+        m_RotationOrder: 4
+  green:
+    m_OverrideState: 1
+    m_Value:
+      <length>k__BackingField: 2
+      m_Loop: 0
+      m_ZeroValue: 0
+      m_Range: 1
+      m_Curve:
+        serializedVersion: 2
+        m_Curve:
+        - serializedVersion: 3
+          time: 0
+          value: 0
+          inSlope: 1
+          outSlope: 1
+          tangentMode: 0
+          weightedMode: 0
+          inWeight: 0
+          outWeight: 0
+        - serializedVersion: 3
+          time: 1
+          value: 1
+          inSlope: 1
+          outSlope: 1
+          tangentMode: 0
+          weightedMode: 0
+          inWeight: 0
+          outWeight: 0
+        m_PreInfinity: 2
+        m_PostInfinity: 2
+        m_RotationOrder: 4
+  blue:
+    m_OverrideState: 1
+    m_Value:
+      <length>k__BackingField: 2
+      m_Loop: 0
+      m_ZeroValue: 0
+      m_Range: 1
+      m_Curve:
+        serializedVersion: 2
+        m_Curve:
+        - serializedVersion: 3
+          time: 0
+          value: 0
+          inSlope: 1
+          outSlope: 1
+          tangentMode: 0
+          weightedMode: 0
+          inWeight: 0
+          outWeight: 0
+        - serializedVersion: 3
+          time: 1
+          value: 1
+          inSlope: 1
+          outSlope: 1
+          tangentMode: 0
+          weightedMode: 0
+          inWeight: 0
+          outWeight: 0
+        m_PreInfinity: 2
+        m_PostInfinity: 2
+        m_RotationOrder: 4
+  hueVsHue:
+    m_OverrideState: 1
+    m_Value:
+      <length>k__BackingField: 0
+      m_Loop: 1
+      m_ZeroValue: 0.5
+      m_Range: 1
+      m_Curve:
+        serializedVersion: 2
+        m_Curve: []
+        m_PreInfinity: 2
+        m_PostInfinity: 2
+        m_RotationOrder: 4
+  hueVsSat:
+    m_OverrideState: 1
+    m_Value:
+      <length>k__BackingField: 0
+      m_Loop: 1
+      m_ZeroValue: 0.5
+      m_Range: 1
+      m_Curve:
+        serializedVersion: 2
+        m_Curve: []
+        m_PreInfinity: 2
+        m_PostInfinity: 2
+        m_RotationOrder: 4
+  satVsSat:
+    m_OverrideState: 1
+    m_Value:
+      <length>k__BackingField: 0
+      m_Loop: 0
+      m_ZeroValue: 0.5
+      m_Range: 1
+      m_Curve:
+        serializedVersion: 2
+        m_Curve: []
+        m_PreInfinity: 2
+        m_PostInfinity: 2
+        m_RotationOrder: 4
+  lumVsSat:
+    m_OverrideState: 1
+    m_Value:
+      <length>k__BackingField: 0
+      m_Loop: 0
+      m_ZeroValue: 0.5
+      m_Range: 1
+      m_Curve:
+        serializedVersion: 2
+        m_Curve: []
+        m_PreInfinity: 2
+        m_PostInfinity: 2
+        m_RotationOrder: 4
+--- !u!114 &-7645455725216806467
+MonoBehaviour:
+  m_ObjectHideFlags: 3
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 0}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 29fa0085f50d5e54f8144f766051a691, type: 3}
+  m_Name: FilmGrain
+  m_EditorClassIdentifier: 
+  active: 1
+  type:
+    m_OverrideState: 1
+    m_Value: 0
+  intensity:
+    m_OverrideState: 1
+    m_Value: 0
+  response:
+    m_OverrideState: 1
+    m_Value: 0.8
+  texture:
+    m_OverrideState: 1
+    m_Value: {fileID: 0}
+--- !u!114 &-6951754464447674219
+MonoBehaviour:
+  m_ObjectHideFlags: 3
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 0}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 558a8e2b6826cf840aae193990ba9f2e, type: 3}
+  m_Name: ShadowsMidtonesHighlights
+  m_EditorClassIdentifier: 
+  active: 1
+  shadows:
+    m_OverrideState: 1
+    m_Value: {x: 1, y: 1, z: 1, w: 0}
+  midtones:
+    m_OverrideState: 1
+    m_Value: {x: 1, y: 1, z: 1, w: 0}
+  highlights:
+    m_OverrideState: 1
+    m_Value: {x: 1, y: 1, z: 1, w: 0}
+  shadowsStart:
+    m_OverrideState: 1
+    m_Value: 0
+  shadowsEnd:
+    m_OverrideState: 1
+    m_Value: 0.3
+  highlightsStart:
+    m_OverrideState: 1
+    m_Value: 0.55
+  highlightsEnd:
+    m_OverrideState: 1
+    m_Value: 1
+--- !u!114 &-4210620904635426390
+MonoBehaviour:
+  m_ObjectHideFlags: 3
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 0}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: cdfbdbb87d3286943a057f7791b43141, type: 3}
+  m_Name: ChannelMixer
+  m_EditorClassIdentifier: 
+  active: 1
+  redOutRedIn:
+    m_OverrideState: 1
+    m_Value: 100
+  redOutGreenIn:
+    m_OverrideState: 1
+    m_Value: 0
+  redOutBlueIn:
+    m_OverrideState: 1
+    m_Value: 0
+  greenOutRedIn:
+    m_OverrideState: 1
+    m_Value: 0
+  greenOutGreenIn:
+    m_OverrideState: 1
+    m_Value: 100
+  greenOutBlueIn:
+    m_OverrideState: 1
+    m_Value: 0
+  blueOutRedIn:
+    m_OverrideState: 1
+    m_Value: 0
+  blueOutGreenIn:
+    m_OverrideState: 1
+    m_Value: 0
+  blueOutBlueIn:
+    m_OverrideState: 1
+    m_Value: 100
+--- !u!114 &-3978695733392391637
+MonoBehaviour:
+  m_ObjectHideFlags: 3
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 0}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 0b2db86121404754db890f4c8dfe81b2, type: 3}
+  m_Name: Bloom
+  m_EditorClassIdentifier: 
+  active: 1
+  skipIterations:
+    m_OverrideState: 1
+    m_Value: 1
+  threshold:
+    m_OverrideState: 1
+    m_Value: 0.9
+  intensity:
+    m_OverrideState: 1
+    m_Value: 0
+  scatter:
+    m_OverrideState: 1
+    m_Value: 0.7
+  clamp:
+    m_OverrideState: 1
+    m_Value: 65472
+  tint:
+    m_OverrideState: 1
+    m_Value: {r: 1, g: 1, b: 1, a: 1}
+  highQualityFiltering:
+    m_OverrideState: 1
+    m_Value: 0
+  downscale:
+    m_OverrideState: 1
+    m_Value: 0
+  maxIterations:
+    m_OverrideState: 1
+    m_Value: 6
+  dirtTexture:
+    m_OverrideState: 1
+    m_Value: {fileID: 0}
+    dimension: 1
+  dirtIntensity:
+    m_OverrideState: 1
+    m_Value: 0
+--- !u!114 &-3757877592200609216
+MonoBehaviour:
+  m_ObjectHideFlags: 3
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 0}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 70afe9e12c7a7ed47911bb608a23a8ff, type: 3}
+  m_Name: SplitToning
+  m_EditorClassIdentifier: 
+  active: 1
+  shadows:
+    m_OverrideState: 1
+    m_Value: {r: 0.5, g: 0.5, b: 0.5, a: 1}
+  highlights:
+    m_OverrideState: 1
+    m_Value: {r: 0.5, g: 0.5, b: 0.5, a: 1}
+  balance:
+    m_OverrideState: 1
+    m_Value: 0
+--- !u!114 &-3386560400091697801
+MonoBehaviour:
+  m_ObjectHideFlags: 3
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 0}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: c01700fd266d6914ababb731e09af2eb, type: 3}
+  m_Name: DepthOfField
+  m_EditorClassIdentifier: 
+  active: 1
+  mode:
+    m_OverrideState: 1
+    m_Value: 0
+  gaussianStart:
+    m_OverrideState: 1
+    m_Value: 10
+  gaussianEnd:
+    m_OverrideState: 1
+    m_Value: 30
+  gaussianMaxRadius:
+    m_OverrideState: 1
+    m_Value: 1
+  highQualitySampling:
+    m_OverrideState: 1
+    m_Value: 0
+  focusDistance:
+    m_OverrideState: 1
+    m_Value: 10
+  aperture:
+    m_OverrideState: 1
+    m_Value: 5.6
+  focalLength:
+    m_OverrideState: 1
+    m_Value: 50
+  bladeCount:
+    m_OverrideState: 1
+    m_Value: 5
+  bladeCurvature:
+    m_OverrideState: 1
+    m_Value: 1
+  bladeRotation:
+    m_OverrideState: 1
+    m_Value: 0
+--- !u!114 &-1083910812058648046
+MonoBehaviour:
+  m_ObjectHideFlags: 3
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 0}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 6bd486065ce11414fa40e631affc4900, type: 3}
+  m_Name: ProbeVolumesOptions
+  m_EditorClassIdentifier: 
+  active: 1
+  normalBias:
+    m_OverrideState: 1
+    m_Value: 0.05
+  viewBias:
+    m_OverrideState: 1
+    m_Value: 0.1
+  scaleBiasWithMinProbeDistance:
+    m_OverrideState: 1
+    m_Value: 0
+  samplingNoise:
+    m_OverrideState: 1
+    m_Value: 0.1
+  animateSamplingNoise:
+    m_OverrideState: 1
+    m_Value: 1
+  leakReductionMode:
+    m_OverrideState: 1
+    m_Value: 2
+  minValidDotProductValue:
+    m_OverrideState: 1
+    m_Value: 0.1
+  occlusionOnlyReflectionNormalization:
+    m_OverrideState: 1
+    m_Value: 1
+  intensityMultiplier:
+    m_OverrideState: 1
+    m_Value: 1
+  skyOcclusionIntensityMultiplier:
+    m_OverrideState: 1
+    m_Value: 1
+  worldOffset:
+    m_OverrideState: 1
+    m_Value: {x: 0, y: 0, z: 0}
+--- !u!114 &-277880470225475626
+MonoBehaviour:
+  m_ObjectHideFlags: 3
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 0}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: ccf1aba9553839d41ae37dd52e9ebcce, type: 3}
+  m_Name: MotionBlur
+  m_EditorClassIdentifier: 
+  active: 1
+  mode:
+    m_OverrideState: 1
+    m_Value: 0
+  quality:
+    m_OverrideState: 1
+    m_Value: 0
+  intensity:
+    m_OverrideState: 1
+    m_Value: 0
+  clamp:
+    m_OverrideState: 1
+    m_Value: 0.05
+--- !u!114 &11400000
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 0}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: d7fd9488000d3734a9e00ee676215985, type: 3}
+  m_Name: DefaultVolumeProfile
+  m_EditorClassIdentifier: 
+  components:
+  - {fileID: 1247868777620691934}
+  - {fileID: -277880470225475626}
+  - {fileID: 2338690907228448291}
+  - {fileID: 2335868966179733374}
+  - {fileID: 3460444317416099510}
+  - {fileID: 7933203426823181213}
+  - {fileID: 5762530381802164056}
+  - {fileID: -3386560400091697801}
+  - {fileID: 156332030701414761}
+  - {fileID: 9099548931283147545}
+  - {fileID: -3757877592200609216}
+  - {fileID: 2332282131777942337}
+  - {fileID: -4210620904635426390}
+  - {fileID: -6951754464447674219}
+  - {fileID: 8549655192814258499}
+  - {fileID: -7645455725216806467}
+  - {fileID: -8186968272690591729}
+  - {fileID: -3978695733392391637}
+  - {fileID: -1083910812058648046}
+--- !u!114 &156332030701414761
+MonoBehaviour:
+  m_ObjectHideFlags: 3
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 0}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 5485954d14dfb9a4c8ead8edb0ded5b1, type: 3}
+  m_Name: LiftGammaGain
+  m_EditorClassIdentifier: 
+  active: 1
+  lift:
+    m_OverrideState: 1
+    m_Value: {x: 1, y: 1, z: 1, w: 0}
+  gamma:
+    m_OverrideState: 1
+    m_Value: {x: 1, y: 1, z: 1, w: 0}
+  gain:
+    m_OverrideState: 1
+    m_Value: {x: 1, y: 1, z: 1, w: 0}
+--- !u!114 &1247868777620691934
+MonoBehaviour:
+  m_ObjectHideFlags: 3
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 0}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 97c23e3b12dc18c42a140437e53d3951, type: 3}
+  m_Name: Tonemapping
+  m_EditorClassIdentifier: 
+  active: 1
+  mode:
+    m_OverrideState: 1
+    m_Value: 0
+  neutralHDRRangeReductionMode:
+    m_OverrideState: 1
+    m_Value: 2
+  acesPreset:
+    m_OverrideState: 1
+    m_Value: 3
+  hueShiftAmount:
+    m_OverrideState: 1
+    m_Value: 0
+  detectPaperWhite:
+    m_OverrideState: 1
+    m_Value: 0
+  paperWhite:
+    m_OverrideState: 1
+    m_Value: 300
+  detectBrightnessLimits:
+    m_OverrideState: 1
+    m_Value: 1
+  minNits:
+    m_OverrideState: 1
+    m_Value: 0.005
+  maxNits:
+    m_OverrideState: 1
+    m_Value: 1000
+--- !u!114 &2332282131777942337
+MonoBehaviour:
+  m_ObjectHideFlags: 3
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 0}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: e021b4c809a781e468c2988c016ebbea, type: 3}
+  m_Name: ColorLookup
+  m_EditorClassIdentifier: 
+  active: 1
+  texture:
+    m_OverrideState: 1
+    m_Value: {fileID: 0}
+    dimension: 1
+  contribution:
+    m_OverrideState: 1
+    m_Value: 0
+--- !u!114 &2335868966179733374
+MonoBehaviour:
+  m_ObjectHideFlags: 3
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 0}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: c5e1dc532bcb41949b58bc4f2abfbb7e, type: 3}
+  m_Name: LensDistortion
+  m_EditorClassIdentifier: 
+  active: 1
+  intensity:
+    m_OverrideState: 1
+    m_Value: 0
+  xMultiplier:
+    m_OverrideState: 1
+    m_Value: 1
+  yMultiplier:
+    m_OverrideState: 1
+    m_Value: 1
+  center:
+    m_OverrideState: 1
+    m_Value: {x: 0.5, y: 0.5}
+  scale:
+    m_OverrideState: 1
+    m_Value: 1
+--- !u!114 &2338690907228448291
+MonoBehaviour:
+  m_ObjectHideFlags: 3
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 0}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 221518ef91623a7438a71fef23660601, type: 3}
+  m_Name: WhiteBalance
+  m_EditorClassIdentifier: 
+  active: 1
+  temperature:
+    m_OverrideState: 1
+    m_Value: 0
+  tint:
+    m_OverrideState: 1
+    m_Value: 0
+--- !u!114 &3460444317416099510
+MonoBehaviour:
+  m_ObjectHideFlags: 3
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 0}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 81180773991d8724ab7f2d216912b564, type: 3}
+  m_Name: ChromaticAberration
+  m_EditorClassIdentifier: 
+  active: 1
+  intensity:
+    m_OverrideState: 1
+    m_Value: 0
+--- !u!114 &5762530381802164056
+MonoBehaviour:
+  m_ObjectHideFlags: 3
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 0}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 06437c1ff663d574d9447842ba0a72e4, type: 3}
+  m_Name: ScreenSpaceLensFlare
+  m_EditorClassIdentifier: 
+  active: 1
+  intensity:
+    m_OverrideState: 1
+    m_Value: 0
+  tintColor:
+    m_OverrideState: 1
+    m_Value: {r: 1, g: 1, b: 1, a: 1}
+  bloomMip:
+    m_OverrideState: 1
+    m_Value: 1
+  firstFlareIntensity:
+    m_OverrideState: 1
+    m_Value: 1
+  secondaryFlareIntensity:
+    m_OverrideState: 1
+    m_Value: 1
+  warpedFlareIntensity:
+    m_OverrideState: 1
+    m_Value: 1
+  warpedFlareScale:
+    m_OverrideState: 1
+    m_Value: {x: 1, y: 1}
+  samples:
+    m_OverrideState: 1
+    m_Value: 1
+  sampleDimmer:
+    m_OverrideState: 1
+    m_Value: 0.5
+  vignetteEffect:
+    m_OverrideState: 1
+    m_Value: 1
+  startingPosition:
+    m_OverrideState: 1
+    m_Value: 1.25
+  scale:
+    m_OverrideState: 1
+    m_Value: 1.5
+  streaksIntensity:
+    m_OverrideState: 1
+    m_Value: 0
+  streaksLength:
+    m_OverrideState: 1
+    m_Value: 0.5
+  streaksOrientation:
+    m_OverrideState: 1
+    m_Value: 0
+  streaksThreshold:
+    m_OverrideState: 1
+    m_Value: 0.25
+  resolution:
+    m_OverrideState: 1
+    m_Value: 4
+  chromaticAbberationIntensity:
+    m_OverrideState: 1
+    m_Value: 0.5
+--- !u!114 &7933203426823181213
+MonoBehaviour:
+  m_ObjectHideFlags: 3
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 0}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 66f335fb1ffd8684294ad653bf1c7564, type: 3}
+  m_Name: ColorAdjustments
+  m_EditorClassIdentifier: 
+  active: 1
+  postExposure:
+    m_OverrideState: 1
+    m_Value: 0
+  contrast:
+    m_OverrideState: 1
+    m_Value: 0
+  colorFilter:
+    m_OverrideState: 1
+    m_Value: {r: 1, g: 1, b: 1, a: 1}
+  hueShift:
+    m_OverrideState: 1
+    m_Value: 0
+  saturation:
+    m_OverrideState: 1
+    m_Value: 0
+--- !u!114 &8549655192814258499
+MonoBehaviour:
+  m_ObjectHideFlags: 3
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 0}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 899c54efeace73346a0a16faa3afe726, type: 3}
+  m_Name: Vignette
+  m_EditorClassIdentifier: 
+  active: 1
+  color:
+    m_OverrideState: 1
+    m_Value: {r: 0, g: 0, b: 0, a: 1}
+  center:
+    m_OverrideState: 1
+    m_Value: {x: 0.5, y: 0.5}
+  intensity:
+    m_OverrideState: 1
+    m_Value: 0
+  smoothness:
+    m_OverrideState: 1
+    m_Value: 0.2
+  rounded:
+    m_OverrideState: 1
+    m_Value: 0
+--- !u!114 &9099548931283147545
+MonoBehaviour:
+  m_ObjectHideFlags: 3
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 0}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: fb60a22f311433c4c962b888d1393f88, type: 3}
+  m_Name: PaniniProjection
+  m_EditorClassIdentifier: 
+  active: 1
+  distance:
+    m_OverrideState: 1
+    m_Value: 0
+  cropToFit:
+    m_OverrideState: 1
+    m_Value: 1

+ 8 - 0
Assets/DefaultVolumeProfile.asset.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 3f9215ea0144899419cfbc0957140d3f
+NativeFormatImporter:
+  externalObjects: {}
+  mainObjectFileID: 11400000
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 1057 - 0
Assets/InputSystem_Actions.inputactions

@@ -0,0 +1,1057 @@
+{
+    "name": "InputSystem_Actions",
+    "maps": [
+        {
+            "name": "Player",
+            "id": "df70fa95-8a34-4494-b137-73ab6b9c7d37",
+            "actions": [
+                {
+                    "name": "Move",
+                    "type": "Value",
+                    "id": "351f2ccd-1f9f-44bf-9bec-d62ac5c5f408",
+                    "expectedControlType": "Vector2",
+                    "processors": "",
+                    "interactions": "",
+                    "initialStateCheck": true
+                },
+                {
+                    "name": "Look",
+                    "type": "Value",
+                    "id": "6b444451-8a00-4d00-a97e-f47457f736a8",
+                    "expectedControlType": "Vector2",
+                    "processors": "",
+                    "interactions": "",
+                    "initialStateCheck": true
+                },
+                {
+                    "name": "Attack",
+                    "type": "Button",
+                    "id": "6c2ab1b8-8984-453a-af3d-a3c78ae1679a",
+                    "expectedControlType": "Button",
+                    "processors": "",
+                    "interactions": "",
+                    "initialStateCheck": false
+                },
+                {
+                    "name": "Interact",
+                    "type": "Button",
+                    "id": "852140f2-7766-474d-8707-702459ba45f3",
+                    "expectedControlType": "Button",
+                    "processors": "",
+                    "interactions": "Hold",
+                    "initialStateCheck": false
+                },
+                {
+                    "name": "Crouch",
+                    "type": "Button",
+                    "id": "27c5f898-bc57-4ee1-8800-db469aca5fe3",
+                    "expectedControlType": "Button",
+                    "processors": "",
+                    "interactions": "",
+                    "initialStateCheck": false
+                },
+                {
+                    "name": "Jump",
+                    "type": "Button",
+                    "id": "f1ba0d36-48eb-4cd5-b651-1c94a6531f70",
+                    "expectedControlType": "Button",
+                    "processors": "",
+                    "interactions": "",
+                    "initialStateCheck": false
+                },
+                {
+                    "name": "Previous",
+                    "type": "Button",
+                    "id": "2776c80d-3c14-4091-8c56-d04ced07a2b0",
+                    "expectedControlType": "Button",
+                    "processors": "",
+                    "interactions": "",
+                    "initialStateCheck": false
+                },
+                {
+                    "name": "Next",
+                    "type": "Button",
+                    "id": "b7230bb6-fc9b-4f52-8b25-f5e19cb2c2ba",
+                    "expectedControlType": "Button",
+                    "processors": "",
+                    "interactions": "",
+                    "initialStateCheck": false
+                },
+                {
+                    "name": "Sprint",
+                    "type": "Button",
+                    "id": "641cd816-40e6-41b4-8c3d-04687c349290",
+                    "expectedControlType": "Button",
+                    "processors": "",
+                    "interactions": "",
+                    "initialStateCheck": false
+                }
+            ],
+            "bindings": [
+                {
+                    "name": "",
+                    "id": "978bfe49-cc26-4a3d-ab7b-7d7a29327403",
+                    "path": "<Gamepad>/leftStick",
+                    "interactions": "",
+                    "processors": "",
+                    "groups": ";Gamepad",
+                    "action": "Move",
+                    "isComposite": false,
+                    "isPartOfComposite": false
+                },
+                {
+                    "name": "WASD",
+                    "id": "00ca640b-d935-4593-8157-c05846ea39b3",
+                    "path": "Dpad",
+                    "interactions": "",
+                    "processors": "",
+                    "groups": "",
+                    "action": "Move",
+                    "isComposite": true,
+                    "isPartOfComposite": false
+                },
+                {
+                    "name": "up",
+                    "id": "e2062cb9-1b15-46a2-838c-2f8d72a0bdd9",
+                    "path": "<Keyboard>/w",
+                    "interactions": "",
+                    "processors": "",
+                    "groups": ";Keyboard&Mouse",
+                    "action": "Move",
+                    "isComposite": false,
+                    "isPartOfComposite": true
+                },
+                {
+                    "name": "up",
+                    "id": "8180e8bd-4097-4f4e-ab88-4523101a6ce9",
+                    "path": "<Keyboard>/upArrow",
+                    "interactions": "",
+                    "processors": "",
+                    "groups": ";Keyboard&Mouse",
+                    "action": "Move",
+                    "isComposite": false,
+                    "isPartOfComposite": true
+                },
+                {
+                    "name": "down",
+                    "id": "320bffee-a40b-4347-ac70-c210eb8bc73a",
+                    "path": "<Keyboard>/s",
+                    "interactions": "",
+                    "processors": "",
+                    "groups": ";Keyboard&Mouse",
+                    "action": "Move",
+                    "isComposite": false,
+                    "isPartOfComposite": true
+                },
+                {
+                    "name": "down",
+                    "id": "1c5327b5-f71c-4f60-99c7-4e737386f1d1",
+                    "path": "<Keyboard>/downArrow",
+                    "interactions": "",
+                    "processors": "",
+                    "groups": ";Keyboard&Mouse",
+                    "action": "Move",
+                    "isComposite": false,
+                    "isPartOfComposite": true
+                },
+                {
+                    "name": "left",
+                    "id": "d2581a9b-1d11-4566-b27d-b92aff5fabbc",
+                    "path": "<Keyboard>/a",
+                    "interactions": "",
+                    "processors": "",
+                    "groups": ";Keyboard&Mouse",
+                    "action": "Move",
+                    "isComposite": false,
+                    "isPartOfComposite": true
+                },
+                {
+                    "name": "left",
+                    "id": "2e46982e-44cc-431b-9f0b-c11910bf467a",
+                    "path": "<Keyboard>/leftArrow",
+                    "interactions": "",
+                    "processors": "",
+                    "groups": ";Keyboard&Mouse",
+                    "action": "Move",
+                    "isComposite": false,
+                    "isPartOfComposite": true
+                },
+                {
+                    "name": "right",
+                    "id": "fcfe95b8-67b9-4526-84b5-5d0bc98d6400",
+                    "path": "<Keyboard>/d",
+                    "interactions": "",
+                    "processors": "",
+                    "groups": ";Keyboard&Mouse",
+                    "action": "Move",
+                    "isComposite": false,
+                    "isPartOfComposite": true
+                },
+                {
+                    "name": "right",
+                    "id": "77bff152-3580-4b21-b6de-dcd0c7e41164",
+                    "path": "<Keyboard>/rightArrow",
+                    "interactions": "",
+                    "processors": "",
+                    "groups": ";Keyboard&Mouse",
+                    "action": "Move",
+                    "isComposite": false,
+                    "isPartOfComposite": true
+                },
+                {
+                    "name": "",
+                    "id": "1635d3fe-58b6-4ba9-a4e2-f4b964f6b5c8",
+                    "path": "<XRController>/{Primary2DAxis}",
+                    "interactions": "",
+                    "processors": "",
+                    "groups": "XR",
+                    "action": "Move",
+                    "isComposite": false,
+                    "isPartOfComposite": false
+                },
+                {
+                    "name": "",
+                    "id": "3ea4d645-4504-4529-b061-ab81934c3752",
+                    "path": "<Joystick>/stick",
+                    "interactions": "",
+                    "processors": "",
+                    "groups": "Joystick",
+                    "action": "Move",
+                    "isComposite": false,
+                    "isPartOfComposite": false
+                },
+                {
+                    "name": "",
+                    "id": "c1f7a91b-d0fd-4a62-997e-7fb9b69bf235",
+                    "path": "<Gamepad>/rightStick",
+                    "interactions": "",
+                    "processors": "",
+                    "groups": ";Gamepad",
+                    "action": "Look",
+                    "isComposite": false,
+                    "isPartOfComposite": false
+                },
+                {
+                    "name": "",
+                    "id": "8c8e490b-c610-4785-884f-f04217b23ca4",
+                    "path": "<Pointer>/delta",
+                    "interactions": "",
+                    "processors": "",
+                    "groups": ";Keyboard&Mouse;Touch",
+                    "action": "Look",
+                    "isComposite": false,
+                    "isPartOfComposite": false
+                },
+                {
+                    "name": "",
+                    "id": "3e5f5442-8668-4b27-a940-df99bad7e831",
+                    "path": "<Joystick>/{Hatswitch}",
+                    "interactions": "",
+                    "processors": "",
+                    "groups": "Joystick",
+                    "action": "Look",
+                    "isComposite": false,
+                    "isPartOfComposite": false
+                },
+                {
+                    "name": "",
+                    "id": "143bb1cd-cc10-4eca-a2f0-a3664166fe91",
+                    "path": "<Gamepad>/buttonWest",
+                    "interactions": "",
+                    "processors": "",
+                    "groups": ";Gamepad",
+                    "action": "Attack",
+                    "isComposite": false,
+                    "isPartOfComposite": false
+                },
+                {
+                    "name": "",
+                    "id": "05f6913d-c316-48b2-a6bb-e225f14c7960",
+                    "path": "<Mouse>/leftButton",
+                    "interactions": "",
+                    "processors": "",
+                    "groups": ";Keyboard&Mouse",
+                    "action": "Attack",
+                    "isComposite": false,
+                    "isPartOfComposite": false
+                },
+                {
+                    "name": "",
+                    "id": "886e731e-7071-4ae4-95c0-e61739dad6fd",
+                    "path": "<Touchscreen>/primaryTouch/tap",
+                    "interactions": "",
+                    "processors": "",
+                    "groups": ";Touch",
+                    "action": "Attack",
+                    "isComposite": false,
+                    "isPartOfComposite": false
+                },
+                {
+                    "name": "",
+                    "id": "ee3d0cd2-254e-47a7-a8cb-bc94d9658c54",
+                    "path": "<Joystick>/trigger",
+                    "interactions": "",
+                    "processors": "",
+                    "groups": "Joystick",
+                    "action": "Attack",
+                    "isComposite": false,
+                    "isPartOfComposite": false
+                },
+                {
+                    "name": "",
+                    "id": "8255d333-5683-4943-a58a-ccb207ff1dce",
+                    "path": "<XRController>/{PrimaryAction}",
+                    "interactions": "",
+                    "processors": "",
+                    "groups": "XR",
+                    "action": "Attack",
+                    "isComposite": false,
+                    "isPartOfComposite": false
+                },
+                {
+                    "name": "",
+                    "id": "b3c1c7f0-bd20-4ee7-a0f1-899b24bca6d7",
+                    "path": "<Keyboard>/enter",
+                    "interactions": "",
+                    "processors": "",
+                    "groups": "Keyboard&Mouse",
+                    "action": "Attack",
+                    "isComposite": false,
+                    "isPartOfComposite": false
+                },
+                {
+                    "name": "",
+                    "id": "cbac6039-9c09-46a1-b5f2-4e5124ccb5ed",
+                    "path": "<Keyboard>/2",
+                    "interactions": "",
+                    "processors": "",
+                    "groups": "Keyboard&Mouse",
+                    "action": "Next",
+                    "isComposite": false,
+                    "isPartOfComposite": false
+                },
+                {
+                    "name": "",
+                    "id": "e15ca19d-e649-4852-97d5-7fe8ccc44e94",
+                    "path": "<Gamepad>/dpad/right",
+                    "interactions": "",
+                    "processors": "",
+                    "groups": "Gamepad",
+                    "action": "Next",
+                    "isComposite": false,
+                    "isPartOfComposite": false
+                },
+                {
+                    "name": "",
+                    "id": "f2e9ba44-c423-42a7-ad56-f20975884794",
+                    "path": "<Keyboard>/leftShift",
+                    "interactions": "",
+                    "processors": "",
+                    "groups": "Keyboard&Mouse",
+                    "action": "Sprint",
+                    "isComposite": false,
+                    "isPartOfComposite": false
+                },
+                {
+                    "name": "",
+                    "id": "8cbb2f4b-a784-49cc-8d5e-c010b8c7f4e6",
+                    "path": "<Gamepad>/leftStickPress",
+                    "interactions": "",
+                    "processors": "",
+                    "groups": "Gamepad",
+                    "action": "Sprint",
+                    "isComposite": false,
+                    "isPartOfComposite": false
+                },
+                {
+                    "name": "",
+                    "id": "d8bf24bf-3f2f-4160-a97c-38ec1eb520ba",
+                    "path": "<XRController>/trigger",
+                    "interactions": "",
+                    "processors": "",
+                    "groups": "XR",
+                    "action": "Sprint",
+                    "isComposite": false,
+                    "isPartOfComposite": false
+                },
+                {
+                    "name": "",
+                    "id": "eb40bb66-4559-4dfa-9a2f-820438abb426",
+                    "path": "<Keyboard>/space",
+                    "interactions": "",
+                    "processors": "",
+                    "groups": "Keyboard&Mouse",
+                    "action": "Jump",
+                    "isComposite": false,
+                    "isPartOfComposite": false
+                },
+                {
+                    "name": "",
+                    "id": "daba33a1-ad0c-4742-a909-43ad1cdfbeb6",
+                    "path": "<Gamepad>/buttonSouth",
+                    "interactions": "",
+                    "processors": "",
+                    "groups": "Gamepad",
+                    "action": "Jump",
+                    "isComposite": false,
+                    "isPartOfComposite": false
+                },
+                {
+                    "name": "",
+                    "id": "603f3daf-40bd-4854-8724-93e8017f59e3",
+                    "path": "<XRController>/secondaryButton",
+                    "interactions": "",
+                    "processors": "",
+                    "groups": "XR",
+                    "action": "Jump",
+                    "isComposite": false,
+                    "isPartOfComposite": false
+                },
+                {
+                    "name": "",
+                    "id": "1534dc16-a6aa-499d-9c3a-22b47347b52a",
+                    "path": "<Keyboard>/1",
+                    "interactions": "",
+                    "processors": "",
+                    "groups": "Keyboard&Mouse",
+                    "action": "Previous",
+                    "isComposite": false,
+                    "isPartOfComposite": false
+                },
+                {
+                    "name": "",
+                    "id": "25060bbd-a3a6-476e-8fba-45ae484aad05",
+                    "path": "<Gamepad>/dpad/left",
+                    "interactions": "",
+                    "processors": "",
+                    "groups": "Gamepad",
+                    "action": "Previous",
+                    "isComposite": false,
+                    "isPartOfComposite": false
+                },
+                {
+                    "name": "",
+                    "id": "1c04ea5f-b012-41d1-a6f7-02e963b52893",
+                    "path": "<Keyboard>/e",
+                    "interactions": "",
+                    "processors": "",
+                    "groups": "Keyboard&Mouse",
+                    "action": "Interact",
+                    "isComposite": false,
+                    "isPartOfComposite": false
+                },
+                {
+                    "name": "",
+                    "id": "b3f66d0b-7751-423f-908b-a11c5bd95930",
+                    "path": "<Gamepad>/buttonNorth",
+                    "interactions": "",
+                    "processors": "",
+                    "groups": "Gamepad",
+                    "action": "Interact",
+                    "isComposite": false,
+                    "isPartOfComposite": false
+                },
+                {
+                    "name": "",
+                    "id": "4f4649ac-64a8-4a73-af11-b3faef356a4d",
+                    "path": "<Gamepad>/buttonEast",
+                    "interactions": "",
+                    "processors": "",
+                    "groups": "Gamepad",
+                    "action": "Crouch",
+                    "isComposite": false,
+                    "isPartOfComposite": false
+                },
+                {
+                    "name": "",
+                    "id": "36e52cba-0905-478e-a818-f4bfcb9f3b9a",
+                    "path": "<Keyboard>/c",
+                    "interactions": "",
+                    "processors": "",
+                    "groups": "Keyboard&Mouse",
+                    "action": "Crouch",
+                    "isComposite": false,
+                    "isPartOfComposite": false
+                }
+            ]
+        },
+        {
+            "name": "UI",
+            "id": "272f6d14-89ba-496f-b7ff-215263d3219f",
+            "actions": [
+                {
+                    "name": "Navigate",
+                    "type": "PassThrough",
+                    "id": "c95b2375-e6d9-4b88-9c4c-c5e76515df4b",
+                    "expectedControlType": "Vector2",
+                    "processors": "",
+                    "interactions": "",
+                    "initialStateCheck": false
+                },
+                {
+                    "name": "Submit",
+                    "type": "Button",
+                    "id": "7607c7b6-cd76-4816-beef-bd0341cfe950",
+                    "expectedControlType": "Button",
+                    "processors": "",
+                    "interactions": "",
+                    "initialStateCheck": false
+                },
+                {
+                    "name": "Cancel",
+                    "type": "Button",
+                    "id": "15cef263-9014-4fd5-94d9-4e4a6234a6ef",
+                    "expectedControlType": "Button",
+                    "processors": "",
+                    "interactions": "",
+                    "initialStateCheck": false
+                },
+                {
+                    "name": "Point",
+                    "type": "PassThrough",
+                    "id": "32b35790-4ed0-4e9a-aa41-69ac6d629449",
+                    "expectedControlType": "Vector2",
+                    "processors": "",
+                    "interactions": "",
+                    "initialStateCheck": true
+                },
+                {
+                    "name": "Click",
+                    "type": "PassThrough",
+                    "id": "3c7022bf-7922-4f7c-a998-c437916075ad",
+                    "expectedControlType": "Button",
+                    "processors": "",
+                    "interactions": "",
+                    "initialStateCheck": true
+                },
+                {
+                    "name": "RightClick",
+                    "type": "PassThrough",
+                    "id": "44b200b1-1557-4083-816c-b22cbdf77ddf",
+                    "expectedControlType": "Button",
+                    "processors": "",
+                    "interactions": "",
+                    "initialStateCheck": false
+                },
+                {
+                    "name": "MiddleClick",
+                    "type": "PassThrough",
+                    "id": "dad70c86-b58c-4b17-88ad-f5e53adf419e",
+                    "expectedControlType": "Button",
+                    "processors": "",
+                    "interactions": "",
+                    "initialStateCheck": false
+                },
+                {
+                    "name": "ScrollWheel",
+                    "type": "PassThrough",
+                    "id": "0489e84a-4833-4c40-bfae-cea84b696689",
+                    "expectedControlType": "Vector2",
+                    "processors": "",
+                    "interactions": "",
+                    "initialStateCheck": false
+                },
+                {
+                    "name": "TrackedDevicePosition",
+                    "type": "PassThrough",
+                    "id": "24908448-c609-4bc3-a128-ea258674378a",
+                    "expectedControlType": "Vector3",
+                    "processors": "",
+                    "interactions": "",
+                    "initialStateCheck": false
+                },
+                {
+                    "name": "TrackedDeviceOrientation",
+                    "type": "PassThrough",
+                    "id": "9caa3d8a-6b2f-4e8e-8bad-6ede561bd9be",
+                    "expectedControlType": "Quaternion",
+                    "processors": "",
+                    "interactions": "",
+                    "initialStateCheck": false
+                }
+            ],
+            "bindings": [
+                {
+                    "name": "Gamepad",
+                    "id": "809f371f-c5e2-4e7a-83a1-d867598f40dd",
+                    "path": "2DVector",
+                    "interactions": "",
+                    "processors": "",
+                    "groups": "",
+                    "action": "Navigate",
+                    "isComposite": true,
+                    "isPartOfComposite": false
+                },
+                {
+                    "name": "up",
+                    "id": "14a5d6e8-4aaf-4119-a9ef-34b8c2c548bf",
+                    "path": "<Gamepad>/leftStick/up",
+                    "interactions": "",
+                    "processors": "",
+                    "groups": ";Gamepad",
+                    "action": "Navigate",
+                    "isComposite": false,
+                    "isPartOfComposite": true
+                },
+                {
+                    "name": "up",
+                    "id": "9144cbe6-05e1-4687-a6d7-24f99d23dd81",
+                    "path": "<Gamepad>/rightStick/up",
+                    "interactions": "",
+                    "processors": "",
+                    "groups": ";Gamepad",
+                    "action": "Navigate",
+                    "isComposite": false,
+                    "isPartOfComposite": true
+                },
+                {
+                    "name": "down",
+                    "id": "2db08d65-c5fb-421b-983f-c71163608d67",
+                    "path": "<Gamepad>/leftStick/down",
+                    "interactions": "",
+                    "processors": "",
+                    "groups": ";Gamepad",
+                    "action": "Navigate",
+                    "isComposite": false,
+                    "isPartOfComposite": true
+                },
+                {
+                    "name": "down",
+                    "id": "58748904-2ea9-4a80-8579-b500e6a76df8",
+                    "path": "<Gamepad>/rightStick/down",
+                    "interactions": "",
+                    "processors": "",
+                    "groups": ";Gamepad",
+                    "action": "Navigate",
+                    "isComposite": false,
+                    "isPartOfComposite": true
+                },
+                {
+                    "name": "left",
+                    "id": "8ba04515-75aa-45de-966d-393d9bbd1c14",
+                    "path": "<Gamepad>/leftStick/left",
+                    "interactions": "",
+                    "processors": "",
+                    "groups": ";Gamepad",
+                    "action": "Navigate",
+                    "isComposite": false,
+                    "isPartOfComposite": true
+                },
+                {
+                    "name": "left",
+                    "id": "712e721c-bdfb-4b23-a86c-a0d9fcfea921",
+                    "path": "<Gamepad>/rightStick/left",
+                    "interactions": "",
+                    "processors": "",
+                    "groups": ";Gamepad",
+                    "action": "Navigate",
+                    "isComposite": false,
+                    "isPartOfComposite": true
+                },
+                {
+                    "name": "right",
+                    "id": "fcd248ae-a788-4676-a12e-f4d81205600b",
+                    "path": "<Gamepad>/leftStick/right",
+                    "interactions": "",
+                    "processors": "",
+                    "groups": ";Gamepad",
+                    "action": "Navigate",
+                    "isComposite": false,
+                    "isPartOfComposite": true
+                },
+                {
+                    "name": "right",
+                    "id": "1f04d9bc-c50b-41a1-bfcc-afb75475ec20",
+                    "path": "<Gamepad>/rightStick/right",
+                    "interactions": "",
+                    "processors": "",
+                    "groups": ";Gamepad",
+                    "action": "Navigate",
+                    "isComposite": false,
+                    "isPartOfComposite": true
+                },
+                {
+                    "name": "",
+                    "id": "fb8277d4-c5cd-4663-9dc7-ee3f0b506d90",
+                    "path": "<Gamepad>/dpad",
+                    "interactions": "",
+                    "processors": "",
+                    "groups": ";Gamepad",
+                    "action": "Navigate",
+                    "isComposite": false,
+                    "isPartOfComposite": false
+                },
+                {
+                    "name": "Joystick",
+                    "id": "e25d9774-381c-4a61-b47c-7b6b299ad9f9",
+                    "path": "2DVector",
+                    "interactions": "",
+                    "processors": "",
+                    "groups": "",
+                    "action": "Navigate",
+                    "isComposite": true,
+                    "isPartOfComposite": false
+                },
+                {
+                    "name": "up",
+                    "id": "3db53b26-6601-41be-9887-63ac74e79d19",
+                    "path": "<Joystick>/stick/up",
+                    "interactions": "",
+                    "processors": "",
+                    "groups": "Joystick",
+                    "action": "Navigate",
+                    "isComposite": false,
+                    "isPartOfComposite": true
+                },
+                {
+                    "name": "down",
+                    "id": "0cb3e13e-3d90-4178-8ae6-d9c5501d653f",
+                    "path": "<Joystick>/stick/down",
+                    "interactions": "",
+                    "processors": "",
+                    "groups": "Joystick",
+                    "action": "Navigate",
+                    "isComposite": false,
+                    "isPartOfComposite": true
+                },
+                {
+                    "name": "left",
+                    "id": "0392d399-f6dd-4c82-8062-c1e9c0d34835",
+                    "path": "<Joystick>/stick/left",
+                    "interactions": "",
+                    "processors": "",
+                    "groups": "Joystick",
+                    "action": "Navigate",
+                    "isComposite": false,
+                    "isPartOfComposite": true
+                },
+                {
+                    "name": "right",
+                    "id": "942a66d9-d42f-43d6-8d70-ecb4ba5363bc",
+                    "path": "<Joystick>/stick/right",
+                    "interactions": "",
+                    "processors": "",
+                    "groups": "Joystick",
+                    "action": "Navigate",
+                    "isComposite": false,
+                    "isPartOfComposite": true
+                },
+                {
+                    "name": "Keyboard",
+                    "id": "ff527021-f211-4c02-933e-5976594c46ed",
+                    "path": "2DVector",
+                    "interactions": "",
+                    "processors": "",
+                    "groups": "",
+                    "action": "Navigate",
+                    "isComposite": true,
+                    "isPartOfComposite": false
+                },
+                {
+                    "name": "up",
+                    "id": "563fbfdd-0f09-408d-aa75-8642c4f08ef0",
+                    "path": "<Keyboard>/w",
+                    "interactions": "",
+                    "processors": "",
+                    "groups": "Keyboard&Mouse",
+                    "action": "Navigate",
+                    "isComposite": false,
+                    "isPartOfComposite": true
+                },
+                {
+                    "name": "up",
+                    "id": "eb480147-c587-4a33-85ed-eb0ab9942c43",
+                    "path": "<Keyboard>/upArrow",
+                    "interactions": "",
+                    "processors": "",
+                    "groups": "Keyboard&Mouse",
+                    "action": "Navigate",
+                    "isComposite": false,
+                    "isPartOfComposite": true
+                },
+                {
+                    "name": "down",
+                    "id": "2bf42165-60bc-42ca-8072-8c13ab40239b",
+                    "path": "<Keyboard>/s",
+                    "interactions": "",
+                    "processors": "",
+                    "groups": "Keyboard&Mouse",
+                    "action": "Navigate",
+                    "isComposite": false,
+                    "isPartOfComposite": true
+                },
+                {
+                    "name": "down",
+                    "id": "85d264ad-e0a0-4565-b7ff-1a37edde51ac",
+                    "path": "<Keyboard>/downArrow",
+                    "interactions": "",
+                    "processors": "",
+                    "groups": "Keyboard&Mouse",
+                    "action": "Navigate",
+                    "isComposite": false,
+                    "isPartOfComposite": true
+                },
+                {
+                    "name": "left",
+                    "id": "74214943-c580-44e4-98eb-ad7eebe17902",
+                    "path": "<Keyboard>/a",
+                    "interactions": "",
+                    "processors": "",
+                    "groups": "Keyboard&Mouse",
+                    "action": "Navigate",
+                    "isComposite": false,
+                    "isPartOfComposite": true
+                },
+                {
+                    "name": "left",
+                    "id": "cea9b045-a000-445b-95b8-0c171af70a3b",
+                    "path": "<Keyboard>/leftArrow",
+                    "interactions": "",
+                    "processors": "",
+                    "groups": "Keyboard&Mouse",
+                    "action": "Navigate",
+                    "isComposite": false,
+                    "isPartOfComposite": true
+                },
+                {
+                    "name": "right",
+                    "id": "8607c725-d935-4808-84b1-8354e29bab63",
+                    "path": "<Keyboard>/d",
+                    "interactions": "",
+                    "processors": "",
+                    "groups": "Keyboard&Mouse",
+                    "action": "Navigate",
+                    "isComposite": false,
+                    "isPartOfComposite": true
+                },
+                {
+                    "name": "right",
+                    "id": "4cda81dc-9edd-4e03-9d7c-a71a14345d0b",
+                    "path": "<Keyboard>/rightArrow",
+                    "interactions": "",
+                    "processors": "",
+                    "groups": "Keyboard&Mouse",
+                    "action": "Navigate",
+                    "isComposite": false,
+                    "isPartOfComposite": true
+                },
+                {
+                    "name": "",
+                    "id": "9e92bb26-7e3b-4ec4-b06b-3c8f8e498ddc",
+                    "path": "*/{Submit}",
+                    "interactions": "",
+                    "processors": "",
+                    "groups": "Keyboard&Mouse;Gamepad;Touch;Joystick;XR",
+                    "action": "Submit",
+                    "isComposite": false,
+                    "isPartOfComposite": false
+                },
+                {
+                    "name": "",
+                    "id": "82627dcc-3b13-4ba9-841d-e4b746d6553e",
+                    "path": "*/{Cancel}",
+                    "interactions": "",
+                    "processors": "",
+                    "groups": "Keyboard&Mouse;Gamepad;Touch;Joystick;XR",
+                    "action": "Cancel",
+                    "isComposite": false,
+                    "isPartOfComposite": false
+                },
+                {
+                    "name": "",
+                    "id": "c52c8e0b-8179-41d3-b8a1-d149033bbe86",
+                    "path": "<Mouse>/position",
+                    "interactions": "",
+                    "processors": "",
+                    "groups": "Keyboard&Mouse",
+                    "action": "Point",
+                    "isComposite": false,
+                    "isPartOfComposite": false
+                },
+                {
+                    "name": "",
+                    "id": "e1394cbc-336e-44ce-9ea8-6007ed6193f7",
+                    "path": "<Pen>/position",
+                    "interactions": "",
+                    "processors": "",
+                    "groups": "Keyboard&Mouse",
+                    "action": "Point",
+                    "isComposite": false,
+                    "isPartOfComposite": false
+                },
+                {
+                    "name": "",
+                    "id": "5693e57a-238a-46ed-b5ae-e64e6e574302",
+                    "path": "<Touchscreen>/touch*/position",
+                    "interactions": "",
+                    "processors": "",
+                    "groups": "Touch",
+                    "action": "Point",
+                    "isComposite": false,
+                    "isPartOfComposite": false
+                },
+                {
+                    "name": "",
+                    "id": "4faf7dc9-b979-4210-aa8c-e808e1ef89f5",
+                    "path": "<Mouse>/leftButton",
+                    "interactions": "",
+                    "processors": "",
+                    "groups": ";Keyboard&Mouse",
+                    "action": "Click",
+                    "isComposite": false,
+                    "isPartOfComposite": false
+                },
+                {
+                    "name": "",
+                    "id": "8d66d5ba-88d7-48e6-b1cd-198bbfef7ace",
+                    "path": "<Pen>/tip",
+                    "interactions": "",
+                    "processors": "",
+                    "groups": ";Keyboard&Mouse",
+                    "action": "Click",
+                    "isComposite": false,
+                    "isPartOfComposite": false
+                },
+                {
+                    "name": "",
+                    "id": "47c2a644-3ebc-4dae-a106-589b7ca75b59",
+                    "path": "<Touchscreen>/touch*/press",
+                    "interactions": "",
+                    "processors": "",
+                    "groups": "Touch",
+                    "action": "Click",
+                    "isComposite": false,
+                    "isPartOfComposite": false
+                },
+                {
+                    "name": "",
+                    "id": "bb9e6b34-44bf-4381-ac63-5aa15d19f677",
+                    "path": "<XRController>/trigger",
+                    "interactions": "",
+                    "processors": "",
+                    "groups": "XR",
+                    "action": "Click",
+                    "isComposite": false,
+                    "isPartOfComposite": false
+                },
+                {
+                    "name": "",
+                    "id": "38c99815-14ea-4617-8627-164d27641299",
+                    "path": "<Mouse>/scroll",
+                    "interactions": "",
+                    "processors": "",
+                    "groups": ";Keyboard&Mouse",
+                    "action": "ScrollWheel",
+                    "isComposite": false,
+                    "isPartOfComposite": false
+                },
+                {
+                    "name": "",
+                    "id": "4c191405-5738-4d4b-a523-c6a301dbf754",
+                    "path": "<Mouse>/rightButton",
+                    "interactions": "",
+                    "processors": "",
+                    "groups": "Keyboard&Mouse",
+                    "action": "RightClick",
+                    "isComposite": false,
+                    "isPartOfComposite": false
+                },
+                {
+                    "name": "",
+                    "id": "24066f69-da47-44f3-a07e-0015fb02eb2e",
+                    "path": "<Mouse>/middleButton",
+                    "interactions": "",
+                    "processors": "",
+                    "groups": "Keyboard&Mouse",
+                    "action": "MiddleClick",
+                    "isComposite": false,
+                    "isPartOfComposite": false
+                },
+                {
+                    "name": "",
+                    "id": "7236c0d9-6ca3-47cf-a6ee-a97f5b59ea77",
+                    "path": "<XRController>/devicePosition",
+                    "interactions": "",
+                    "processors": "",
+                    "groups": "XR",
+                    "action": "TrackedDevicePosition",
+                    "isComposite": false,
+                    "isPartOfComposite": false
+                },
+                {
+                    "name": "",
+                    "id": "23e01e3a-f935-4948-8d8b-9bcac77714fb",
+                    "path": "<XRController>/deviceRotation",
+                    "interactions": "",
+                    "processors": "",
+                    "groups": "XR",
+                    "action": "TrackedDeviceOrientation",
+                    "isComposite": false,
+                    "isPartOfComposite": false
+                }
+            ]
+        }
+    ],
+    "controlSchemes": [
+        {
+            "name": "Keyboard&Mouse",
+            "bindingGroup": "Keyboard&Mouse",
+            "devices": [
+                {
+                    "devicePath": "<Keyboard>",
+                    "isOptional": false,
+                    "isOR": false
+                },
+                {
+                    "devicePath": "<Mouse>",
+                    "isOptional": false,
+                    "isOR": false
+                }
+            ]
+        },
+        {
+            "name": "Gamepad",
+            "bindingGroup": "Gamepad",
+            "devices": [
+                {
+                    "devicePath": "<Gamepad>",
+                    "isOptional": false,
+                    "isOR": false
+                }
+            ]
+        },
+        {
+            "name": "Touch",
+            "bindingGroup": "Touch",
+            "devices": [
+                {
+                    "devicePath": "<Touchscreen>",
+                    "isOptional": false,
+                    "isOR": false
+                }
+            ]
+        },
+        {
+            "name": "Joystick",
+            "bindingGroup": "Joystick",
+            "devices": [
+                {
+                    "devicePath": "<Joystick>",
+                    "isOptional": false,
+                    "isOR": false
+                }
+            ]
+        },
+        {
+            "name": "XR",
+            "bindingGroup": "XR",
+            "devices": [
+                {
+                    "devicePath": "<XRController>",
+                    "isOptional": false,
+                    "isOR": false
+                }
+            ]
+        }
+    ]
+}

+ 14 - 0
Assets/InputSystem_Actions.inputactions.meta

@@ -0,0 +1,14 @@
+fileFormatVersion: 2
+guid: 2bcd2660ca9b64942af0de543d8d7100
+ScriptedImporter:
+  internalIDToNameTable: []
+  externalObjects: {}
+  serializedVersion: 2
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
+  script: {fileID: 11500000, guid: 8404be70184654265930450def6a9037, type: 3}
+  generateWrapperCode: 0
+  wrapperCodePath: 
+  wrapperClassName: 
+  wrapperCodeNamespace: 

+ 8 - 0
Assets/Material.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 2916912fc4bfe114ab10025aadfff6b8
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 51 - 0
Assets/Material/FloorMaterial.mat

@@ -0,0 +1,51 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!21 &2100000
+Material:
+  serializedVersion: 8
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_Name: FloorMaterial
+  m_Shader: {fileID: 10755, guid: 0000000000000000f000000000000000, type: 0}
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
+  m_LightmapFlags: 4
+  m_EnableInstancingVariants: 0
+  m_DoubleSidedGI: 0
+  m_CustomRenderQueue: -1
+  stringTagMap: {}
+  disabledShaderPasses: []
+  m_LockedProperties: 
+  m_SavedProperties:
+    serializedVersion: 3
+    m_TexEnvs:
+    - _AlphaTex:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - _MainTex:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - _MaskTex:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - _NormalMap:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    m_Ints: []
+    m_Floats:
+    - PixelSnap: 0
+    - _EnableExternalAlpha: 0
+    - _ZWrite: 0
+    m_Colors:
+    - _Color: {r: 0.26415092, g: 0.16073334, b: 0.16073334, a: 1}
+    - _RendererColor: {r: 1, g: 1, b: 1, a: 1}
+  m_BuildTextureStacks: []
+  m_AllowLocking: 1

+ 8 - 0
Assets/Material/FloorMaterial.mat.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 1513aa2e33d15a547a61f5f993ad2f83
+NativeFormatImporter:
+  externalObjects: {}
+  mainObjectFileID: 2100000
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 221 - 0
Assets/Material/WallMaterial.mat

@@ -0,0 +1,221 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &-5795123682282388159
+MonoBehaviour:
+  m_ObjectHideFlags: 11
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 0}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: Unity.RenderPipelines.Universal.Editor::UnityEditor.Rendering.Universal.AssetVersion
+  version: 10
+--- !u!21 &2100000
+Material:
+  serializedVersion: 8
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_Name: WallMaterial
+  m_Shader: {fileID: 4800000, guid: 650dd9526735d5b46b79224bc6e94025, type: 3}
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
+  m_LightmapFlags: 4
+  m_EnableInstancingVariants: 0
+  m_DoubleSidedGI: 0
+  m_CustomRenderQueue: -1
+  stringTagMap:
+    RenderType: Opaque
+  disabledShaderPasses:
+  - MOTIONVECTORS
+  m_LockedProperties: 
+  m_SavedProperties:
+    serializedVersion: 3
+    m_TexEnvs:
+    - _AlphaTex:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - _BaseMap:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - _BumpMap:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - _Control:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - _DetailAlbedoMap:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - _DetailMask:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - _DetailNormalMap:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - _EmissionMap:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - _MainTex:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - _Mask0:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - _Mask1:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - _Mask2:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - _Mask3:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - _MaskTex:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - _MetallicGlossMap:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - _Normal0:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - _Normal1:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - _Normal2:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - _Normal3:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - _NormalMap:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - _OcclusionMap:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - _ParallaxMap:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - _SpecGlossMap:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - _Splat0:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - _Splat1:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - _Splat2:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - _Splat3:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - _TerrainHolesTexture:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - unity_Lightmaps:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - unity_LightmapsInd:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - unity_ShadowMasks:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    m_Ints: []
+    m_Floats:
+    - _AddPrecomputedVelocity: 0
+    - _AlphaClip: 0
+    - _AlphaToMask: 0
+    - _Blend: 0
+    - _BlendModePreserveSpecular: 1
+    - _BlendOp: 0
+    - _BumpScale: 1
+    - _ClearCoatMask: 0
+    - _ClearCoatSmoothness: 0
+    - _Cull: 2
+    - _Cutoff: 0.5
+    - _DetailAlbedoMapScale: 1
+    - _DetailNormalMapScale: 1
+    - _DstBlend: 0
+    - _DstBlendAlpha: 0
+    - _EnableExternalAlpha: 0
+    - _EnableHeightBlend: 0
+    - _EnableInstancedPerPixelNormal: 1
+    - _EnvironmentReflections: 1
+    - _GlossMapScale: 0
+    - _Glossiness: 0
+    - _GlossyReflections: 0
+    - _HeightTransition: 0
+    - _Metallic: 0
+    - _Metallic0: 0
+    - _Metallic1: 0
+    - _Metallic2: 0
+    - _Metallic3: 0
+    - _NumLayersCount: 1
+    - _OcclusionStrength: 1
+    - _Parallax: 0.005
+    - _QueueOffset: 0
+    - _ReceiveShadows: 1
+    - _SampleGI: 0
+    - _Smoothness: 0.5
+    - _Smoothness0: 0.5
+    - _Smoothness1: 0.5
+    - _Smoothness2: 0.5
+    - _Smoothness3: 0.5
+    - _SmoothnessTextureChannel: 0
+    - _SpecularHighlights: 1
+    - _SrcBlend: 1
+    - _SrcBlendAlpha: 1
+    - _Surface: 0
+    - _WorkflowMode: 0
+    - _XRMotionVectorsPass: 1
+    - _ZWrite: 1
+    m_Colors:
+    - _BaseColor: {r: 0.754717, g: 0.52331793, b: 0.52331793, a: 1}
+    - _Color: {r: 0.75471693, g: 0.5233179, b: 0.5233179, a: 1}
+    - _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
+    - _RendererColor: {r: 1, g: 1, b: 1, a: 1}
+    - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1}
+  m_BuildTextureStacks: []
+  m_AllowLocking: 1

+ 8 - 0
Assets/Material/WallMaterial.mat.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: e96a8b0661d20c34b9ea1152974134fa
+NativeFormatImporter:
+  externalObjects: {}
+  mainObjectFileID: 2100000
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 8 - 0
Assets/Prefabs.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: c21eaf93ce9cc094db975bdd375518ec
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 8 - 0
Assets/Scenes.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 109e9bdd0fcc649c5bc59085c35bdc83
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 352 - 0
Assets/Scenes/SampleScene.unity

@@ -0,0 +1,352 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!29 &1
+OcclusionCullingSettings:
+  m_ObjectHideFlags: 0
+  serializedVersion: 2
+  m_OcclusionBakeSettings:
+    smallestOccluder: 5
+    smallestHole: 0.25
+    backfaceThreshold: 100
+  m_SceneGUID: 00000000000000000000000000000000
+  m_OcclusionCullingData: {fileID: 0}
+--- !u!104 &2
+RenderSettings:
+  m_ObjectHideFlags: 0
+  serializedVersion: 9
+  m_Fog: 0
+  m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}
+  m_FogMode: 3
+  m_FogDensity: 0.01
+  m_LinearFogStart: 0
+  m_LinearFogEnd: 300
+  m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1}
+  m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1}
+  m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1}
+  m_AmbientIntensity: 1
+  m_AmbientMode: 3
+  m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1}
+  m_SkyboxMaterial: {fileID: 0}
+  m_HaloStrength: 0.5
+  m_FlareStrength: 1
+  m_FlareFadeSpeed: 3
+  m_HaloTexture: {fileID: 0}
+  m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0}
+  m_DefaultReflectionMode: 0
+  m_DefaultReflectionResolution: 128
+  m_ReflectionBounces: 1
+  m_ReflectionIntensity: 1
+  m_CustomReflection: {fileID: 0}
+  m_Sun: {fileID: 0}
+  m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1}
+  m_UseRadianceAmbientProbe: 0
+--- !u!157 &3
+LightmapSettings:
+  m_ObjectHideFlags: 0
+  serializedVersion: 12
+  m_GIWorkflowMode: 1
+  m_GISettings:
+    serializedVersion: 2
+    m_BounceScale: 1
+    m_IndirectOutputScale: 1
+    m_AlbedoBoost: 1
+    m_EnvironmentLightingMode: 0
+    m_EnableBakedLightmaps: 0
+    m_EnableRealtimeLightmaps: 0
+  m_LightmapEditorSettings:
+    serializedVersion: 12
+    m_Resolution: 2
+    m_BakeResolution: 40
+    m_AtlasSize: 1024
+    m_AO: 0
+    m_AOMaxDistance: 1
+    m_CompAOExponent: 1
+    m_CompAOExponentDirect: 0
+    m_ExtractAmbientOcclusion: 0
+    m_Padding: 2
+    m_LightmapParameters: {fileID: 0}
+    m_LightmapsBakeMode: 1
+    m_TextureCompression: 1
+    m_FinalGather: 0
+    m_FinalGatherFiltering: 1
+    m_FinalGatherRayCount: 256
+    m_ReflectionCompression: 2
+    m_MixedBakeMode: 2
+    m_BakeBackend: 1
+    m_PVRSampling: 1
+    m_PVRDirectSampleCount: 32
+    m_PVRSampleCount: 512
+    m_PVRBounces: 2
+    m_PVREnvironmentSampleCount: 256
+    m_PVREnvironmentReferencePointCount: 2048
+    m_PVRFilteringMode: 1
+    m_PVRDenoiserTypeDirect: 1
+    m_PVRDenoiserTypeIndirect: 1
+    m_PVRDenoiserTypeAO: 1
+    m_PVRFilterTypeDirect: 0
+    m_PVRFilterTypeIndirect: 0
+    m_PVRFilterTypeAO: 0
+    m_PVREnvironmentMIS: 1
+    m_PVRCulling: 1
+    m_PVRFilteringGaussRadiusDirect: 1
+    m_PVRFilteringGaussRadiusIndirect: 5
+    m_PVRFilteringGaussRadiusAO: 2
+    m_PVRFilteringAtrousPositionSigmaDirect: 0.5
+    m_PVRFilteringAtrousPositionSigmaIndirect: 2
+    m_PVRFilteringAtrousPositionSigmaAO: 1
+    m_ExportTrainingData: 0
+    m_TrainingDataDestination: TrainingData
+    m_LightProbeSampleCountMultiplier: 4
+  m_LightingDataAsset: {fileID: 0}
+  m_LightingSettings: {fileID: 0}
+--- !u!196 &4
+NavMeshSettings:
+  serializedVersion: 2
+  m_ObjectHideFlags: 0
+  m_BuildSettings:
+    serializedVersion: 2
+    agentTypeID: 0
+    agentRadius: 0.5
+    agentHeight: 2
+    agentSlope: 45
+    agentClimb: 0.4
+    ledgeDropHeight: 0
+    maxJumpAcrossDistance: 0
+    minRegionArea: 2
+    manualCellSize: 0
+    cellSize: 0.16666667
+    manualTileSize: 0
+    tileSize: 256
+    accuratePlacement: 0
+    maxJobWorkers: 0
+    preserveTilesOutsideBounds: 0
+    debug:
+      m_Flags: 0
+  m_NavMeshData: {fileID: 0}
+--- !u!1 &519420028
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 519420032}
+  - component: {fileID: 519420031}
+  - component: {fileID: 519420029}
+  - component: {fileID: 519420030}
+  m_Layer: 0
+  m_Name: Main Camera
+  m_TagString: MainCamera
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!81 &519420029
+AudioListener:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 519420028}
+  m_Enabled: 1
+--- !u!114 &519420030
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 519420028}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: a79441f348de89743a2939f4d699eac1, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_RenderShadows: 1
+  m_RequiresDepthTextureOption: 2
+  m_RequiresOpaqueTextureOption: 2
+  m_CameraType: 0
+  m_Cameras: []
+  m_RendererIndex: -1
+  m_VolumeLayerMask:
+    serializedVersion: 2
+    m_Bits: 1
+  m_VolumeTrigger: {fileID: 0}
+  m_RenderPostProcessing: 0
+  m_Antialiasing: 0
+  m_AntialiasingQuality: 2
+  m_StopNaN: 0
+  m_Dithering: 0
+  m_ClearDepth: 1
+  m_AllowXRRendering: 1
+  m_RequiresDepthTexture: 0
+  m_RequiresColorTexture: 0
+  m_Version: 2
+--- !u!20 &519420031
+Camera:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 519420028}
+  m_Enabled: 1
+  serializedVersion: 2
+  m_ClearFlags: 2
+  m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0}
+  m_projectionMatrixMode: 1
+  m_GateFitMode: 2
+  m_FOVAxisMode: 0
+  m_SensorSize: {x: 36, y: 24}
+  m_LensShift: {x: 0, y: 0}
+  m_FocalLength: 50
+  m_NormalizedViewPortRect:
+    serializedVersion: 2
+    x: 0
+    y: 0
+    width: 1
+    height: 1
+  near clip plane: 0.3
+  far clip plane: 1000
+  field of view: 34
+  orthographic: 1
+  orthographic size: 5
+  m_Depth: -1
+  m_CullingMask:
+    serializedVersion: 2
+    m_Bits: 4294967295
+  m_RenderingPath: -1
+  m_TargetTexture: {fileID: 0}
+  m_TargetDisplay: 0
+  m_TargetEye: 0
+  m_HDR: 1
+  m_AllowMSAA: 0
+  m_AllowDynamicResolution: 0
+  m_ForceIntoRT: 0
+  m_OcclusionCulling: 0
+  m_StereoConvergence: 10
+  m_StereoSeparation: 0.022
+--- !u!4 &519420032
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 519420028}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: -10}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_ConstrainProportionsScale: 0
+  m_Children: []
+  m_Father: {fileID: 0}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &619394800
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 619394802}
+  - component: {fileID: 619394801}
+  m_Layer: 0
+  m_Name: Global Light 2D
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!114 &619394801
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 619394800}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 073797afb82c5a1438f328866b10b3f0, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_ComponentVersion: 1
+  m_LightType: 4
+  m_BlendStyleIndex: 0
+  m_FalloffIntensity: 0.5
+  m_Color: {r: 1, g: 1, b: 1, a: 1}
+  m_Intensity: 1
+  m_LightVolumeIntensity: 1
+  m_LightVolumeIntensityEnabled: 0
+  m_ApplyToSortingLayers: 00000000
+  m_LightCookieSprite: {fileID: 0}
+  m_DeprecatedPointLightCookieSprite: {fileID: 0}
+  m_LightOrder: 0
+  m_OverlapOperation: 0
+  m_NormalMapDistance: 3
+  m_NormalMapQuality: 2
+  m_UseNormalMap: 0
+  m_ShadowIntensityEnabled: 0
+  m_ShadowIntensity: 0.75
+  m_ShadowVolumeIntensityEnabled: 0
+  m_ShadowVolumeIntensity: 0.75
+  m_Vertices:
+  - position: {x: 0.9985302, y: 0.9985302, z: 0}
+    color: {r: 0.70710677, g: 0.70710677, b: 0, a: 0}
+    uv: {x: 0, y: 0}
+  - position: {x: 0.9985302, y: 0.9985302, z: 0}
+    color: {r: 0, g: 0, b: 0, a: 1}
+    uv: {x: 0, y: 0}
+  - position: {x: -0.9985302, y: 0.9985302, z: 0}
+    color: {r: -0.70710677, g: 0.70710677, b: 0, a: 0}
+    uv: {x: 0, y: 0}
+  - position: {x: -0.9985302, y: 0.9985302, z: 0}
+    color: {r: 0, g: 0, b: 0, a: 1}
+    uv: {x: 0, y: 0}
+  - position: {x: -0.99853003, y: -0.9985304, z: 0}
+    color: {r: -0.70710665, g: -0.7071069, b: 0, a: 0}
+    uv: {x: 0, y: 0}
+  - position: {x: -0.99853003, y: -0.9985304, z: 0}
+    color: {r: 0, g: 0, b: 0, a: 1}
+    uv: {x: 0, y: 0}
+  - position: {x: 0.99853003, y: -0.9985304, z: 0}
+    color: {r: 0.70710665, g: -0.7071069, b: 0, a: 0}
+    uv: {x: 0, y: 0}
+  - position: {x: 0.99853003, y: -0.9985304, z: 0}
+    color: {r: 0, g: 0, b: 0, a: 1}
+    uv: {x: 0, y: 0}
+  - position: {x: 0, y: 0, z: 0}
+    color: {r: 0, g: 0, b: 0, a: 1}
+    uv: {x: 0, y: 0}
+  m_Triangles: 030001000800020000000100030002000100050003000800040002000300050004000300070005000800060004000500070006000500010007000800000006000700010000000700
+  m_LocalBounds:
+    m_Center: {x: 0, y: -0.00000011920929, z: 0}
+    m_Extent: {x: 0.9985302, y: 0.99853027, z: 0}
+  m_PointLightInnerAngle: 360
+  m_PointLightOuterAngle: 360
+  m_PointLightInnerRadius: 0
+  m_PointLightOuterRadius: 1
+  m_ShapeLightParametricSides: 5
+  m_ShapeLightParametricAngleOffset: 0
+  m_ShapeLightParametricRadius: 1
+  m_ShapeLightFalloffSize: 0.5
+  m_ShapeLightFalloffOffset: {x: 0, y: 0}
+  m_ShapePath:
+  - {x: -0.5, y: -0.5, z: 0}
+  - {x: 0.5, y: -0.5, z: 0}
+  - {x: 0.5, y: 0.5, z: 0}
+  - {x: -0.5, y: 0.5, z: 0}
+--- !u!4 &619394802
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 619394800}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_ConstrainProportionsScale: 0
+  m_Children: []
+  m_Father: {fileID: 0}
+  m_RootOrder: 1
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}

+ 7 - 0
Assets/Scenes/SampleScene.unity.meta

@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 8c9cfa26abfee488c85f1582747f6a02
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 8 - 0
Assets/Scripts.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: c3f6b141a920cf94c8592165928c7234
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 159 - 0
Assets/Scripts/AsyncMazeGenerator.cs

@@ -0,0 +1,159 @@
+using UnityEngine;
+using System.Collections;
+using System.Threading.Tasks;
+
+/// <summary>
+/// Generates mazes asynchronously to prevent blocking the main thread
+/// Useful for very large mazes that take time to generate
+/// </summary>
+public class AsyncMazeGenerator : MonoBehaviour
+{
+    [Header("Generation Settings")]
+    [SerializeField] private MazeController mazeController;
+    [SerializeField] private bool generateOnStart = false;
+
+    [Header("Progress")]
+    [SerializeField] private UnityEngine.UI.Slider progressBar;
+    [SerializeField] private TMPro.TextMeshProUGUI progressText;
+
+    private bool isGenerating = false;
+    private MazeData currentMaze;
+
+    private int progressCompletedTiles = 0;
+    private int progressTotalTiles = 0;
+    private string progressMessage = "";
+    private readonly object progressLock = new object();
+    private int lastLoggedPercent = -1;
+
+    void Start()
+    {
+        if (generateOnStart)
+        {
+            GenerateMazeAsync();
+        }
+    }
+
+    /// <summary>
+    /// Starts asynchronous maze generation
+    /// </summary>
+    public void GenerateMazeAsync()
+    {
+        if (isGenerating)
+        {
+            Debug.LogWarning("Maze generation already in progress");
+            return;
+        }
+
+        StartCoroutine(GenerateMazeCoroutine());
+    }
+
+    /// <summary>
+    /// Coroutine that handles the async generation
+    /// </summary>
+    private IEnumerator GenerateMazeCoroutine()
+    {
+        isGenerating = true;
+        UpdateProgress(0f, "Initializing...");
+
+        // Get config
+        var config = mazeController.GetConfig();
+        if (config == null)
+        {
+            Debug.LogError("No maze config found");
+            isGenerating = false;
+            yield break;
+        }
+
+        // Create generator with progress callback
+        var generator = new MazeGenerator(config, OnProgressUpdate);
+
+        // Generate in background thread
+        Task<MazeData> generationTask = Task.Run(() => generator.Generate());
+
+        while (!generationTask.IsCompleted)
+        {
+            int completed;
+            int total;
+            string message;
+
+            lock (progressLock)
+            {
+                completed = progressCompletedTiles;
+                total = progressTotalTiles;
+                message = progressMessage;
+            }
+
+            float progress = total > 0 ? completed / (float)total : 0f;
+            UpdateProgress(progress, $"Generating maze... {completed}/{total} ({(int)(progress * 100)}%) {message}");
+
+            int percent = Mathf.Clamp((int)(progress * 100), 0, 100);
+            if (percent != lastLoggedPercent)
+            {
+                Debug.Log($"Maze progress: {completed}/{total} tiles ({percent}%) - {message}");
+                lastLoggedPercent = percent;
+            }
+
+            yield return new WaitForSeconds(0.1f);
+        }
+
+        if (generationTask.IsFaulted)
+        {
+            Debug.LogError($"Maze generation failed: {generationTask.Exception}");
+            isGenerating = false;
+            yield break;
+        }
+
+        currentMaze = generationTask.Result;
+        mazeController.SetCurrentMaze(currentMaze);
+
+        UpdateProgress(1f, "Complete!");
+        yield return new WaitForSeconds(0.5f); // Show completion briefly
+
+        UpdateProgress(0f, "Ready");
+        isGenerating = false;
+
+        Debug.Log($"Async maze generation complete: {currentMaze.Width}x{currentMaze.Height}");
+    }
+
+    /// <summary>
+    /// Updates progress UI
+    /// </summary>
+    private void UpdateProgress(float progress, string message)
+    {
+        if (progressBar != null)
+        {
+            progressBar.value = progress;
+        }
+
+        if (progressText != null)
+        {
+            progressText.text = message;
+        }
+    }
+
+    private void OnProgressUpdate(int completedTiles, int totalTiles, string message)
+    {
+        lock (progressLock)
+        {
+            progressCompletedTiles = completedTiles;
+            progressTotalTiles = totalTiles;
+            progressMessage = message;
+        }
+    }
+
+    /// <summary>
+    /// Checks if generation is in progress
+    /// </summary>
+    public bool IsGenerating()
+    {
+        return isGenerating;
+    }
+
+    /// <summary>
+    /// Gets the most recently generated maze
+    /// </summary>
+    public MazeData GetCurrentMaze()
+    {
+        return currentMaze;
+    }
+}

+ 2 - 0
Assets/Scripts/AsyncMazeGenerator.cs.meta

@@ -0,0 +1,2 @@
+fileFormatVersion: 2
+guid: c0021f285ff56e74590362a6d94d6fab

+ 329 - 0
Assets/Scripts/ChunkedMazeRenderer.cs

@@ -0,0 +1,329 @@
+using UnityEngine;
+using UnityEngine.Tilemaps;
+using System.Collections.Generic;
+
+/// <summary>
+/// Renders large mazes using chunked tilemaps to prevent performance issues
+/// Only renders chunks that are visible or near the camera
+/// </summary>
+[RequireComponent(typeof(Grid))]
+public class ChunkedMazeRenderer : MonoBehaviour
+{
+    [Header("Maze Setup")]
+    [SerializeField] private MazeController mazeController;
+
+    [Header("Chunk Settings")]
+    [SerializeField] private int chunkSize = 32;
+    [SerializeField] private int renderDistance = 2; // chunks around camera
+    [SerializeField] private Transform cameraTransform;
+    [SerializeField] private bool useXZPlane = false;
+
+    [Header("Tile Assets")]
+    [SerializeField] private TileBase floorTile;
+    [SerializeField] private TileBase wallTile;
+    [SerializeField] private TileBase swampTile;
+    [SerializeField] private TileBase stoneTile;
+
+    [Header("Markers")]
+    [SerializeField] private Sprite startMarkerSprite;
+    [SerializeField] private Sprite exitMarkerSprite;
+    [SerializeField] private bool showStartEndMarkers = true;
+
+    [Header("Debug")]
+    [SerializeField] private bool showChunkBounds = false;
+
+    private Dictionary<Vector2Int, Tilemap> activeChunks = new();
+    private Dictionary<MazeTile.TerrainType, TileBase> terrainTiles;
+    private Vector2Int lastCameraChunk;
+    private GameObject markerContainer;
+
+    void Start()
+    {
+        SetupTerrainDictionary();
+        if (cameraTransform == null)
+        {
+            cameraTransform = Camera.main?.transform;
+        }
+        EnsurePlaceholderTiles();
+    }
+
+    void Update()
+    {
+        if (cameraTransform != null)
+        {
+            UpdateVisibleChunks();
+        }
+    }
+
+    void SetupTerrainDictionary()
+    {
+        terrainTiles = new Dictionary<MazeTile.TerrainType, TileBase>
+        {
+            { MazeTile.TerrainType.Normal, floorTile },
+            { MazeTile.TerrainType.Swamp, swampTile ?? floorTile },
+            { MazeTile.TerrainType.Stone, stoneTile ?? floorTile },
+        };
+    }
+
+    /// <summary>
+    /// Updates which chunks are visible and renders them
+    /// </summary>
+    private void UpdateVisibleChunks()
+    {
+        var maze = mazeController.GetCurrentMaze();
+        if (maze == null) return;
+
+        Vector2Int cameraChunk = WorldToChunk(cameraTransform.position);
+
+        // Only update if camera moved to a different chunk
+        if (cameraChunk != lastCameraChunk)
+        {
+            lastCameraChunk = cameraChunk;
+            RenderVisibleChunks(maze, cameraChunk);
+        }
+    }
+
+    /// <summary>
+    /// Converts world position to chunk coordinates
+    /// </summary>
+    private Vector2Int WorldToChunk(Vector3 worldPos)
+    {
+        if (useXZPlane)
+        {
+            return new Vector2Int(
+                Mathf.FloorToInt(worldPos.x / chunkSize),
+                Mathf.FloorToInt(worldPos.z / chunkSize)
+            );
+        }
+
+        return new Vector2Int(
+            Mathf.FloorToInt(worldPos.x / chunkSize),
+            Mathf.FloorToInt(worldPos.y / chunkSize)
+        );
+    }
+
+    /// <summary>
+    /// Renders chunks within render distance of camera
+    /// </summary>
+    private void RenderVisibleChunks(MazeData maze, Vector2Int centerChunk)
+    {
+        HashSet<Vector2Int> chunksToKeep = new();
+
+        // Determine which chunks should be visible
+        for (int x = centerChunk.x - renderDistance; x <= centerChunk.x + renderDistance; x++)
+        {
+            for (int y = centerChunk.y - renderDistance; y <= centerChunk.y + renderDistance; y++)
+            {
+                Vector2Int chunkPos = new Vector2Int(x, y);
+                chunksToKeep.Add(chunkPos);
+
+                if (!activeChunks.ContainsKey(chunkPos))
+                {
+                    CreateAndRenderChunk(maze, chunkPos);
+                }
+            }
+        }
+
+        // Remove chunks that are no longer visible
+        List<Vector2Int> chunksToRemove = new();
+        foreach (var chunk in activeChunks.Keys)
+        {
+            if (!chunksToKeep.Contains(chunk))
+            {
+                chunksToRemove.Add(chunk);
+            }
+        }
+
+        foreach (var chunk in chunksToRemove)
+        {
+            Destroy(activeChunks[chunk].gameObject);
+            activeChunks.Remove(chunk);
+        }
+
+        UpdateMarkers();
+    }
+
+    /// <summary>
+    /// Creates and renders a single chunk
+    /// </summary>
+    private void CreateAndRenderChunk(MazeData maze, Vector2Int chunkPos)
+    {
+        GameObject chunkObj = new GameObject($"Chunk_{chunkPos.x}_{chunkPos.y}");
+        chunkObj.transform.parent = transform;
+        chunkObj.transform.localPosition = GetChunkWorldPosition(chunkPos);
+        chunkObj.transform.localRotation = useXZPlane ? Quaternion.Euler(90, 0, 0) : Quaternion.identity;
+
+        Tilemap tilemap = chunkObj.AddComponent<Tilemap>();
+        TilemapRenderer renderer = chunkObj.AddComponent<TilemapRenderer>();
+        renderer.sortingOrder = 0;
+
+        if (showChunkBounds)
+        {
+            AddChunkBounds(chunkObj, chunkSize);
+        }
+
+        // Render tiles in this chunk
+        int startX = chunkPos.x * chunkSize;
+        int startY = chunkPos.y * chunkSize;
+        int endX = Mathf.Min(startX + chunkSize, maze.Width);
+        int endY = Mathf.Min(startY + chunkSize, maze.Height);
+
+        for (int x = startX; x < endX; x++)
+        {
+            for (int y = startY; y < endY; y++)
+            {
+                var tile = maze.GetTile(x, y);
+                if (tile != null)
+                {
+                    Vector3Int localPos = new Vector3Int(x - startX, y - startY, 0);
+                    TileBase tileToSet = GetTileForMazeTile(tile);
+                    if (tileToSet != null)
+                    {
+                        tilemap.SetTile(localPos, tileToSet);
+                    }
+                }
+            }
+        }
+
+        activeChunks[chunkPos] = tilemap;
+    }
+
+    private void UpdateMarkers()
+    {
+        if (!showStartEndMarkers) return;
+
+        if (markerContainer != null)
+        {
+            Destroy(markerContainer);
+        }
+
+        markerContainer = new GameObject("MazeMarkers");
+        markerContainer.transform.parent = transform;
+        markerContainer.transform.localPosition = Vector3.zero;
+
+        var maze = mazeController?.GetCurrentMaze();
+        if (maze == null) return;
+
+        foreach (var start in maze.StartPoints)
+        {
+            CreateMarker(start, startMarkerSprite, Color.green, "StartPoint_");
+        }
+
+        foreach (var exit in maze.ExitPoints)
+        {
+            CreateMarker(exit, exitMarkerSprite, Color.red, "ExitPoint_");
+        }
+    }
+
+    private void CreateMarker(Vector2Int position, Sprite markerSprite, Color color, string prefix)
+    {
+        var go = new GameObject(prefix + position.x + "_" + position.y);
+        go.transform.parent = markerContainer.transform;
+        go.transform.position = GetMarkerWorldPosition(position);
+        go.transform.localScale = Vector3.one * 1.5f;
+
+        var spriteRenderer = go.AddComponent<SpriteRenderer>();
+        spriteRenderer.sprite = markerSprite ?? TileGenerator.CreateColoredSprite(color, prefix.TrimEnd('_'));
+        spriteRenderer.color = new Color(color.r, color.g, color.b, 0.9f);
+        spriteRenderer.sortingOrder = 100;
+        spriteRenderer.material = new Material(Shader.Find("Sprites/Default"));
+    }
+
+    /// <summary>
+    /// Gets the appropriate tile for a maze tile
+    /// </summary>
+    private TileBase GetTileForMazeTile(MazeTile mazeTile)
+    {
+        if (mazeTile.Type == MazeTile.TileType.Wall)
+        {
+            return wallTile;
+        }
+        else if (mazeTile.Type == MazeTile.TileType.Floor || mazeTile.Type == MazeTile.TileType.Terrain)
+        {
+            if (terrainTiles.TryGetValue(mazeTile.Terrain, out var terrainTile))
+            {
+                return terrainTile;
+            }
+            return floorTile;
+        }
+        return null;
+    }
+
+    private void EnsurePlaceholderTiles()
+    {
+        if (floorTile == null)
+        {
+            floorTile = TileGenerator.CreateTile(TileGenerator.CreateColoredSprite(new Color(0.8f, 0.8f, 0.8f), "Floor"));
+        }
+        if (wallTile == null)
+        {
+            wallTile = TileGenerator.CreateTile(TileGenerator.CreateColoredSprite(new Color(0.3f, 0.3f, 0.3f), "Wall"));
+        }
+        if (swampTile == null)
+        {
+            swampTile = TileGenerator.CreateTile(TileGenerator.CreateCheckerSprite(new Color(0.5f, 0.8f, 0.3f), new Color(0.4f, 0.6f, 0.2f), "Swamp"));
+        }
+        if (stoneTile == null)
+        {
+            stoneTile = TileGenerator.CreateTile(TileGenerator.CreateCheckerSprite(new Color(0.7f, 0.7f, 0.7f), new Color(0.6f, 0.6f, 0.6f), "Stone"));
+        }
+        SetupTerrainDictionary();
+    }
+
+    private Vector3 GetChunkWorldPosition(Vector2Int chunkPos)
+    {
+        if (useXZPlane)
+        {
+            return new Vector3(chunkPos.x * chunkSize, 0, chunkPos.y * chunkSize);
+        }
+        return new Vector3(chunkPos.x * chunkSize, chunkPos.y * chunkSize, 0);
+    }
+
+    private Vector3 GetMarkerWorldPosition(Vector2Int position)
+    {
+        if (useXZPlane)
+        {
+            return new Vector3(position.x + 0.5f, 0.5f, position.y + 0.5f);
+        }
+        return new Vector3(position.x + 0.5f, position.y + 0.5f, -0.5f);
+    }
+
+    /// <summary>
+    /// Adds visual bounds for debugging chunks
+    /// </summary>
+    private void AddChunkBounds(GameObject chunkObj, int size)
+    {
+        GameObject bounds = new GameObject("Bounds");
+        bounds.transform.parent = chunkObj.transform;
+        bounds.transform.localPosition = Vector3.zero;
+
+        LineRenderer lineRenderer = bounds.AddComponent<LineRenderer>();
+        lineRenderer.positionCount = 5;
+        lineRenderer.SetPositions(new Vector3[]
+        {
+            new Vector3(0, 0, 0),
+            new Vector3(size, 0, 0),
+            new Vector3(size, size, 0),
+            new Vector3(0, size, 0),
+            new Vector3(0, 0, 0)
+        });
+        lineRenderer.startWidth = 0.1f;
+        lineRenderer.endWidth = 0.1f;
+        lineRenderer.material = new Material(Shader.Find("Sprites/Default"));
+        lineRenderer.startColor = Color.red;
+        lineRenderer.endColor = Color.red;
+    }
+
+    /// <summary>
+    /// Forces a re-render of all visible chunks
+    /// </summary>
+    public void RefreshVisibleChunks()
+    {
+        foreach (var chunk in activeChunks.Values)
+        {
+            Destroy(chunk.gameObject);
+        }
+        activeChunks.Clear();
+        lastCameraChunk = new Vector2Int(int.MinValue, int.MinValue); // Force update
+    }
+}

+ 2 - 0
Assets/Scripts/ChunkedMazeRenderer.cs.meta

@@ -0,0 +1,2 @@
+fileFormatVersion: 2
+guid: 21d7801215bd6c243a7c2336a3bcf465

+ 319 - 0
Assets/Scripts/MazeAIEntity.cs

@@ -0,0 +1,319 @@
+using UnityEngine;
+using System.Collections.Generic;
+
+/// <summary>
+/// Simple AI entity that navigates the maze using fog of war
+/// Only knows about areas it has explored or can currently see
+/// </summary>
+[RequireComponent(typeof(Rigidbody2D))]
+public class MazeAIEntity : MonoBehaviour
+{
+    [Header("AI Settings")]
+    [SerializeField] private MazeController mazeController;
+    [SerializeField] private MazeFogOfWar fogOfWar;
+    [SerializeField] private float visionRange = 5f;
+    [SerializeField] private float movementSpeed = 2f;
+    [SerializeField] private float pathUpdateInterval = 1f;
+
+    [Header("Pathfinding")]
+    [SerializeField] private bool showPath = true;
+    [SerializeField] private LineRenderer pathRenderer;
+
+    private MazeData maze;
+    private MazePathfinder pathfinder;
+    private List<Vector2Int> currentPath = new();
+    private int currentPathIndex = 0;
+    private Vector2Int currentTarget;
+    private float lastPathUpdate = 0f;
+
+    void Start()
+    {
+        maze = mazeController.GetCurrentMaze();
+        pathfinder = new MazePathfinder(maze);
+
+        // Start at a random start point
+        if (maze.StartPoints.Count > 0)
+        {
+            int startIndex = Random.Range(0, maze.StartPoints.Count);
+            Vector2Int startPos = maze.StartPoints[startIndex];
+            transform.position = new Vector3(startPos.x + 0.5f, startPos.y + 0.5f, 0);
+
+            // Mark starting area as explored
+            ExploreCurrentArea();
+        }
+
+        if (pathRenderer == null)
+        {
+            pathRenderer = gameObject.AddComponent<LineRenderer>();
+            pathRenderer.startWidth = 0.1f;
+            pathRenderer.endWidth = 0.1f;
+            pathRenderer.material = new Material(Shader.Find("Sprites/Default"));
+            pathRenderer.startColor = Color.yellow;
+            pathRenderer.endColor = Color.yellow;
+        }
+    }
+
+    void Update()
+    {
+        if (maze == null) return;
+
+        // Update vision and exploration
+        UpdateVision();
+
+        // Update pathfinding
+        if (Time.time - lastPathUpdate > pathUpdateInterval)
+        {
+            UpdatePathfinding();
+            lastPathUpdate = Time.time;
+        }
+
+        // Move along path
+        FollowPath();
+    }
+
+    /// <summary>
+    /// Updates the entity's vision and explores new areas
+    /// </summary>
+    private void UpdateVision()
+    {
+        Vector2Int currentTile = WorldToTile(transform.position);
+
+        if (fogOfWar != null)
+        {
+            fogOfWar.UpdateEntityVision(gameObject, currentTile, visionRange);
+        }
+        else
+        {
+            // If no fog of war, explore current area
+            ExploreCurrentArea();
+        }
+    }
+
+    /// <summary>
+    /// Explores the area around the current position
+    /// </summary>
+    private void ExploreCurrentArea()
+    {
+        Vector2Int center = WorldToTile(transform.position);
+        HashSet<Vector2Int> explored = new();
+
+        int range = Mathf.CeilToInt(visionRange);
+        for (int x = center.x - range; x <= center.x + range; x++)
+        {
+            for (int y = center.y - range; y <= center.y + range; y++)
+            {
+                Vector2Int tile = new Vector2Int(x, y);
+                if (Vector2Int.Distance(center, tile) <= visionRange && maze.IsInBounds(x, y))
+                {
+                    explored.Add(tile);
+                }
+            }
+        }
+
+        if (fogOfWar != null)
+        {
+            fogOfWar.ExploreTiles(explored);
+        }
+    }
+
+    /// <summary>
+    /// Updates pathfinding towards an exit
+    /// </summary>
+    private void UpdatePathfinding()
+    {
+        if (maze.ExitPoints.Count == 0) return;
+
+        Vector2Int currentPos = WorldToTile(transform.position);
+
+        // Find closest unexplored exit
+        Vector2Int targetExit = FindBestExit(currentPos);
+
+        if (targetExit != currentPos)
+        {
+            // Only pathfind to areas we know about
+            HashSet<Vector2Int> knownTiles = fogOfWar != null ?
+                fogOfWar.GetExploredTiles() : GetAllTiles();
+
+            // Find path within known areas
+            currentPath = FindPathInKnownArea(currentPos, targetExit, knownTiles);
+
+            if (currentPath.Count > 0)
+            {
+                currentPathIndex = 0;
+                UpdatePathVisualization();
+            }
+        }
+    }
+
+    /// <summary>
+    /// Finds the best exit to path towards
+    /// </summary>
+    private Vector2Int FindBestExit(Vector2Int from)
+    {
+        Vector2Int bestExit = from;
+        float bestDistance = float.MaxValue;
+
+        foreach (var exit in maze.ExitPoints)
+        {
+            // Only consider exits we know about
+            if (fogOfWar == null || fogOfWar.IsTileExplored(exit))
+            {
+                float distance = Vector2Int.Distance(from, exit);
+                if (distance < bestDistance)
+                {
+                    bestDistance = distance;
+                    bestExit = exit;
+                }
+            }
+        }
+
+        return bestExit;
+    }
+
+    /// <summary>
+    /// Finds a path within explored areas
+    /// </summary>
+    private List<Vector2Int> FindPathInKnownArea(Vector2Int start, Vector2Int goal, HashSet<Vector2Int> knownTiles)
+    {
+        // Simple A* within known tiles
+        var openSet = new List<Vector2Int> { start };
+        var cameFrom = new Dictionary<Vector2Int, Vector2Int>();
+        var gScore = new Dictionary<Vector2Int, float> { [start] = 0 };
+        var fScore = new Dictionary<Vector2Int, float> { [start] = Vector2Int.Distance(start, goal) };
+
+        while (openSet.Count > 0)
+        {
+            // Find node with lowest fScore
+            Vector2Int current = openSet[0];
+            float lowestF = fScore[current];
+
+            for (int i = 1; i < openSet.Count; i++)
+            {
+                if (fScore[openSet[i]] < lowestF)
+                {
+                    current = openSet[i];
+                    lowestF = fScore[current];
+                }
+            }
+
+            if (current == goal)
+            {
+                return ReconstructPath(cameFrom, current);
+            }
+
+            openSet.Remove(current);
+
+            // Check neighbors
+            foreach (var neighbor in maze.GetAdjacentWalkable(current.x, current.y))
+            {
+                if (!knownTiles.Contains(neighbor)) continue; // Only path through known tiles
+
+                float tentativeG = gScore[current] + 1; // Assume cost of 1
+
+                if (!gScore.ContainsKey(neighbor) || tentativeG < gScore[neighbor])
+                {
+                    cameFrom[neighbor] = current;
+                    gScore[neighbor] = tentativeG;
+                    fScore[neighbor] = tentativeG + Vector2Int.Distance(neighbor, goal);
+
+                    if (!openSet.Contains(neighbor))
+                    {
+                        openSet.Add(neighbor);
+                    }
+                }
+            }
+        }
+
+        return new List<Vector2Int>(); // No path found
+    }
+
+    /// <summary>
+    /// Reconstructs the path from A* results
+    /// </summary>
+    private List<Vector2Int> ReconstructPath(Dictionary<Vector2Int, Vector2Int> cameFrom, Vector2Int current)
+    {
+        var path = new List<Vector2Int> { current };
+        while (cameFrom.ContainsKey(current))
+        {
+            current = cameFrom[current];
+            path.Insert(0, current);
+        }
+        return path;
+    }
+
+    /// <summary>
+    /// Gets all tiles (fallback when no fog of war)
+    /// </summary>
+    private HashSet<Vector2Int> GetAllTiles()
+    {
+        HashSet<Vector2Int> allTiles = new();
+        for (int x = 0; x < maze.Width; x++)
+        {
+            for (int y = 0; y < maze.Height; y++)
+            {
+                allTiles.Add(new Vector2Int(x, y));
+            }
+        }
+        return allTiles;
+    }
+
+    /// <summary>
+    /// Moves along the current path
+    /// </summary>
+    private void FollowPath()
+    {
+        if (currentPath.Count == 0 || currentPathIndex >= currentPath.Count) return;
+
+        Vector2Int targetTile = currentPath[currentPathIndex];
+        Vector3 targetPos = new Vector3(targetTile.x + 0.5f, targetTile.y + 0.5f, 0);
+        Vector3 currentPos = transform.position;
+
+        // Move towards target
+        Vector3 direction = (targetPos - currentPos).normalized;
+        transform.position += direction * movementSpeed * Time.deltaTime;
+
+        // Check if reached target
+        if (Vector3.Distance(currentPos, targetPos) < 0.1f)
+        {
+            currentPathIndex++;
+
+            // If reached end of path, find new path
+            if (currentPathIndex >= currentPath.Count)
+            {
+                currentPath.Clear();
+                UpdatePathfinding();
+            }
+        }
+    }
+
+    /// <summary>
+    /// Updates the path visualization
+    /// </summary>
+    private void UpdatePathVisualization()
+    {
+        if (!showPath || pathRenderer == null) return;
+
+        pathRenderer.positionCount = currentPath.Count;
+        for (int i = 0; i < currentPath.Count; i++)
+        {
+            Vector2Int tile = currentPath[i];
+            pathRenderer.SetPosition(i, new Vector3(tile.x + 0.5f, tile.y + 0.5f, -0.1f));
+        }
+    }
+
+    /// <summary>
+    /// Converts world position to tile coordinates
+    /// </summary>
+    private Vector2Int WorldToTile(Vector3 worldPos)
+    {
+        return new Vector2Int(Mathf.FloorToInt(worldPos.x), Mathf.FloorToInt(worldPos.y));
+    }
+
+    void OnDestroy()
+    {
+        if (fogOfWar != null)
+        {
+            fogOfWar.RemoveEntity(gameObject);
+        }
+    }
+}

+ 2 - 0
Assets/Scripts/MazeAIEntity.cs.meta

@@ -0,0 +1,2 @@
+fileFormatVersion: 2
+guid: 3649ca93fc0f927409c740273ab76f66

+ 175 - 0
Assets/Scripts/MazeCameraController.cs

@@ -0,0 +1,175 @@
+using UnityEngine;
+using UnityEngine.InputSystem;
+
+/// <summary>
+/// Simple camera movement controller for map navigation.
+/// Supports WASD/arrow keys, right-click drag, and Q/E or mouse wheel zoom.
+/// </summary>
+[RequireComponent(typeof(Camera))]
+public class MazeCameraController : MonoBehaviour
+{
+    [Header("Movement")]
+    [SerializeField] private float moveSpeed = 20f;
+    [SerializeField] private float dragSpeed = 1f;
+
+    [Header("Zoom")]
+    [SerializeField] private float zoomSpeed = 25f;
+    [SerializeField] private float zoomMin = 5f;
+    [SerializeField] private float zoomMax = 120f;
+
+    [Header("Optional Bounds")]
+    [SerializeField] private bool useBounds = false;
+    [SerializeField] private Vector2 minBounds = new Vector2(-100f, -100f);
+    [SerializeField] private Vector2 maxBounds = new Vector2(100f, 100f);
+
+    private Camera cameraComponent;
+    private Vector3 targetPosition;
+    private Vector3 lastMousePosition;
+    private bool isDragging;
+
+    private void Awake()
+    {
+        cameraComponent = GetComponent<Camera>();
+        targetPosition = transform.position;
+    }
+
+    private void Update()
+    {
+        HandleKeyboardMovement();
+        HandleMouseDrag();
+        HandleZoom();
+        ApplyPosition();
+    }
+
+    private void HandleKeyboardMovement()
+    {
+        var keyboard = Keyboard.current;
+        if (keyboard == null)
+        {
+            return;
+        }
+
+        float horizontal = 0f;
+        if (keyboard.aKey.isPressed || keyboard.leftArrowKey.isPressed)
+        {
+            horizontal -= 1f;
+        }
+        if (keyboard.dKey.isPressed || keyboard.rightArrowKey.isPressed)
+        {
+            horizontal += 1f;
+        }
+
+        float vertical = 0f;
+        if (keyboard.sKey.isPressed || keyboard.downArrowKey.isPressed)
+        {
+            vertical -= 1f;
+        }
+        if (keyboard.wKey.isPressed || keyboard.upArrowKey.isPressed)
+        {
+            vertical += 1f;
+        }
+
+        if (horizontal != 0f || vertical != 0f)
+        {
+            Vector3 right = transform.right;
+            Vector3 forward = Vector3.Cross(transform.right, Vector3.up).normalized;
+            Vector3 worldMove = (right * horizontal + forward * vertical).normalized;
+            targetPosition += worldMove * moveSpeed * Time.deltaTime;
+        }
+
+        if (keyboard.qKey.isPressed)
+        {
+            Zoom(-zoomSpeed * Time.deltaTime);
+        }
+        else if (keyboard.eKey.isPressed)
+        {
+            Zoom(zoomSpeed * Time.deltaTime);
+        }
+    }
+
+    private void HandleMouseDrag()
+    {
+        var mouse = Mouse.current;
+        if (mouse == null)
+        {
+            return;
+        }
+
+        if (mouse.rightButton.wasPressedThisFrame)
+        {
+            isDragging = true;
+            Vector2 position = mouse.position.ReadValue();
+            lastMousePosition = new Vector3(position.x, position.y, 0f);
+        }
+
+        if (mouse.rightButton.wasReleasedThisFrame)
+        {
+            isDragging = false;
+        }
+
+        if (isDragging && mouse.rightButton.isPressed)
+        {
+            Vector2 position = mouse.position.ReadValue();
+            Vector3 currentMousePosition = new Vector3(position.x, position.y, 0f);
+            if (currentMousePosition != lastMousePosition)
+            {
+                Vector3 dragDelta = GetDragWorldDelta(lastMousePosition, currentMousePosition);
+                targetPosition += dragDelta * dragSpeed;
+                lastMousePosition = currentMousePosition;
+            }
+        }
+    }
+
+    private void HandleZoom()
+    {
+        var mouse = Mouse.current;
+        if (mouse != null)
+        {
+            float scroll = mouse.scroll.ReadValue().y;
+            if (scroll != 0f)
+            {
+                Zoom(-scroll * zoomSpeed * Time.deltaTime);
+            }
+        }
+    }
+
+    private void Zoom(float amount)
+    {
+        if (cameraComponent.orthographic)
+        {
+            cameraComponent.orthographicSize = Mathf.Clamp(cameraComponent.orthographicSize + amount, zoomMin, zoomMax);
+        }
+        else
+        {
+            cameraComponent.fieldOfView = Mathf.Clamp(cameraComponent.fieldOfView + amount, zoomMin, zoomMax);
+        }
+    }
+
+    private Vector3 GetDragWorldDelta(Vector3 previousScreenPosition, Vector3 currentScreenPosition)
+    {
+        Plane dragPlane = new Plane(-transform.forward, transform.position);
+        Ray previousRay = cameraComponent.ScreenPointToRay(previousScreenPosition);
+        Ray currentRay = cameraComponent.ScreenPointToRay(currentScreenPosition);
+
+        if (dragPlane.Raycast(previousRay, out float previousDistance) && dragPlane.Raycast(currentRay, out float currentDistance))
+        {
+            Vector3 previousWorld = previousRay.GetPoint(previousDistance);
+            Vector3 currentWorld = currentRay.GetPoint(currentDistance);
+            return previousWorld - currentWorld;
+        }
+
+        return Vector3.zero;
+    }
+
+    private void ApplyPosition()
+    {
+        Vector3 newPosition = targetPosition;
+        if (useBounds)
+        {
+            newPosition.x = Mathf.Clamp(newPosition.x, minBounds.x, maxBounds.x);
+            newPosition.z = Mathf.Clamp(newPosition.z, minBounds.y, maxBounds.y);
+        }
+
+        transform.position = newPosition;
+    }
+}

+ 2 - 0
Assets/Scripts/MazeCameraController.cs.meta

@@ -0,0 +1,2 @@
+fileFormatVersion: 2
+guid: 1d06b8890413c89448a31d99ef49723c

+ 67 - 0
Assets/Scripts/MazeConfig.cs

@@ -0,0 +1,67 @@
+using UnityEngine;
+
+/// <summary>
+/// Configuration parameters for maze generation
+/// Adjustable to control maze layout, room distribution, and difficulty
+/// </summary>
+[System.Serializable]
+public class MazeConfig
+{
+    [Header("Maze Size")]
+    [SerializeField] public int Width = 100;
+    [SerializeField] public int Height = 100;
+    [SerializeField] public int MinSize = 100;
+    [SerializeField] public int MaxSize = 10000;
+
+    [Header("Room Generation")]
+    [SerializeField] public int TargetRoomCount = 20;
+    [SerializeField] public int MinRoomWidth = 5;
+    [SerializeField] public int MaxRoomWidth = 25;
+    [SerializeField] public int MinRoomHeight = 5;
+    [SerializeField] public int MaxRoomHeight = 25;
+    [SerializeField] public int MinRoomSpacing = 2;  // Minimum space between rooms
+
+    [Header("Start and Exit Points")]
+    [SerializeField] public int MinStartPoints = 1;
+    [SerializeField] public int MaxStartPoints = 3;
+    [SerializeField] public int MinExits = 1;
+    [SerializeField] public int MaxExits = 5;
+
+    [Header("Hallway")]
+    [SerializeField] public int MinHallwayWidth = 1;
+    [SerializeField] public int MaxHallwayWidth = 3;
+
+    [Header("Special Rooms")]
+    [SerializeField] public int SafeRoomCount = 2;
+    [SerializeField] public int RestRoomCount = 2;
+    [SerializeField] public int BossRoomCount = 1;
+    [SerializeField] public int NormalRoomPercentage = 50;  // Percentage that should be normal rooms
+
+    [Header("Monster Areas")]
+    [SerializeField] public bool UseMonsterAreas = true;
+    [SerializeField] public int MonsterAreaDensity = 50;  // Percentage of rooms with monsters
+
+    [Header("Generation")]
+    [SerializeField] public int RandomSeed = 0;
+    [SerializeField] public bool UseRandomSeed = false;
+
+    /// <summary>
+    /// Validates configuration values and clamps them to acceptable ranges
+    /// </summary>
+    public void Validate()
+    {
+        Width = Mathf.Clamp(Width, MinSize, MaxSize);
+        Height = Mathf.Clamp(Height, MinSize, MaxSize);
+        TargetRoomCount = Mathf.Max(TargetRoomCount, 5);
+        MinRoomWidth = Mathf.Max(MinRoomWidth, 3);
+        MinRoomHeight = Mathf.Max(MinRoomHeight, 3);
+        MaxRoomWidth = Mathf.Max(MaxRoomWidth, MinRoomWidth + 2);
+        MaxRoomHeight = Mathf.Max(MaxRoomHeight, MinRoomHeight + 2);
+        MinStartPoints = Mathf.Max(MinStartPoints, 1);
+        MaxStartPoints = Mathf.Max(MaxStartPoints, MinStartPoints);
+        MinExits = Mathf.Max(MinExits, 1);
+        MaxExits = Mathf.Max(MaxExits, MinExits);
+        NormalRoomPercentage = Mathf.Clamp(NormalRoomPercentage, 0, 100);
+        MonsterAreaDensity = Mathf.Clamp(MonsterAreaDensity, 0, 100);
+    }
+}

+ 2 - 0
Assets/Scripts/MazeConfig.cs.meta

@@ -0,0 +1,2 @@
+fileFormatVersion: 2
+guid: be41bc4d38ceff84aa076f9022e7aefc

+ 194 - 0
Assets/Scripts/MazeController.cs

@@ -0,0 +1,194 @@
+using UnityEngine;
+
+/// <summary>
+/// Main controller for maze generation and management
+/// </summary>
+public class MazeController : MonoBehaviour
+{
+    [SerializeField] private MazeConfig mazeConfig = new();
+    [SerializeField] private bool generateOnStart = true;
+    [SerializeField] private bool visualizeDebug = true;
+
+    [Header("Renderers")]
+    [SerializeField] private MazeRenderer mazeRenderer;
+    [SerializeField] private ChunkedMazeRenderer chunkedRenderer;
+    [SerializeField] private MeshMazeRenderer meshMazeRenderer;
+
+    private MazeData currentMaze;
+    private MazeGenerator generator;
+
+    void Start()
+    {
+        if (mazeRenderer == null)
+        {
+            mazeRenderer = GetComponent<MazeRenderer>() ?? FindFirstObjectByType<MazeRenderer>();
+        }
+        if (chunkedRenderer == null)
+        {
+            chunkedRenderer = GetComponent<ChunkedMazeRenderer>() ?? FindFirstObjectByType<ChunkedMazeRenderer>();
+        }
+        if (meshMazeRenderer == null)
+        {
+            meshMazeRenderer = GetComponent<MeshMazeRenderer>() ?? FindFirstObjectByType<MeshMazeRenderer>();
+        }
+
+        if (generateOnStart)
+        {
+            GenerateMaze();
+        }
+    }
+
+    /// <summary>
+    /// Generates a new maze using the current configuration
+    /// </summary>
+    public void GenerateMaze()
+    {
+        Debug.Log("Generating maze...");
+        generator = new MazeGenerator(mazeConfig);
+        currentMaze = generator.Generate();
+
+        if (visualizeDebug)
+        {
+            VisualizeMaze();
+        }
+
+        if (mazeRenderer != null)
+        {
+            mazeRenderer.RenderMaze();
+        }
+
+        if (chunkedRenderer != null)
+        {
+            chunkedRenderer.RefreshVisibleChunks();
+        }
+
+        if (meshMazeRenderer != null)
+        {
+            meshMazeRenderer.RefreshMesh();
+        }
+    }
+
+    /// <summary>
+    /// Visualizes the maze in the editor/game for debugging
+    /// </summary>
+    private void VisualizeMaze()
+    {
+        if (currentMaze == null) return;
+
+        // Draw grid visualization in Scene view
+        for (int x = 0; x < currentMaze.Width; x += 10)
+        {
+            Debug.DrawLine(new Vector3(x, 0, 0), new Vector3(x, currentMaze.Height, 0), Color.gray);
+        }
+        for (int y = 0; y < currentMaze.Height; y += 10)
+        {
+            Debug.DrawLine(new Vector3(0, y, 0), new Vector3(currentMaze.Width, y, 0), Color.gray);
+        }
+
+        // Highlight start and exit points
+        foreach (var start in currentMaze.StartPoints)
+        {
+            Debug.DrawLine(new Vector3(start.x - 0.5f, start.y - 0.5f, 0),
+                          new Vector3(start.x + 0.5f, start.y + 0.5f, 0), Color.green);
+        }
+
+        foreach (var exit in currentMaze.ExitPoints)
+        {
+            Debug.DrawLine(new Vector3(exit.x - 0.5f, exit.y - 0.5f, 0),
+                          new Vector3(exit.x + 0.5f, exit.y + 0.5f, 0), Color.red);
+        }
+    }
+
+    /// <summary>
+    /// Gets the current maze data
+    /// </summary>
+    public MazeData GetCurrentMaze()
+    {
+        return currentMaze;
+    }
+
+    /// <summary>
+    /// Sets the current maze data (used by async generators)
+    /// </summary>
+    public void SetCurrentMaze(MazeData maze)
+    {
+        currentMaze = maze;
+
+        if (visualizeDebug)
+        {
+            VisualizeMaze();
+        }
+
+        // Render the maze using available renderers
+        var renderer = GetComponent<MazeRenderer>();
+        if (renderer != null)
+        {
+            renderer.RenderMaze();
+        }
+
+        var chunkedRenderer = GetComponent<ChunkedMazeRenderer>();
+        if (chunkedRenderer != null)
+        {
+            chunkedRenderer.RefreshVisibleChunks();
+        }
+
+        var meshRenderer = GetComponent<MeshMazeRenderer>();
+        if (meshRenderer != null)
+        {
+            meshRenderer.RefreshMesh();
+        }
+    }
+
+    /// <summary>
+    /// Gets the current maze configuration
+    /// </summary>
+    public MazeConfig GetConfig()
+    {
+        return mazeConfig;
+    }
+
+    /// <summary>
+    /// Gets a tile at specific coordinates
+    /// </summary>
+    public MazeTile GetTile(int x, int y)
+    {
+        return currentMaze?.GetTile(x, y);
+    }
+
+    /// <summary>
+    /// Checks if a position is walkable
+    /// </summary>
+    public bool IsWalkable(int x, int y)
+    {
+        return currentMaze?.IsWalkable(x, y) ?? false;
+    }
+
+    /// <summary>
+    /// Gets the room at a specific tile position
+    /// </summary>
+    public MazeRoom GetRoomAtTile(int x, int y)
+    {
+        return currentMaze?.GetRoomAtTile(x, y);
+    }
+
+    /// <summary>
+    /// Gets all start points
+    /// </summary>
+    public System.Collections.Generic.List<Vector2Int> GetStartPoints()
+    {
+        return currentMaze?.StartPoints ?? new();
+    }
+
+    /// <summary>
+    /// Gets all exit points
+    /// </summary>
+    public System.Collections.Generic.List<Vector2Int> GetExitPoints()
+    {
+        return currentMaze?.ExitPoints ?? new();
+    }
+
+    void Update()
+    {
+        // Can be used for real-time generation or maze editing later
+    }
+}

+ 2 - 0
Assets/Scripts/MazeController.cs.meta

@@ -0,0 +1,2 @@
+fileFormatVersion: 2
+guid: 60db0adf974888a4fa998a86ad9e404c

+ 240 - 0
Assets/Scripts/MazeData.cs

@@ -0,0 +1,240 @@
+using UnityEngine;
+using System.Collections.Generic;
+using System.Linq;
+
+/// <summary>
+/// Holds all data for a generated maze
+/// This is the core representation that can be used for rendering, pathfinding, and AI
+/// </summary>
+public class MazeData
+{
+    public int Width { get; private set; }
+    public int Height { get; private set; }
+    public MazeTile[,] Tiles { get; private set; }
+    public List<MazeRoom> Rooms { get; private set; } = new();
+    public List<Vector2Int> StartPoints { get; private set; } = new();
+    public List<Vector2Int> ExitPoints { get; private set; } = new();
+
+    private int nextRoomId = 0;
+
+    public MazeData(int width, int height)
+    {
+        Width = width;
+        Height = height;
+        Tiles = new MazeTile[width, height];
+
+        // Initialize all tiles as walls
+        for (int x = 0; x < width; x++)
+        {
+            for (int y = 0; y < height; y++)
+            {
+                Tiles[x, y] = new MazeTile(x, y);
+            }
+        }
+    }
+
+    /// <summary>
+    /// Sets a tile at the given position
+    /// </summary>
+    public void SetTile(int x, int y, MazeTile tile)
+    {
+        if (IsInBounds(x, y))
+        {
+            Tiles[x, y] = tile;
+        }
+    }
+
+    /// <summary>
+    /// Gets a tile at the given position
+    /// </summary>
+    public MazeTile GetTile(int x, int y)
+    {
+        if (IsInBounds(x, y))
+        {
+            return Tiles[x, y];
+        }
+        return null;
+    }
+
+    /// <summary>
+    /// Checks if coordinates are within maze bounds
+    /// </summary>
+    public bool IsInBounds(int x, int y)
+    {
+        return x >= 0 && x < Width && y >= 0 && y < Height;
+    }
+
+    /// <summary>
+    /// Checks if a tile is walkable
+    /// </summary>
+    public bool IsWalkable(int x, int y)
+    {
+        var tile = GetTile(x, y);
+        return tile != null && tile.IsWalkable();
+    }
+
+    /// <summary>
+    /// Fills a rectangular area with floor tiles and assigns to a room
+    /// </summary>
+    public int FillRoom(int minX, int minY, int maxX, int maxY, int roomId, MazeTile.TerrainType terrain = MazeTile.TerrainType.Normal)
+    {
+        int changedTiles = 0;
+        for (int x = minX; x <= maxX; x++)
+        {
+            for (int y = minY; y <= maxY; y++)
+            {
+                if (IsInBounds(x, y))
+                {
+                    var tile = GetTile(x, y);
+                    if (tile.Type != MazeTile.TileType.Floor)
+                    {
+                        changedTiles++;
+                    }
+                    tile.Type = MazeTile.TileType.Floor;
+                    tile.Terrain = terrain;
+                    tile.RoomId = roomId;
+                }
+            }
+        }
+        return changedTiles;
+    }
+
+    /// <summary>
+    /// Creates floor tiles along a path (for hallways/corridors)
+    /// </summary>
+    public int DrawPath(List<Vector2Int> path, int hallwayWidth, int roomId = -1)
+    {
+        int changedTiles = 0;
+        foreach (var point in path)
+        {
+            for (int dx = -hallwayWidth / 2; dx <= hallwayWidth / 2; dx++)
+            {
+                for (int dy = -hallwayWidth / 2; dy <= hallwayWidth / 2; dy++)
+                {
+                    int x = point.x + dx;
+                    int y = point.y + dy;
+                    if (IsInBounds(x, y))
+                    {
+                        var tile = GetTile(x, y);
+                        if (tile.Type != MazeTile.TileType.Floor) // Don't overwrite existing floors
+                        {
+                            changedTiles++;
+                            tile.Type = MazeTile.TileType.Floor;
+                            tile.Terrain = MazeTile.TerrainType.Normal;
+                            if (tile.RoomId == -1)
+                            {
+                                tile.RoomId = roomId;
+                            }
+                        }
+                    }
+                }
+            }
+        }
+        return changedTiles;
+    }
+
+    /// <summary>
+    /// Adds a room to the maze
+    /// </summary>
+    public MazeRoom AddRoom(int minX, int minY, int maxX, int maxY, MazeRoom.RoomType roomType = MazeRoom.RoomType.Normal)
+    {
+        var room = new MazeRoom(nextRoomId++, minX, minY, maxX, maxY, roomType);
+        Rooms.Add(room);
+        return room;
+    }
+
+    /// <summary>
+    /// Gets all rooms of a specific type
+    /// </summary>
+    public List<MazeRoom> GetRoomsByType(MazeRoom.RoomType type)
+    {
+        return Rooms.Where(r => r.Type == type).ToList();
+    }
+
+    /// <summary>
+    /// Gets the room at a specific tile position
+    /// </summary>
+    public MazeRoom GetRoomAtTile(int x, int y)
+    {
+        var tile = GetTile(x, y);
+        if (tile != null && tile.RoomId >= 0)
+        {
+            return Rooms.FirstOrDefault(r => r.Id == tile.RoomId);
+        }
+        return null;
+    }
+
+    /// <summary>
+    /// Adds a start point
+    /// </summary>
+    public void AddStartPoint(Vector2Int point)
+    {
+        if (IsWalkable(point.x, point.y))
+        {
+            StartPoints.Add(point);
+        }
+    }
+
+    /// <summary>
+    /// Adds an exit point
+    /// </summary>
+    public void AddExitPoint(Vector2Int point)
+    {
+        if (IsWalkable(point.x, point.y))
+        {
+            ExitPoints.Add(point);
+        }
+    }
+
+    /// <summary>
+    /// Gets all adjacent walkable tiles
+    /// </summary>
+    public List<Vector2Int> GetAdjacentWalkable(int x, int y)
+    {
+        var adjacent = new List<Vector2Int>();
+        Vector2Int[] directions = new[]
+        {
+            new Vector2Int(x + 1, y),
+            new Vector2Int(x - 1, y),
+            new Vector2Int(x, y + 1),
+            new Vector2Int(x, y - 1),
+        };
+
+        foreach (var dir in directions)
+        {
+            if (IsWalkable(dir.x, dir.y))
+            {
+                adjacent.Add(dir);
+            }
+        }
+
+        return adjacent;
+    }
+
+    /// <summary>
+    /// Gets statistics about the maze
+    /// </summary>
+    public string GetStatistics()
+    {
+        int floorTiles = 0;
+        int wallTiles = 0;
+        for (int x = 0; x < Width; x++)
+        {
+            for (int y = 0; y < Height; y++)
+            {
+                if (GetTile(x, y).IsWalkable())
+                    floorTiles++;
+                else
+                    wallTiles++;
+            }
+        }
+
+        return $"Maze Statistics:\n" +
+               $"  Size: {Width}x{Height}\n" +
+               $"  Rooms: {Rooms.Count}\n" +
+               $"  Floor Tiles: {floorTiles}\n" +
+               $"  Wall Tiles: {wallTiles}\n" +
+               $"  Start Points: {StartPoints.Count}\n" +
+               $"  Exit Points: {ExitPoints.Count}";
+    }
+}

+ 2 - 0
Assets/Scripts/MazeData.cs.meta

@@ -0,0 +1,2 @@
+fileFormatVersion: 2
+guid: 70aa3b3c8b8c55e419c6a89dcda34050

+ 230 - 0
Assets/Scripts/MazeExample.cs

@@ -0,0 +1,230 @@
+using UnityEngine;
+using System.Collections.Generic;
+
+/// <summary>
+/// Example usage of the maze generation system
+/// Shows how to generate, query, and navigate the maze
+/// </summary>
+public class MazeExample : MonoBehaviour
+{
+    [SerializeField] private MazeController mazeController;
+    [SerializeField] private bool logRoomInfo = true;
+    [SerializeField] private bool logTerrainInfo = true;
+    [SerializeField] private bool performPathfindingTest = true;
+
+    void Awake()
+    {
+        if (mazeController == null)
+        {
+            mazeController = GetComponent<MazeController>();
+        }
+    }
+
+    void Start()
+    {
+        // Wait a frame for maze to generate
+        Invoke(nameof(PrintMazeInfo), 0.1f);
+    }
+
+    /// <summary>
+    /// Example: Print information about the generated maze
+    /// </summary>
+    public void PrintMazeInfo()
+    {
+        var maze = mazeController.GetCurrentMaze();
+        if (maze == null)
+        {
+            Debug.LogWarning("No maze generated yet");
+            return;
+        }
+
+        Debug.Log("=== MAZE INFORMATION ===");
+        Debug.Log(maze.GetStatistics());
+
+        if (logRoomInfo)
+        {
+            PrintRoomInfo(maze);
+        }
+
+        if (logTerrainInfo)
+        {
+            PrintTerrainInfo(maze);
+        }
+
+        if (performPathfindingTest)
+        {
+            PerformPathfindingTest(maze);
+        }
+    }
+
+    /// <summary>
+    /// Example: Print information about all rooms
+    /// </summary>
+    private void PrintRoomInfo(MazeData maze)
+    {
+        Debug.Log("\n=== ROOM INFORMATION ===");
+        var roomsByType = new Dictionary<MazeRoom.RoomType, List<MazeRoom>>();
+
+        foreach (var room in maze.Rooms)
+        {
+            if (!roomsByType.ContainsKey(room.Type))
+            {
+                roomsByType[room.Type] = new List<MazeRoom>();
+            }
+            roomsByType[room.Type].Add(room);
+        }
+
+        foreach (var kvp in roomsByType)
+        {
+            Debug.Log($"{kvp.Key} Rooms ({kvp.Value.Count}):");
+            foreach (var room in kvp.Value)
+            {
+                string info = $"  Room {room.Id}: {room.Width}x{room.Height} at ({room.MinX}, {room.MinY})";
+                if (room.IsStart) info += " [START]";
+                if (room.IsEnd) info += " [END]";
+                Debug.Log(info);
+            }
+        }
+    }
+
+    /// <summary>
+    /// Example: Print terrain distribution
+    /// </summary>
+    private void PrintTerrainInfo(MazeData maze)
+    {
+        Debug.Log("\n=== TERRAIN DISTRIBUTION ===");
+        var terrainCounts = new Dictionary<MazeTile.TerrainType, int>();
+
+        for (int x = 0; x < maze.Width; x++)
+        {
+            for (int y = 0; y < maze.Height; y++)
+            {
+                var tile = maze.GetTile(x, y);
+                if (tile.Type == MazeTile.TileType.Floor || tile.Type == MazeTile.TileType.Terrain)
+                {
+                    if (!terrainCounts.ContainsKey(tile.Terrain))
+                    {
+                        terrainCounts[tile.Terrain] = 0;
+                    }
+                    terrainCounts[tile.Terrain]++;
+                }
+            }
+        }
+
+        foreach (var kvp in terrainCounts)
+        {
+            Debug.Log($"  {kvp.Key}: {kvp.Value} tiles");
+        }
+    }
+
+    /// <summary>
+    /// Example: Test pathfinding between start and end
+    /// </summary>
+    private void PerformPathfindingTest(MazeData maze)
+    {
+        if (maze.StartPoints.Count == 0 || maze.ExitPoints.Count == 0)
+        {
+            Debug.LogWarning("No start or exit points to test pathfinding");
+            return;
+        }
+
+        var pathfinder = new MazePathfinder(maze);
+        var start = maze.StartPoints[0];
+        var goal = maze.ExitPoints[0];
+
+        Debug.Log("\n=== PATHFINDING TEST ===");
+        Debug.Log($"Finding path from {start} to {goal}...");
+
+        var path = pathfinder.FindPath(start, goal);
+
+        if (path.Count > 0)
+        {
+            Debug.Log($"Path found! Length: {path.Count} tiles");
+
+            // Calculate total movement cost
+            float totalCost = 0f;
+            for (int i = 0; i < path.Count; i++)
+            {
+                var tile = maze.GetTile(path[i].x, path[i].y);
+                totalCost += tile.GetMovementCost();
+            }
+            Debug.Log($"Total movement cost: {totalCost:F2}x");
+
+            // Show path preview (first 20 tiles)
+            string pathPreview = "Path: ";
+            for (int i = 0; i < Mathf.Min(20, path.Count); i++)
+            {
+                pathPreview += path[i] + " ";
+            }
+            if (path.Count > 20)
+                pathPreview += "...";
+            Debug.Log(pathPreview);
+        }
+        else
+        {
+            Debug.LogWarning("No path found between start and goal!");
+        }
+    }
+
+    /// <summary>
+    /// Example: Find all reachable areas from a position
+    /// </summary>
+    public void TestReachableAreas()
+    {
+        var maze = mazeController.GetCurrentMaze();
+        if (maze == null || maze.StartPoints.Count == 0)
+        {
+            Debug.LogWarning("No maze or start points");
+            return;
+        }
+
+        var pathfinder = new MazePathfinder(maze);
+        var start = maze.StartPoints[0];
+        var reachable = pathfinder.FindReachableTiles(start, 50f);
+
+        Debug.Log($"Found {reachable.Count} tiles reachable within distance 50 from {start}");
+    }
+
+    /// <summary>
+    /// Example: Query a specific position in the maze
+    /// </summary>
+    public void QueryPosition(int x, int y)
+    {
+        var maze = mazeController.GetCurrentMaze();
+        if (maze == null)
+        {
+            Debug.LogWarning("No maze generated");
+            return;
+        }
+
+        var tile = maze.GetTile(x, y);
+        if (tile == null)
+        {
+            Debug.Log($"Position ({x}, {y}) is out of bounds");
+            return;
+        }
+
+        Debug.Log($"\n=== POSITION ({x}, {y}) ===");
+        Debug.Log($"Tile Type: {tile.Type}");
+        Debug.Log($"Terrain: {tile.Terrain}");
+        Debug.Log($"Walkable: {tile.IsWalkable()}");
+        Debug.Log($"Movement Cost: {tile.GetMovementCost()}x");
+        Debug.Log($"Room ID: {tile.RoomId}");
+
+        var room = maze.GetRoomAtTile(x, y);
+        if (room != null)
+        {
+            Debug.Log($"Room: {room.Type} (ID: {room.Id})");
+        }
+    }
+
+    /// <summary>
+    /// Example: Regenerate maze with different settings
+    /// </summary>
+    public void RegenerateMaze()
+    {
+        Debug.Log("Regenerating maze...");
+        mazeController.GenerateMaze();
+        Invoke(nameof(PrintMazeInfo), 0.1f);
+    }
+}

+ 2 - 0
Assets/Scripts/MazeExample.cs.meta

@@ -0,0 +1,2 @@
+fileFormatVersion: 2
+guid: 696d944109de380488bfacea86c9174d

+ 210 - 0
Assets/Scripts/MazeFogOfWar.cs

@@ -0,0 +1,210 @@
+using UnityEngine;
+using System.Collections.Generic;
+
+/// <summary>
+/// Manages fog of war for the maze - only shows explored areas
+/// AI entities can only see areas they've visited or are within their vision range
+/// </summary>
+public class MazeFogOfWar : MonoBehaviour
+{
+    [Header("Fog Settings")]
+    [SerializeField] private MazeController mazeController;
+
+    [Header("Rendering")]
+    [SerializeField] private ChunkedMazeRenderer chunkedRenderer;
+    [SerializeField] private MeshMazeRenderer meshRenderer;
+    [SerializeField] private Color fogColor = new Color(0.1f, 0.1f, 0.1f, 0.8f);
+    [SerializeField] private Material fogMaterial;
+
+    private HashSet<Vector2Int> exploredTiles = new();
+    private Dictionary<GameObject, HashSet<Vector2Int>> entityVisionRanges = new();
+
+    void Start()
+    {
+        if (fogMaterial == null)
+        {
+            CreateFogMaterial();
+        }
+
+        if (meshRenderer == null)
+        {
+            meshRenderer = GetComponent<MeshMazeRenderer>() ?? FindFirstObjectByType<MeshMazeRenderer>();
+        }
+    }
+
+    /// <summary>
+    /// Marks a tile as explored
+    /// </summary>
+    public void ExploreTile(Vector2Int tilePos)
+    {
+        exploredTiles.Add(tilePos);
+        UpdateRendering();
+    }
+
+    /// <summary>
+    /// Marks multiple tiles as explored
+    /// </summary>
+    public void ExploreTiles(IEnumerable<Vector2Int> tiles)
+    {
+        foreach (var tile in tiles)
+        {
+            exploredTiles.Add(tile);
+        }
+        UpdateRendering();
+    }
+
+    /// <summary>
+    /// Updates vision range for an entity
+    /// </summary>
+    public void UpdateEntityVision(GameObject entity, Vector2Int position, float range)
+    {
+        HashSet<Vector2Int> visibleTiles = GetVisibleTiles(position, range);
+
+        if (!entityVisionRanges.ContainsKey(entity))
+        {
+            entityVisionRanges[entity] = new HashSet<Vector2Int>();
+        }
+
+        // Remove old vision
+        foreach (var tile in entityVisionRanges[entity])
+        {
+            if (!exploredTiles.Contains(tile) && !IsTileVisibleByOtherEntities(tile))
+            {
+                // Tile should be hidden
+            }
+        }
+
+        // Add new vision
+        entityVisionRanges[entity] = visibleTiles;
+        foreach (var tile in visibleTiles)
+        {
+            exploredTiles.Add(tile);
+        }
+
+        UpdateRendering();
+    }
+
+    /// <summary>
+    /// Gets all tiles visible from a position within range
+    /// </summary>
+    private HashSet<Vector2Int> GetVisibleTiles(Vector2Int center, float range)
+    {
+        HashSet<Vector2Int> visible = new();
+        var maze = mazeController.GetCurrentMaze();
+        if (maze == null) return visible;
+
+        int rangeInt = Mathf.CeilToInt(range);
+
+        for (int x = center.x - rangeInt; x <= center.x + rangeInt; x++)
+        {
+            for (int y = center.y - rangeInt; y <= center.y + rangeInt; y++)
+            {
+                Vector2Int tilePos = new Vector2Int(x, y);
+                if (Vector2Int.Distance(center, tilePos) <= range)
+                {
+                    if (maze.IsInBounds(x, y) && HasLineOfSight(center, tilePos))
+                    {
+                        visible.Add(tilePos);
+                    }
+                }
+            }
+        }
+
+        return visible;
+    }
+
+    /// <summary>
+    /// Checks if there's line of sight between two points
+    /// </summary>
+    private bool HasLineOfSight(Vector2Int from, Vector2Int to)
+    {
+        var maze = mazeController.GetCurrentMaze();
+        if (maze == null) return false;
+
+        // Simple line of sight check - can be enhanced with proper raycasting
+        Vector2Int delta = to - from;
+        int steps = Mathf.Max(Mathf.Abs(delta.x), Mathf.Abs(delta.y));
+
+        for (int i = 1; i < steps; i++)
+        {
+            float t = (float)i / steps;
+            Vector2Int checkPos = new Vector2Int(
+                Mathf.RoundToInt(from.x + delta.x * t),
+                Mathf.RoundToInt(from.y + delta.y * t)
+            );
+
+            if (!maze.IsWalkable(checkPos.x, checkPos.y))
+            {
+                return false;
+            }
+        }
+
+        return true;
+    }
+
+    /// <summary>
+    /// Checks if a tile is visible by any other entity
+    /// </summary>
+    private bool IsTileVisibleByOtherEntities(Vector2Int tile)
+    {
+        foreach (var vision in entityVisionRanges.Values)
+        {
+            if (vision.Contains(tile))
+            {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    /// <summary>
+    /// Updates the rendering to show only explored areas
+    /// </summary>
+    private void UpdateRendering()
+    {
+        if (chunkedRenderer != null)
+        {
+            // The chunked renderer will handle showing/hiding tiles based on exploration
+            chunkedRenderer.RefreshVisibleChunks();
+        }
+
+        if (meshRenderer != null)
+        {
+            meshRenderer.RefreshFogOfWar();
+        }
+    }
+
+    /// <summary>
+    /// Creates a default fog material
+    /// </summary>
+    private void CreateFogMaterial()
+    {
+        fogMaterial = new Material(Shader.Find("Sprites/Default"));
+        fogMaterial.color = fogColor;
+    }
+
+    /// <summary>
+    /// Checks if a tile is explored
+    /// </summary>
+    public bool IsTileExplored(Vector2Int tile)
+    {
+        return exploredTiles.Contains(tile);
+    }
+
+    /// <summary>
+    /// Gets all explored tiles
+    /// </summary>
+    public HashSet<Vector2Int> GetExploredTiles()
+    {
+        return new HashSet<Vector2Int>(exploredTiles);
+    }
+
+    /// <summary>
+    /// Removes an entity from vision tracking
+    /// </summary>
+    public void RemoveEntity(GameObject entity)
+    {
+        entityVisionRanges.Remove(entity);
+        UpdateRendering();
+    }
+}

+ 2 - 0
Assets/Scripts/MazeFogOfWar.cs.meta

@@ -0,0 +1,2 @@
+fileFormatVersion: 2
+guid: 91bc0f8efa8d3204ea744041c65b00fe

+ 439 - 0
Assets/Scripts/MazeGenerator.cs

@@ -0,0 +1,439 @@
+using UnityEngine;
+using System.Collections.Generic;
+using System.Linq;
+
+/// <summary>
+/// Generates procedural mazes with rooms, hallways, and various terrain types
+/// Designed with AI pathfinding in mind - guarantees multiple paths and accessibility
+/// </summary>
+public class MazeGenerator
+{
+    public delegate void ProgressUpdate(int completedTiles, int totalTiles, string message);
+
+    private MazeConfig config;
+    private MazeData mazeData;
+    private System.Random random;
+    private ProgressUpdate progressCallback;
+    private int totalTiles;
+    private int completedTiles;
+    private string currentPhase;
+
+    public MazeGenerator(MazeConfig config, ProgressUpdate progressCallback = null)
+    {
+        this.config = config;
+        this.progressCallback = progressCallback;
+        config.Validate();
+
+        if (config.UseRandomSeed)
+        {
+            random = new System.Random();
+        }
+        else
+        {
+            random = new System.Random(config.RandomSeed);
+        }
+    }
+
+    private void ReportProgress(string message)
+    {
+        var fullMessage = string.IsNullOrEmpty(currentPhase)
+            ? message
+            : $"{currentPhase}: {message}";
+        progressCallback?.Invoke(completedTiles, totalTiles, fullMessage);
+    }
+
+    private void SetPhase(string phase)
+    {
+        currentPhase = phase;
+        ReportProgress("Starting");
+    }
+
+    /// <summary>
+    /// Generates a complete maze based on the config
+    /// </summary>
+    public MazeData Generate()
+    {
+        mazeData = new MazeData(config.Width, config.Height);
+        totalTiles = config.Width * config.Height;
+        completedTiles = 0;
+        SetPhase("Initialize");
+
+        // Step 1: Generate room layouts
+        GenerateRooms();
+
+        // Step 2: Connect rooms with hallways
+        ConnectRooms();
+
+        // Step 3: Apply terrain types
+        ApplyTerrains();
+
+        // Step 4: Place start and exit points
+        PlaceStartAndExitPoints();
+
+        // Step 5: Ensure connectivity (verify all rooms are reachable)
+        EnsureConnectivity();
+
+        SetPhase("Complete");
+        Debug.Log(mazeData.GetStatistics());
+
+        return mazeData;
+    }
+
+    /// <summary>
+    /// Step 1: Generates room layouts
+    /// </summary>
+    private void GenerateRooms()
+    {
+        SetPhase("Generate Rooms");
+        var rooms = new List<MazeRoom>();
+        int attempts = 0;
+        int maxAttempts = config.TargetRoomCount * 10;
+
+        while (rooms.Count < config.TargetRoomCount && attempts < maxAttempts)
+        {
+            attempts++;
+
+            int width = random.Next(config.MinRoomWidth, config.MaxRoomWidth + 1);
+            int height = random.Next(config.MinRoomHeight, config.MaxRoomHeight + 1);
+            int x = random.Next(1, config.Width - width - 1);
+            int y = random.Next(1, config.Height - height - 1);
+
+            var newRoom = new MazeRoom(rooms.Count, x, y, x + width - 1, y + height - 1);
+
+            // Check if room overlaps with existing rooms or walls (with spacing)
+            if (CanPlaceRoom(newRoom, rooms))
+            {
+                rooms.Add(newRoom);
+            }
+        }
+
+        // Assign room types based on configuration
+        AssignRoomTypes(rooms);
+
+        // Fill rooms in maze data
+        for (int i = 0; i < rooms.Count; i++)
+        {
+            var room = rooms[i];
+            mazeData.AddRoom(room.MinX, room.MinY, room.MaxX, room.MaxY, room.Type);
+            int filled = mazeData.FillRoom(room.MinX + 1, room.MinY + 1, room.MaxX - 1, room.MaxY - 1, i);
+            completedTiles += filled;
+            ReportProgress($"Generated room {i + 1}/{rooms.Count} ({completedTiles}/{totalTiles} tiles)");
+        }
+
+        Debug.Log($"Generated {rooms.Count} rooms");
+    }
+
+    /// <summary>
+    /// Checks if a room can be placed without overlapping or being too close to others
+    /// </summary>
+    private bool CanPlaceRoom(MazeRoom newRoom, List<MazeRoom> existingRooms)
+    {
+        // Check bounds
+        if (newRoom.MinX - config.MinRoomSpacing < 0 || newRoom.MaxX + config.MinRoomSpacing >= config.Width ||
+            newRoom.MinY - config.MinRoomSpacing < 0 || newRoom.MaxY + config.MinRoomSpacing >= config.Height)
+        {
+            return false;
+        }
+
+        // Check overlap/spacing with existing rooms
+        foreach (var room in existingRooms)
+        {
+            // Add spacing buffer
+            int minX = room.MinX - config.MinRoomSpacing;
+            int minY = room.MinY - config.MinRoomSpacing;
+            int maxX = room.MaxX + config.MinRoomSpacing;
+            int maxY = room.MaxY + config.MinRoomSpacing;
+
+            if (!(newRoom.MaxX < minX || newRoom.MinX > maxX ||
+                  newRoom.MaxY < minY || newRoom.MinY > maxY))
+            {
+                return false;
+            }
+        }
+
+        return true;
+    }
+
+    /// <summary>
+    /// Assigns room types (safe, rest, boss, etc.) to rooms
+    /// </summary>
+    private void AssignRoomTypes(List<MazeRoom> rooms)
+    {
+        var roomList = new List<MazeRoom>(rooms);
+
+        // Assign special room types
+        DistributeRoomType(roomList, MazeRoom.RoomType.Safe, config.SafeRoomCount);
+        DistributeRoomType(roomList, MazeRoom.RoomType.Rest, config.RestRoomCount);
+        DistributeRoomType(roomList, MazeRoom.RoomType.Boss, config.BossRoomCount);
+
+        // Reset unassigned rooms to Normal
+        foreach (var room in rooms)
+        {
+            if (room.Type != MazeRoom.RoomType.Safe &&
+                room.Type != MazeRoom.RoomType.Rest &&
+                room.Type != MazeRoom.RoomType.Boss)
+            {
+                room.Type = MazeRoom.RoomType.Normal;
+            }
+        }
+    }
+
+    /// <summary>
+    /// Distributes a specific room type to random rooms
+    /// </summary>
+    private void DistributeRoomType(List<MazeRoom> rooms, MazeRoom.RoomType type, int count)
+    {
+        int assigned = 0;
+        var available = rooms.Where(r => r.Type == MazeRoom.RoomType.Normal).ToList();
+
+        while (assigned < count && available.Count > 0)
+        {
+            int idx = random.Next(available.Count);
+            var room = available[idx];
+            room.Type = type;
+            available.RemoveAt(idx);
+            assigned++;
+        }
+    }
+
+    /// <summary>
+    /// Step 2: Connects rooms with hallways
+    /// Uses a modified Minimum Spanning Tree approach
+    /// </summary>
+    private void ConnectRooms()
+    {
+        SetPhase("Connect Rooms");
+        var rooms = mazeData.Rooms;
+        if (rooms.Count == 0) return;
+
+        var connected = new HashSet<int> { rooms[0].Id };
+        var unconnected = new HashSet<int>(rooms.Select(r => r.Id));
+        unconnected.Remove(rooms[0].Id);
+
+        while (unconnected.Count > 0)
+        {
+            // Find closest connected-unconnected room pair
+            float minDist = float.MaxValue;
+            MazeRoom from = null;
+            MazeRoom to = null;
+
+            foreach (var connectedId in connected)
+            {
+                var connectedRoom = rooms.First(r => r.Id == connectedId);
+                foreach (var unconnectedId in unconnected)
+                {
+                    var unconnectedRoom = rooms.First(r => r.Id == unconnectedId);
+                    float dist = Vector2Int.Distance(connectedRoom.GetCenter(), unconnectedRoom.GetCenter());
+
+                    if (dist < minDist)
+                    {
+                        minDist = dist;
+                        from = connectedRoom;
+                        to = unconnectedRoom;
+                    }
+                }
+            }
+
+            if (from != null && to != null)
+            {
+                // Create hallway between rooms
+                CreateHallway(from, to);
+                connected.Add(to.Id);
+                unconnected.Remove(to.Id);
+            }
+        }
+
+        // Add extra connections for multiple paths
+        AddExtraConnections(rooms);
+
+        Debug.Log("Connected rooms with hallways");
+    }
+
+    /// <summary>
+    /// Creates a hallway between two rooms
+    /// </summary>
+    private int CreateHallway(MazeRoom from, MazeRoom to)
+    {
+        var pathA = GeneratePath(from.GetCenter(), to.GetCenter());
+        int changed = mazeData.DrawPath(pathA, config.MinHallwayWidth);
+        completedTiles += changed;
+        ReportProgress($"Connected room {from.Id} to {to.Id} ({completedTiles}/{totalTiles} tiles)");
+        return changed;
+    }
+
+    /// <summary>
+    /// Generates a path between two points using A* or simple line algorithm
+    /// </summary>
+    private List<Vector2Int> GeneratePath(Vector2Int start, Vector2Int end)
+    {
+        var path = new List<Vector2Int>();
+
+        // Simple L-shaped path (can be enhanced with A* for better aesthetics)
+        int x = start.x;
+        int y = start.y;
+
+        // Move horizontally first
+        while (x != end.x)
+        {
+            x += x < end.x ? 1 : -1;
+            path.Add(new Vector2Int(x, y));
+        }
+
+        // Then vertically
+        while (y != end.y)
+        {
+            y += y < end.y ? 1 : -1;
+            path.Add(new Vector2Int(x, y));
+        }
+
+        return path;
+    }
+
+    /// <summary>
+    /// Adds extra connections between rooms to create multiple paths
+    /// </summary>
+    private void AddExtraConnections(List<MazeRoom> rooms)
+    {
+        // For each room, randomly connect to nearby rooms
+        int extraConnections = Mathf.Max(1, rooms.Count / 10);
+
+        for (int i = 0; i < extraConnections; i++)
+        {
+            var room1 = rooms[random.Next(rooms.Count)];
+            var room2 = rooms[random.Next(rooms.Count)];
+
+            if (room1 != room2)
+            {
+                CreateHallway(room1, room2);
+            }
+        }
+    }
+
+    /// <summary>
+    /// Step 3: Applies different terrain types to areas
+    /// </summary>
+    private void ApplyTerrains()
+    {
+        SetPhase("Apply Terrains");
+        var normalRooms = mazeData.GetRoomsByType(MazeRoom.RoomType.Normal);
+
+        // Apply swampy terrain to some normal rooms
+        for (int i = 0; i < normalRooms.Count * 0.2f; i++)
+        {
+            var room = normalRooms[random.Next(normalRooms.Count)];
+            ApplyTerrainToRoom(room, MazeTile.TerrainType.Swamp);
+        }
+
+        // Apply stone terrain to some normal rooms
+        for (int i = 0; i < normalRooms.Count * 0.1f; i++)
+        {
+            var room = normalRooms[random.Next(normalRooms.Count)];
+            ApplyTerrainToRoom(room, MazeTile.TerrainType.Stone);
+        }
+    }
+
+    /// <summary>
+    /// Applies a specific terrain type to a room
+    /// </summary>
+    private void ApplyTerrainToRoom(MazeRoom room, MazeTile.TerrainType terrain)
+    {
+        for (int x = room.MinX + 1; x < room.MaxX; x++)
+        {
+            for (int y = room.MinY + 1; y < room.MaxY; y++)
+            {
+                var tile = mazeData.GetTile(x, y);
+                if (tile.Type == MazeTile.TileType.Floor)
+                {
+                    tile.Terrain = terrain;
+                }
+            }
+        }
+    }
+
+    /// <summary>
+    /// Step 4: Places start and exit points
+    /// </summary>
+    private void PlaceStartAndExitPoints()
+    {
+        SetPhase("Place Start/Exit Points");
+        var rooms = mazeData.Rooms;
+        if (rooms.Count == 0) return;
+
+        // Place start points
+        int startCount = random.Next(config.MinStartPoints, config.MaxStartPoints + 1);
+        for (int i = 0; i < startCount && i < rooms.Count; i++)
+        {
+            var room = rooms[i];
+            room.IsStart = true;
+            var point = room.GetRandomPoint();
+            mazeData.AddStartPoint(point);
+        }
+
+        // Place exit points
+        int exitCount = random.Next(config.MinExits, config.MaxExits + 1);
+        var endRooms = mazeData.GetRoomsByType(MazeRoom.RoomType.End);
+
+        if (endRooms.Count == 0)
+        {
+            // Create end rooms if they don't exist
+            int exitsPlaced = 0;
+            int roomIndex = 0;
+            while (exitsPlaced < exitCount && roomIndex < rooms.Count)
+            {
+                if (!rooms[roomIndex].IsStart)
+                {
+                    rooms[roomIndex].Type = MazeRoom.RoomType.End;
+                    rooms[roomIndex].IsEnd = true;
+                    var point = rooms[roomIndex].GetRandomPoint();
+                    mazeData.AddExitPoint(point);
+                    exitsPlaced++;
+                }
+                roomIndex++;
+            }
+        }
+        else
+        {
+            foreach (var room in endRooms.Take(exitCount))
+            {
+                room.IsEnd = true;
+                var point = room.GetRandomPoint();
+                mazeData.AddExitPoint(point);
+            }
+        }
+
+        Debug.Log($"Placed {startCount} start points and {exitCount} exit points");
+    }
+
+    /// <summary>
+    /// Step 5: Ensures all rooms are connected and reachable
+    /// </summary>
+    private void EnsureConnectivity()
+    {
+        SetPhase("Ensure Connectivity");
+        // Simple BFS from first start point to check connectivity
+        if (mazeData.StartPoints.Count == 0) return;
+
+        var start = mazeData.StartPoints[0];
+        var visited = new HashSet<Vector2Int>();
+        var queue = new Queue<Vector2Int>();
+        queue.Enqueue(start);
+        visited.Add(start);
+
+        while (queue.Count > 0)
+        {
+            var current = queue.Dequeue();
+            var adjacent = mazeData.GetAdjacentWalkable(current.x, current.y);
+
+            foreach (var next in adjacent)
+            {
+                if (!visited.Contains(next))
+                {
+                    visited.Add(next);
+                    queue.Enqueue(next);
+                }
+            }
+        }
+
+        Debug.Log($"Connectivity check: {visited.Count} tiles reachable from start point");
+    }
+}

+ 2 - 0
Assets/Scripts/MazeGenerator.cs.meta

@@ -0,0 +1,2 @@
+fileFormatVersion: 2
+guid: 6de7626543dcbca4eb1fdbfc05d1364e

+ 195 - 0
Assets/Scripts/MazePathfinder.cs

@@ -0,0 +1,195 @@
+using UnityEngine;
+using System.Collections.Generic;
+using System.Linq;
+
+/// <summary>
+/// Handles pathfinding through the maze using A* algorithm
+/// Takes into account terrain movement costs
+/// </summary>
+public class MazePathfinder
+{
+    private MazeData mazeData;
+
+    public class PathNode
+    {
+        public Vector2Int Position { get; set; }
+        public PathNode Parent { get; set; }
+        public float GCost { get; set; }  // Cost from start
+        public float HCost { get; set; }  // Heuristic cost to goal
+        public float FCost => GCost + HCost;
+
+        public PathNode(Vector2Int position, PathNode parent, float gCost, float hCost)
+        {
+            Position = position;
+            Parent = parent;
+            GCost = gCost;
+            HCost = hCost;
+        }
+    }
+
+    public MazePathfinder(MazeData mazeData)
+    {
+        this.mazeData = mazeData;
+    }
+
+    /// <summary>
+    /// Finds a path from start to goal using A* algorithm
+    /// </summary>
+    public List<Vector2Int> FindPath(Vector2Int start, Vector2Int goal)
+    {
+        var openSet = new List<PathNode>();
+        var closedSet = new HashSet<Vector2Int>();
+
+        var startNode = new PathNode(start, null, 0, Heuristic(start, goal));
+        openSet.Add(startNode);
+
+        while (openSet.Count > 0)
+        {
+            // Find node with lowest F cost
+            int current = 0;
+            for (int i = 1; i < openSet.Count; i++)
+            {
+                if (openSet[i].FCost < openSet[current].FCost)
+                {
+                    current = i;
+                }
+            }
+
+            var currentNode = openSet[current];
+
+            if (currentNode.Position == goal)
+            {
+                return ReconstructPath(currentNode);
+            }
+
+            openSet.RemoveAt(current);
+            closedSet.Add(currentNode.Position);
+
+            // Check neighbors
+            var neighbors = GetNeighbors(currentNode.Position);
+            foreach (var neighbor in neighbors)
+            {
+                if (closedSet.Contains(neighbor))
+                    continue;
+
+                float movementCost = GetMovementCost(neighbor);
+                float tentativeGCost = currentNode.GCost + movementCost;
+
+                var existingNode = openSet.FirstOrDefault(n => n.Position == neighbor);
+                if (existingNode != null)
+                {
+                    if (tentativeGCost < existingNode.GCost)
+                    {
+                        existingNode.Parent = currentNode;
+                        existingNode.GCost = tentativeGCost;
+                    }
+                }
+                else
+                {
+                    var hCost = Heuristic(neighbor, goal);
+                    openSet.Add(new PathNode(neighbor, currentNode, tentativeGCost, hCost));
+                }
+            }
+        }
+
+        // No path found
+        return new List<Vector2Int>();
+    }
+
+    /// <summary>
+    /// Gets the movable neighbors of a position
+    /// </summary>
+    private List<Vector2Int> GetNeighbors(Vector2Int position)
+    {
+        var neighbors = new List<Vector2Int>();
+        Vector2Int[] directions = new[]
+        {
+            new Vector2Int(position.x + 1, position.y),
+            new Vector2Int(position.x - 1, position.y),
+            new Vector2Int(position.x, position.y + 1),
+            new Vector2Int(position.x, position.y - 1),
+            // Optionally add diagonals:
+            // new Vector2Int(position.x + 1, position.y + 1),
+            // new Vector2Int(position.x - 1, position.y + 1),
+            // new Vector2Int(position.x + 1, position.y - 1),
+            // new Vector2Int(position.x - 1, position.y - 1),
+        };
+
+        foreach (var dir in directions)
+        {
+            if (mazeData.IsWalkable(dir.x, dir.y))
+            {
+                neighbors.Add(dir);
+            }
+        }
+
+        return neighbors;
+    }
+
+    /// <summary>
+    /// Gets the movement cost for a tile based on terrain
+    /// </summary>
+    private float GetMovementCost(Vector2Int position)
+    {
+        var tile = mazeData.GetTile(position.x, position.y);
+        if (tile == null) return float.MaxValue;
+        return tile.GetMovementCost();
+    }
+
+    /// <summary>
+    /// Heuristic function (Manhattan distance)
+    /// </summary>
+    private float Heuristic(Vector2Int from, Vector2Int to)
+    {
+        return Mathf.Abs(from.x - to.x) + Mathf.Abs(from.y - to.y);
+    }
+
+    /// <summary>
+    /// Reconstructs the path from goal to start
+    /// </summary>
+    private List<Vector2Int> ReconstructPath(PathNode node)
+    {
+        var path = new List<Vector2Int>();
+        while (node != null)
+        {
+            path.Add(node.Position);
+            node = node.Parent;
+        }
+        path.Reverse();
+        return path;
+    }
+
+    /// <summary>
+    /// Finds all reachable tiles from a starting position within a certain distance
+    /// </summary>
+    public HashSet<Vector2Int> FindReachableTiles(Vector2Int start, float maxDistance)
+    {
+        var reachable = new HashSet<Vector2Int>();
+        var queue = new Queue<(Vector2Int pos, float distance)>();
+        queue.Enqueue((start, 0));
+        reachable.Add(start);
+
+        while (queue.Count > 0)
+        {
+            var (current, distance) = queue.Dequeue();
+            var neighbors = GetNeighbors(current);
+
+            foreach (var neighbor in neighbors)
+            {
+                if (!reachable.Contains(neighbor))
+                {
+                    float cost = GetMovementCost(neighbor);
+                    float newDistance = distance + cost;
+
+                    if (newDistance <= maxDistance)
+                    {
+                        reachable.Add(neighbor);
+                        queue.Enqueue((neighbor, newDistance));
+                    }
+                }
+            }
+        }
+
+        return reachable;
+    }
+}

+ 2 - 0
Assets/Scripts/MazePathfinder.cs.meta

@@ -0,0 +1,2 @@
+fileFormatVersion: 2
+guid: df57a830ae7645145b4fe7ae050efa8f

+ 394 - 0
Assets/Scripts/MazeRenderer.cs

@@ -0,0 +1,394 @@
+using UnityEngine;
+using UnityEngine.Tilemaps;
+using System.Collections.Generic;
+
+/// <summary>
+/// Renders a maze to a tilemap for visualization
+/// This allows you to see the generated maze in the game scene
+/// </summary>
+[RequireComponent(typeof(Grid))]
+public class MazeRenderer : MonoBehaviour
+{
+    [SerializeField] private MazeController mazeController;
+    [SerializeField] private Tilemap combinedTilemap;
+    [SerializeField] private Tilemap floorTilemap;
+    [SerializeField] private Tilemap wallTilemap;
+    [SerializeField] private Tilemap decorationTilemap;
+
+    [Header("Tile Assets")]
+    [SerializeField] private TileBase floorTile;
+    [SerializeField] private TileBase floorCenterTile;
+    [SerializeField] private TileBase floorEdgeTile;
+    [SerializeField] private TileBase floorCornerTile;
+    [SerializeField] private TileBase wallTile;
+    [SerializeField] private TileBase swampTile;
+    [SerializeField] private TileBase stoneTile;
+    [SerializeField] private TileBase lavaTile;
+
+    [Header("Wall Variant Tiles")]
+    [SerializeField] private TileBase wallCenterTile;
+    [SerializeField] private TileBase wallVerticalTile;
+    [SerializeField] private TileBase wallHorizontalTile;
+    [SerializeField] private TileBase wallCornerNW;
+    [SerializeField] private TileBase wallCornerNE;
+    [SerializeField] private TileBase wallCornerSE;
+    [SerializeField] private TileBase wallCornerSW;
+    [SerializeField] private TileBase wallCornerGenericTile;
+    [SerializeField] private TileBase wallEndNorthTile;
+    [SerializeField] private TileBase wallEndEastTile;
+    [SerializeField] private TileBase wallEndSouthTile;
+    [SerializeField] private TileBase wallEndWestTile;
+    [SerializeField] private TileBase wallEndTile;
+    [SerializeField] private TileBase wallTJNorthTile;
+    [SerializeField] private TileBase wallTJEastTile;
+    [SerializeField] private TileBase wallTJSouthTile;
+    [SerializeField] private TileBase wallTJWestTile;
+    [SerializeField] private TileBase wallTTile;
+    [SerializeField] private TileBase wallCrossTile;
+
+    [Header("Debug")]
+    [SerializeField] private bool showNeighborMaskDebug = false;
+
+    [SerializeField] private Sprite startMarkerSprite;
+    [SerializeField] private Sprite exitMarkerSprite;
+
+    private Dictionary<MazeTile.TerrainType, TileBase> terrainTiles;
+
+    void OnEnable()
+    {
+        SetupTerrainDictionary();
+    }
+
+    void SetupTerrainDictionary()
+    {
+        terrainTiles = new Dictionary<MazeTile.TerrainType, TileBase>
+        {
+            { MazeTile.TerrainType.Normal, floorTile ?? wallTile },
+            { MazeTile.TerrainType.Swamp, swampTile ?? floorTile ?? wallTile },
+            { MazeTile.TerrainType.Stone, stoneTile ?? floorTile ?? wallTile },
+            { MazeTile.TerrainType.Lava, lavaTile ?? floorTile ?? wallTile },
+        };
+    }
+
+    /// <summary>
+    /// Renders the maze to the tilemaps
+    /// </summary>
+    public void RenderMaze()
+    {
+        ClearTilemaps();
+
+        var maze = mazeController.GetCurrentMaze();
+        if (maze == null)
+        {
+            Debug.LogError("No maze to render");
+            return;
+        }
+
+        // For very large mazes, skip full rendering to prevent crashes
+        if (maze.Width > 500 || maze.Height > 500)
+        {
+            Debug.LogWarning($"Maze too large ({maze.Width}x{maze.Height}) for tilemap rendering. Consider using chunked rendering or 3D mesh generation.");
+            return;
+        }
+
+        // Auto-generate placeholder tiles if none are assigned
+        if (floorTile == null)
+        {
+            GeneratePlaceholderTiles();
+        }
+
+        // Render tiles
+        for (int x = 0; x < maze.Width; x++)
+        {
+            for (int y = 0; y < maze.Height; y++)
+            {
+                var tile = maze.GetTile(x, y);
+                var position = new Vector3Int(x, y, 0);
+
+                if (combinedTilemap != null)
+                {
+                    if (tile.Type == MazeTile.TileType.Wall)
+                    {
+                        var wallDefinition = GetWallTileDefinition(maze, x, y);
+                        SetTileWithRotation(combinedTilemap, position, wallDefinition.tile, wallDefinition.rotation);
+                    }
+                    else if (tile.Type == MazeTile.TileType.Floor || tile.Type == MazeTile.TileType.Terrain)
+                    {
+                        combinedTilemap.SetTile(position, GetFloorTile(maze, x, y, tile.Terrain));
+                    }
+                }
+                else
+                {
+                    if (tile.Type == MazeTile.TileType.Wall)
+                    {
+                        var wallDefinition = GetWallTileDefinition(maze, x, y);
+                        SetTileWithRotation(wallTilemap, position, wallDefinition.tile, wallDefinition.rotation);
+                    }
+                    else if (tile.Type == MazeTile.TileType.Floor || tile.Type == MazeTile.TileType.Terrain)
+                    {
+                        floorTilemap.SetTile(position, GetFloorTile(maze, x, y, tile.Terrain));
+                    }
+                }
+            }
+        }
+
+        // Render room markers (optional - can cause performance issues with large mazes)
+        // RenderRoomBoundaries(maze);
+
+        // Render start and exit points
+        RenderStartPoints(maze);
+        RenderExitPoints(maze);
+
+        if (showNeighborMaskDebug)
+        {
+            LogNeighborMaskStats(maze);
+        }
+
+        Debug.Log("Maze rendered");
+    }
+
+    /// <summary>
+    /// Gets the tilemap tile for a terrain type
+    /// </summary>
+    private TileBase GetTerrainTile(MazeTile.TerrainType terrain)
+    {
+        if (terrainTiles.TryGetValue(terrain, out var tile))
+        {
+            return tile;
+        }
+        return floorTile;
+    }
+
+    private TileBase GetFloorTile(MazeData maze, int x, int y, MazeTile.TerrainType terrain)
+    {
+        int openMask = GetFloorOpenMask(maze, x, y);
+        return openMask switch
+        {
+            0 => floorCenterTile ?? GetTerrainTile(terrain),
+            1 or 2 or 4 or 8 => floorEdgeTile ?? GetTerrainTile(terrain),
+            3 or 6 or 12 or 9 => floorCornerTile ?? GetTerrainTile(terrain),
+            5 or 10 => GetTerrainTile(terrain),
+            _ => GetTerrainTile(terrain),
+        };
+    }
+
+    private (TileBase tile, Quaternion rotation) GetWallTileDefinition(MazeData maze, int x, int y)
+    {
+        int openMask = GetWallOpenMask(maze, x, y);
+        if (showNeighborMaskDebug)
+        {
+            Debug.Log($"Wall mask @({x},{y}) = {openMask}");
+        }
+
+        return openMask switch
+        {
+            0 => (wallCenterTile ?? wallTile, Quaternion.identity),
+            5 => (wallVerticalTile ?? wallTile, Quaternion.identity),
+            10 => (wallHorizontalTile ?? wallTile, Quaternion.identity),
+            3 => (wallCornerNE ?? wallCornerGenericTile ?? wallTile, Quaternion.identity),
+            6 => (wallCornerSE ?? wallCornerGenericTile ?? wallTile, Quaternion.identity),
+            12 => (wallCornerSW ?? wallCornerGenericTile ?? wallTile, Quaternion.identity),
+            9 => (wallCornerNW ?? wallCornerGenericTile ?? wallTile, Quaternion.identity),
+            1 => (wallEndNorthTile ?? wallEndTile ?? wallTile, Quaternion.identity),
+            2 => (wallEndEastTile ?? wallEndTile ?? wallTile, Quaternion.Euler(0, 0, 270)),
+            4 => (wallEndSouthTile ?? wallEndTile ?? wallTile, Quaternion.Euler(0, 0, 180)),
+            8 => (wallEndWestTile ?? wallEndTile ?? wallTile, Quaternion.Euler(0, 0, 90)),
+            7 => (wallTJNorthTile ?? wallTTile ?? wallTile, Quaternion.identity),
+            11 => (wallTJEastTile ?? wallTTile ?? wallTile, Quaternion.Euler(0, 0, 270)),
+            14 => (wallTJSouthTile ?? wallTTile ?? wallTile, Quaternion.Euler(0, 0, 180)),
+            13 => (wallTJWestTile ?? wallTTile ?? wallTile, Quaternion.Euler(0, 0, 90)),
+            15 => (wallCrossTile ?? wallTile, Quaternion.identity),
+            _ => (wallTile, Quaternion.identity),
+        };
+    }
+
+    private void SetTileWithRotation(Tilemap tilemap, Vector3Int position, TileBase tile, Quaternion rotation)
+    {
+        tilemap.SetTile(position, tile);
+        tilemap.SetTransformMatrix(position, Matrix4x4.TRS(Vector3.zero, rotation, Vector3.one));
+    }
+
+    private bool IsWallNeighbor(MazeData maze, int x, int y)
+    {
+        if (!maze.IsInBounds(x, y))
+        {
+            return true;
+        }
+        var tile = maze.GetTile(x, y);
+        return tile != null && tile.Type == MazeTile.TileType.Wall;
+    }
+
+    private bool IsWalkableNeighbor(MazeData maze, int x, int y)
+    {
+        if (!maze.IsInBounds(x, y))
+        {
+            return false;
+        }
+        var tile = maze.GetTile(x, y);
+        return tile != null && (tile.Type == MazeTile.TileType.Floor || tile.Type == MazeTile.TileType.Terrain);
+    }
+
+    private int GetWallOpenMask(MazeData maze, int x, int y)
+    {
+        int mask = 0;
+        if (!IsWallNeighbor(maze, x, y + 1)) mask |= 1; // north open
+        if (!IsWallNeighbor(maze, x + 1, y)) mask |= 2; // east open
+        if (!IsWallNeighbor(maze, x, y - 1)) mask |= 4; // south open
+        if (!IsWallNeighbor(maze, x - 1, y)) mask |= 8; // west open
+        return mask;
+    }
+
+    private int GetFloorOpenMask(MazeData maze, int x, int y)
+    {
+        int mask = 0;
+        if (IsWalkableNeighbor(maze, x, y + 1)) mask |= 1; // north walkable
+        if (IsWalkableNeighbor(maze, x + 1, y)) mask |= 2; // east walkable
+        if (IsWalkableNeighbor(maze, x, y - 1)) mask |= 4; // south walkable
+        if (IsWalkableNeighbor(maze, x - 1, y)) mask |= 8; // west walkable
+        return mask;
+    }
+
+    private void LogNeighborMaskStats(MazeData maze)
+    {
+        int wallMaskCount = 0;
+        int floorMaskCount = 0;
+        for (int x = 0; x < maze.Width; x++)
+        {
+            for (int y = 0; y < maze.Height; y++)
+            {
+                var tile = maze.GetTile(x, y);
+                if (tile.Type == MazeTile.TileType.Wall)
+                {
+                    if (GetWallOpenMask(maze, x, y) != 0) wallMaskCount++;
+                }
+                else if (tile.Type == MazeTile.TileType.Floor || tile.Type == MazeTile.TileType.Terrain)
+                {
+                    if (GetFloorOpenMask(maze, x, y) != 0) floorMaskCount++;
+                }
+            }
+        }
+
+        Debug.Log($"Neighbor mask debug: wall tiles with open sides={wallMaskCount}, floor tiles with adjacent walkable={floorMaskCount}");
+    }
+
+    /// <summary>
+    /// Renders start points as visual markers
+    /// </summary>
+    private void RenderStartPoints(MazeData maze)
+    {
+        foreach (var point in maze.StartPoints)
+        {
+            var go = new GameObject($"StartPoint_{point.x}_{point.y}");
+            go.transform.parent = transform;
+            go.transform.position = new Vector3(point.x + 0.5f, point.y + 0.5f, -1);
+
+            if (startMarkerSprite != null)
+            {
+                var spriteRenderer = go.AddComponent<SpriteRenderer>();
+                spriteRenderer.sprite = startMarkerSprite;
+                spriteRenderer.color = new Color(0, 1, 0, 0.7f);
+            }
+        }
+    }
+
+    /// <summary>
+    /// Renders exit points as visual markers
+    /// </summary>
+    private void RenderExitPoints(MazeData maze)
+    {
+        foreach (var point in maze.ExitPoints)
+        {
+            var go = new GameObject($"ExitPoint_{point.x}_{point.y}");
+            go.transform.parent = transform;
+            go.transform.position = new Vector3(point.x + 0.5f, point.y + 0.5f, -1);
+
+            if (exitMarkerSprite != null)
+            {
+                var spriteRenderer = go.AddComponent<SpriteRenderer>();
+                spriteRenderer.sprite = exitMarkerSprite;
+                spriteRenderer.color = new Color(1, 0, 0, 0.7f);
+            }
+        }
+    }
+
+    /// <summary>
+    /// Renders room boundaries (disabled by default for performance)
+    /// </summary>
+    private void RenderRoomBoundaries(MazeData maze)
+    {
+        foreach (var room in maze.Rooms)
+        {
+            // You could draw gizmo lines or use wireframe renderer
+            Debug.DrawLine(new Vector3(room.MinX, room.MinY, 0),
+                          new Vector3(room.MaxX, room.MinY, 0), Color.cyan);
+            Debug.DrawLine(new Vector3(room.MaxX, room.MinY, 0),
+                          new Vector3(room.MaxX, room.MaxY, 0), Color.cyan);
+            Debug.DrawLine(new Vector3(room.MaxX, room.MaxY, 0),
+                          new Vector3(room.MinX, room.MaxY, 0), Color.cyan);
+            Debug.DrawLine(new Vector3(room.MinX, room.MaxY, 0),
+                          new Vector3(room.MinX, room.MinY, 0), Color.cyan);
+        }
+    }
+
+    /// <summary>
+    /// Clears all tilemaps
+    /// </summary>
+    private void ClearTilemaps()
+    {
+        if (combinedTilemap != null)
+        {
+            combinedTilemap.ClearAllTiles();
+        }
+        else
+        {
+            if (floorTilemap != null) floorTilemap.ClearAllTiles();
+            if (wallTilemap != null) wallTilemap.ClearAllTiles();
+        }
+
+        if (decorationTilemap != null) decorationTilemap.ClearAllTiles();
+
+        // Clear markers
+        foreach (Transform child in transform)
+        {
+            Destroy(child.gameObject);
+        }
+    }
+
+    /// <summary>
+    /// Generates placeholder tiles at runtime if none are assigned
+    /// </summary>
+    private void GeneratePlaceholderTiles()
+    {
+        floorTile = TileGenerator.CreateTile(TileGenerator.CreateColoredSprite(new Color(0.8f, 0.8f, 0.8f), "Floor"));
+        floorCenterTile = floorTile;
+        floorEdgeTile = floorTile;
+        floorCornerTile = floorTile;
+        wallTile = TileGenerator.CreateTile(TileGenerator.CreateColoredSprite(new Color(0.3f, 0.3f, 0.3f), "Wall"));
+        wallCenterTile = wallTile;
+        wallVerticalTile = wallTile;
+        wallHorizontalTile = wallTile;
+        wallCornerNW = wallTile;
+        wallCornerNE = wallTile;
+        wallCornerSE = wallTile;
+        wallCornerSW = wallTile;
+        wallCornerGenericTile = wallTile;
+        wallEndNorthTile = wallTile;
+        wallEndEastTile = wallTile;
+        wallEndSouthTile = wallTile;
+        wallEndWestTile = wallTile;
+        wallEndTile = wallTile;
+        wallTJNorthTile = wallTile;
+        wallTJEastTile = wallTile;
+        wallTJSouthTile = wallTile;
+        wallTJWestTile = wallTile;
+        wallTTile = wallTile;
+        wallCrossTile = wallTile;
+        swampTile = TileGenerator.CreateTile(TileGenerator.CreateCheckerSprite(new Color(0.5f, 0.8f, 0.3f), new Color(0.4f, 0.6f, 0.2f), "Swamp"));
+        stoneTile = TileGenerator.CreateTile(TileGenerator.CreateCheckerSprite(new Color(0.7f, 0.7f, 0.7f), new Color(0.6f, 0.6f, 0.6f), "Stone"));
+        lavaTile = TileGenerator.CreateTile(TileGenerator.CreateColoredSprite(new Color(1.0f, 0.4f, 0.0f), "Lava"));
+
+        // Rebuild the terrain dictionary
+        SetupTerrainDictionary();
+        Debug.Log("Generated placeholder tiles for maze rendering");
+    }
+}

+ 2 - 0
Assets/Scripts/MazeRenderer.cs.meta

@@ -0,0 +1,2 @@
+fileFormatVersion: 2
+guid: de93e41ca0a03784aae0843e91b1c824

+ 99 - 0
Assets/Scripts/MazeRendererSetup.cs

@@ -0,0 +1,99 @@
+using UnityEngine;
+using UnityEngine.Tilemaps;
+
+/// <summary>
+/// Helper script to set up MazeRenderer with placeholder tiles
+/// Attach this to the MazeRenderer and click "Generate Placeholder Tiles" in the inspector
+/// </summary>
+[RequireComponent(typeof(MazeRenderer))]
+public class MazeRendererSetup : MonoBehaviour
+{
+    /// <summary>
+    /// Call this from the inspector or in code to generate placeholder tiles
+    /// </summary>
+    [ContextMenu("Generate and Assign Placeholder Tiles")]
+    public void GeneratePlaceholderTiles()
+    {
+        var renderer = GetComponent<MazeRenderer>();
+        if (renderer == null)
+        {
+            Debug.LogError("MazeRenderer not found!");
+            return;
+        }
+
+        // Create placeholder sprites
+        var floorSprite = TileGenerator.CreateColoredSprite(new Color(0.8f, 0.8f, 0.8f), "Floor");
+        var wallSprite = TileGenerator.CreateColoredSprite(new Color(0.3f, 0.3f, 0.3f), "Wall");
+        var swampSprite = TileGenerator.CreateCheckerSprite(new Color(0.5f, 0.8f, 0.3f), new Color(0.4f, 0.6f, 0.2f), "Swamp");
+        var stoneSprite = TileGenerator.CreateCheckerSprite(new Color(0.7f, 0.7f, 0.7f), new Color(0.6f, 0.6f, 0.6f), "Stone");
+        var lavaSprite = TileGenerator.CreateColoredSprite(new Color(1.0f, 0.4f, 0.0f), "Lava");
+
+        // Create tiles
+        var floorTile = TileGenerator.CreateTile(floorSprite);
+        var wallTile = TileGenerator.CreateTile(wallSprite);
+        var swampTile = TileGenerator.CreateTile(swampSprite);
+        var stoneTile = TileGenerator.CreateTile(stoneSprite);
+        var lavaTile = TileGenerator.CreateTile(lavaSprite);
+
+        // Assign to renderer via reflection (since the fields are private with SerializeField)
+        var type = renderer.GetType();
+        type.GetField("floorTile", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance)?.SetValue(renderer, floorTile);
+        type.GetField("wallTile", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance)?.SetValue(renderer, wallTile);
+        type.GetField("swampTile", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance)?.SetValue(renderer, swampTile);
+        type.GetField("stoneTile", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance)?.SetValue(renderer, stoneTile);
+        type.GetField("lavaTile", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance)?.SetValue(renderer, lavaTile);
+
+        Debug.Log("Placeholder tiles generated and assigned!");
+    }
+
+    /// <summary>
+    /// Creates empty tilemaps if they don't exist
+    /// </summary>
+    [ContextMenu("Create Missing Tilemaps")]
+    public void CreateMissingTilemaps()
+    {
+        var grid = GetComponent<Grid>();
+        if (grid == null)
+        {
+            Debug.LogError("Grid not found on this GameObject!");
+            return;
+        }
+
+        // Create tilemaps if they don't exist
+        var combinedTilemap = transform.Find("CombinedTilemap")?.GetComponent<Tilemap>();
+        if (combinedTilemap == null)
+        {
+            var go = new GameObject("CombinedTilemap");
+            go.transform.parent = transform;
+            combinedTilemap = go.AddComponent<Tilemap>();
+            go.AddComponent<TilemapRenderer>();
+        }
+
+        var decorationTilemap = transform.Find("DecorationTilemap")?.GetComponent<Tilemap>();
+        if (decorationTilemap == null)
+        {
+            var go = new GameObject("DecorationTilemap");
+            go.transform.parent = transform;
+            decorationTilemap = go.AddComponent<Tilemap>();
+            go.AddComponent<TilemapRenderer>();
+        }
+
+        // Assign to renderer via reflection
+        var renderer = GetComponent<MazeRenderer>();
+        var type = renderer.GetType();
+        type.GetField("combinedTilemap", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance)?.SetValue(renderer, combinedTilemap);
+        type.GetField("decorationTilemap", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance)?.SetValue(renderer, decorationTilemap);
+
+        Debug.Log("Tilemaps created and assigned!");
+    }
+
+    /// <summary>
+    /// One-click setup: creates everything needed
+    /// </summary>
+    [ContextMenu("Quick Setup - Create Everything")]
+    public void QuickSetup()
+    {
+        CreateMissingTilemaps();
+        GeneratePlaceholderTiles();
+    }
+}

+ 2 - 0
Assets/Scripts/MazeRendererSetup.cs.meta

@@ -0,0 +1,2 @@
+fileFormatVersion: 2
+guid: 56867e27a222dc84ba46e49ab1d1f3ed

+ 69 - 0
Assets/Scripts/MazeRoom.cs

@@ -0,0 +1,69 @@
+using UnityEngine;
+using System.Collections.Generic;
+
+/// <summary>
+/// Represents a room in the maze
+/// </summary>
+public class MazeRoom
+{
+    /// <summary>
+    /// Types of rooms with different purposes
+    /// </summary>
+    public enum RoomType
+    {
+        Normal,     // Regular room
+        Safe,       // Safe room (no monsters)
+        Rest,       // Resting area (healing)
+        Restroom,   // Restroom (special purpose)
+        Boss,       // Boss room
+        End,        // Exit/End room
+    }
+
+    public int Id { get; set; }
+    public RoomType Type { get; set; }
+    public int MinX { get; set; }
+    public int MinY { get; set; }
+    public int MaxX { get; set; }
+    public int MaxY { get; set; }
+    public int Width => MaxX - MinX + 1;
+    public int Height => MaxY - MinY + 1;
+    public List<Vector2Int> Exits { get; set; } = new();  // Connection points to other rooms/hallways
+    public bool IsStart { get; set; }
+    public bool IsEnd { get; set; }
+
+    public MazeRoom(int id, int minX, int minY, int maxX, int maxY, RoomType type = RoomType.Normal)
+    {
+        Id = id;
+        MinX = minX;
+        MinY = minY;
+        MaxX = maxX;
+        MaxY = maxY;
+        Type = type;
+    }
+
+    /// <summary>
+    /// Checks if a point is inside this room
+    /// </summary>
+    public bool Contains(int x, int y)
+    {
+        return x >= MinX && x <= MaxX && y >= MinY && y <= MaxY;
+    }
+
+    /// <summary>
+    /// Gets the center of the room
+    /// </summary>
+    public Vector2Int GetCenter()
+    {
+        return new Vector2Int((MinX + MaxX) / 2, (MinY + MaxY) / 2);
+    }
+
+    /// <summary>
+    /// Gets a random point inside this room
+    /// </summary>
+    public Vector2Int GetRandomPoint()
+    {
+        int x = Random.Range(MinX + 1, MaxX);
+        int y = Random.Range(MinY + 1, MaxY);
+        return new Vector2Int(x, y);
+    }
+}

+ 2 - 0
Assets/Scripts/MazeRoom.cs.meta

@@ -0,0 +1,2 @@
+fileFormatVersion: 2
+guid: 1c8c8b8055edcfe40984919556a575c6

+ 69 - 0
Assets/Scripts/MazeTile.cs

@@ -0,0 +1,69 @@
+using UnityEngine;
+
+/// <summary>
+/// Represents a single 1x1 unit square in the maze
+/// </summary>
+public class MazeTile
+{
+    /// <summary>
+    /// Types of tiles in the maze
+    /// </summary>
+    public enum TileType
+    {
+        Wall,           // Impassable
+        Floor,          // Basic walkable floor
+        Terrain,        // Special terrain with movement penalties
+    }
+
+    /// <summary>
+    /// Different terrain types with various properties
+    /// </summary>
+    public enum TerrainType
+    {
+        None = 0,       // Not terrain
+        Normal = 1,     // Normal walkable floor (movementCost = 1.0f)
+        Swamp = 2,      // Slow terrain (movementCost = 2.0f)
+        Lava = 3,       // Dangerous terrain (movementCost = 3.0f, may cause damage)
+        Ice = 4,        // Slippery terrain (movementCost = 0.5f, but risky)
+        Stone = 5,      // Hard stone (movementCost = 1.5f)
+    }
+
+    public TileType Type { get; set; }
+    public TerrainType Terrain { get; set; }
+    public int RoomId { get; set; }  // Which room does this tile belong to (-1 = hallway/corridor)
+    public int X { get; private set; }
+    public int Y { get; private set; }
+
+    public MazeTile(int x, int y)
+    {
+        X = x;
+        Y = y;
+        Type = TileType.Wall;
+        Terrain = TerrainType.None;
+        RoomId = -1;
+    }
+
+    /// <summary>
+    /// Gets the movement cost for this tile based on its terrain
+    /// </summary>
+    public float GetMovementCost()
+    {
+        return Terrain switch
+        {
+            TerrainType.Normal => 1.0f,
+            TerrainType.Swamp => 2.0f,
+            TerrainType.Lava => 3.0f,
+            TerrainType.Ice => 0.5f,
+            TerrainType.Stone => 1.5f,
+            _ => 1.0f,
+        };
+    }
+
+    /// <summary>
+    /// Checks if a character can walk on this tile
+    /// </summary>
+    public bool IsWalkable()
+    {
+        return Type == TileType.Floor || Type == TileType.Terrain;
+    }
+}

+ 2 - 0
Assets/Scripts/MazeTile.cs.meta

@@ -0,0 +1,2 @@
+fileFormatVersion: 2
+guid: 712a1cc215620d848a51fc51404795af

+ 795 - 0
Assets/Scripts/MeshMazeRenderer.cs

@@ -0,0 +1,795 @@
+using UnityEngine;
+using System.Collections.Generic;
+
+/// <summary>
+/// Generates 3D meshes for maze walls and floors instead of using tilemaps
+/// Much more efficient for large mazes and allows for better performance
+/// </summary>
+public class MeshMazeRenderer : MonoBehaviour
+{
+    [Header("Maze Setup")]
+    [SerializeField] private MazeController mazeController;
+
+    [Header("Materials")]
+    [SerializeField] private Material floorMaterial;
+    [SerializeField] private Material wallMaterial;
+
+    [Header("Start/End Markers")]
+    [SerializeField] private GameObject startMarkerPrefab;
+    [SerializeField] private GameObject exitMarkerPrefab;
+    [SerializeField] private Color startMarkerColor = new Color(0f, 1f, 0f, 0.65f);
+    [SerializeField] private Color exitMarkerColor = new Color(1f, 0f, 0f, 0.65f);
+    [SerializeField] private float markerSize = 3f;
+    [SerializeField] private bool showStartEndRoomHighlights = true;
+    [SerializeField] private Color startRoomHighlightColor = new Color(0f, 1f, 0f, 0.25f);
+    [SerializeField] private Color exitRoomHighlightColor = new Color(1f, 0f, 0f, 0.25f);
+
+    [Header("Fog of War")]
+    [SerializeField] private bool showFogOfWar = true;
+    [SerializeField] private MazeFogOfWar fogOfWar;
+    [SerializeField] private Color fogColor = new Color(0f, 0f, 0f, 0.6f);
+
+    [Header("Mesh Settings")]
+    [SerializeField] private float wallHeight = 2f;
+    [SerializeField] private float tileSize = 1f;
+    [SerializeField] private bool generateFloor = true;
+    [SerializeField] private bool generateWalls = true;
+    [SerializeField] private bool twoSidedWalls = true;
+    [SerializeField] private bool wallCaps = true;
+
+    [Header("Optimization")]
+    [SerializeField] private int chunkSize = 32;
+    [SerializeField] private int renderDistance = 2;
+
+    private Dictionary<Vector2Int, GameObject> chunkObjects = new();
+    private Transform cameraTransform;
+    private GameObject markerContainer;
+    private GameObject fogOfWarContainer;
+    private bool lastFogVisible;
+
+    void OnEnable()
+    {
+        if (mazeController == null)
+        {
+            mazeController = GetComponent<MazeController>();
+        }
+    }
+
+    void Start()
+    {
+        cameraTransform = Camera.main?.transform;
+        lastFogVisible = showFogOfWar;
+        if (mazeController != null && mazeController.GetCurrentMaze() != null)
+        {
+            GenerateMazeMesh();
+        }
+    }
+
+    void Update()
+    {
+        if (cameraTransform != null)
+        {
+            UpdateVisibleChunks();
+        }
+
+        if (showFogOfWar != lastFogVisible)
+        {
+            UpdateFogVisibility();
+        }
+        else if (fogOfWarContainer == null && showFogOfWar && fogOfWar != null)
+        {
+            UpdateFogVisibility();
+        }
+    }
+
+    /// <summary>
+    /// Generates the complete maze mesh
+    /// </summary>
+    public void GenerateMazeMesh()
+    {
+        if (mazeController == null)
+        {
+            mazeController = GetComponent<MazeController>();
+        }
+
+        if (mazeController == null)
+        {
+            Debug.LogError("MeshMazeRenderer requires a MazeController reference.");
+            return;
+        }
+
+        if (fogOfWar == null)
+        {
+            fogOfWar = GetComponent<MazeFogOfWar>() ?? FindFirstObjectByType<MazeFogOfWar>();
+        }
+
+        ClearChunks();
+        ClearMarkers();
+        ClearFogOfWar();
+
+        var maze = mazeController.GetCurrentMaze();
+        if (maze == null)
+        {
+            Debug.LogWarning("No maze to render yet. Generate the maze first, then refresh the mesh.");
+            return;
+        }
+        Debug.Log($"MeshMazeRenderer: rendering maze {maze.Width}x{maze.Height} with {maze.Rooms.Count} rooms");
+
+        // For very large mazes, use chunked generation
+        if (maze.Width > chunkSize || maze.Height > chunkSize)
+        {
+            GenerateChunkedMesh(maze);
+        }
+        else
+        {
+            GenerateSingleMesh(maze);
+        }
+
+        RenderStartExitMarkers(maze);
+
+        if (showFogOfWar && fogOfWar != null)
+        {
+            RenderFogOfWar(maze);
+        }
+    }
+
+    /// <summary>
+    /// Generates a single mesh for smaller mazes
+    /// </summary>
+    private void GenerateSingleMesh(MazeData maze)
+    {
+        GameObject chunkObj = new GameObject("MazeMesh");
+        chunkObj.transform.parent = transform;
+        chunkObj.transform.localPosition = Vector3.zero;
+
+        MeshFilter meshFilter = chunkObj.AddComponent<MeshFilter>();
+        MeshRenderer meshRenderer = chunkObj.AddComponent<MeshRenderer>();
+
+        Mesh mesh = CreateMazeMesh(maze, 0, 0, maze.Width, maze.Height);
+        meshFilter.mesh = mesh;
+
+        // Assign materials
+        Material[] materials = new Material[generateFloor && generateWalls ? 2 : 1];
+        int matIndex = 0;
+        if (generateFloor) materials[matIndex++] = floorMaterial;
+        if (generateWalls) materials[matIndex++] = wallMaterial;
+        meshRenderer.materials = materials;
+
+        chunkObjects[new Vector2Int(0, 0)] = chunkObj;
+    }
+
+    /// <summary>
+    /// Generates chunked meshes for large mazes
+    /// </summary>
+    private void GenerateChunkedMesh(MazeData maze)
+    {
+        int chunksX = Mathf.CeilToInt((float)maze.Width / chunkSize);
+        int chunksY = Mathf.CeilToInt((float)maze.Height / chunkSize);
+
+        for (int cx = 0; cx < chunksX; cx++)
+        {
+            for (int cy = 0; cy < chunksY; cy++)
+            {
+                Vector2Int chunkPos = new Vector2Int(cx, cy);
+                CreateChunkMesh(maze, chunkPos);
+            }
+        }
+    }
+
+    /// <summary>
+    /// Creates a mesh for a single chunk
+    /// </summary>
+    private void CreateChunkMesh(MazeData maze, Vector2Int chunkPos)
+    {
+        int startX = chunkPos.x * chunkSize;
+        int startY = chunkPos.y * chunkSize;
+        int endX = Mathf.Min(startX + chunkSize, maze.Width);
+        int endY = Mathf.Min(startY + chunkSize, maze.Height);
+
+        GameObject chunkObj = new GameObject($"Chunk_{chunkPos.x}_{chunkPos.y}");
+        chunkObj.transform.parent = transform;
+        chunkObj.transform.localPosition = new Vector3(startX * tileSize, 0, startY * tileSize);
+
+        MeshFilter meshFilter = chunkObj.AddComponent<MeshFilter>();
+        MeshRenderer meshRenderer = chunkObj.AddComponent<MeshRenderer>();
+
+        Mesh mesh = CreateMazeMesh(maze, startX, startY, endX - startX, endY - startY);
+        meshFilter.mesh = mesh;
+
+        // Assign materials
+        Material[] materials = new Material[generateFloor && generateWalls ? 2 : 1];
+        int matIndex = 0;
+        if (generateFloor) materials[matIndex++] = floorMaterial;
+        if (generateWalls) materials[matIndex++] = wallMaterial;
+        meshRenderer.materials = materials;
+
+        chunkObjects[chunkPos] = chunkObj;
+    }
+
+    private void RenderStartExitMarkers(MazeData maze)
+    {
+        if (markerContainer != null)
+        {
+            Destroy(markerContainer);
+        }
+
+        markerContainer = new GameObject("MazeMarkers");
+        markerContainer.transform.parent = transform;
+        markerContainer.transform.localPosition = Vector3.zero;
+        markerContainer.transform.localRotation = Quaternion.identity;
+
+        foreach (var start in maze.StartPoints)
+        {
+            CreateMarker(maze, start, startMarkerPrefab, startMarkerColor, "StartMarker", startRoomHighlightColor);
+        }
+
+        foreach (var exit in maze.ExitPoints)
+        {
+            CreateMarker(maze, exit, exitMarkerPrefab, exitMarkerColor, "ExitMarker", exitRoomHighlightColor);
+        }
+    }
+
+    private void CreateMarker(MazeData maze, Vector2Int tilePos, GameObject prefab, Color color, string namePrefix, Color roomHighlight)
+    {
+        Vector3 markerPos = new Vector3(tilePos.x * tileSize + tileSize * 0.5f, 0.1f, tilePos.y * tileSize + tileSize * 0.5f);
+        GameObject marker = prefab != null ? Instantiate(prefab, markerContainer.transform) : null;
+        if (marker == null)
+        {
+            marker = GameObject.CreatePrimitive(PrimitiveType.Cylinder);
+            marker.transform.parent = markerContainer.transform;
+            marker.transform.localPosition = markerPos;
+            marker.transform.localScale = new Vector3(markerSize, markerSize * 0.2f, markerSize);
+            DestroyImmediate(marker.GetComponent<Collider>());
+            var renderer = marker.GetComponent<MeshRenderer>();
+            renderer.material = CreateURPUnlitColorMaterial(color, true);
+            renderer.shadowCastingMode = UnityEngine.Rendering.ShadowCastingMode.Off;
+            renderer.receiveShadows = false;
+        }
+        else
+        {
+            marker.transform.parent = markerContainer.transform;
+            marker.transform.localPosition = markerPos;
+            marker.transform.localRotation = Quaternion.identity;
+            marker.transform.localScale = Vector3.one * markerSize;
+            var renderer = marker.GetComponent<MeshRenderer>();
+            if (renderer != null)
+            {
+                renderer.material = CreateURPUnlitColorMaterial(color, true);
+                renderer.shadowCastingMode = UnityEngine.Rendering.ShadowCastingMode.Off;
+                renderer.receiveShadows = false;
+            }
+        }
+        marker.name = namePrefix + "_" + tilePos.x + "_" + tilePos.y;
+
+        if (showStartEndRoomHighlights)
+        {
+            var room = maze.GetRoomAtTile(tilePos.x, tilePos.y);
+            if (room != null)
+            {
+                CreateRoomHighlight(room, roomHighlight);
+            }
+        }
+    }
+
+    private void CreateRoomHighlight(MazeRoom room, Color highlightColor)
+    {
+        if (room == null) return;
+
+        GameObject highlight = new GameObject("RoomHighlight_" + room.Id);
+        highlight.transform.parent = markerContainer.transform;
+        highlight.transform.localPosition = Vector3.zero;
+
+        var meshFilter = highlight.AddComponent<MeshFilter>();
+        var meshRenderer = highlight.AddComponent<MeshRenderer>();
+
+        meshRenderer.material = CreateURPUnlitColorMaterial(highlightColor, true);
+        meshRenderer.shadowCastingMode = UnityEngine.Rendering.ShadowCastingMode.Off;
+        meshRenderer.receiveShadows = false;
+
+        Mesh mesh = new Mesh();
+        float minX = room.MinX * tileSize;
+        float maxX = (room.MaxX + 1) * tileSize;
+        float minZ = room.MinY * tileSize;
+        float maxZ = (room.MaxY + 1) * tileSize;
+        float y = 0.15f;
+
+        mesh.vertices = new Vector3[] {
+            new Vector3(minX, y, minZ),
+            new Vector3(maxX, y, minZ),
+            new Vector3(maxX, y, maxZ),
+            new Vector3(minX, y, maxZ)
+        };
+        mesh.uv = new Vector2[] {
+            new Vector2(0,0),
+            new Vector2(1,0),
+            new Vector2(1,1),
+            new Vector2(0,1)
+        };
+        mesh.triangles = new int[] { 0, 1, 2, 0, 2, 3 };
+        mesh.RecalculateNormals();
+        meshFilter.mesh = mesh;
+    }
+
+    private void ClearMarkers()
+    {
+        if (markerContainer != null)
+        {
+            Destroy(markerContainer);
+            markerContainer = null;
+        }
+    }
+
+    private void ClearFogOfWar()
+    {
+        if (fogOfWarContainer != null)
+        {
+            Destroy(fogOfWarContainer);
+            fogOfWarContainer = null;
+        }
+    }
+
+    /// <summary>
+    /// Toggles fog of war visibility
+    /// </summary>
+    public void ToggleFogOfWar()
+    {
+        showFogOfWar = !showFogOfWar;
+        UpdateFogVisibility();
+    }
+
+    /// <summary>
+    /// Sets fog of war visibility
+    /// </summary>
+    public void SetFogOfWarVisible(bool visible)
+    {
+        showFogOfWar = visible;
+        UpdateFogVisibility();
+    }
+
+    /// <summary>
+    /// Refreshes the fog of war display (call this when entity vision changes)
+    /// </summary>
+    public void RefreshFogOfWar()
+    {
+        var maze = mazeController?.GetCurrentMaze();
+        if (maze != null && showFogOfWar && fogOfWar != null)
+        {
+            ClearFogOfWar();
+            RenderFogOfWar(maze);
+        }
+    }
+
+    private void UpdateFogVisibility()
+    {
+        if (showFogOfWar && fogOfWar != null)
+        {
+            if (fogOfWarContainer == null)
+            {
+                var maze = mazeController?.GetCurrentMaze();
+                if (maze != null)
+                {
+                    RenderFogOfWar(maze);
+                }
+            }
+            else if (!fogOfWarContainer.activeSelf)
+            {
+                fogOfWarContainer.SetActive(true);
+            }
+        }
+        else if (fogOfWarContainer != null)
+        {
+            fogOfWarContainer.SetActive(false);
+        }
+
+        lastFogVisible = showFogOfWar;
+    }
+
+    /// <summary>
+    /// Creates a URP-compatible unlit material for color overlays.
+    /// </summary>
+    private Material CreateURPUnlitColorMaterial(Color color, bool transparent)
+    {
+        Shader shader = Shader.Find("Universal Render Pipeline/Unlit");
+        if (shader == null)
+        {
+            shader = Shader.Find("Unlit/Color");
+        }
+
+        Material material = new Material(shader);
+
+        // Always set base color with alpha
+        if (material.HasProperty("_BaseColor"))
+        {
+            material.SetColor("_BaseColor", color);
+        }
+        else if (material.HasProperty("_Color"))
+        {
+            material.SetColor("_Color", color);
+        }
+        else
+        {
+            material.color = color;
+        }
+
+        if (transparent)
+        {
+            // Enable alpha blending for transparency
+            material.SetFloat("_AlphaClip", 0);
+
+            if (material.HasProperty("_Surface"))
+            {
+                material.SetFloat("_Surface", 1f);
+            }
+
+            if (material.HasProperty("_Blend"))
+            {
+                material.SetFloat("_Blend", 0f);
+            }
+
+            if (material.HasProperty("_Cull"))
+            {
+                material.SetFloat("_Cull", 0f);
+            }
+
+            material.renderQueue = (int)UnityEngine.Rendering.RenderQueue.Transparent;
+            material.SetInt("_SrcBlend", (int)UnityEngine.Rendering.BlendMode.SrcAlpha);
+            material.SetInt("_DstBlend", (int)UnityEngine.Rendering.BlendMode.OneMinusSrcAlpha);
+            material.SetInt("_ZWrite", 0);
+            material.EnableKeyword("_ALPHABLEND_ON");
+        }
+        else if (material.HasProperty("_Cull"))
+        {
+            material.SetFloat("_Cull", 0f);
+        }
+
+        return material;
+    }
+
+    /// <summary>
+    /// Renders the fog of war overlay
+    /// </summary>
+    private void RenderFogOfWar(MazeData maze)
+    {
+        if (fogOfWarContainer != null)
+        {
+            Destroy(fogOfWarContainer);
+        }
+
+        fogOfWarContainer = new GameObject("FogOfWar");
+        fogOfWarContainer.transform.parent = transform;
+        fogOfWarContainer.transform.localPosition = Vector3.zero;
+        fogOfWarContainer.transform.localRotation = Quaternion.identity;
+        fogOfWarContainer.SetActive(showFogOfWar);
+
+        var fogMesh = new Mesh();
+        var vertices = new List<Vector3>();
+        var uvs = new List<Vector2>();
+        var triangles = new List<int>();
+
+        Material fogMaterial = CreateURPUnlitColorMaterial(fogColor, true);
+
+        HashSet<Vector2Int> exploredTiles = fogOfWar.GetExploredTiles();
+        int vertexIndex = 0;
+
+        for (int x = 0; x < maze.Width; x++)
+        {
+            for (int y = 0; y < maze.Height; y++)
+            {
+                Vector2Int tilePos = new Vector2Int(x, y);
+                if (!exploredTiles.Contains(tilePos))
+                {
+                    float posX = x * tileSize;
+                    float posZ = y * tileSize;
+
+                    vertices.Add(new Vector3(posX, 0.08f, posZ));
+                    vertices.Add(new Vector3(posX + tileSize, 0.08f, posZ));
+                    vertices.Add(new Vector3(posX + tileSize, 0.08f, posZ + tileSize));
+                    vertices.Add(new Vector3(posX, 0.08f, posZ + tileSize));
+
+                    uvs.Add(new Vector2(0, 0));
+                    uvs.Add(new Vector2(1, 0));
+                    uvs.Add(new Vector2(1, 1));
+                    uvs.Add(new Vector2(0, 1));
+
+                    triangles.Add(vertexIndex);
+                    triangles.Add(vertexIndex + 1);
+                    triangles.Add(vertexIndex + 2);
+                    triangles.Add(vertexIndex);
+                    triangles.Add(vertexIndex + 2);
+                    triangles.Add(vertexIndex + 3);
+                    vertexIndex += 4;
+                }
+            }
+        }
+
+        fogMesh.SetVertices(vertices);
+        fogMesh.SetUVs(0, uvs);
+        fogMesh.SetTriangles(triangles, 0);
+        fogMesh.RecalculateNormals();
+        fogMesh.RecalculateBounds();
+
+        GameObject fogOverlay = new GameObject("FogOverlay");
+        fogOverlay.transform.parent = fogOfWarContainer.transform;
+        fogOverlay.transform.localPosition = Vector3.zero;
+        fogOverlay.transform.localRotation = Quaternion.identity;
+
+        var fogFilter = fogOverlay.AddComponent<MeshFilter>();
+        var fogRenderer = fogOverlay.AddComponent<MeshRenderer>();
+        fogFilter.mesh = fogMesh;
+        fogRenderer.material = fogMaterial;
+        fogRenderer.shadowCastingMode = UnityEngine.Rendering.ShadowCastingMode.Off;
+        fogRenderer.receiveShadows = false;
+    }
+
+    /// <summary>
+    /// Creates the actual mesh data for a maze section
+    /// </summary>
+    private Mesh CreateMazeMesh(MazeData maze, int offsetX, int offsetY, int width, int height)
+    {
+        Mesh mesh = new Mesh();
+        List<Vector3> vertices = new List<Vector3>();
+        List<Vector2> uvs = new List<Vector2>();
+        List<int> floorTriangles = new List<int>();
+        List<int> wallTriangles = new List<int>();
+
+        // Generate floor and walls
+        for (int x = 0; x < width; x++)
+        {
+            for (int y = 0; y < height; y++)
+            {
+                int worldX = offsetX + x;
+                int worldY = offsetY + y;
+
+                var tile = maze.GetTile(worldX, worldY);
+                if (tile == null) continue;
+
+                float posX = x * tileSize;
+                float posZ = y * tileSize;
+
+                if (generateFloor && tile.IsWalkable())
+                {
+                    // Floor quad
+                    int vertStart = vertices.Count;
+                    vertices.Add(new Vector3(posX, 0, posZ));
+                    vertices.Add(new Vector3(posX + tileSize, 0, posZ));
+                    vertices.Add(new Vector3(posX + tileSize, 0, posZ + tileSize));
+                    vertices.Add(new Vector3(posX, 0, posZ + tileSize));
+
+                    // UVs for floor
+                    uvs.Add(new Vector2(0, 0));
+                    uvs.Add(new Vector2(1, 0));
+                    uvs.Add(new Vector2(1, 1));
+                    uvs.Add(new Vector2(0, 1));
+
+                    // Floor triangles
+                    floorTriangles.Add(vertStart);
+                    floorTriangles.Add(vertStart + 1);
+                    floorTriangles.Add(vertStart + 2);
+                    floorTriangles.Add(vertStart);
+                    floorTriangles.Add(vertStart + 2);
+                    floorTriangles.Add(vertStart + 3);
+                }
+
+                if (generateWalls && tile.Type == MazeTile.TileType.Wall)
+                {
+                    // Wall quads for each side that's exposed
+                    CreateWallQuads(vertices, uvs, wallTriangles, posX, posZ, tileSize, wallHeight,
+                                   maze, worldX, worldY);
+
+                    // Add a top cap so walls remain visible in direct top-down view
+                    if (wallCaps)
+                    {
+                        CreateWallTop(vertices, uvs, wallTriangles, posX, posZ, tileSize, wallHeight);
+                    }
+                }
+            }
+        }
+
+        mesh.vertices = vertices.ToArray();
+        mesh.uv = uvs.ToArray();
+
+        // Combine submeshes
+        mesh.subMeshCount = (generateFloor ? 1 : 0) + (generateWalls ? 1 : 0);
+        int submeshIndex = 0;
+
+        if (generateFloor)
+        {
+            mesh.SetTriangles(floorTriangles.ToArray(), submeshIndex++);
+        }
+
+        if (generateWalls)
+        {
+            mesh.SetTriangles(wallTriangles.ToArray(), submeshIndex);
+        }
+
+        mesh.RecalculateNormals();
+        mesh.RecalculateBounds();
+
+        return mesh;
+    }
+
+    /// <summary>
+    /// Creates wall quads for exposed sides
+    /// </summary>
+    private void CreateWallQuads(List<Vector3> vertices, List<Vector2> uvs, List<int> triangles,
+                                float posX, float posZ, float size, float height,
+                                MazeData maze, int worldX, int worldY)
+    {
+        // Check each direction for exposed walls
+        Vector2Int[] directions = {
+            new Vector2Int(0, 1),   // North
+            new Vector2Int(1, 0),   // East
+            new Vector2Int(0, -1),  // South
+            new Vector2Int(-1, 0)   // West
+        };
+
+        foreach (var dir in directions)
+        {
+            int checkX = worldX + dir.x;
+            int checkY = worldY + dir.y;
+
+            // If neighbor is not a wall or is out of bounds, create wall face
+            if (!maze.IsInBounds(checkX, checkY) || maze.GetTile(checkX, checkY).Type != MazeTile.TileType.Wall)
+            {
+                CreateWallQuad(vertices, uvs, triangles, posX, posZ, size, height, dir);
+            }
+        }
+    }
+
+    /// <summary>
+    /// Creates a single wall quad
+    /// </summary>
+    private void CreateWallQuad(List<Vector3> vertices, List<Vector2> uvs, List<int> triangles,
+                               float posX, float posZ, float size, float height, Vector2Int direction)
+    {
+        int vertStart = vertices.Count;
+
+        // Determine quad vertices based on direction
+        Vector3 v0, v1, v2, v3;
+
+        if (direction == Vector2Int.up) // North face
+        {
+            v0 = new Vector3(posX, 0, posZ + size);
+            v1 = new Vector3(posX + size, 0, posZ + size);
+            v2 = new Vector3(posX + size, height, posZ + size);
+            v3 = new Vector3(posX, height, posZ + size);
+        }
+        else if (direction == Vector2Int.right) // East face
+        {
+            v0 = new Vector3(posX + size, 0, posZ);
+            v1 = new Vector3(posX + size, 0, posZ + size);
+            v2 = new Vector3(posX + size, height, posZ + size);
+            v3 = new Vector3(posX + size, height, posZ);
+        }
+        else if (direction == Vector2Int.down) // South face
+        {
+            v0 = new Vector3(posX + size, 0, posZ);
+            v1 = new Vector3(posX, 0, posZ);
+            v2 = new Vector3(posX, height, posZ);
+            v3 = new Vector3(posX + size, height, posZ);
+        }
+        else // West face
+        {
+            v0 = new Vector3(posX, 0, posZ + size);
+            v1 = new Vector3(posX, 0, posZ);
+            v2 = new Vector3(posX, height, posZ);
+            v3 = new Vector3(posX, height, posZ + size);
+        }
+
+        vertices.Add(v0);
+        vertices.Add(v1);
+        vertices.Add(v2);
+        vertices.Add(v3);
+
+        // UVs
+        uvs.Add(new Vector2(0, 0));
+        uvs.Add(new Vector2(1, 0));
+        uvs.Add(new Vector2(1, 1));
+        uvs.Add(new Vector2(0, 1));
+
+        // Front-facing triangles
+        triangles.Add(vertStart);
+        triangles.Add(vertStart + 1);
+        triangles.Add(vertStart + 2);
+        triangles.Add(vertStart);
+        triangles.Add(vertStart + 2);
+        triangles.Add(vertStart + 3);
+
+        // Optionally duplicate the face for the opposite side
+        if (twoSidedWalls)
+        {
+            triangles.Add(vertStart + 2);
+            triangles.Add(vertStart + 1);
+            triangles.Add(vertStart);
+            triangles.Add(vertStart + 3);
+            triangles.Add(vertStart + 2);
+            triangles.Add(vertStart + 0);
+        }
+    }
+
+    /// <summary>
+    /// Creates a top cap for a wall tile so it remains visible from above
+    /// </summary>
+    private void CreateWallTop(List<Vector3> vertices, List<Vector2> uvs, List<int> triangles,
+                               float posX, float posZ, float size, float height)
+    {
+        int vertStart = vertices.Count;
+
+        vertices.Add(new Vector3(posX, height, posZ));
+        vertices.Add(new Vector3(posX + size, height, posZ));
+        vertices.Add(new Vector3(posX + size, height, posZ + size));
+        vertices.Add(new Vector3(posX, height, posZ + size));
+
+        uvs.Add(new Vector2(0, 0));
+        uvs.Add(new Vector2(1, 0));
+        uvs.Add(new Vector2(1, 1));
+        uvs.Add(new Vector2(0, 1));
+
+        triangles.Add(vertStart);
+        triangles.Add(vertStart + 1);
+        triangles.Add(vertStart + 2);
+        triangles.Add(vertStart);
+        triangles.Add(vertStart + 2);
+        triangles.Add(vertStart + 3);
+
+        if (twoSidedWalls)
+        {
+            triangles.Add(vertStart + 2);
+            triangles.Add(vertStart + 1);
+            triangles.Add(vertStart);
+            triangles.Add(vertStart + 3);
+            triangles.Add(vertStart + 2);
+            triangles.Add(vertStart + 0);
+        }
+    }
+
+    /// <summary>
+    /// Updates which chunks are visible
+    /// </summary>
+    private void UpdateVisibleChunks()
+    {
+        if (chunkObjects.Count <= 1) return; // No chunking used
+
+        Vector2Int cameraChunk = WorldToChunk(cameraTransform.position);
+
+        foreach (var chunk in chunkObjects)
+        {
+            Vector2Int chunkPos = chunk.Key;
+            bool isVisible = Mathf.Abs(chunkPos.x - cameraChunk.x) <= renderDistance &&
+                           Mathf.Abs(chunkPos.y - cameraChunk.y) <= renderDistance;
+
+            chunk.Value.SetActive(isVisible);
+        }
+    }
+
+    /// <summary>
+    /// Converts world position to chunk coordinates
+    /// </summary>
+    private Vector2Int WorldToChunk(Vector3 worldPos)
+    {
+        return new Vector2Int(
+            Mathf.FloorToInt(worldPos.x / (chunkSize * tileSize)),
+            Mathf.FloorToInt(worldPos.z / (chunkSize * tileSize))
+        );
+    }
+
+    /// <summary>
+    /// Clears all chunk objects
+    /// </summary>
+    private void ClearChunks()
+    {
+        foreach (var chunk in chunkObjects.Values)
+        {
+            Destroy(chunk);
+        }
+        chunkObjects.Clear();
+    }
+
+    /// <summary>
+    /// Regenerates the mesh
+    /// </summary>
+    public void RefreshMesh()
+    {
+        GenerateMazeMesh();
+    }
+}

+ 2 - 0
Assets/Scripts/MeshMazeRenderer.cs.meta

@@ -0,0 +1,2 @@
+fileFormatVersion: 2
+guid: 00ee71720bee8f648808a08eefcd826d

+ 61 - 0
Assets/Scripts/TileGenerator.cs

@@ -0,0 +1,61 @@
+using UnityEngine;
+using UnityEngine.Tilemaps;
+
+/// <summary>
+/// Helper script to generate placeholder tile sprites and tiles
+/// Use this if you don't have tile graphics yet
+/// </summary>
+public class TileGenerator
+{
+    /// <summary>
+    /// Creates a simple colored sprite at runtime
+    /// </summary>
+    public static Sprite CreateColoredSprite(Color color, string name = "Tile")
+    {
+        Texture2D texture = new Texture2D(16, 16, TextureFormat.RGBA32, false);
+        texture.name = name;
+
+        Color[] pixels = new Color[16 * 16];
+        for (int i = 0; i < pixels.Length; i++)
+        {
+            pixels[i] = color;
+        }
+        texture.SetPixels(pixels);
+        texture.Apply();
+
+        return Sprite.Create(texture, new Rect(0, 0, 16, 16), new Vector2(0.5f, 0.5f), 16);
+    }
+
+    /// <summary>
+    /// Creates a simple checkered pattern texture for visual variety
+    /// </summary>
+    public static Sprite CreateCheckerSprite(Color color1, Color color2, string name = "Checker")
+    {
+        Texture2D texture = new Texture2D(16, 16, TextureFormat.RGBA32, false);
+        texture.name = name;
+
+        Color[] pixels = new Color[16 * 16];
+        for (int y = 0; y < 16; y++)
+        {
+            for (int x = 0; x < 16; x++)
+            {
+                bool isEven = (x / 8 + y / 8) % 2 == 0;
+                pixels[y * 16 + x] = isEven ? color1 : color2;
+            }
+        }
+        texture.SetPixels(pixels);
+        texture.Apply();
+
+        return Sprite.Create(texture, new Rect(0, 0, 16, 16), new Vector2(0.5f, 0.5f), 16);
+    }
+
+    /// <summary>
+    /// Creates a Tile asset from a sprite
+    /// </summary>
+    public static Tile CreateTile(Sprite sprite)
+    {
+        Tile tile = ScriptableObject.CreateInstance<Tile>();
+        tile.sprite = sprite;
+        return tile;
+    }
+}

+ 2 - 0
Assets/Scripts/TileGenerator.cs.meta

@@ -0,0 +1,2 @@
+fileFormatVersion: 2
+guid: 426a4a5185e99dc409a9083f74c7b508

+ 8 - 0
Assets/Settings.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 0220aab0833d04faeb927d84ca6cc40c
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 42 - 0
Assets/Settings/Lit2DSceneTemplate.scenetemplate


+ 8 - 0
Assets/Settings/Lit2DSceneTemplate.scenetemplate.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: d03ed43fc9d8a4f2e9fa70c1c7916eb9
+NativeFormatImporter:
+  externalObjects: {}
+  mainObjectFileID: 11400000
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 69 - 0
Assets/Settings/Renderer2D.asset

@@ -0,0 +1,69 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 0}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 11145981673336645838492a2d98e247, type: 3}
+  m_Name: Renderer2D
+  m_EditorClassIdentifier: 
+  debugShaders:
+    debugReplacementPS: {fileID: 4800000, guid: cf852408f2e174538bcd9b7fda1c5ae7, type: 3}
+    hdrDebugViewPS: {fileID: 4800000, guid: 573620ae32aec764abd4d728906d2587, type: 3}
+    probeVolumeSamplingDebugComputeShader: {fileID: 7200000, guid: 53626a513ea68ce47b59dc1299fe3959, type: 3}
+  probeVolumeResources:
+    probeVolumeDebugShader: {fileID: 4800000, guid: e5c6678ed2aaa91408dd3df699057aae, type: 3}
+    probeVolumeFragmentationDebugShader: {fileID: 4800000, guid: 03cfc4915c15d504a9ed85ecc404e607, type: 3}
+    probeVolumeOffsetDebugShader: {fileID: 4800000, guid: 53a11f4ebaebf4049b3638ef78dc9664, type: 3}
+    probeVolumeSamplingDebugShader: {fileID: 4800000, guid: 8f96cd657dc40064aa21efcc7e50a2e7, type: 3}
+    probeSamplingDebugMesh: {fileID: -3555484719484374845, guid: 57d7c4c16e2765b47a4d2069b311bffe, type: 3}
+    probeSamplingDebugTexture: {fileID: 2800000, guid: 24ec0e140fb444a44ab96ee80844e18e, type: 3}
+  m_RendererFeatures: []
+  m_RendererFeatureMap: 
+  m_UseNativeRenderPass: 0
+  m_TransparencySortMode: 0
+  m_TransparencySortAxis: {x: 0, y: 1, z: 0}
+  m_HDREmulationScale: 1
+  m_LightRenderTextureScale: 0.5
+  m_LightBlendStyles:
+  - name: Multiply
+    maskTextureChannel: 0
+    blendMode: 1
+  - name: Additive
+    maskTextureChannel: 0
+    blendMode: 0
+  - name: Multiply with Mask
+    maskTextureChannel: 1
+    blendMode: 1
+  - name: Additive with Mask
+    maskTextureChannel: 1
+    blendMode: 0
+  m_UseDepthStencilBuffer: 1
+  m_UseCameraSortingLayersTexture: 0
+  m_CameraSortingLayersTextureBound: -1
+  m_CameraSortingLayerDownsamplingMethod: 0
+  m_MaxLightRenderTextureCount: 16
+  m_MaxShadowRenderTextureCount: 1
+  m_LightShader: {fileID: 4800000, guid: 3f6c848ca3d7bca4bbe846546ac701a1, type: 3}
+  m_CoreBlitShader: {fileID: 4800000, guid: 93446b5c5339d4f00b85c159e1159b7c, type: 3}
+  m_CoreBlitColorAndDepthPS: {fileID: 4800000, guid: d104b2fc1ca6445babb8e90b0758136b, type: 3}
+  m_BlitHDROverlay: {fileID: 4800000, guid: a89bee29cffa951418fc1e2da94d1959, type: 3}
+  m_SamplingShader: {fileID: 4800000, guid: 04c410c9937594faa893a11dceb85f7e, type: 3}
+  m_ProjectedShadowShader: {fileID: 4800000, guid: ce09d4a80b88c5a4eb9768fab4f1ee00, type: 3}
+  m_SpriteShadowShader: {fileID: 4800000, guid: 44fc62292b65ab04eabcf310e799ccf6, type: 3}
+  m_SpriteUnshadowShader: {fileID: 4800000, guid: de02b375720b5c445afe83cd483bedf3, type: 3}
+  m_GeometryShadowShader: {fileID: 4800000, guid: 19349a0f9a7ed4c48a27445bcf92e5e1, type: 3}
+  m_GeometryUnshadowShader: {fileID: 4800000, guid: 77774d9009bb81447b048c907d4c6273, type: 3}
+  m_FallbackErrorShader: {fileID: 4800000, guid: e6e9a19c3678ded42a3bc431ebef7dbd, type: 3}
+  m_PostProcessData: {fileID: 11400000, guid: 41439944d30ece34e96484bdb6645b55, type: 2}
+  m_FallOffLookup: {fileID: 2800000, guid: 5688ab254e4c0634f8d6c8e0792331ca, type: 3}
+  m_DefaultMaterialType: 0
+  m_DefaultCustomMaterial: {fileID: 2100000, guid: a97c105638bdf8b4a8650670310a4cd3, type: 2}
+  m_DefaultLitMaterial: {fileID: 2100000, guid: a97c105638bdf8b4a8650670310a4cd3, type: 2}
+  m_DefaultUnlitMaterial: {fileID: 2100000, guid: 9dfc825aed78fcd4ba02077103263b40, type: 2}
+  m_DefaultMaskMaterial: {fileID: 2100000, guid: 15d0c3709176029428a0da2f8cecf0b5, type: 2}

+ 8 - 0
Assets/Settings/Renderer2D.asset.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 424799608f7334c24bf367e4bbfa7f9a
+NativeFormatImporter:
+  externalObjects: {}
+  mainObjectFileID: 11400000
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 8 - 0
Assets/Settings/Scenes.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: d574b2fb4661c408f80aa76c0182931f
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 740 - 0
Assets/Settings/Scenes/URP2DSceneTemplate.unity

@@ -0,0 +1,740 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!29 &1
+OcclusionCullingSettings:
+  m_ObjectHideFlags: 0
+  serializedVersion: 2
+  m_OcclusionBakeSettings:
+    smallestOccluder: 5
+    smallestHole: 0.25
+    backfaceThreshold: 100
+  m_SceneGUID: 00000000000000000000000000000000
+  m_OcclusionCullingData: {fileID: 0}
+--- !u!104 &2
+RenderSettings:
+  m_ObjectHideFlags: 0
+  serializedVersion: 10
+  m_Fog: 0
+  m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}
+  m_FogMode: 3
+  m_FogDensity: 0.01
+  m_LinearFogStart: 0
+  m_LinearFogEnd: 300
+  m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1}
+  m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1}
+  m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1}
+  m_AmbientIntensity: 1
+  m_AmbientMode: 3
+  m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1}
+  m_SkyboxMaterial: {fileID: 0}
+  m_HaloStrength: 0.5
+  m_FlareStrength: 1
+  m_FlareFadeSpeed: 3
+  m_HaloTexture: {fileID: 0}
+  m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0}
+  m_DefaultReflectionMode: 0
+  m_DefaultReflectionResolution: 128
+  m_ReflectionBounces: 1
+  m_ReflectionIntensity: 1
+  m_CustomReflection: {fileID: 0}
+  m_Sun: {fileID: 0}
+  m_UseRadianceAmbientProbe: 0
+--- !u!157 &3
+LightmapSettings:
+  m_ObjectHideFlags: 0
+  serializedVersion: 13
+  m_BakeOnSceneLoad: 0
+  m_GISettings:
+    serializedVersion: 2
+    m_BounceScale: 1
+    m_IndirectOutputScale: 1
+    m_AlbedoBoost: 1
+    m_EnvironmentLightingMode: 0
+    m_EnableBakedLightmaps: 0
+    m_EnableRealtimeLightmaps: 0
+  m_LightmapEditorSettings:
+    serializedVersion: 12
+    m_Resolution: 2
+    m_BakeResolution: 40
+    m_AtlasSize: 1024
+    m_AO: 0
+    m_AOMaxDistance: 1
+    m_CompAOExponent: 1
+    m_CompAOExponentDirect: 0
+    m_ExtractAmbientOcclusion: 0
+    m_Padding: 2
+    m_LightmapParameters: {fileID: 0}
+    m_LightmapsBakeMode: 1
+    m_TextureCompression: 1
+    m_ReflectionCompression: 2
+    m_MixedBakeMode: 2
+    m_BakeBackend: 0
+    m_PVRSampling: 1
+    m_PVRDirectSampleCount: 32
+    m_PVRSampleCount: 500
+    m_PVRBounces: 2
+    m_PVREnvironmentSampleCount: 500
+    m_PVREnvironmentReferencePointCount: 2048
+    m_PVRFilteringMode: 2
+    m_PVRDenoiserTypeDirect: 0
+    m_PVRDenoiserTypeIndirect: 0
+    m_PVRDenoiserTypeAO: 0
+    m_PVRFilterTypeDirect: 0
+    m_PVRFilterTypeIndirect: 0
+    m_PVRFilterTypeAO: 0
+    m_PVREnvironmentMIS: 0
+    m_PVRCulling: 1
+    m_PVRFilteringGaussRadiusDirect: 1
+    m_PVRFilteringGaussRadiusIndirect: 5
+    m_PVRFilteringGaussRadiusAO: 2
+    m_PVRFilteringAtrousPositionSigmaDirect: 0.5
+    m_PVRFilteringAtrousPositionSigmaIndirect: 2
+    m_PVRFilteringAtrousPositionSigmaAO: 1
+    m_ExportTrainingData: 0
+    m_TrainingDataDestination: TrainingData
+    m_LightProbeSampleCountMultiplier: 4
+  m_LightingDataAsset: {fileID: 0}
+  m_LightingSettings: {fileID: 0}
+--- !u!196 &4
+NavMeshSettings:
+  serializedVersion: 2
+  m_ObjectHideFlags: 0
+  m_BuildSettings:
+    serializedVersion: 3
+    agentTypeID: 0
+    agentRadius: 0.5
+    agentHeight: 2
+    agentSlope: 45
+    agentClimb: 0.4
+    ledgeDropHeight: 0
+    maxJumpAcrossDistance: 0
+    minRegionArea: 2
+    manualCellSize: 0
+    cellSize: 0.16666667
+    manualTileSize: 0
+    tileSize: 256
+    buildHeightMesh: 0
+    maxJobWorkers: 0
+    preserveTilesOutsideBounds: 0
+    debug:
+      m_Flags: 0
+  m_NavMeshData: {fileID: 0}
+--- !u!1 &239919134
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 239919137}
+  - component: {fileID: 239919136}
+  - component: {fileID: 239919135}
+  m_Layer: 0
+  m_Name: ChunkRenderer
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 0
+--- !u!114 &239919135
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 239919134}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 21d7801215bd6c243a7c2336a3bcf465, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: Assembly-CSharp::ChunkedMazeRenderer
+  mazeController: {fileID: 262480513}
+  chunkSize: 32
+  renderDistance: 2
+  cameraTransform: {fileID: 519420032}
+  useXZPlane: 0
+  floorTile: {fileID: 0}
+  wallTile: {fileID: 0}
+  swampTile: {fileID: 0}
+  stoneTile: {fileID: 0}
+  startMarkerSprite: {fileID: 0}
+  exitMarkerSprite: {fileID: 0}
+  showStartEndMarkers: 1
+  showChunkBounds: 0
+--- !u!156049354 &239919136
+Grid:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 239919134}
+  m_Enabled: 1
+  m_CellSize: {x: 1, y: 1, z: 1}
+  m_CellGap: {x: 0, y: 0, z: 0}
+  m_CellLayout: 0
+  m_CellSwizzle: 0
+--- !u!4 &239919137
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 239919134}
+  serializedVersion: 2
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 87.46922, y: 0, z: 12.44932}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_ConstrainProportionsScale: 0
+  m_Children: []
+  m_Father: {fileID: 0}
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &262480512
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 262480514}
+  - component: {fileID: 262480513}
+  m_Layer: 0
+  m_Name: MazeController
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!114 &262480513
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 262480512}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 60db0adf974888a4fa998a86ad9e404c, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: Assembly-CSharp::MazeController
+  mazeConfig:
+    Width: 100
+    Height: 100
+    MinSize: 100
+    MaxSize: 10000
+    TargetRoomCount: 200
+    MinRoomWidth: 5
+    MaxRoomWidth: 25
+    MinRoomHeight: 5
+    MaxRoomHeight: 25
+    MinRoomSpacing: 2
+    MinStartPoints: 1
+    MaxStartPoints: 3
+    MinExits: 1
+    MaxExits: 5
+    MinHallwayWidth: 1
+    MaxHallwayWidth: 3
+    SafeRoomCount: 2
+    RestRoomCount: 2
+    BossRoomCount: 1
+    NormalRoomPercentage: 50
+    UseMonsterAreas: 1
+    MonsterAreaDensity: 50
+    RandomSeed: 0
+    UseRandomSeed: 1
+  generateOnStart: 1
+  visualizeDebug: 1
+  mazeRenderer: {fileID: 0}
+  chunkedRenderer: {fileID: 0}
+  meshMazeRenderer: {fileID: 0}
+--- !u!4 &262480514
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 262480512}
+  serializedVersion: 2
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_ConstrainProportionsScale: 0
+  m_Children: []
+  m_Father: {fileID: 0}
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &519420028
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 519420032}
+  - component: {fileID: 519420031}
+  - component: {fileID: 519420029}
+  - component: {fileID: 519420030}
+  - component: {fileID: 519420033}
+  m_Layer: 0
+  m_Name: Main Camera
+  m_TagString: MainCamera
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!81 &519420029
+AudioListener:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 519420028}
+  m_Enabled: 1
+--- !u!114 &519420030
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 519420028}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: a79441f348de89743a2939f4d699eac1, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_RenderShadows: 1
+  m_RequiresDepthTextureOption: 2
+  m_RequiresOpaqueTextureOption: 2
+  m_CameraType: 0
+  m_Cameras: []
+  m_RendererIndex: -1
+  m_VolumeLayerMask:
+    serializedVersion: 2
+    m_Bits: 1
+  m_VolumeTrigger: {fileID: 0}
+  m_VolumeFrameworkUpdateModeOption: 2
+  m_RenderPostProcessing: 0
+  m_Antialiasing: 0
+  m_AntialiasingQuality: 2
+  m_StopNaN: 0
+  m_Dithering: 0
+  m_ClearDepth: 1
+  m_AllowXRRendering: 1
+  m_AllowHDROutput: 1
+  m_UseScreenCoordOverride: 0
+  m_ScreenSizeOverride: {x: 0, y: 0, z: 0, w: 0}
+  m_ScreenCoordScaleBias: {x: 0, y: 0, z: 0, w: 0}
+  m_RequiresDepthTexture: 0
+  m_RequiresColorTexture: 0
+  m_TaaSettings:
+    m_Quality: 3
+    m_FrameInfluence: 0.1
+    m_JitterScale: 1
+    m_MipBias: 0
+    m_VarianceClampScale: 0.9
+    m_ContrastAdaptiveSharpening: 0
+  m_Version: 2
+--- !u!20 &519420031
+Camera:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 519420028}
+  m_Enabled: 1
+  serializedVersion: 2
+  m_ClearFlags: 2
+  m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0}
+  m_projectionMatrixMode: 1
+  m_GateFitMode: 2
+  m_FOVAxisMode: 0
+  m_Iso: 200
+  m_ShutterSpeed: 0.005
+  m_Aperture: 16
+  m_FocusDistance: 10
+  m_FocalLength: 50
+  m_BladeCount: 5
+  m_Curvature: {x: 2, y: 11}
+  m_BarrelClipping: 0.25
+  m_Anamorphism: 0
+  m_SensorSize: {x: 36, y: 24}
+  m_LensShift: {x: 0, y: 0}
+  m_NormalizedViewPortRect:
+    serializedVersion: 2
+    x: 0
+    y: 0
+    width: 1
+    height: 1
+  near clip plane: 0.3
+  far clip plane: 1000
+  field of view: 34
+  orthographic: 1
+  orthographic size: 60
+  m_Depth: -1
+  m_CullingMask:
+    serializedVersion: 2
+    m_Bits: 4294967295
+  m_RenderingPath: -1
+  m_TargetTexture: {fileID: 0}
+  m_TargetDisplay: 0
+  m_TargetEye: 0
+  m_HDR: 1
+  m_AllowMSAA: 0
+  m_AllowDynamicResolution: 0
+  m_ForceIntoRT: 0
+  m_OcclusionCulling: 0
+  m_StereoConvergence: 10
+  m_StereoSeparation: 0.022
+--- !u!4 &519420032
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 519420028}
+  serializedVersion: 2
+  m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071068}
+  m_LocalPosition: {x: 0, y: 500, z: -10}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_ConstrainProportionsScale: 0
+  m_Children: []
+  m_Father: {fileID: 0}
+  m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0}
+--- !u!114 &519420033
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 519420028}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 1d06b8890413c89448a31d99ef49723c, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: Assembly-CSharp::MazeCameraController
+  moveSpeed: 20
+  dragSpeed: 1
+  zoomSpeed: 25
+  zoomMin: 5
+  zoomMax: 120
+  useBounds: 0
+  minBounds: {x: -100, y: -100}
+  maxBounds: {x: 100, y: 100}
+--- !u!1 &619394800
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 619394802}
+  - component: {fileID: 619394801}
+  m_Layer: 0
+  m_Name: Global Light 2D
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!114 &619394801
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 619394800}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 073797afb82c5a1438f328866b10b3f0, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_ComponentVersion: 2
+  m_LightType: 4
+  m_BlendStyleIndex: 0
+  m_FalloffIntensity: 0.5
+  m_Color: {r: 1, g: 1, b: 1, a: 1}
+  m_Intensity: 1
+  m_LightVolumeIntensity: 1
+  m_LightVolumeEnabled: 0
+  m_ApplyToSortingLayers: 00000000
+  m_LightCookieSprite: {fileID: 0}
+  m_DeprecatedPointLightCookieSprite: {fileID: 0}
+  m_LightOrder: 0
+  m_AlphaBlendOnOverlap: 0
+  m_OverlapOperation: 0
+  m_NormalMapDistance: 3
+  m_NormalMapQuality: 2
+  m_UseNormalMap: 0
+  m_ShadowsEnabled: 0
+  m_ShadowIntensity: 0.75
+  m_ShadowSoftness: 0
+  m_ShadowSoftnessFalloffIntensity: 0.5
+  m_ShadowVolumeIntensityEnabled: 0
+  m_ShadowVolumeIntensity: 0.75
+  m_LocalBounds:
+    m_Center: {x: 0, y: -0.00000011920929, z: 0}
+    m_Extent: {x: 0.9985302, y: 0.99853027, z: 0}
+  m_PointLightInnerAngle: 360
+  m_PointLightOuterAngle: 360
+  m_PointLightInnerRadius: 0
+  m_PointLightOuterRadius: 1
+  m_ShapeLightParametricSides: 5
+  m_ShapeLightParametricAngleOffset: 0
+  m_ShapeLightParametricRadius: 1
+  m_ShapeLightFalloffSize: 0.5
+  m_ShapeLightFalloffOffset: {x: 0, y: 0}
+  m_ShapePath:
+  - {x: -0.5, y: -0.5, z: 0}
+  - {x: 0.5, y: -0.5, z: 0}
+  - {x: 0.5, y: 0.5, z: 0}
+  - {x: -0.5, y: 0.5, z: 0}
+--- !u!4 &619394802
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 619394800}
+  serializedVersion: 2
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_ConstrainProportionsScale: 0
+  m_Children: []
+  m_Father: {fileID: 0}
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &837902939
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 837902943}
+  - component: {fileID: 837902942}
+  - component: {fileID: 837902941}
+  - component: {fileID: 837902940}
+  m_Layer: 0
+  m_Name: MeshMazeRenderer
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!114 &837902940
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 837902939}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 00ee71720bee8f648808a08eefcd826d, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: Assembly-CSharp::MeshMazeRenderer
+  mazeController: {fileID: 262480513}
+  floorMaterial: {fileID: 2100000, guid: 1513aa2e33d15a547a61f5f993ad2f83, type: 2}
+  wallMaterial: {fileID: 2100000, guid: e96a8b0661d20c34b9ea1152974134fa, type: 2}
+  startMarkerPrefab: {fileID: 0}
+  exitMarkerPrefab: {fileID: 0}
+  startMarkerColor: {r: 0, g: 1, b: 0, a: 1}
+  exitMarkerColor: {r: 1, g: 0, b: 0, a: 1}
+  markerSize: 3
+  showStartEndRoomHighlights: 1
+  startRoomHighlightColor: {r: 0, g: 1, b: 0, a: 0.15}
+  exitRoomHighlightColor: {r: 1, g: 0, b: 0, a: 0.15}
+  showFogOfWar: 1
+  fogOfWar: {fileID: 0}
+  fogColor: {r: 0, g: 0, b: 0, a: 0.6}
+  wallHeight: 2
+  tileSize: 1
+  generateFloor: 1
+  generateWalls: 1
+  twoSidedWalls: 1
+  wallCaps: 1
+  chunkSize: 64
+  renderDistance: 8
+--- !u!23 &837902941
+MeshRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 837902939}
+  m_Enabled: 1
+  m_CastShadows: 1
+  m_ReceiveShadows: 1
+  m_DynamicOccludee: 1
+  m_StaticShadowCaster: 0
+  m_MotionVectors: 1
+  m_LightProbeUsage: 1
+  m_ReflectionProbeUsage: 1
+  m_RayTracingMode: 2
+  m_RayTraceProcedural: 0
+  m_RayTracingAccelStructBuildFlagsOverride: 0
+  m_RayTracingAccelStructBuildFlags: 1
+  m_SmallMeshCulling: 1
+  m_ForceMeshLod: -1
+  m_MeshLodSelectionBias: 0
+  m_RenderingLayerMask: 1
+  m_RendererPriority: 0
+  m_Materials:
+  - {fileID: 0}
+  m_StaticBatchInfo:
+    firstSubMesh: 0
+    subMeshCount: 0
+  m_StaticBatchRoot: {fileID: 0}
+  m_ProbeAnchor: {fileID: 0}
+  m_LightProbeVolumeOverride: {fileID: 0}
+  m_ScaleInLightmap: 1
+  m_ReceiveGI: 1
+  m_PreserveUVs: 0
+  m_IgnoreNormalsForChartDetection: 0
+  m_ImportantGI: 0
+  m_StitchLightmapSeams: 1
+  m_SelectedEditorRenderState: 3
+  m_MinimumChartSize: 4
+  m_AutoUVMaxDistance: 0.5
+  m_AutoUVMaxAngle: 89
+  m_LightmapParameters: {fileID: 0}
+  m_GlobalIlluminationMeshLod: 0
+  m_SortingLayerID: 0
+  m_SortingLayer: 0
+  m_SortingOrder: 0
+  m_MaskInteraction: 0
+  m_AdditionalVertexStreams: {fileID: 0}
+--- !u!33 &837902942
+MeshFilter:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 837902939}
+  m_Mesh: {fileID: 0}
+--- !u!4 &837902943
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 837902939}
+  serializedVersion: 2
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 15.19011, y: 53.41081, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_ConstrainProportionsScale: 0
+  m_Children: []
+  m_Father: {fileID: 0}
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &1643929073
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 1643929075}
+  - component: {fileID: 1643929074}
+  m_Layer: 0
+  m_Name: FogOfWar
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!114 &1643929074
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1643929073}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 91bc0f8efa8d3204ea744041c65b00fe, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: Assembly-CSharp::MazeFogOfWar
+  mazeController: {fileID: 262480513}
+  chunkedRenderer: {fileID: 239919135}
+  meshRenderer: {fileID: 0}
+  fogColor: {r: 0.1, g: 0.1, b: 0.1, a: 0.8}
+  fogMaterial: {fileID: 0}
+--- !u!4 &1643929075
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1643929073}
+  serializedVersion: 2
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 15.19011, y: 53.41081, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_ConstrainProportionsScale: 0
+  m_Children: []
+  m_Father: {fileID: 0}
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &1994446907
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 1994446909}
+  - component: {fileID: 1994446908}
+  m_Layer: 0
+  m_Name: AsyncMazeGenerator
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!114 &1994446908
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1994446907}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: c0021f285ff56e74590362a6d94d6fab, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: Assembly-CSharp::AsyncMazeGenerator
+  mazeController: {fileID: 262480513}
+  generateOnStart: 0
+  progressBar: {fileID: 0}
+  progressText: {fileID: 0}
+--- !u!4 &1994446909
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1994446907}
+  serializedVersion: 2
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 87.46922, y: 0, z: 12.44932}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_ConstrainProportionsScale: 0
+  m_Children: []
+  m_Father: {fileID: 0}
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1660057539 &9223372036854775807
+SceneRoots:
+  m_ObjectHideFlags: 0
+  m_Roots:
+  - {fileID: 519420032}
+  - {fileID: 619394802}
+  - {fileID: 262480514}
+  - {fileID: 1643929075}
+  - {fileID: 837902943}
+  - {fileID: 1994446909}
+  - {fileID: 239919137}

+ 7 - 0
Assets/Settings/Scenes/URP2DSceneTemplate.unity.meta

@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 2cda990e2423bbf4892e6590ba056729
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 143 - 0
Assets/Settings/UniversalRP.asset

@@ -0,0 +1,143 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 0}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: bf2edee5c58d82540a51f03df9d42094, type: 3}
+  m_Name: UniversalRP
+  m_EditorClassIdentifier: 
+  k_AssetVersion: 13
+  k_AssetPreviousVersion: 13
+  m_RendererType: 1
+  m_RendererData: {fileID: 0}
+  m_RendererDataList:
+  - {fileID: 11400000, guid: 424799608f7334c24bf367e4bbfa7f9a, type: 2}
+  m_DefaultRendererIndex: 0
+  m_RequireDepthTexture: 0
+  m_RequireOpaqueTexture: 0
+  m_OpaqueDownsampling: 1
+  m_SupportsTerrainHoles: 1
+  m_SupportsHDR: 1
+  m_HDRColorBufferPrecision: 0
+  m_MSAA: 1
+  m_RenderScale: 1
+  m_UpscalingFilter: 0
+  m_FsrOverrideSharpness: 0
+  m_FsrSharpness: 0.92
+  m_EnableLODCrossFade: 1
+  m_LODCrossFadeDitheringType: 1
+  m_ShEvalMode: 0
+  m_LightProbeSystem: 0
+  m_ProbeVolumeMemoryBudget: 1024
+  m_ProbeVolumeBlendingMemoryBudget: 256
+  m_SupportProbeVolumeGPUStreaming: 0
+  m_SupportProbeVolumeDiskStreaming: 0
+  m_SupportProbeVolumeScenarios: 0
+  m_SupportProbeVolumeScenarioBlending: 0
+  m_ProbeVolumeSHBands: 1
+  m_MainLightRenderingMode: 1
+  m_MainLightShadowsSupported: 1
+  m_MainLightShadowmapResolution: 2048
+  m_AdditionalLightsRenderingMode: 1
+  m_AdditionalLightsPerObjectLimit: 4
+  m_AdditionalLightShadowsSupported: 0
+  m_AdditionalLightsShadowmapResolution: 2048
+  m_AdditionalLightsShadowResolutionTierLow: 512
+  m_AdditionalLightsShadowResolutionTierMedium: 1024
+  m_AdditionalLightsShadowResolutionTierHigh: 2048
+  m_ReflectionProbeBlending: 0
+  m_ReflectionProbeBoxProjection: 0
+  m_ReflectionProbeAtlas: 1
+  m_ShadowDistance: 50
+  m_ShadowCascadeCount: 1
+  m_Cascade2Split: 0.25
+  m_Cascade3Split: {x: 0.1, y: 0.3}
+  m_Cascade4Split: {x: 0.067, y: 0.2, z: 0.467}
+  m_CascadeBorder: 0.1
+  m_ShadowDepthBias: 1
+  m_ShadowNormalBias: 1
+  m_AnyShadowsSupported: 1
+  m_SoftShadowsSupported: 0
+  m_ConservativeEnclosingSphere: 0
+  m_NumIterationsEnclosingSphere: 64
+  m_SoftShadowQuality: 2
+  m_AdditionalLightsCookieResolution: 2048
+  m_AdditionalLightsCookieFormat: 3
+  m_UseSRPBatcher: 1
+  m_SupportsDynamicBatching: 0
+  m_MixedLightingSupported: 1
+  m_SupportsLightCookies: 1
+  m_SupportsLightLayers: 0
+  m_DebugLevel: 0
+  m_StoreActionsOptimization: 0
+  m_UseAdaptivePerformance: 1
+  m_ColorGradingMode: 0
+  m_ColorGradingLutSize: 32
+  m_AllowPostProcessAlphaOutput: 0
+  m_UseFastSRGBLinearConversion: 0
+  m_SupportDataDrivenLensFlare: 1
+  m_SupportScreenSpaceLensFlare: 1
+  m_GPUResidentDrawerMode: 0
+  m_SmallMeshScreenPercentage: 0
+  m_GPUResidentDrawerEnableOcclusionCullingInCameras: 0
+  m_ShadowType: 1
+  m_LocalShadowsSupported: 0
+  m_LocalShadowsAtlasResolution: 256
+  m_MaxPixelLights: 0
+  m_ShadowAtlasResolution: 256
+  m_VolumeFrameworkUpdateMode: 0
+  m_VolumeProfile: {fileID: 0}
+  apvScenesData:
+    obsoleteSceneBounds:
+      m_Keys: []
+      m_Values: []
+    obsoleteHasProbeVolumes:
+      m_Keys: []
+      m_Values: 
+  m_PrefilteringModeMainLightShadows: 1
+  m_PrefilteringModeAdditionalLight: 4
+  m_PrefilteringModeAdditionalLightShadows: 1
+  m_PrefilterXRKeywords: 0
+  m_PrefilteringModeForwardPlus: 1
+  m_PrefilteringModeDeferredRendering: 1
+  m_PrefilteringModeScreenSpaceOcclusion: 1
+  m_PrefilterDebugKeywords: 0
+  m_PrefilterWriteRenderingLayers: 0
+  m_PrefilterHDROutput: 0
+  m_PrefilterAlphaOutput: 0
+  m_PrefilterSSAODepthNormals: 0
+  m_PrefilterSSAOSourceDepthLow: 0
+  m_PrefilterSSAOSourceDepthMedium: 0
+  m_PrefilterSSAOSourceDepthHigh: 0
+  m_PrefilterSSAOInterleaved: 0
+  m_PrefilterSSAOBlueNoise: 0
+  m_PrefilterSSAOSampleCountLow: 0
+  m_PrefilterSSAOSampleCountMedium: 0
+  m_PrefilterSSAOSampleCountHigh: 0
+  m_PrefilterDBufferMRT1: 0
+  m_PrefilterDBufferMRT2: 0
+  m_PrefilterDBufferMRT3: 0
+  m_PrefilterSoftShadowsQualityLow: 0
+  m_PrefilterSoftShadowsQualityMedium: 0
+  m_PrefilterSoftShadowsQualityHigh: 0
+  m_PrefilterSoftShadows: 0
+  m_PrefilterScreenCoord: 0
+  m_PrefilterScreenSpaceIrradiance: 0
+  m_PrefilterNativeRenderPass: 0
+  m_PrefilterUseLegacyLightmaps: 0
+  m_PrefilterBicubicLightmapSampling: 0
+  m_PrefilterReflectionProbeRotation: 0
+  m_PrefilterReflectionProbeBlending: 0
+  m_PrefilterReflectionProbeBoxProjection: 0
+  m_PrefilterReflectionProbeAtlas: 0
+  m_ShaderVariantLogLevel: 0
+  m_ShadowCascades: 0
+  m_Textures:
+    blueNoise64LTex: {fileID: 2800000, guid: e3d24661c1e055f45a7560c033dbb837, type: 3}
+    bayerMatrixTex: {fileID: 2800000, guid: f9ee4ed84c1d10c49aabb9b210b0fc44, type: 3}

+ 8 - 0
Assets/Settings/UniversalRP.asset.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 681886c5eb7344803b6206f758bf0b1c
+NativeFormatImporter:
+  externalObjects: {}
+  mainObjectFileID: 11400000
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 8 - 0
Assets/UI.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 98a5ce596e95da14ea550151985a436c
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 1067 - 0
Assets/UI/CombinedFloorAndWallPalett.prefab

@@ -0,0 +1,1067 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!1 &2112171993025852931
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 5277487521849291834}
+  - component: {fileID: 8414678880944268526}
+  - component: {fileID: 6882299907777424227}
+  m_Layer: 0
+  m_Name: Layer1
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &5277487521849291834
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2112171993025852931}
+  serializedVersion: 2
+  m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_ConstrainProportionsScale: 0
+  m_Children: []
+  m_Father: {fileID: 2127554614782652401}
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1839735485 &8414678880944268526
+Tilemap:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2112171993025852931}
+  m_Enabled: 1
+  m_Tiles:
+  - first: {x: 4, y: -4, z: 0}
+    second:
+      serializedVersion: 2
+      m_TileIndex: 1
+      m_TileSpriteIndex: 12
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_TileObjectToInstantiateIndex: 65535
+      dummyAlignment: 0
+      m_AllTileFlags: 1073741826
+  - first: {x: 5, y: -4, z: 0}
+    second:
+      serializedVersion: 2
+      m_TileIndex: 1
+      m_TileSpriteIndex: 7
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_TileObjectToInstantiateIndex: 65535
+      dummyAlignment: 0
+      m_AllTileFlags: 1073741826
+  - first: {x: 6, y: -4, z: 0}
+    second:
+      serializedVersion: 2
+      m_TileIndex: 1
+      m_TileSpriteIndex: 7
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_TileObjectToInstantiateIndex: 65535
+      dummyAlignment: 0
+      m_AllTileFlags: 1073741826
+  - first: {x: 7, y: -4, z: 0}
+    second:
+      serializedVersion: 2
+      m_TileIndex: 1
+      m_TileSpriteIndex: 7
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_TileObjectToInstantiateIndex: 65535
+      dummyAlignment: 0
+      m_AllTileFlags: 1073741826
+  - first: {x: 8, y: -4, z: 0}
+    second:
+      serializedVersion: 2
+      m_TileIndex: 1
+      m_TileSpriteIndex: 7
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_TileObjectToInstantiateIndex: 65535
+      dummyAlignment: 0
+      m_AllTileFlags: 1073741826
+  - first: {x: 9, y: -4, z: 0}
+    second:
+      serializedVersion: 2
+      m_TileIndex: 1
+      m_TileSpriteIndex: 7
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_TileObjectToInstantiateIndex: 65535
+      dummyAlignment: 0
+      m_AllTileFlags: 1073741826
+  - first: {x: 10, y: -4, z: 0}
+    second:
+      serializedVersion: 2
+      m_TileIndex: 1
+      m_TileSpriteIndex: 11
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_TileObjectToInstantiateIndex: 65535
+      dummyAlignment: 0
+      m_AllTileFlags: 1073741826
+  - first: {x: 4, y: -3, z: 0}
+    second:
+      serializedVersion: 2
+      m_TileIndex: 1
+      m_TileSpriteIndex: 18
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_TileObjectToInstantiateIndex: 65535
+      dummyAlignment: 0
+      m_AllTileFlags: 1073741826
+  - first: {x: 5, y: -3, z: 0}
+    second:
+      serializedVersion: 2
+      m_TileIndex: 0
+      m_TileSpriteIndex: 4
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_TileObjectToInstantiateIndex: 65535
+      dummyAlignment: 0
+      m_AllTileFlags: 1073741826
+  - first: {x: 6, y: -3, z: 0}
+    second:
+      serializedVersion: 2
+      m_TileIndex: 0
+      m_TileSpriteIndex: 0
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_TileObjectToInstantiateIndex: 65535
+      dummyAlignment: 0
+      m_AllTileFlags: 1073741826
+  - first: {x: 7, y: -3, z: 0}
+    second:
+      serializedVersion: 2
+      m_TileIndex: 0
+      m_TileSpriteIndex: 1
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_TileObjectToInstantiateIndex: 65535
+      dummyAlignment: 0
+      m_AllTileFlags: 1073741826
+  - first: {x: 8, y: -3, z: 0}
+    second:
+      serializedVersion: 2
+      m_TileIndex: 0
+      m_TileSpriteIndex: 8
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_TileObjectToInstantiateIndex: 65535
+      dummyAlignment: 0
+      m_AllTileFlags: 1073741826
+  - first: {x: 9, y: -3, z: 0}
+    second:
+      serializedVersion: 2
+      m_TileIndex: 0
+      m_TileSpriteIndex: 8
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_TileObjectToInstantiateIndex: 65535
+      dummyAlignment: 0
+      m_AllTileFlags: 1073741826
+  - first: {x: 10, y: -3, z: 0}
+    second:
+      serializedVersion: 2
+      m_TileIndex: 1
+      m_TileSpriteIndex: 6
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_TileObjectToInstantiateIndex: 65535
+      dummyAlignment: 0
+      m_AllTileFlags: 1073741826
+  - first: {x: 4, y: -2, z: 0}
+    second:
+      serializedVersion: 2
+      m_TileIndex: 1
+      m_TileSpriteIndex: 5
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_TileObjectToInstantiateIndex: 65535
+      dummyAlignment: 0
+      m_AllTileFlags: 1073741826
+  - first: {x: 5, y: -2, z: 0}
+    second:
+      serializedVersion: 2
+      m_TileIndex: 0
+      m_TileSpriteIndex: 8
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_TileObjectToInstantiateIndex: 65535
+      dummyAlignment: 0
+      m_AllTileFlags: 1073741826
+  - first: {x: 6, y: -2, z: 0}
+    second:
+      serializedVersion: 2
+      m_TileIndex: 0
+      m_TileSpriteIndex: 0
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_TileObjectToInstantiateIndex: 65535
+      dummyAlignment: 0
+      m_AllTileFlags: 1073741826
+  - first: {x: 7, y: -2, z: 0}
+    second:
+      serializedVersion: 2
+      m_TileIndex: 0
+      m_TileSpriteIndex: 0
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_TileObjectToInstantiateIndex: 65535
+      dummyAlignment: 0
+      m_AllTileFlags: 1073741826
+  - first: {x: 8, y: -2, z: 0}
+    second:
+      serializedVersion: 2
+      m_TileIndex: 0
+      m_TileSpriteIndex: 0
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_TileObjectToInstantiateIndex: 65535
+      dummyAlignment: 0
+      m_AllTileFlags: 1073741826
+  - first: {x: 9, y: -2, z: 0}
+    second:
+      serializedVersion: 2
+      m_TileIndex: 0
+      m_TileSpriteIndex: 2
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_TileObjectToInstantiateIndex: 65535
+      dummyAlignment: 0
+      m_AllTileFlags: 1073741826
+  - first: {x: 10, y: -2, z: 0}
+    second:
+      serializedVersion: 2
+      m_TileIndex: 1
+      m_TileSpriteIndex: 5
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_TileObjectToInstantiateIndex: 65535
+      dummyAlignment: 0
+      m_AllTileFlags: 1073741826
+  - first: {x: -3, y: -1, z: 0}
+    second:
+      serializedVersion: 2
+      m_TileIndex: 0
+      m_TileSpriteIndex: 3
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_TileObjectToInstantiateIndex: 65535
+      dummyAlignment: 0
+      m_AllTileFlags: 1073741826
+  - first: {x: -2, y: -1, z: 0}
+    second:
+      serializedVersion: 2
+      m_TileIndex: 0
+      m_TileSpriteIndex: 3
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_TileObjectToInstantiateIndex: 65535
+      dummyAlignment: 0
+      m_AllTileFlags: 1073741826
+  - first: {x: -1, y: -1, z: 0}
+    second:
+      serializedVersion: 2
+      m_TileIndex: 0
+      m_TileSpriteIndex: 0
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_TileObjectToInstantiateIndex: 65535
+      dummyAlignment: 0
+      m_AllTileFlags: 1073741826
+  - first: {x: 4, y: -1, z: 0}
+    second:
+      serializedVersion: 2
+      m_TileIndex: 1
+      m_TileSpriteIndex: 6
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_TileObjectToInstantiateIndex: 65535
+      dummyAlignment: 0
+      m_AllTileFlags: 1073741826
+  - first: {x: 5, y: -1, z: 0}
+    second:
+      serializedVersion: 2
+      m_TileIndex: 0
+      m_TileSpriteIndex: 8
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_TileObjectToInstantiateIndex: 65535
+      dummyAlignment: 0
+      m_AllTileFlags: 1073741826
+  - first: {x: 6, y: -1, z: 0}
+    second:
+      serializedVersion: 2
+      m_TileIndex: 0
+      m_TileSpriteIndex: 0
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_TileObjectToInstantiateIndex: 65535
+      dummyAlignment: 0
+      m_AllTileFlags: 1073741826
+  - first: {x: 7, y: -1, z: 0}
+    second:
+      serializedVersion: 2
+      m_TileIndex: 0
+      m_TileSpriteIndex: 4
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_TileObjectToInstantiateIndex: 65535
+      dummyAlignment: 0
+      m_AllTileFlags: 1073741826
+  - first: {x: 8, y: -1, z: 0}
+    second:
+      serializedVersion: 2
+      m_TileIndex: 0
+      m_TileSpriteIndex: 0
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_TileObjectToInstantiateIndex: 65535
+      dummyAlignment: 0
+      m_AllTileFlags: 1073741826
+  - first: {x: 9, y: -1, z: 0}
+    second:
+      serializedVersion: 2
+      m_TileIndex: 0
+      m_TileSpriteIndex: 2
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_TileObjectToInstantiateIndex: 65535
+      dummyAlignment: 0
+      m_AllTileFlags: 1073741826
+  - first: {x: 10, y: -1, z: 0}
+    second:
+      serializedVersion: 2
+      m_TileIndex: 1
+      m_TileSpriteIndex: 5
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_TileObjectToInstantiateIndex: 65535
+      dummyAlignment: 0
+      m_AllTileFlags: 1073741826
+  - first: {x: 15, y: -1, z: 0}
+    second:
+      serializedVersion: 2
+      m_TileIndex: 1
+      m_TileSpriteIndex: 12
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_TileObjectToInstantiateIndex: 65535
+      dummyAlignment: 0
+      m_AllTileFlags: 1073741826
+  - first: {x: 16, y: -1, z: 0}
+    second:
+      serializedVersion: 2
+      m_TileIndex: 1
+      m_TileSpriteIndex: 20
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_TileObjectToInstantiateIndex: 65535
+      dummyAlignment: 0
+      m_AllTileFlags: 1073741826
+  - first: {x: 17, y: -1, z: 0}
+    second:
+      serializedVersion: 2
+      m_TileIndex: 1
+      m_TileSpriteIndex: 21
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_TileObjectToInstantiateIndex: 65535
+      dummyAlignment: 0
+      m_AllTileFlags: 1073741826
+  - first: {x: 18, y: -1, z: 0}
+    second:
+      serializedVersion: 2
+      m_TileIndex: 1
+      m_TileSpriteIndex: 11
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_TileObjectToInstantiateIndex: 65535
+      dummyAlignment: 0
+      m_AllTileFlags: 1073741826
+  - first: {x: -3, y: 0, z: 0}
+    second:
+      serializedVersion: 2
+      m_TileIndex: 0
+      m_TileSpriteIndex: 2
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_TileObjectToInstantiateIndex: 65535
+      dummyAlignment: 0
+      m_AllTileFlags: 1073741826
+  - first: {x: -2, y: 0, z: 0}
+    second:
+      serializedVersion: 2
+      m_TileIndex: 0
+      m_TileSpriteIndex: 0
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_TileObjectToInstantiateIndex: 65535
+      dummyAlignment: 0
+      m_AllTileFlags: 1073741826
+  - first: {x: -1, y: 0, z: 0}
+    second:
+      serializedVersion: 2
+      m_TileIndex: 0
+      m_TileSpriteIndex: 4
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_TileObjectToInstantiateIndex: 65535
+      dummyAlignment: 0
+      m_AllTileFlags: 1073741826
+  - first: {x: 4, y: 0, z: 0}
+    second:
+      serializedVersion: 2
+      m_TileIndex: 1
+      m_TileSpriteIndex: 5
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_TileObjectToInstantiateIndex: 65535
+      dummyAlignment: 0
+      m_AllTileFlags: 1073741826
+  - first: {x: 5, y: 0, z: 0}
+    second:
+      serializedVersion: 2
+      m_TileIndex: 0
+      m_TileSpriteIndex: 0
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_TileObjectToInstantiateIndex: 65535
+      dummyAlignment: 0
+      m_AllTileFlags: 1073741826
+  - first: {x: 6, y: 0, z: 0}
+    second:
+      serializedVersion: 2
+      m_TileIndex: 0
+      m_TileSpriteIndex: 0
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_TileObjectToInstantiateIndex: 65535
+      dummyAlignment: 0
+      m_AllTileFlags: 1073741826
+  - first: {x: 7, y: 0, z: 0}
+    second:
+      serializedVersion: 2
+      m_TileIndex: 0
+      m_TileSpriteIndex: 8
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_TileObjectToInstantiateIndex: 65535
+      dummyAlignment: 0
+      m_AllTileFlags: 1073741826
+  - first: {x: 8, y: 0, z: 0}
+    second:
+      serializedVersion: 2
+      m_TileIndex: 0
+      m_TileSpriteIndex: 0
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_TileObjectToInstantiateIndex: 65535
+      dummyAlignment: 0
+      m_AllTileFlags: 1073741826
+  - first: {x: 9, y: 0, z: 0}
+    second:
+      serializedVersion: 2
+      m_TileIndex: 0
+      m_TileSpriteIndex: 0
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_TileObjectToInstantiateIndex: 65535
+      dummyAlignment: 0
+      m_AllTileFlags: 1073741826
+  - first: {x: 10, y: 0, z: 0}
+    second:
+      serializedVersion: 2
+      m_TileIndex: 1
+      m_TileSpriteIndex: 5
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_TileObjectToInstantiateIndex: 65535
+      dummyAlignment: 0
+      m_AllTileFlags: 1073741826
+  - first: {x: 15, y: 0, z: 0}
+    second:
+      serializedVersion: 2
+      m_TileIndex: 1
+      m_TileSpriteIndex: 15
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_TileObjectToInstantiateIndex: 65535
+      dummyAlignment: 0
+      m_AllTileFlags: 1073741826
+  - first: {x: 16, y: 0, z: 0}
+    second:
+      serializedVersion: 2
+      m_TileIndex: 1
+      m_TileSpriteIndex: 7
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_TileObjectToInstantiateIndex: 65535
+      dummyAlignment: 0
+      m_AllTileFlags: 1073741826
+  - first: {x: 17, y: 0, z: 0}
+    second:
+      serializedVersion: 2
+      m_TileIndex: 1
+      m_TileSpriteIndex: 7
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_TileObjectToInstantiateIndex: 65535
+      dummyAlignment: 0
+      m_AllTileFlags: 1073741826
+  - first: {x: 18, y: 0, z: 0}
+    second:
+      serializedVersion: 2
+      m_TileIndex: 1
+      m_TileSpriteIndex: 5
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_TileObjectToInstantiateIndex: 65535
+      dummyAlignment: 0
+      m_AllTileFlags: 1073741826
+  - first: {x: -3, y: 1, z: 0}
+    second:
+      serializedVersion: 2
+      m_TileIndex: 0
+      m_TileSpriteIndex: 1
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_TileObjectToInstantiateIndex: 65535
+      dummyAlignment: 0
+      m_AllTileFlags: 1073741826
+  - first: {x: -2, y: 1, z: 0}
+    second:
+      serializedVersion: 2
+      m_TileIndex: 0
+      m_TileSpriteIndex: 0
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_TileObjectToInstantiateIndex: 65535
+      dummyAlignment: 0
+      m_AllTileFlags: 1073741826
+  - first: {x: -1, y: 1, z: 0}
+    second:
+      serializedVersion: 2
+      m_TileIndex: 0
+      m_TileSpriteIndex: 0
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_TileObjectToInstantiateIndex: 65535
+      dummyAlignment: 0
+      m_AllTileFlags: 1073741826
+  - first: {x: 4, y: 1, z: 0}
+    second:
+      serializedVersion: 2
+      m_TileIndex: 1
+      m_TileSpriteIndex: 5
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_TileObjectToInstantiateIndex: 65535
+      dummyAlignment: 0
+      m_AllTileFlags: 1073741826
+  - first: {x: 5, y: 1, z: 0}
+    second:
+      serializedVersion: 2
+      m_TileIndex: 0
+      m_TileSpriteIndex: 17
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_TileObjectToInstantiateIndex: 65535
+      dummyAlignment: 0
+      m_AllTileFlags: 1073741826
+  - first: {x: 6, y: 1, z: 0}
+    second:
+      serializedVersion: 2
+      m_TileIndex: 0
+      m_TileSpriteIndex: 3
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_TileObjectToInstantiateIndex: 65535
+      dummyAlignment: 0
+      m_AllTileFlags: 1073741826
+  - first: {x: 7, y: 1, z: 0}
+    second:
+      serializedVersion: 2
+      m_TileIndex: 0
+      m_TileSpriteIndex: 2
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_TileObjectToInstantiateIndex: 65535
+      dummyAlignment: 0
+      m_AllTileFlags: 1073741826
+  - first: {x: 8, y: 1, z: 0}
+    second:
+      serializedVersion: 2
+      m_TileIndex: 0
+      m_TileSpriteIndex: 3
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_TileObjectToInstantiateIndex: 65535
+      dummyAlignment: 0
+      m_AllTileFlags: 1073741826
+  - first: {x: 9, y: 1, z: 0}
+    second:
+      serializedVersion: 2
+      m_TileIndex: 0
+      m_TileSpriteIndex: 0
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_TileObjectToInstantiateIndex: 65535
+      dummyAlignment: 0
+      m_AllTileFlags: 1073741826
+  - first: {x: 10, y: 1, z: 0}
+    second:
+      serializedVersion: 2
+      m_TileIndex: 1
+      m_TileSpriteIndex: 6
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_TileObjectToInstantiateIndex: 65535
+      dummyAlignment: 0
+      m_AllTileFlags: 1073741826
+  - first: {x: 15, y: 1, z: 0}
+    second:
+      serializedVersion: 2
+      m_TileIndex: 1
+      m_TileSpriteIndex: 19
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_TileObjectToInstantiateIndex: 65535
+      dummyAlignment: 0
+      m_AllTileFlags: 1073741826
+  - first: {x: 16, y: 1, z: 0}
+    second:
+      serializedVersion: 2
+      m_TileIndex: 1
+      m_TileSpriteIndex: 7
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_TileObjectToInstantiateIndex: 65535
+      dummyAlignment: 0
+      m_AllTileFlags: 1073741826
+  - first: {x: 17, y: 1, z: 0}
+    second:
+      serializedVersion: 2
+      m_TileIndex: 1
+      m_TileSpriteIndex: 7
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_TileObjectToInstantiateIndex: 65535
+      dummyAlignment: 0
+      m_AllTileFlags: 1073741826
+  - first: {x: 18, y: 1, z: 0}
+    second:
+      serializedVersion: 2
+      m_TileIndex: 1
+      m_TileSpriteIndex: 6
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_TileObjectToInstantiateIndex: 65535
+      dummyAlignment: 0
+      m_AllTileFlags: 1073741826
+  - first: {x: 4, y: 2, z: 0}
+    second:
+      serializedVersion: 2
+      m_TileIndex: 1
+      m_TileSpriteIndex: 5
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_TileObjectToInstantiateIndex: 65535
+      dummyAlignment: 0
+      m_AllTileFlags: 1073741826
+  - first: {x: 5, y: 2, z: 0}
+    second:
+      serializedVersion: 2
+      m_TileIndex: 0
+      m_TileSpriteIndex: 0
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_TileObjectToInstantiateIndex: 65535
+      dummyAlignment: 0
+      m_AllTileFlags: 1073741826
+  - first: {x: 6, y: 2, z: 0}
+    second:
+      serializedVersion: 2
+      m_TileIndex: 0
+      m_TileSpriteIndex: 0
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_TileObjectToInstantiateIndex: 65535
+      dummyAlignment: 0
+      m_AllTileFlags: 1073741826
+  - first: {x: 7, y: 2, z: 0}
+    second:
+      serializedVersion: 2
+      m_TileIndex: 0
+      m_TileSpriteIndex: 0
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_TileObjectToInstantiateIndex: 65535
+      dummyAlignment: 0
+      m_AllTileFlags: 1073741826
+  - first: {x: 8, y: 2, z: 0}
+    second:
+      serializedVersion: 2
+      m_TileIndex: 0
+      m_TileSpriteIndex: 0
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_TileObjectToInstantiateIndex: 65535
+      dummyAlignment: 0
+      m_AllTileFlags: 1073741826
+  - first: {x: 9, y: 2, z: 0}
+    second:
+      serializedVersion: 2
+      m_TileIndex: 0
+      m_TileSpriteIndex: 0
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_TileObjectToInstantiateIndex: 65535
+      dummyAlignment: 0
+      m_AllTileFlags: 1073741826
+  - first: {x: 10, y: 2, z: 0}
+    second:
+      serializedVersion: 2
+      m_TileIndex: 1
+      m_TileSpriteIndex: 5
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_TileObjectToInstantiateIndex: 65535
+      dummyAlignment: 0
+      m_AllTileFlags: 1073741826
+  - first: {x: 15, y: 2, z: 0}
+    second:
+      serializedVersion: 2
+      m_TileIndex: 1
+      m_TileSpriteIndex: 16
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_TileObjectToInstantiateIndex: 65535
+      dummyAlignment: 0
+      m_AllTileFlags: 1073741826
+  - first: {x: 16, y: 2, z: 0}
+    second:
+      serializedVersion: 2
+      m_TileIndex: 1
+      m_TileSpriteIndex: 13
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_TileObjectToInstantiateIndex: 65535
+      dummyAlignment: 0
+      m_AllTileFlags: 1073741826
+  - first: {x: 17, y: 2, z: 0}
+    second:
+      serializedVersion: 2
+      m_TileIndex: 1
+      m_TileSpriteIndex: 10
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_TileObjectToInstantiateIndex: 65535
+      dummyAlignment: 0
+      m_AllTileFlags: 1073741826
+  - first: {x: 18, y: 2, z: 0}
+    second:
+      serializedVersion: 2
+      m_TileIndex: 1
+      m_TileSpriteIndex: 14
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_TileObjectToInstantiateIndex: 65535
+      dummyAlignment: 0
+      m_AllTileFlags: 1073741826
+  - first: {x: 4, y: 3, z: 0}
+    second:
+      serializedVersion: 2
+      m_TileIndex: 1
+      m_TileSpriteIndex: 16
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_TileObjectToInstantiateIndex: 65535
+      dummyAlignment: 0
+      m_AllTileFlags: 1073741826
+  - first: {x: 5, y: 3, z: 0}
+    second:
+      serializedVersion: 2
+      m_TileIndex: 1
+      m_TileSpriteIndex: 7
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_TileObjectToInstantiateIndex: 65535
+      dummyAlignment: 0
+      m_AllTileFlags: 1073741826
+  - first: {x: 6, y: 3, z: 0}
+    second:
+      serializedVersion: 2
+      m_TileIndex: 1
+      m_TileSpriteIndex: 7
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_TileObjectToInstantiateIndex: 65535
+      dummyAlignment: 0
+      m_AllTileFlags: 1073741826
+  - first: {x: 7, y: 3, z: 0}
+    second:
+      serializedVersion: 2
+      m_TileIndex: 1
+      m_TileSpriteIndex: 7
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_TileObjectToInstantiateIndex: 65535
+      dummyAlignment: 0
+      m_AllTileFlags: 1073741826
+  - first: {x: 8, y: 3, z: 0}
+    second:
+      serializedVersion: 2
+      m_TileIndex: 1
+      m_TileSpriteIndex: 7
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_TileObjectToInstantiateIndex: 65535
+      dummyAlignment: 0
+      m_AllTileFlags: 1073741826
+  - first: {x: 9, y: 3, z: 0}
+    second:
+      serializedVersion: 2
+      m_TileIndex: 1
+      m_TileSpriteIndex: 7
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_TileObjectToInstantiateIndex: 65535
+      dummyAlignment: 0
+      m_AllTileFlags: 1073741826
+  - first: {x: 10, y: 3, z: 0}
+    second:
+      serializedVersion: 2
+      m_TileIndex: 1
+      m_TileSpriteIndex: 14
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_TileObjectToInstantiateIndex: 65535
+      dummyAlignment: 0
+      m_AllTileFlags: 1073741826
+  m_AnimatedTiles: {}
+  m_TileAssetArray:
+  - m_RefCount: 39
+    m_Data: {fileID: 11400000, guid: 4bd8f956179c61d4f8a571d2d77572d5, type: 2}
+  - m_RefCount: 42
+    m_Data: {fileID: 11400000, guid: 23c3f078e9c95864694b1ba48d5cd5ef, type: 2}
+  m_TileSpriteArray:
+  - m_RefCount: 20
+    m_Data: {fileID: -1776575400403690255, guid: a9e4f0eb957e06a4d8e479b9c0a9ea9f, type: 3}
+  - m_RefCount: 2
+    m_Data: {fileID: 6436560349361112449, guid: a9e4f0eb957e06a4d8e479b9c0a9ea9f, type: 3}
+  - m_RefCount: 4
+    m_Data: {fileID: 651937478, guid: a9e4f0eb957e06a4d8e479b9c0a9ea9f, type: 3}
+  - m_RefCount: 4
+    m_Data: {fileID: 906673914, guid: a9e4f0eb957e06a4d8e479b9c0a9ea9f, type: 3}
+  - m_RefCount: 3
+    m_Data: {fileID: 2108976282551558751, guid: a9e4f0eb957e06a4d8e479b9c0a9ea9f, type: 3}
+  - m_RefCount: 9
+    m_Data: {fileID: -2082485468, guid: a9e4f0eb957e06a4d8e479b9c0a9ea9f, type: 3}
+  - m_RefCount: 4
+    m_Data: {fileID: 5540061561785502580, guid: a9e4f0eb957e06a4d8e479b9c0a9ea9f, type: 3}
+  - m_RefCount: 14
+    m_Data: {fileID: 3283300695089771475, guid: a9e4f0eb957e06a4d8e479b9c0a9ea9f, type: 3}
+  - m_RefCount: 5
+    m_Data: {fileID: -2917350023695644350, guid: a9e4f0eb957e06a4d8e479b9c0a9ea9f, type: 3}
+  - m_RefCount: 0
+    m_Data: {fileID: 0}
+  - m_RefCount: 1
+    m_Data: {fileID: 1084784950523803941, guid: a9e4f0eb957e06a4d8e479b9c0a9ea9f, type: 3}
+  - m_RefCount: 2
+    m_Data: {fileID: -1811780126, guid: a9e4f0eb957e06a4d8e479b9c0a9ea9f, type: 3}
+  - m_RefCount: 2
+    m_Data: {fileID: 1714272216, guid: a9e4f0eb957e06a4d8e479b9c0a9ea9f, type: 3}
+  - m_RefCount: 1
+    m_Data: {fileID: -8746033620184659114, guid: a9e4f0eb957e06a4d8e479b9c0a9ea9f, type: 3}
+  - m_RefCount: 2
+    m_Data: {fileID: -3230975458514250041, guid: a9e4f0eb957e06a4d8e479b9c0a9ea9f, type: 3}
+  - m_RefCount: 1
+    m_Data: {fileID: -8199437182966303622, guid: a9e4f0eb957e06a4d8e479b9c0a9ea9f, type: 3}
+  - m_RefCount: 2
+    m_Data: {fileID: 6420404250380019895, guid: a9e4f0eb957e06a4d8e479b9c0a9ea9f, type: 3}
+  - m_RefCount: 1
+    m_Data: {fileID: 214147475, guid: a9e4f0eb957e06a4d8e479b9c0a9ea9f, type: 3}
+  - m_RefCount: 1
+    m_Data: {fileID: 1748794082, guid: a9e4f0eb957e06a4d8e479b9c0a9ea9f, type: 3}
+  - m_RefCount: 1
+    m_Data: {fileID: -5745523329672321289, guid: a9e4f0eb957e06a4d8e479b9c0a9ea9f, type: 3}
+  - m_RefCount: 1
+    m_Data: {fileID: -1423139918, guid: a9e4f0eb957e06a4d8e479b9c0a9ea9f, type: 3}
+  - m_RefCount: 1
+    m_Data: {fileID: 1428764279, guid: a9e4f0eb957e06a4d8e479b9c0a9ea9f, type: 3}
+  m_TileMatrixArray:
+  - m_RefCount: 81
+    m_Data:
+      e00: 1
+      e01: 0
+      e02: 0
+      e03: 0
+      e10: 0
+      e11: 1
+      e12: 0
+      e13: 0
+      e20: 0
+      e21: 0
+      e22: 1
+      e23: 0
+      e30: 0
+      e31: 0
+      e32: 0
+      e33: 1
+  m_TileColorArray:
+  - m_RefCount: 81
+    m_Data: {r: 1, g: 1, b: 1, a: 1}
+  m_TileObjectToInstantiateArray: []
+  m_AnimationFrameRate: 1
+  m_Color: {r: 1, g: 1, b: 1, a: 1}
+  m_Origin: {x: -3, y: -4, z: 0}
+  m_Size: {x: 22, y: 8, z: 1}
+  m_TileAnchor: {x: 0.5, y: 0.5, z: 0}
+  m_TileOrientation: 0
+  m_TileOrientationMatrix:
+    e00: 1
+    e01: 0
+    e02: 0
+    e03: 0
+    e10: 0
+    e11: 1
+    e12: 0
+    e13: 0
+    e20: 0
+    e21: 0
+    e22: 1
+    e23: 0
+    e30: 0
+    e31: 0
+    e32: 0
+    e33: 1
+--- !u!483693784 &6882299907777424227
+TilemapRenderer:
+  serializedVersion: 2
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2112171993025852931}
+  m_Enabled: 1
+  m_CastShadows: 0
+  m_ReceiveShadows: 0
+  m_DynamicOccludee: 0
+  m_StaticShadowCaster: 0
+  m_MotionVectors: 1
+  m_LightProbeUsage: 0
+  m_ReflectionProbeUsage: 0
+  m_RayTracingMode: 0
+  m_RayTraceProcedural: 0
+  m_RayTracingAccelStructBuildFlagsOverride: 0
+  m_RayTracingAccelStructBuildFlags: 1
+  m_SmallMeshCulling: 1
+  m_ForceMeshLod: -1
+  m_MeshLodSelectionBias: 0
+  m_RenderingLayerMask: 1
+  m_RendererPriority: 0
+  m_Materials:
+  - {fileID: 2100000, guid: a97c105638bdf8b4a8650670310a4cd3, type: 2}
+  m_StaticBatchInfo:
+    firstSubMesh: 0
+    subMeshCount: 0
+  m_StaticBatchRoot: {fileID: 0}
+  m_ProbeAnchor: {fileID: 0}
+  m_LightProbeVolumeOverride: {fileID: 0}
+  m_ScaleInLightmap: 1
+  m_ReceiveGI: 1
+  m_PreserveUVs: 0
+  m_IgnoreNormalsForChartDetection: 0
+  m_ImportantGI: 0
+  m_StitchLightmapSeams: 1
+  m_SelectedEditorRenderState: 0
+  m_MinimumChartSize: 4
+  m_AutoUVMaxDistance: 0.5
+  m_AutoUVMaxAngle: 89
+  m_LightmapParameters: {fileID: 0}
+  m_GlobalIlluminationMeshLod: 0
+  m_SortingLayerID: 0
+  m_SortingLayer: 0
+  m_SortingOrder: 0
+  m_MaskInteraction: 0
+  m_ChunkSize: {x: 32, y: 32, z: 32}
+  m_ChunkCullingBounds: {x: 0, y: 0, z: 0}
+  m_MaxChunkCount: 16
+  m_MaxFrameAge: 16
+  m_SortOrder: 0
+  m_Mode: 0
+  m_DetectChunkCullingBounds: 0
+--- !u!1 &6174653291020284844
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 2127554614782652401}
+  - component: {fileID: 976156493577288614}
+  m_Layer: 0
+  m_Name: CombinedFloorAndWallPalett
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &2127554614782652401
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 6174653291020284844}
+  serializedVersion: 2
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_ConstrainProportionsScale: 0
+  m_Children:
+  - {fileID: 5277487521849291834}
+  m_Father: {fileID: 0}
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!156049354 &976156493577288614
+Grid:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 6174653291020284844}
+  m_Enabled: 1
+  m_CellSize: {x: 1, y: 1, z: 0}
+  m_CellGap: {x: 0, y: 0, z: 0}
+  m_CellLayout: 0
+  m_CellSwizzle: 0
+--- !u!114 &730918799072448285
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 0}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 12395, guid: 0000000000000000e000000000000000, type: 0}
+  m_Name: Palette Settings
+  m_EditorClassIdentifier: UnityEditor.dll::UnityEditor.GridPalette
+  cellSizing: 0
+  m_TransparencySortMode: 0
+  m_TransparencySortAxis: {x: 0, y: 0, z: 1}

+ 7 - 0
Assets/UI/CombinedFloorAndWallPalett.prefab.meta

@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 9afcc277aa5beb644a3a3341b24720ef
+PrefabImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 39 - 0
Assets/UI/FloorTile.asset

@@ -0,0 +1,39 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 0}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 9d1514134bc4fbd41bb739b1b9a49231, type: 3}
+  m_Name: FloorTile
+  m_EditorClassIdentifier: Unity.2D.Tilemap.Extras::UnityEngine.RuleTile
+  m_DefaultSprite: {fileID: -5624414064620405630, guid: a9e4f0eb957e06a4d8e479b9c0a9ea9f, type: 3}
+  m_DefaultGameObject: {fileID: 0}
+  m_DefaultColliderType: 1
+  m_TilingRules:
+  - m_Id: 0
+    m_Sprites:
+    - {fileID: -5624414064620405630, guid: a9e4f0eb957e06a4d8e479b9c0a9ea9f, type: 3}
+    - {fileID: -2917350023695644350, guid: a9e4f0eb957e06a4d8e479b9c0a9ea9f, type: 3}
+    - {fileID: 2108976282551558751, guid: a9e4f0eb957e06a4d8e479b9c0a9ea9f, type: 3}
+    - {fileID: 6436560349361112449, guid: a9e4f0eb957e06a4d8e479b9c0a9ea9f, type: 3}
+    - {fileID: -1776575400403690255, guid: a9e4f0eb957e06a4d8e479b9c0a9ea9f, type: 3}
+    - {fileID: 651937478, guid: a9e4f0eb957e06a4d8e479b9c0a9ea9f, type: 3}
+    - {fileID: 214147475, guid: a9e4f0eb957e06a4d8e479b9c0a9ea9f, type: 3}
+    - {fileID: 906673914, guid: a9e4f0eb957e06a4d8e479b9c0a9ea9f, type: 3}
+    - {fileID: 1289658970, guid: a9e4f0eb957e06a4d8e479b9c0a9ea9f, type: 3}
+    m_GameObject: {fileID: 0}
+    m_MinAnimationSpeed: 1
+    m_MaxAnimationSpeed: 1
+    m_PerlinScale: 0.5
+    m_Output: 1
+    m_ColliderType: 1
+    m_RandomTransform: 0
+    m_Neighbors: 
+    m_NeighborPositions: []
+    m_RuleTransform: 0

+ 8 - 0
Assets/UI/FloorTile.asset.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 4bd8f956179c61d4f8a571d2d77572d5
+NativeFormatImporter:
+  externalObjects: {}
+  mainObjectFileID: 11400000
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 8 - 0
Assets/UI/Tilemaps.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 6c925f07f0d7965419664a0131d8e5c3
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 36 - 0
Assets/UI/Tilemaps/dungeon_floor_.asset

@@ -0,0 +1,36 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 0}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 13312, guid: 0000000000000000e000000000000000, type: 0}
+  m_Name: dungeon_floor_
+  m_EditorClassIdentifier: UnityEngine.dll::UnityEngine.Tilemaps.Tile
+  m_Sprite: {fileID: -5624414064620405630, guid: a9e4f0eb957e06a4d8e479b9c0a9ea9f, type: 3}
+  m_Color: {r: 1, g: 1, b: 1, a: 1}
+  m_Transform:
+    e00: 1
+    e01: 0
+    e02: 0
+    e03: 0
+    e10: 0
+    e11: 1
+    e12: 0
+    e13: 0
+    e20: 0
+    e21: 0
+    e22: 1
+    e23: 0
+    e30: 0
+    e31: 0
+    e32: 0
+    e33: 1
+  m_InstancedGameObject: {fileID: 0}
+  m_Flags: 1
+  m_ColliderType: 1

+ 8 - 0
Assets/UI/Tilemaps/dungeon_floor_.asset.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 7b6f4f2a92513b449bfdb46502ac873b
+NativeFormatImporter:
+  externalObjects: {}
+  mainObjectFileID: 11400000
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 36 - 0
Assets/UI/Tilemaps/dungeon_floor_2.asset

@@ -0,0 +1,36 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 0}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 13312, guid: 0000000000000000e000000000000000, type: 0}
+  m_Name: dungeon_floor_2
+  m_EditorClassIdentifier: UnityEngine.dll::UnityEngine.Tilemaps.Tile
+  m_Sprite: {fileID: -2917350023695644350, guid: a9e4f0eb957e06a4d8e479b9c0a9ea9f, type: 3}
+  m_Color: {r: 1, g: 1, b: 1, a: 1}
+  m_Transform:
+    e00: 1
+    e01: 0
+    e02: 0
+    e03: 0
+    e10: 0
+    e11: 1
+    e12: 0
+    e13: 0
+    e20: 0
+    e21: 0
+    e22: 1
+    e23: 0
+    e30: 0
+    e31: 0
+    e32: 0
+    e33: 1
+  m_InstancedGameObject: {fileID: 0}
+  m_Flags: 1
+  m_ColliderType: 1

+ 8 - 0
Assets/UI/Tilemaps/dungeon_floor_2.asset.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 621409f0dedd8b14ca5b207a0876e21d
+NativeFormatImporter:
+  externalObjects: {}
+  mainObjectFileID: 11400000
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 36 - 0
Assets/UI/Tilemaps/dungeon_floor_3.asset

@@ -0,0 +1,36 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 0}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 13312, guid: 0000000000000000e000000000000000, type: 0}
+  m_Name: dungeon_floor_3
+  m_EditorClassIdentifier: UnityEngine.dll::UnityEngine.Tilemaps.Tile
+  m_Sprite: {fileID: 2108976282551558751, guid: a9e4f0eb957e06a4d8e479b9c0a9ea9f, type: 3}
+  m_Color: {r: 1, g: 1, b: 1, a: 1}
+  m_Transform:
+    e00: 1
+    e01: 0
+    e02: 0
+    e03: 0
+    e10: 0
+    e11: 1
+    e12: 0
+    e13: 0
+    e20: 0
+    e21: 0
+    e22: 1
+    e23: 0
+    e30: 0
+    e31: 0
+    e32: 0
+    e33: 1
+  m_InstancedGameObject: {fileID: 0}
+  m_Flags: 1
+  m_ColliderType: 1

+ 8 - 0
Assets/UI/Tilemaps/dungeon_floor_3.asset.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 55fbb933b8165ac4ea5a68ad13025304
+NativeFormatImporter:
+  externalObjects: {}
+  mainObjectFileID: 11400000
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 36 - 0
Assets/UI/Tilemaps/dungeon_floor_4.asset

@@ -0,0 +1,36 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 0}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 13312, guid: 0000000000000000e000000000000000, type: 0}
+  m_Name: dungeon_floor_4
+  m_EditorClassIdentifier: UnityEngine.dll::UnityEngine.Tilemaps.Tile
+  m_Sprite: {fileID: 6436560349361112449, guid: a9e4f0eb957e06a4d8e479b9c0a9ea9f, type: 3}
+  m_Color: {r: 1, g: 1, b: 1, a: 1}
+  m_Transform:
+    e00: 1
+    e01: 0
+    e02: 0
+    e03: 0
+    e10: 0
+    e11: 1
+    e12: 0
+    e13: 0
+    e20: 0
+    e21: 0
+    e22: 1
+    e23: 0
+    e30: 0
+    e31: 0
+    e32: 0
+    e33: 1
+  m_InstancedGameObject: {fileID: 0}
+  m_Flags: 1
+  m_ColliderType: 1

+ 8 - 0
Assets/UI/Tilemaps/dungeon_floor_4.asset.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 4d8d580bb235b3440aa52f9a030f66f1
+NativeFormatImporter:
+  externalObjects: {}
+  mainObjectFileID: 11400000
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 36 - 0
Assets/UI/Tilemaps/dungeon_floor_5.asset

@@ -0,0 +1,36 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 0}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 13312, guid: 0000000000000000e000000000000000, type: 0}
+  m_Name: dungeon_floor_5
+  m_EditorClassIdentifier: UnityEngine.dll::UnityEngine.Tilemaps.Tile
+  m_Sprite: {fileID: -1776575400403690255, guid: a9e4f0eb957e06a4d8e479b9c0a9ea9f, type: 3}
+  m_Color: {r: 1, g: 1, b: 1, a: 1}
+  m_Transform:
+    e00: 1
+    e01: 0
+    e02: 0
+    e03: 0
+    e10: 0
+    e11: 1
+    e12: 0
+    e13: 0
+    e20: 0
+    e21: 0
+    e22: 1
+    e23: 0
+    e30: 0
+    e31: 0
+    e32: 0
+    e33: 1
+  m_InstancedGameObject: {fileID: 0}
+  m_Flags: 1
+  m_ColliderType: 1

+ 8 - 0
Assets/UI/Tilemaps/dungeon_floor_5.asset.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 3d1e6848cce073440b15cc4957926681
+NativeFormatImporter:
+  externalObjects: {}
+  mainObjectFileID: 11400000
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 36 - 0
Assets/UI/Tilemaps/dungeon_floor_6.asset

@@ -0,0 +1,36 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 0}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 13312, guid: 0000000000000000e000000000000000, type: 0}
+  m_Name: dungeon_floor_6
+  m_EditorClassIdentifier: UnityEngine.dll::UnityEngine.Tilemaps.Tile
+  m_Sprite: {fileID: 651937478, guid: a9e4f0eb957e06a4d8e479b9c0a9ea9f, type: 3}
+  m_Color: {r: 1, g: 1, b: 1, a: 1}
+  m_Transform:
+    e00: 1
+    e01: 0
+    e02: 0
+    e03: 0
+    e10: 0
+    e11: 1
+    e12: 0
+    e13: 0
+    e20: 0
+    e21: 0
+    e22: 1
+    e23: 0
+    e30: 0
+    e31: 0
+    e32: 0
+    e33: 1
+  m_InstancedGameObject: {fileID: 0}
+  m_Flags: 1
+  m_ColliderType: 1

+ 8 - 0
Assets/UI/Tilemaps/dungeon_floor_6.asset.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 2e007db2f47f96d4f9294c82c34be6d6
+NativeFormatImporter:
+  externalObjects: {}
+  mainObjectFileID: 11400000
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 36 - 0
Assets/UI/Tilemaps/dungeon_floor_7.asset

@@ -0,0 +1,36 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 0}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 13312, guid: 0000000000000000e000000000000000, type: 0}
+  m_Name: dungeon_floor_7
+  m_EditorClassIdentifier: UnityEngine.dll::UnityEngine.Tilemaps.Tile
+  m_Sprite: {fileID: 214147475, guid: a9e4f0eb957e06a4d8e479b9c0a9ea9f, type: 3}
+  m_Color: {r: 1, g: 1, b: 1, a: 1}
+  m_Transform:
+    e00: 1
+    e01: 0
+    e02: 0
+    e03: 0
+    e10: 0
+    e11: 1
+    e12: 0
+    e13: 0
+    e20: 0
+    e21: 0
+    e22: 1
+    e23: 0
+    e30: 0
+    e31: 0
+    e32: 0
+    e33: 1
+  m_InstancedGameObject: {fileID: 0}
+  m_Flags: 1
+  m_ColliderType: 1

+ 8 - 0
Assets/UI/Tilemaps/dungeon_floor_7.asset.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 4c0efd2935c3ed0419114580ae621c8b
+NativeFormatImporter:
+  externalObjects: {}
+  mainObjectFileID: 11400000
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 36 - 0
Assets/UI/Tilemaps/dungeon_floor_8.asset

@@ -0,0 +1,36 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 0}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 13312, guid: 0000000000000000e000000000000000, type: 0}
+  m_Name: dungeon_floor_8
+  m_EditorClassIdentifier: UnityEngine.dll::UnityEngine.Tilemaps.Tile
+  m_Sprite: {fileID: 906673914, guid: a9e4f0eb957e06a4d8e479b9c0a9ea9f, type: 3}
+  m_Color: {r: 1, g: 1, b: 1, a: 1}
+  m_Transform:
+    e00: 1
+    e01: 0
+    e02: 0
+    e03: 0
+    e10: 0
+    e11: 1
+    e12: 0
+    e13: 0
+    e20: 0
+    e21: 0
+    e22: 1
+    e23: 0
+    e30: 0
+    e31: 0
+    e32: 0
+    e33: 1
+  m_InstancedGameObject: {fileID: 0}
+  m_Flags: 1
+  m_ColliderType: 1

+ 8 - 0
Assets/UI/Tilemaps/dungeon_floor_8.asset.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: dc13224b7e81d1f4aa422faed8f2600d
+NativeFormatImporter:
+  externalObjects: {}
+  mainObjectFileID: 11400000
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 36 - 0
Assets/UI/Tilemaps/dungeon_floor_9.asset

@@ -0,0 +1,36 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 0}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 13312, guid: 0000000000000000e000000000000000, type: 0}
+  m_Name: dungeon_floor_9
+  m_EditorClassIdentifier: UnityEngine.dll::UnityEngine.Tilemaps.Tile
+  m_Sprite: {fileID: 1289658970, guid: a9e4f0eb957e06a4d8e479b9c0a9ea9f, type: 3}
+  m_Color: {r: 1, g: 1, b: 1, a: 1}
+  m_Transform:
+    e00: 1
+    e01: 0
+    e02: 0
+    e03: 0
+    e10: 0
+    e11: 1
+    e12: 0
+    e13: 0
+    e20: 0
+    e21: 0
+    e22: 1
+    e23: 0
+    e30: 0
+    e31: 0
+    e32: 0
+    e33: 1
+  m_InstancedGameObject: {fileID: 0}
+  m_Flags: 1
+  m_ColliderType: 1

+ 8 - 0
Assets/UI/Tilemaps/dungeon_floor_9.asset.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: d902e8e051982f24fbe64f00db934558
+NativeFormatImporter:
+  externalObjects: {}
+  mainObjectFileID: 11400000
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

BIN
Assets/UI/Tilemaps/dungeon_tiles.png


+ 6350 - 0
Assets/UI/Tilemaps/dungeon_tiles.png.meta

@@ -0,0 +1,6350 @@
+fileFormatVersion: 2
+guid: a9e4f0eb957e06a4d8e479b9c0a9ea9f
+TextureImporter:
+  internalIDToNameTable:
+  - first:
+      213: 6420404250380019895
+    second: dungeon_tiles_0
+  - first:
+      213: 1084784950523803941
+    second: dungeon_tiles_1
+  - first:
+      213: -8746033620184659114
+    second: dungeon_tiles_2
+  - first:
+      213: 2728243367429221048
+    second: dungeon_tiles_3
+  - first:
+      213: -3230975458514250041
+    second: dungeon_tiles_4
+  - first:
+      213: 2054877772185783745
+    second: dungeon_tiles_5
+  - first:
+      213: -7083331958401386302
+    second: dungeon_tiles_6
+  - first:
+      213: 6971619310513607880
+    second: dungeon_tiles_7
+  - first:
+      213: 4558597556851542799
+    second: dungeon_tiles_8
+  - first:
+      213: 1794310841801812479
+    second: dungeon_tiles_9
+  - first:
+      213: 4545685854912230521
+    second: dungeon_tiles_10
+  - first:
+      213: -3023061875091369103
+    second: dungeon_tiles_11
+  - first:
+      213: 6725311274419569171
+    second: dungeon_tiles_12
+  - first:
+      213: 650693403263584314
+    second: dungeon_tiles_13
+  - first:
+      213: -5058788211806469395
+    second: dungeon_tiles_14
+  - first:
+      213: -6093401293372397660
+    second: dungeon_tiles_15
+  - first:
+      213: 1270211227817927925
+    second: dungeon_tiles_16
+  - first:
+      213: -8060929843619916789
+    second: dungeon_tiles_17
+  - first:
+      213: 8960572527511170056
+    second: dungeon_tiles_18
+  - first:
+      213: -8199437182966303622
+    second: dungeon_tiles_19
+  - first:
+      213: -5624414064620405630
+    second: dungeon_tiles_20
+  - first:
+      213: -2917350023695644350
+    second: dungeon_tiles_21
+  - first:
+      213: 2108976282551558751
+    second: dungeon_tiles_22
+  - first:
+      213: 5540061561785502580
+    second: dungeon_tiles_23
+  - first:
+      213: -257014355559042649
+    second: dungeon_tiles_24
+  - first:
+      213: -4354237494524392354
+    second: dungeon_tiles_25
+  - first:
+      213: 2664481278081565330
+    second: dungeon_tiles_26
+  - first:
+      213: 2609174863554348470
+    second: dungeon_tiles_27
+  - first:
+      213: 3610339231219930621
+    second: dungeon_tiles_28
+  - first:
+      213: 290047839109599427
+    second: dungeon_tiles_29
+  - first:
+      213: -2900853429046034592
+    second: dungeon_tiles_30
+  - first:
+      213: -1967943382963979276
+    second: dungeon_tiles_31
+  - first:
+      213: 6765227283418963874
+    second: dungeon_tiles_32
+  - first:
+      213: 3283300695089771475
+    second: dungeon_tiles_33
+  - first:
+      213: 4810687501681150605
+    second: dungeon_tiles_34
+  - first:
+      213: 8930077307140411828
+    second: dungeon_tiles_35
+  - first:
+      213: -1313345583907432619
+    second: dungeon_tiles_36
+  - first:
+      213: -1622683439983695371
+    second: dungeon_tiles_37
+  - first:
+      213: -5745523329672321289
+    second: dungeon_tiles_38
+  - first:
+      213: 6436560349361112449
+    second: dungeon_tiles_39
+  - first:
+      213: -1776575400403690255
+    second: dungeon_tiles_40
+  externalObjects: {}
+  serializedVersion: 13
+  mipmaps:
+    mipMapMode: 0
+    enableMipMap: 0
+    sRGBTexture: 1
+    linearTexture: 0
+    fadeOut: 0
+    borderMipMap: 0
+    mipMapsPreserveCoverage: 0
+    alphaTestReferenceValue: 0.5
+    mipMapFadeDistanceStart: 1
+    mipMapFadeDistanceEnd: 3
+  bumpmap:
+    convertToNormalMap: 0
+    externalNormalMap: 0
+    heightScale: 0.25
+    normalMapFilter: 0
+    flipGreenChannel: 0
+  isReadable: 0
+  streamingMipmaps: 0
+  streamingMipmapsPriority: 0
+  vTOnly: 0
+  ignoreMipmapLimit: 0
+  grayScaleToAlpha: 0
+  generateCubemap: 6
+  cubemapConvolution: 0
+  seamlessCubemap: 0
+  textureFormat: 1
+  maxTextureSize: 2048
+  textureSettings:
+    serializedVersion: 2
+    filterMode: 1
+    aniso: 1
+    mipBias: 0
+    wrapU: 1
+    wrapV: 1
+    wrapW: 1
+  nPOTScale: 0
+  lightmap: 0
+  compressionQuality: 50
+  spriteMode: 2
+  spriteExtrude: 1
+  spriteMeshType: 1
+  alignment: 0
+  spritePivot: {x: 0.5, y: 0.5}
+  spritePixelsToUnits: 16
+  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+  spriteGenerateFallbackPhysicsShape: 1
+  alphaUsage: 1
+  alphaIsTransparency: 1
+  spriteTessellationDetail: -1
+  textureType: 8
+  textureShape: 1
+  singleChannelComponent: 0
+  flipbookRows: 1
+  flipbookColumns: 1
+  maxTextureSizeSet: 0
+  compressionQualitySet: 0
+  textureFormatSet: 0
+  ignorePngGamma: 0
+  applyGammaDecoding: 0
+  swizzle: 50462976
+  cookieLightType: 0
+  platformSettings:
+  - serializedVersion: 4
+    buildTarget: DefaultTexturePlatform
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    ignorePlatformSupport: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  - serializedVersion: 4
+    buildTarget: Standalone
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    ignorePlatformSupport: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  - serializedVersion: 4
+    buildTarget: Android
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    ignorePlatformSupport: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  spriteSheet:
+    serializedVersion: 2
+    sprites:
+    - serializedVersion: 2
+      name: dungeon_wall_TL
+      rect:
+        serializedVersion: 2
+        x: 32
+        y: 336
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: -1
+      bones: []
+      spriteID: 7b82f4226abd91950800000000000000
+      internalID: 6420404250380019895
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_wall_T_1
+      rect:
+        serializedVersion: 2
+        x: 48
+        y: 336
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: -1
+      bones: []
+      spriteID: 52939a14a2eed0f00800000000000000
+      internalID: 1084784950523803941
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_wall_T_2
+      rect:
+        serializedVersion: 2
+        x: 64
+        y: 336
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: -1
+      bones: []
+      spriteID: 65b054bc2c8df9680800000000000000
+      internalID: -8746033620184659114
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_wall_T_3
+      rect:
+        serializedVersion: 2
+        x: 80
+        y: 336
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: -1
+      bones: []
+      spriteID: 8ba2f6843eaacd520800000000000000
+      internalID: 2728243367429221048
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_wall_TR
+      rect:
+        serializedVersion: 2
+        x: 96
+        y: 336
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: -1
+      bones: []
+      spriteID: 7c6d04d50f44923d0800000000000000
+      internalID: -3230975458514250041
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_5
+      rect:
+        serializedVersion: 2
+        x: 112
+        y: 336
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: -1
+      bones: []
+      spriteID: 1cdcaf35274648c10800000000000000
+      internalID: 2054877772185783745
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_6
+      rect:
+        serializedVersion: 2
+        x: 128
+        y: 336
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: -1
+      bones: []
+      spriteID: 2c83059ec13f2bd90800000000000000
+      internalID: -7083331958401386302
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_7
+      rect:
+        serializedVersion: 2
+        x: 144
+        y: 336
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: -1
+      bones: []
+      spriteID: 8c4da6063da20c060800000000000000
+      internalID: 6971619310513607880
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_8
+      rect:
+        serializedVersion: 2
+        x: 160
+        y: 336
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: -1
+      bones: []
+      spriteID: f0b89125354634f30800000000000000
+      internalID: 4558597556851542799
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_9
+      rect:
+        serializedVersion: 2
+        x: 176
+        y: 336
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: -1
+      bones: []
+      spriteID: ff9aa36343ca6e810800000000000000
+      internalID: 1794310841801812479
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_10
+      rect:
+        serializedVersion: 2
+        x: 192
+        y: 336
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: -1
+      bones: []
+      spriteID: 974bf827335851f30800000000000000
+      internalID: 4545685854912230521
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_11
+      rect:
+        serializedVersion: 2
+        x: 208
+        y: 336
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: -1
+      bones: []
+      spriteID: 1731721dd3deb06d0800000000000000
+      internalID: -3023061875091369103
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_12
+      rect:
+        serializedVersion: 2
+        x: 224
+        y: 336
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: -1
+      bones: []
+      spriteID: 31245bbc8fa155d50800000000000000
+      internalID: 6725311274419569171
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_13
+      rect:
+        serializedVersion: 2
+        x: 240
+        y: 336
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: -1
+      bones: []
+      spriteID: a384737e33ab70900800000000000000
+      internalID: 650693403263584314
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_14
+      rect:
+        serializedVersion: 2
+        x: 256
+        y: 336
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: -1
+      bones: []
+      spriteID: de287598ce29bc9b0800000000000000
+      internalID: -5058788211806469395
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_15
+      rect:
+        serializedVersion: 2
+        x: 272
+        y: 336
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: -1
+      bones: []
+      spriteID: 4a7e1a2dec3ef6ba0800000000000000
+      internalID: -6093401293372397660
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_16
+      rect:
+        serializedVersion: 2
+        x: 288
+        y: 336
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: -1
+      bones: []
+      spriteID: 5f4eccfb162b0a110800000000000000
+      internalID: 1270211227817927925
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_17
+      rect:
+        serializedVersion: 2
+        x: 304
+        y: 336
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: -1
+      bones: []
+      spriteID: b0490bf0403d12090800000000000000
+      internalID: -8060929843619916789
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_18
+      rect:
+        serializedVersion: 2
+        x: 320
+        y: 336
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: -1
+      bones: []
+      spriteID: 80c6d661d395a5c70800000000000000
+      internalID: 8960572527511170056
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_wall_L_1
+      rect:
+        serializedVersion: 2
+        x: 32
+        y: 320
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: -1
+      bones: []
+      spriteID: a74f927135fb53e80800000000000000
+      internalID: -8199437182966303622
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_floor_
+      rect:
+        serializedVersion: 2
+        x: 48
+        y: 320
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: -1
+      bones: []
+      spriteID: 28cf698253112f1b0800000000000000
+      internalID: -5624414064620405630
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_floor_2
+      rect:
+        serializedVersion: 2
+        x: 64
+        y: 320
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: -1
+      bones: []
+      spriteID: 249c4283c9d7387d0800000000000000
+      internalID: -2917350023695644350
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_floor_3
+      rect:
+        serializedVersion: 2
+        x: 80
+        y: 320
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: -1
+      bones: []
+      spriteID: f52a53151c6944d10800000000000000
+      internalID: 2108976282551558751
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_wall_R_1
+      rect:
+        serializedVersion: 2
+        x: 96
+        y: 320
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: -1
+      bones: []
+      spriteID: 47b450053a042ec40800000000000000
+      internalID: 5540061561785502580
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_24
+      rect:
+        serializedVersion: 2
+        x: 112
+        y: 320
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: -1
+      bones: []
+      spriteID: 7a13aba2ec6ee6cf0800000000000000
+      internalID: -257014355559042649
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_25
+      rect:
+        serializedVersion: 2
+        x: 128
+        y: 320
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: -1
+      bones: []
+      spriteID: e5ccf278114a293c0800000000000000
+      internalID: -4354237494524392354
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_26
+      rect:
+        serializedVersion: 2
+        x: 144
+        y: 320
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: -1
+      bones: []
+      spriteID: 2920bbafa932af420800000000000000
+      internalID: 2664481278081565330
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_27
+      rect:
+        serializedVersion: 2
+        x: 160
+        y: 320
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: -1
+      bones: []
+      spriteID: 6b50903e6b6a53420800000000000000
+      internalID: 2609174863554348470
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_28
+      rect:
+        serializedVersion: 2
+        x: 176
+        y: 320
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: -1
+      bones: []
+      spriteID: df5558307608a1230800000000000000
+      internalID: 3610339231219930621
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_29
+      rect:
+        serializedVersion: 2
+        x: 192
+        y: 320
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: -1
+      bones: []
+      spriteID: 3c05ff119f4760400800000000000000
+      internalID: 290047839109599427
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_30
+      rect:
+        serializedVersion: 2
+        x: 208
+        y: 320
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: -1
+      bones: []
+      spriteID: 06fbc38fc291eb7d0800000000000000
+      internalID: -2900853429046034592
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_31
+      rect:
+        serializedVersion: 2
+        x: 224
+        y: 320
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: -1
+      bones: []
+      spriteID: 4fbf9587be570b4e0800000000000000
+      internalID: -1967943382963979276
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_32
+      rect:
+        serializedVersion: 2
+        x: 240
+        y: 320
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: -1
+      bones: []
+      spriteID: 2afd7fcde5ae2ed50800000000000000
+      internalID: 6765227283418963874
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_33
+      rect:
+        serializedVersion: 2
+        x: 256
+        y: 320
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: -1
+      bones: []
+      spriteID: 3d37e952690a09d20800000000000000
+      internalID: 3283300695089771475
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_34
+      rect:
+        serializedVersion: 2
+        x: 272
+        y: 320
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: -1
+      bones: []
+      spriteID: d8acd1f6bcef2c240800000000000000
+      internalID: 4810687501681150605
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_35
+      rect:
+        serializedVersion: 2
+        x: 288
+        y: 320
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: -1
+      bones: []
+      spriteID: 4b191ec4ff10eeb70800000000000000
+      internalID: 8930077307140411828
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_36
+      rect:
+        serializedVersion: 2
+        x: 304
+        y: 320
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: -1
+      bones: []
+      spriteID: 5579edb562f06cde0800000000000000
+      internalID: -1313345583907432619
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_37
+      rect:
+        serializedVersion: 2
+        x: 320
+        y: 320
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: -1
+      bones: []
+      spriteID: 5f9ecd832021b79e0800000000000000
+      internalID: -1622683439983695371
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_wall_L_2
+      rect:
+        serializedVersion: 2
+        x: 32
+        y: 304
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: -1
+      bones: []
+      spriteID: 7f6692609fcc340b0800000000000000
+      internalID: -5745523329672321289
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_floor_4
+      rect:
+        serializedVersion: 2
+        x: 49
+        y: 304
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: -1
+      bones: []
+      spriteID: 185880f0981435950800000000000000
+      internalID: 6436560349361112449
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_floor_5
+      rect:
+        serializedVersion: 2
+        x: 64
+        y: 304
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: -1
+      bones: []
+      spriteID: 1fc9d3606165857e0800000000000000
+      internalID: -1776575400403690255
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_floor_6
+      rect:
+        serializedVersion: 2
+        x: 80
+        y: 304
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 2bf1ece069a50ac41a651a48fa5a5276
+      internalID: 651937478
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_wall_R_2
+      rect:
+        serializedVersion: 2
+        x: 96
+        y: 304
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 20a16ea6c33962247a3c3bc911bc7b77
+      internalID: -2082485468
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_43
+      rect:
+        serializedVersion: 2
+        x: 112
+        y: 304
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 9de101d262f10d446bf0f279ae66edf3
+      internalID: -501926953
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_44
+      rect:
+        serializedVersion: 2
+        x: 128
+        y: 304
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 13c25a29cba2fc349bac03add9b364ea
+      internalID: -996125319
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_45
+      rect:
+        serializedVersion: 2
+        x: 144
+        y: 304
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 6c47dcf041695e049a3bd8ad087bfb8d
+      internalID: 921494719
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_46
+      rect:
+        serializedVersion: 2
+        x: 160
+        y: 304
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: fe6b4d498e6eba04a822b56b62b738be
+      internalID: 1450973863
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_47
+      rect:
+        serializedVersion: 2
+        x: 176
+        y: 304
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: dfc405c0a1c9eb344b4ac018c27b4853
+      internalID: -1150932837
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_48
+      rect:
+        serializedVersion: 2
+        x: 192
+        y: 304
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 1375b342942b63e44b2b1ce28b4b9d88
+      internalID: -1840172824
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_49
+      rect:
+        serializedVersion: 2
+        x: 208
+        y: 304
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: f4a6af11b9eb0894881662c9110054bf
+      internalID: -544114975
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_50
+      rect:
+        serializedVersion: 2
+        x: 224
+        y: 304
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 398abd4e921ff20478e2ca45b3abaabe
+      internalID: 9758070
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_51
+      rect:
+        serializedVersion: 2
+        x: 240
+        y: 304
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: ecc68973e3415184d830d3c7e6974e7d
+      internalID: -1598476529
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_52
+      rect:
+        serializedVersion: 2
+        x: 256
+        y: 304
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 3d3a9e600fa0e664c81d0f8fcb0ac17f
+      internalID: -30169065
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_53
+      rect:
+        serializedVersion: 2
+        x: 272
+        y: 304
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: fea4f93a6b510d848a70da420ec98a46
+      internalID: -1776122235
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_54
+      rect:
+        serializedVersion: 2
+        x: 288
+        y: 304
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 5264b81e90c945c4f95ccebdf5306be6
+      internalID: 163777844
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_55
+      rect:
+        serializedVersion: 2
+        x: 304
+        y: 304
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 865be29fe70fd2042b0ffa4f362be08f
+      internalID: -2139268609
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_56
+      rect:
+        serializedVersion: 2
+        x: 320
+        y: 304
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: fe1010462141e1d4097d50acbffc3df3
+      internalID: -187039118
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_wall_L_3
+      rect:
+        serializedVersion: 2
+        x: 32
+        y: 288
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: e8ef0637307937c4ba335da6fe4b93c6
+      internalID: -197391811
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_floor_7
+      rect:
+        serializedVersion: 2
+        x: 48
+        y: 288
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 84d7dbe89dbf0d54a821df2885ef8bda
+      internalID: 214147475
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_floor_8
+      rect:
+        serializedVersion: 2
+        x: 64
+        y: 288
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 811c296d2b5649447bf0d6b8b40f30d3
+      internalID: 906673914
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_floor_9
+      rect:
+        serializedVersion: 2
+        x: 80
+        y: 288
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 822f934f421c2064e99e778d069ee71e
+      internalID: 1289658970
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_wall_R_3
+      rect:
+        serializedVersion: 2
+        x: 96
+        y: 288
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 799e888439876924eafab409c92dfc42
+      internalID: 1748794082
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_62
+      rect:
+        serializedVersion: 2
+        x: 112
+        y: 288
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 0b0bbfca6d7200f49bc95e35593273ba
+      internalID: -444909442
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_63
+      rect:
+        serializedVersion: 2
+        x: 128
+        y: 288
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 0ffe15fedf5d094409d2cad36d3df8a1
+      internalID: 906657395
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_64
+      rect:
+        serializedVersion: 2
+        x: 144
+        y: 288
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: af7605a59a204894990c30dad1531fb6
+      internalID: -137074541
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_65
+      rect:
+        serializedVersion: 2
+        x: 160
+        y: 288
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: dedc6a28537fee645a780da3b236ae8b
+      internalID: -996757570
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_66
+      rect:
+        serializedVersion: 2
+        x: 224
+        y: 288
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 8ce3401c9cf705542a1ddb9ac30ac8f1
+      internalID: -1442913089
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_67
+      rect:
+        serializedVersion: 2
+        x: 240
+        y: 288
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 8b434656471ce5347a8cef6fdf48dcb0
+      internalID: 724207778
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_68
+      rect:
+        serializedVersion: 2
+        x: 256
+        y: 288
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 21c15615cf573e448910a69c1ac7e4d7
+      internalID: 1347921007
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_69
+      rect:
+        serializedVersion: 2
+        x: 272
+        y: 288
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: f4647a4806f1a954e84186f0110a8bc9
+      internalID: 498288484
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_70
+      rect:
+        serializedVersion: 2
+        x: 288
+        y: 288
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: eaf50986111e51d4f947b96388940c0f
+      internalID: -1282703684
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_71
+      rect:
+        serializedVersion: 2
+        x: 304
+        y: 288
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: c074dc141f518f24dad53f3f0d421073
+      internalID: 176819844
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_72
+      rect:
+        serializedVersion: 2
+        x: 320
+        y: 288
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 4c090ce5981618c449f6e0c54abf878a
+      internalID: 772834509
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_73
+      rect:
+        serializedVersion: 2
+        x: 336
+        y: 288
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 33d92571d4b1eb34eb9c5ae7f9e17f3b
+      internalID: 1387744675
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_wall_BL
+      rect:
+        serializedVersion: 2
+        x: 32
+        y: 272
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 08a22e30e6374e24c8b07285a0a36f3c
+      internalID: 1714272216
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_wall_B_1
+      rect:
+        serializedVersion: 2
+        x: 48
+        y: 272
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 1910a4a66fcd6ab459d81b270487a404
+      internalID: -1423139918
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_wall_B_2
+      rect:
+        serializedVersion: 2
+        x: 64
+        y: 272
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 264e41b03cc9b9f45801e21c71446404
+      internalID: 1428764279
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_wall_B_3
+      rect:
+        serializedVersion: 2
+        x: 80
+        y: 272
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 4702e936b4f7b3743b4c4dd1d1b82530
+      internalID: 1592102541
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_wall_BR
+      rect:
+        serializedVersion: 2
+        x: 96
+        y: 272
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: adcfd27e09b2dd34886924d980af1e7d
+      internalID: -1811780126
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_79
+      rect:
+        serializedVersion: 2
+        x: 112
+        y: 272
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: abdcf0ab00e690642909b9b9893afa41
+      internalID: 1862690016
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_80
+      rect:
+        serializedVersion: 2
+        x: 128
+        y: 272
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 8d90d8237b7ad8640b6e1f1c2352ec67
+      internalID: -2085866971
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_81
+      rect:
+        serializedVersion: 2
+        x: 160
+        y: 272
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: febd1a8996561224fa35123837be8019
+      internalID: -1774481670
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_82
+      rect:
+        serializedVersion: 2
+        x: 176
+        y: 272
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: a9473f6efb467ba49a932bb88baa4498
+      internalID: 1805227160
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_83
+      rect:
+        serializedVersion: 2
+        x: 192
+        y: 272
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 91481e616c36dcd488c97e21b51e3631
+      internalID: -1011525448
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_84
+      rect:
+        serializedVersion: 2
+        x: 224
+        y: 272
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 3f9665c048af1cb478a821c572808f20
+      internalID: 1492164439
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_85
+      rect:
+        serializedVersion: 2
+        x: 240
+        y: 272
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: bde7f6410c0343e4c8c326ba2bb3b946
+      internalID: -1887648159
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_86
+      rect:
+        serializedVersion: 2
+        x: 256
+        y: 272
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 010cd97e619623b44b3c3a9c01310787
+      internalID: -1157405598
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_87
+      rect:
+        serializedVersion: 2
+        x: 272
+        y: 272
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 5b2730437cf57ad45bd72152247ee93c
+      internalID: 1535678733
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_88
+      rect:
+        serializedVersion: 2
+        x: 288
+        y: 272
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 98b3a32877fdfc84baf196adb0df525b
+      internalID: -1495142538
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_89
+      rect:
+        serializedVersion: 2
+        x: 304
+        y: 272
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 57856116f4c424d4a927fa93afd15422
+      internalID: 2015644534
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_90
+      rect:
+        serializedVersion: 2
+        x: 320
+        y: 272
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: a49b8389365b611478dabb84c5155c2c
+      internalID: 782685822
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_91
+      rect:
+        serializedVersion: 2
+        x: 336
+        y: 272
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 26eae8969a34177499209374c07ab6c3
+      internalID: -1501713318
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_92
+      rect:
+        serializedVersion: 2
+        x: 32
+        y: 256
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 726d0b3efb050f348ba0071b596f77dc
+      internalID: -774946231
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_93
+      rect:
+        serializedVersion: 2
+        x: 48
+        y: 256
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 2c782256b0692e84082bfcd9da26a3b5
+      internalID: -675411756
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_94
+      rect:
+        serializedVersion: 2
+        x: 64
+        y: 256
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 3917d101d7638d54694d31bea74cde48
+      internalID: -152878594
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_95
+      rect:
+        serializedVersion: 2
+        x: 80
+        y: 256
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 3d1cfe3afc398f943aa8d59f759cc069
+      internalID: 2009772328
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_96
+      rect:
+        serializedVersion: 2
+        x: 96
+        y: 256
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: ee68b7abd85a9e744ad643d150aea064
+      internalID: -1304821190
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_97
+      rect:
+        serializedVersion: 2
+        x: 112
+        y: 256
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 56415608f78d83546b93984512586df6
+      internalID: -1823331311
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_98
+      rect:
+        serializedVersion: 2
+        x: 128
+        y: 256
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: fd00fff98fde3604e8eee36f8016c546
+      internalID: -1748796891
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_99
+      rect:
+        serializedVersion: 2
+        x: 144
+        y: 256
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: f5a5496230b226743a4b82b37e76561d
+      internalID: -207780752
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_100
+      rect:
+        serializedVersion: 2
+        x: 160
+        y: 256
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: b9bca8287cd830d4699814a63102aea6
+      internalID: -883805371
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_101
+      rect:
+        serializedVersion: 2
+        x: 176
+        y: 256
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 78c444bb658630341a980d9703da91b6
+      internalID: 244552664
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_102
+      rect:
+        serializedVersion: 2
+        x: 192
+        y: 256
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 1417a8c653d7bf24f92305012ab660c2
+      internalID: -1734640775
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_103
+      rect:
+        serializedVersion: 2
+        x: 208
+        y: 256
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: c48ea261097212c4c9ed8cb4ced736f1
+      internalID: -1277602388
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_104
+      rect:
+        serializedVersion: 2
+        x: 224
+        y: 256
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 4d8f81b2eea38ed418418c1447600dcc
+      internalID: 188354995
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_105
+      rect:
+        serializedVersion: 2
+        x: 240
+        y: 256
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 71be8c6857f426c4ebe5f544fb6697ef
+      internalID: 562586919
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_106
+      rect:
+        serializedVersion: 2
+        x: 256
+        y: 256
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 89607ad61b74d2f4eb4c7930216f7d45
+      internalID: 689949021
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_107
+      rect:
+        serializedVersion: 2
+        x: 272
+        y: 256
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 58d39d70273b5c343b548c76a06ad41d
+      internalID: -681444770
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_108
+      rect:
+        serializedVersion: 2
+        x: 288
+        y: 256
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 84f6758c2b7900d468d5180b3008ef1e
+      internalID: 995224775
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_109
+      rect:
+        serializedVersion: 2
+        x: 304
+        y: 256
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 5998a6c7da3d7934fa77b8036d548206
+      internalID: 544888465
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_110
+      rect:
+        serializedVersion: 2
+        x: 320
+        y: 256
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: ab8aeb2724c8a5d47b7387bc9f43dbbe
+      internalID: -145425054
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_111
+      rect:
+        serializedVersion: 2
+        x: 336
+        y: 256
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: cf3800a93d3d4a04491d3af2aa3025fd
+      internalID: -1801129999
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_112
+      rect:
+        serializedVersion: 2
+        x: 32
+        y: 240
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 0c240abd113b2734bab91eaa1dbfe453
+      internalID: 206309103
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_113
+      rect:
+        serializedVersion: 2
+        x: 48
+        y: 240
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 275843b87c472034b977c6ae9200ec10
+      internalID: -1361981917
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_114
+      rect:
+        serializedVersion: 2
+        x: 64
+        y: 240
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: f684a2381c38af04f8a4db99e82a2bb3
+      internalID: 1640562815
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_115
+      rect:
+        serializedVersion: 2
+        x: 80
+        y: 240
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: f3ffc47c848000e429791f27b072760f
+      internalID: -16982718
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_116
+      rect:
+        serializedVersion: 2
+        x: 112
+        y: 240
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 4b075e2896146954d972617892ad7dad
+      internalID: 181907021
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_117
+      rect:
+        serializedVersion: 2
+        x: 128
+        y: 240
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: daf7d29b96c8ca644bf9b5cc4657901f
+      internalID: 1852292960
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_118
+      rect:
+        serializedVersion: 2
+        x: 144
+        y: 240
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: cb0b7604bb94a2741a4a9da4f2827222
+      internalID: -44336691
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_119
+      rect:
+        serializedVersion: 2
+        x: 160
+        y: 240
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 1b5ca1fd8e08b334289b6cb03aa90e7d
+      internalID: 745702484
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_120
+      rect:
+        serializedVersion: 2
+        x: 176
+        y: 240
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: d04371de59936af42adcde0c35eda8f1
+      internalID: -207520251
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_121
+      rect:
+        serializedVersion: 2
+        x: 192
+        y: 240
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 3054b1b99b50ab64093b682e795ede36
+      internalID: 1339850377
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_122
+      rect:
+        serializedVersion: 2
+        x: 224
+        y: 240
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: e49e7b1952ede5841a55fcd497e29089
+      internalID: 452557287
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_123
+      rect:
+        serializedVersion: 2
+        x: 240
+        y: 240
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: c3700b187e1da0945b1b854d8600ff11
+      internalID: -111345030
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_124
+      rect:
+        serializedVersion: 2
+        x: 256
+        y: 240
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: d8633b877622d044fb7c4acdcbee3a5d
+      internalID: -2130388215
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_125
+      rect:
+        serializedVersion: 2
+        x: 272
+        y: 240
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: fcc6e950c7f356e4a8c32c1519993c40
+      internalID: 594816052
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_126
+      rect:
+        serializedVersion: 2
+        x: 288
+        y: 240
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 32f611aae97b8f04ea89560bd5f8a7a3
+      internalID: 1849075698
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_127
+      rect:
+        serializedVersion: 2
+        x: 304
+        y: 240
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 17523a555ea47494eab699a1e4b7eaf9
+      internalID: -363761904
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_128
+      rect:
+        serializedVersion: 2
+        x: 320
+        y: 240
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 37b84c5ee18b7a24b894f4c0c50daafb
+      internalID: -198563334
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_129
+      rect:
+        serializedVersion: 2
+        x: 336
+        y: 240
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 050f7a7150b0b5045b6b0c9c8556cefe
+      internalID: -701766260
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_130
+      rect:
+        serializedVersion: 2
+        x: 32
+        y: 224
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 2f56a3b840687b34480ee559a62403d7
+      internalID: 2004612256
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_131
+      rect:
+        serializedVersion: 2
+        x: 48
+        y: 224
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 971ece2e9fa92a64eab690bb49802e0e
+      internalID: 1686393486
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_132
+      rect:
+        serializedVersion: 2
+        x: 64
+        y: 224
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: efa1e078a0fe0654b8114319408f8ff7
+      internalID: 1166360719
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_133
+      rect:
+        serializedVersion: 2
+        x: 80
+        y: 224
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 57ecc09d8cdca824db6c20f48dfd0e6e
+      internalID: 1891489184
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_134
+      rect:
+        serializedVersion: 2
+        x: 128
+        y: 224
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 6c1cd8eb8f75f284a820c3742823aeb1
+      internalID: 747794150
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_135
+      rect:
+        serializedVersion: 2
+        x: 144
+        y: 224
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 0c2ed47c023481a40a5e0f8f52d23366
+      internalID: 2110636773
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_136
+      rect:
+        serializedVersion: 2
+        x: 160
+        y: 224
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 23c7abe9fcedf41458fd88d8e6534312
+      internalID: 1002038490
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_137
+      rect:
+        serializedVersion: 2
+        x: 176
+        y: 224
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 94a09aa3c054cc14dbf6c071e73b217d
+      internalID: -745815930
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_138
+      rect:
+        serializedVersion: 2
+        x: 192
+        y: 224
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: ccf5ecc91e703d7448674e8588b2e51a
+      internalID: -58287631
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_139
+      rect:
+        serializedVersion: 2
+        x: 240
+        y: 224
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 02b83b1ee33ae264b91b8e106691cecf
+      internalID: 321176863
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_140
+      rect:
+        serializedVersion: 2
+        x: 256
+        y: 224
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: b352408847394344e96cb3fe91173dbe
+      internalID: -174122044
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_141
+      rect:
+        serializedVersion: 2
+        x: 272
+        y: 224
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 304cfd87acbe9944aa9b9830f5ec8f9c
+      internalID: -1700098152
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_142
+      rect:
+        serializedVersion: 2
+        x: 32
+        y: 208
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 1df68c0f7c996524193e6dc977458a07
+      internalID: -658489776
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_143
+      rect:
+        serializedVersion: 2
+        x: 48
+        y: 208
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: e6b26ddbc41465b45a617e3d173d9f0c
+      internalID: -5712710
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_144
+      rect:
+        serializedVersion: 2
+        x: 64
+        y: 208
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: c02788f1bc386ed428c48a70e5ee6434
+      internalID: 750935435
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_145
+      rect:
+        serializedVersion: 2
+        x: 80
+        y: 208
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 446dfb9da1cf606428b0f3be4725a92f
+      internalID: 1443433328
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_146
+      rect:
+        serializedVersion: 2
+        x: 96
+        y: 208
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 2cb49f459bdb7314a92cb040262a845c
+      internalID: -261132389
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_147
+      rect:
+        serializedVersion: 2
+        x: 112
+        y: 208
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 4da1502e7deac9648ba93fd1fb8c0161
+      internalID: -1095259972
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_148
+      rect:
+        serializedVersion: 2
+        x: 128
+        y: 208
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: ea0262d092423974a81a1680843b158d
+      internalID: 1019649133
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_149
+      rect:
+        serializedVersion: 2
+        x: 144
+        y: 208
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 3b1cb1095a003964fafc282382866829
+      internalID: -2080683703
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_150
+      rect:
+        serializedVersion: 2
+        x: 160
+        y: 208
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 1209e0387ff78e2479daaf1d7082415d
+      internalID: 2036419910
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_151
+      rect:
+        serializedVersion: 2
+        x: 176
+        y: 208
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 5a8b9ad875715454faa9d6bba0d96436
+      internalID: -332710441
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_152
+      rect:
+        serializedVersion: 2
+        x: 192
+        y: 208
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: abecf5edcf91e2545beb22cab448be26
+      internalID: 745503852
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_153
+      rect:
+        serializedVersion: 2
+        x: 208
+        y: 208
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 3afb922db89ba5a4e85287e5f707c0f1
+      internalID: 723078485
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_154
+      rect:
+        serializedVersion: 2
+        x: 224
+        y: 208
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 2481022e295d19243a6dd0f83634d634
+      internalID: -859255316
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_155
+      rect:
+        serializedVersion: 2
+        x: 240
+        y: 208
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: bfadd62e8f1a4f34fac27c6af55fd8ce
+      internalID: 481977339
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_156
+      rect:
+        serializedVersion: 2
+        x: 256
+        y: 208
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 7119d93a9fdd1504ab1e0c6bc2911395
+      internalID: 1687059836
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_157
+      rect:
+        serializedVersion: 2
+        x: 272
+        y: 208
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: a3c155cd92aa7754d82704f999ee3fbb
+      internalID: -1700683405
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_158
+      rect:
+        serializedVersion: 2
+        x: 288
+        y: 208
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 5f29e4b9e5c8c1c428a97cfc185a32dc
+      internalID: -924293268
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_159
+      rect:
+        serializedVersion: 2
+        x: 304
+        y: 208
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 404d0bb5631d2e04abfae1583c1c15d7
+      internalID: -964124445
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_160
+      rect:
+        serializedVersion: 2
+        x: 32
+        y: 192
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 2ac1ed56ab1dd9749af252a5f7a6cc42
+      internalID: -210926358
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_161
+      rect:
+        serializedVersion: 2
+        x: 48
+        y: 192
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 21fc282f0237bd84fb8c9ba8daf93438
+      internalID: -1894967820
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_162
+      rect:
+        serializedVersion: 2
+        x: 64
+        y: 192
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 2711423b9a4ea5349a4b4886cb871f24
+      internalID: 1717608938
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_163
+      rect:
+        serializedVersion: 2
+        x: 80
+        y: 192
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 14f2d658bcabe304fb312c5bab0615c7
+      internalID: 1710215687
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_164
+      rect:
+        serializedVersion: 2
+        x: 96
+        y: 192
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 6e63397c7f920954eb97bd8bccb9db87
+      internalID: -1581835725
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_165
+      rect:
+        serializedVersion: 2
+        x: 112
+        y: 192
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 8b1942f2cb76c494e9a60bc4818235b9
+      internalID: 1870059418
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_166
+      rect:
+        serializedVersion: 2
+        x: 128
+        y: 192
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 56286d32523ebfb4aaa4cb530553987e
+      internalID: 1302605014
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_167
+      rect:
+        serializedVersion: 2
+        x: 144
+        y: 192
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: cef266cdc767a5d45acab454fe592679
+      internalID: -5643122
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_168
+      rect:
+        serializedVersion: 2
+        x: 160
+        y: 192
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 4114482498ed35d4589343be734b37e4
+      internalID: -774452981
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_169
+      rect:
+        serializedVersion: 2
+        x: 176
+        y: 192
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: a68f0d88c3d05d3469a4d93252e49b03
+      internalID: 928005685
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_170
+      rect:
+        serializedVersion: 2
+        x: 192
+        y: 192
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: aa167dbde27a6094f8308a03a1a2ddfb
+      internalID: -2009108243
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_171
+      rect:
+        serializedVersion: 2
+        x: 208
+        y: 192
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 4118d5bbf9b50f74095818b9196178e5
+      internalID: -334417518
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_172
+      rect:
+        serializedVersion: 2
+        x: 224
+        y: 192
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 795043f49c0a5f74d9632b0e50a13897
+      internalID: 1877778238
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_173
+      rect:
+        serializedVersion: 2
+        x: 240
+        y: 192
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 829d186ff50d16b448b53014bbd9e658
+      internalID: 524978072
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_174
+      rect:
+        serializedVersion: 2
+        x: 256
+        y: 192
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 69d79f4cf57db9345b15838b7c90d5b2
+      internalID: -1756581537
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_175
+      rect:
+        serializedVersion: 2
+        x: 272
+        y: 192
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 706944d4137e30b4eb7117b362b1c3c6
+      internalID: -1249158262
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_176
+      rect:
+        serializedVersion: 2
+        x: 288
+        y: 192
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: cd6efb743993f7441869944e772c1833
+      internalID: 1117516413
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_177
+      rect:
+        serializedVersion: 2
+        x: 304
+        y: 192
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 6c4e1985b033c544393ec36376454771
+      internalID: 488125261
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_178
+      rect:
+        serializedVersion: 2
+        x: 32
+        y: 176
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: a666183986345b94dbed131ac5184e78
+      internalID: -1529058577
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_179
+      rect:
+        serializedVersion: 2
+        x: 48
+        y: 176
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 6576ce34f998a1e4b87c7949e8c2eb8c
+      internalID: 2107933312
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_180
+      rect:
+        serializedVersion: 2
+        x: 64
+        y: 176
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 7bdbb721539a3874183988539cb3317b
+      internalID: 1023625074
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_181
+      rect:
+        serializedVersion: 2
+        x: 80
+        y: 176
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: ec5326464c2dffb469878a494e2d9137
+      internalID: 1899199752
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_182
+      rect:
+        serializedVersion: 2
+        x: 96
+        y: 176
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 6328c8378204ec340a3d955465312767
+      internalID: 1091422576
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_183
+      rect:
+        serializedVersion: 2
+        x: 112
+        y: 176
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 66a319aaa4fb90f4fb01cd8632e25a12
+      internalID: -68701940
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_184
+      rect:
+        serializedVersion: 2
+        x: 128
+        y: 176
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: d2dd555d94c415c49aebd28b818b708b
+      internalID: 1415212429
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_185
+      rect:
+        serializedVersion: 2
+        x: 144
+        y: 176
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 510ba4f62fb739f4ebe91f41455af8c5
+      internalID: -1287466191
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_186
+      rect:
+        serializedVersion: 2
+        x: 176
+        y: 176
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: c5b002ca5675a254f9bdcc7ea747f47c
+      internalID: 1300434776
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_187
+      rect:
+        serializedVersion: 2
+        x: 192
+        y: 176
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: bce4abacd84230b4caf55ec6aadd3ddd
+      internalID: -165841964
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_188
+      rect:
+        serializedVersion: 2
+        x: 208
+        y: 176
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 4ebaeb851ab2d3d44b8ffa7b7ba3bc63
+      internalID: 282188278
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_189
+      rect:
+        serializedVersion: 2
+        x: 240
+        y: 176
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 18c4cb9eb67d1f74592ba541928aaf72
+      internalID: -245590826
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_190
+      rect:
+        serializedVersion: 2
+        x: 256
+        y: 176
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 48dfbb12ca237d54fb8fb6b7796ddec5
+      internalID: -589688884
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_191
+      rect:
+        serializedVersion: 2
+        x: 272
+        y: 176
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: bb11ab37447e1b6458ce121da701caef
+      internalID: 500805448
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_192
+      rect:
+        serializedVersion: 2
+        x: 288
+        y: 176
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 9746456421347ca42ad6b4ab17f65789
+      internalID: 1021598628
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_193
+      rect:
+        serializedVersion: 2
+        x: 304
+        y: 176
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 1357e7c1d3eafce418dae414949ad5f4
+      internalID: -52976764
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_194
+      rect:
+        serializedVersion: 2
+        x: 32
+        y: 160
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: e056efda117636940ad4ce43e3e3e825
+      internalID: -565475039
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_195
+      rect:
+        serializedVersion: 2
+        x: 48
+        y: 160
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: aefb7fece55fa594c8dbda351d2e4176
+      internalID: -163037999
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_196
+      rect:
+        serializedVersion: 2
+        x: 64
+        y: 160
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 53a4dc18e581919469e4b5ac08a18e10
+      internalID: -60457935
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_197
+      rect:
+        serializedVersion: 2
+        x: 80
+        y: 160
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 948202ef9298b9848bfb1e6ee30ff64a
+      internalID: 1334390010
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_198
+      rect:
+        serializedVersion: 2
+        x: 96
+        y: 160
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: d25b02c626327ea4e9d5615634a0cceb
+      internalID: -2059409602
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_199
+      rect:
+        serializedVersion: 2
+        x: 112
+        y: 160
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 48a2d2e825fcdba44a86ede82ae10e71
+      internalID: 139405856
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_200
+      rect:
+        serializedVersion: 2
+        x: 128
+        y: 160
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: eab0afc0db31f0d4c8ca4ffb6146af26
+      internalID: -642881135
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_201
+      rect:
+        serializedVersion: 2
+        x: 144
+        y: 160
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: a627061cff038464f9f49fbd37db87e0
+      internalID: -689152035
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_202
+      rect:
+        serializedVersion: 2
+        x: 160
+        y: 160
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 3a6f11e544574e64b89e19e8709f1ca6
+      internalID: 1547222203
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_203
+      rect:
+        serializedVersion: 2
+        x: 176
+        y: 160
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: cb03dd819e638ef4a83d1ef6f65c9a79
+      internalID: 1823399360
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_204
+      rect:
+        serializedVersion: 2
+        x: 192
+        y: 160
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: d891e5fbd5f7b374e9efe48ad3d5846a
+      internalID: 1179978383
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_205
+      rect:
+        serializedVersion: 2
+        x: 32
+        y: 144
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 6ef46c01382b91041bc6162b1ace1ecc
+      internalID: 831455417
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_206
+      rect:
+        serializedVersion: 2
+        x: 48
+        y: 144
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: e1e9951135ec758479cc4a92bfc36d17
+      internalID: -638148619
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_207
+      rect:
+        serializedVersion: 2
+        x: 64
+        y: 144
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: fc73a6f821c073b4991593817b4512b0
+      internalID: 655010371
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_208
+      rect:
+        serializedVersion: 2
+        x: 80
+        y: 144
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 94aad8125cced574bad856d61a23ecfb
+      internalID: -1126145794
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_209
+      rect:
+        serializedVersion: 2
+        x: 128
+        y: 144
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 096d83e35660f434d83acfb59889fdf0
+      internalID: 1608447237
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_210
+      rect:
+        serializedVersion: 2
+        x: 144
+        y: 144
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 803cb97ffe49a8045a5eed5a74352efc
+      internalID: 1135906209
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_211
+      rect:
+        serializedVersion: 2
+        x: 160
+        y: 144
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 90dc249bb32615d47b4805d1aa0ae651
+      internalID: -1565661465
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_212
+      rect:
+        serializedVersion: 2
+        x: 176
+        y: 144
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: e4d5512a31d215d46bd0653388e64107
+      internalID: -1622398301
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_213
+      rect:
+        serializedVersion: 2
+        x: 192
+        y: 144
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: e5b8038aac0fae040a4581e56d71460c
+      internalID: 636865754
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_214
+      rect:
+        serializedVersion: 2
+        x: 32
+        y: 128
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 59da4dbb31455844cab24b5608bcdf2e
+      internalID: -2018447938
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_215
+      rect:
+        serializedVersion: 2
+        x: 48
+        y: 128
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 0d3908482dbaee54e9bb1fa535162928
+      internalID: -1716158553
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_216
+      rect:
+        serializedVersion: 2
+        x: 64
+        y: 128
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: b881b2732df065c4ab5ce5d6c5b980b3
+      internalID: 371263355
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_217
+      rect:
+        serializedVersion: 2
+        x: 80
+        y: 128
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 7d799e18c17ba8044aa9cbf9ac8ed97e
+      internalID: 1417387305
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_218
+      rect:
+        serializedVersion: 2
+        x: 32
+        y: 112
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 45b86b578fb716349a16690cb39ddea3
+      internalID: 1948390490
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_219
+      rect:
+        serializedVersion: 2
+        x: 48
+        y: 112
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 1a4a83fdb2abbdb4c9a3f3ba36ca1ff9
+      internalID: -992054455
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_220
+      rect:
+        serializedVersion: 2
+        x: 64
+        y: 112
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 0c466e67b0fbb04468d0a679d3645a12
+      internalID: 890023944
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_221
+      rect:
+        serializedVersion: 2
+        x: 80
+        y: 112
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 299d611c38cdee441bfaf87878e69c8a
+      internalID: -1549692397
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_222
+      rect:
+        serializedVersion: 2
+        x: 96
+        y: 112
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 5585334c3c37e044e812c1ab576ca52c
+      internalID: -1700031647
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_223
+      rect:
+        serializedVersion: 2
+        x: 112
+        y: 112
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: b5aec22a9da22fe479668adcf1a26fdf
+      internalID: 1046953306
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_224
+      rect:
+        serializedVersion: 2
+        x: 128
+        y: 112
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 6bce89e5c36252245a6f50840b9fc9ae
+      internalID: -1784639357
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_225
+      rect:
+        serializedVersion: 2
+        x: 144
+        y: 112
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 4cd3fda368da7bb43aba002e3cd710af
+      internalID: 1389046038
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_226
+      rect:
+        serializedVersion: 2
+        x: 32
+        y: 96
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 192a6f48f9848644388be9aa983e1269
+      internalID: -110380276
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_227
+      rect:
+        serializedVersion: 2
+        x: 48
+        y: 96
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 595216a0a4342a143ac84d7e85f75b44
+      internalID: 1020431572
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_228
+      rect:
+        serializedVersion: 2
+        x: 64
+        y: 96
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 70f49f5c920c7604cb34307d46a5caa0
+      internalID: 1540955674
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_229
+      rect:
+        serializedVersion: 2
+        x: 80
+        y: 96
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: cf995ae123f709244834f37934f4b3a4
+      internalID: -594615623
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_230
+      rect:
+        serializedVersion: 2
+        x: 96
+        y: 96
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 6ff996b2bf78c2144819cacaf857b6ec
+      internalID: 420088846
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_231
+      rect:
+        serializedVersion: 2
+        x: 112
+        y: 96
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 95d85313659335448a24f55496e3c15f
+      internalID: -227324294
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_232
+      rect:
+        serializedVersion: 2
+        x: 128
+        y: 96
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 10f01e198aa88834cb87415b364480a2
+      internalID: -1747352102
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_233
+      rect:
+        serializedVersion: 2
+        x: 144
+        y: 96
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 71ddfa6ffaa99804c8d4397d7932c03c
+      internalID: -438795825
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_234
+      rect:
+        serializedVersion: 2
+        x: 32
+        y: 80
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: e9a9563714abd594e8eb281aa7fb614c
+      internalID: 2064561003
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_235
+      rect:
+        serializedVersion: 2
+        x: 48
+        y: 80
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 7c774a1299e0c41459a35f95dfa32a74
+      internalID: -891194050
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_236
+      rect:
+        serializedVersion: 2
+        x: 64
+        y: 80
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 241bae54aa4cd0e4ebadd2f383431de6
+      internalID: 1325873422
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_237
+      rect:
+        serializedVersion: 2
+        x: 80
+        y: 80
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 18a79f9cd3fd09e4190c63173726e9f6
+      internalID: -1572460130
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_238
+      rect:
+        serializedVersion: 2
+        x: 96
+        y: 80
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: b8a6f7a2746ecf947a63e6e6868f014f
+      internalID: -1711314773
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_239
+      rect:
+        serializedVersion: 2
+        x: 112
+        y: 80
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 0de87e512b1baaa40a0ab1e658a1b83e
+      internalID: 713574359
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_240
+      rect:
+        serializedVersion: 2
+        x: 128
+        y: 80
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: b2fb60753c8fd794cb6ec7343719973c
+      internalID: -322898253
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_241
+      rect:
+        serializedVersion: 2
+        x: 144
+        y: 80
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 2111c5f86387aaa4a948b628c9846e6d
+      internalID: -2121957470
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_242
+      rect:
+        serializedVersion: 2
+        x: 32
+        y: 64
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 03dbccb1d497e73488c6a4f12a4bc3ea
+      internalID: 1011806975
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_243
+      rect:
+        serializedVersion: 2
+        x: 48
+        y: 64
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: dcad42ad54cdcec49bcb83355323ee0a
+      internalID: 2075071220
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_244
+      rect:
+        serializedVersion: 2
+        x: 64
+        y: 64
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: c3ade3288018c7c428b49556ab5c74b6
+      internalID: 957595780
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_245
+      rect:
+        serializedVersion: 2
+        x: 80
+        y: 64
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: dd41dfaa5172b6045834c53d0cb3228f
+      internalID: 1175077797
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_246
+      rect:
+        serializedVersion: 2
+        x: 96
+        y: 64
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 1804442a28e49984693c510a27530fab
+      internalID: -1760018781
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_247
+      rect:
+        serializedVersion: 2
+        x: 112
+        y: 64
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 60e174bffda31d446ab086f3c84e39f9
+      internalID: 440890419
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_248
+      rect:
+        serializedVersion: 2
+        x: 128
+        y: 64
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 80fe9834cba1b094db022b7b63278bd3
+      internalID: 1391735443
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_249
+      rect:
+        serializedVersion: 2
+        x: 144
+        y: 64
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: ef104bf1d1abda144a8b6dcf8eec78f1
+      internalID: 1576852407
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_250
+      rect:
+        serializedVersion: 2
+        x: 32
+        y: 48
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 4069ce020b4f15b439d893a88db33509
+      internalID: -2956637
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_251
+      rect:
+        serializedVersion: 2
+        x: 48
+        y: 48
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 016f2d611d22d0c45a5798f468fe59f6
+      internalID: -1493589618
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_252
+      rect:
+        serializedVersion: 2
+        x: 64
+        y: 48
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 45fe9abbb7ed2014f835387c1df35177
+      internalID: 1337461725
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_253
+      rect:
+        serializedVersion: 2
+        x: 80
+        y: 48
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 553d8c3aad51d8a4b9c8918c54c88a0e
+      internalID: -814091839
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_254
+      rect:
+        serializedVersion: 2
+        x: 96
+        y: 48
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 0459c90a276caea408e468104543f6e9
+      internalID: -2047418154
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_255
+      rect:
+        serializedVersion: 2
+        x: 112
+        y: 48
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 083fcc213e03100448f2c0fd65b275fc
+      internalID: 977192689
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_256
+      rect:
+        serializedVersion: 2
+        x: 128
+        y: 48
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 7c7f0572cba4b07478ab0207de3aa893
+      internalID: -1388080607
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_257
+      rect:
+        serializedVersion: 2
+        x: 32
+        y: 32
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 8d7019247f466ac4099a26d11f0ed3f2
+      internalID: -1547354938
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_258
+      rect:
+        serializedVersion: 2
+        x: 48
+        y: 32
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: c6e16439ef1598247933e0e89f7eee4c
+      internalID: 314893776
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_259
+      rect:
+        serializedVersion: 2
+        x: 64
+        y: 32
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 26574473528bf6a4b8da9bbbd803c216
+      internalID: 2083007733
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_260
+      rect:
+        serializedVersion: 2
+        x: 80
+        y: 32
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 03ed5a57285bc02438e4ea1199dd59d0
+      internalID: 1694435372
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_261
+      rect:
+        serializedVersion: 2
+        x: 32
+        y: 16
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 9f3483b6802712e4ba314ddd1451746b
+      internalID: 1323104187
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_262
+      rect:
+        serializedVersion: 2
+        x: 48
+        y: 16
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 70b80b10c951aa142b3678d6aa32febe
+      internalID: 283408575
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_263
+      rect:
+        serializedVersion: 2
+        x: 64
+        y: 16
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 6947e5c7bb2a8b04ba49457b351ff06c
+      internalID: 823240977
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: dungeon_tiles_264
+      rect:
+        serializedVersion: 2
+        x: 80
+        y: 16
+        width: 16
+        height: 16
+      alignment: 0
+      pivot: {x: 0.5, y: 0.5}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      customData: 
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: b9d51b2f778d8bb4994bd387267208ae
+      internalID: 1127302335
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    outline: []
+    customData: 
+    physicsShape: []
+    bones: []
+    spriteID: 2805a81b0a83ebd468227da2f5137501
+    internalID: 0
+    vertices: []
+    indices: 
+    edges: []
+    weights: []
+    secondaryTextures: []
+    spriteCustomMetadata:
+      entries:
+      - key: SpriteEditor.SliceSettings
+        value: '{"sliceOnImport":false,"gridCellCount":{"x":1.0,"y":1.0},"gridSpriteSize":{"x":16.0,"y":16.0},"gridSpriteOffset":{"x":0.0,"y":0.0},"gridSpritePadding":{"x":0.0,"y":0.0},"pivot":{"x":0.5,"y":0.5},"pivotPixels":{"x":0.0,"y":0.0},"autoSlicingMethod":0,"spriteAlignment":0,"pivotUnitMode":0,"slicingType":1,"keepEmptyRects":false,"isAlternate":false}'
+    nameFileIdTable:
+      dungeon_floor_: -5624414064620405630
+      dungeon_floor_2: -2917350023695644350
+      dungeon_floor_3: 2108976282551558751
+      dungeon_floor_4: 6436560349361112449
+      dungeon_floor_5: -1776575400403690255
+      dungeon_floor_6: 651937478
+      dungeon_floor_7: 214147475
+      dungeon_floor_8: 906673914
+      dungeon_floor_9: 1289658970
+      dungeon_tiles_10: 4545685854912230521
+      dungeon_tiles_100: -883805371
+      dungeon_tiles_101: 244552664
+      dungeon_tiles_102: -1734640775
+      dungeon_tiles_103: -1277602388
+      dungeon_tiles_104: 188354995
+      dungeon_tiles_105: 562586919
+      dungeon_tiles_106: 689949021
+      dungeon_tiles_107: -681444770
+      dungeon_tiles_108: 995224775
+      dungeon_tiles_109: 544888465
+      dungeon_tiles_11: -3023061875091369103
+      dungeon_tiles_110: -145425054
+      dungeon_tiles_111: -1801129999
+      dungeon_tiles_112: 206309103
+      dungeon_tiles_113: -1361981917
+      dungeon_tiles_114: 1640562815
+      dungeon_tiles_115: -16982718
+      dungeon_tiles_116: 181907021
+      dungeon_tiles_117: 1852292960
+      dungeon_tiles_118: -44336691
+      dungeon_tiles_119: 745702484
+      dungeon_tiles_12: 6725311274419569171
+      dungeon_tiles_120: -207520251
+      dungeon_tiles_121: 1339850377
+      dungeon_tiles_122: 452557287
+      dungeon_tiles_123: -111345030
+      dungeon_tiles_124: -2130388215
+      dungeon_tiles_125: 594816052
+      dungeon_tiles_126: 1849075698
+      dungeon_tiles_127: -363761904
+      dungeon_tiles_128: -198563334
+      dungeon_tiles_129: -701766260
+      dungeon_tiles_13: 650693403263584314
+      dungeon_tiles_130: 2004612256
+      dungeon_tiles_131: 1686393486
+      dungeon_tiles_132: 1166360719
+      dungeon_tiles_133: 1891489184
+      dungeon_tiles_134: 747794150
+      dungeon_tiles_135: 2110636773
+      dungeon_tiles_136: 1002038490
+      dungeon_tiles_137: -745815930
+      dungeon_tiles_138: -58287631
+      dungeon_tiles_139: 321176863
+      dungeon_tiles_14: -5058788211806469395
+      dungeon_tiles_140: -174122044
+      dungeon_tiles_141: -1700098152
+      dungeon_tiles_142: -658489776
+      dungeon_tiles_143: -5712710
+      dungeon_tiles_144: 750935435
+      dungeon_tiles_145: 1443433328
+      dungeon_tiles_146: -261132389
+      dungeon_tiles_147: -1095259972
+      dungeon_tiles_148: 1019649133
+      dungeon_tiles_149: -2080683703
+      dungeon_tiles_15: -6093401293372397660
+      dungeon_tiles_150: 2036419910
+      dungeon_tiles_151: -332710441
+      dungeon_tiles_152: 745503852
+      dungeon_tiles_153: 723078485
+      dungeon_tiles_154: -859255316
+      dungeon_tiles_155: 481977339
+      dungeon_tiles_156: 1687059836
+      dungeon_tiles_157: -1700683405
+      dungeon_tiles_158: -924293268
+      dungeon_tiles_159: -964124445
+      dungeon_tiles_16: 1270211227817927925
+      dungeon_tiles_160: -210926358
+      dungeon_tiles_161: -1894967820
+      dungeon_tiles_162: 1717608938
+      dungeon_tiles_163: 1710215687
+      dungeon_tiles_164: -1581835725
+      dungeon_tiles_165: 1870059418
+      dungeon_tiles_166: 1302605014
+      dungeon_tiles_167: -5643122
+      dungeon_tiles_168: -774452981
+      dungeon_tiles_169: 928005685
+      dungeon_tiles_17: -8060929843619916789
+      dungeon_tiles_170: -2009108243
+      dungeon_tiles_171: -334417518
+      dungeon_tiles_172: 1877778238
+      dungeon_tiles_173: 524978072
+      dungeon_tiles_174: -1756581537
+      dungeon_tiles_175: -1249158262
+      dungeon_tiles_176: 1117516413
+      dungeon_tiles_177: 488125261
+      dungeon_tiles_178: -1529058577
+      dungeon_tiles_179: 2107933312
+      dungeon_tiles_18: 8960572527511170056
+      dungeon_tiles_180: 1023625074
+      dungeon_tiles_181: 1899199752
+      dungeon_tiles_182: 1091422576
+      dungeon_tiles_183: -68701940
+      dungeon_tiles_184: 1415212429
+      dungeon_tiles_185: -1287466191
+      dungeon_tiles_186: 1300434776
+      dungeon_tiles_187: -165841964
+      dungeon_tiles_188: 282188278
+      dungeon_tiles_189: -245590826
+      dungeon_tiles_190: -589688884
+      dungeon_tiles_191: 500805448
+      dungeon_tiles_192: 1021598628
+      dungeon_tiles_193: -52976764
+      dungeon_tiles_194: -565475039
+      dungeon_tiles_195: -163037999
+      dungeon_tiles_196: -60457935
+      dungeon_tiles_197: 1334390010
+      dungeon_tiles_198: -2059409602
+      dungeon_tiles_199: 139405856
+      dungeon_tiles_200: -642881135
+      dungeon_tiles_201: -689152035
+      dungeon_tiles_202: 1547222203
+      dungeon_tiles_203: 1823399360
+      dungeon_tiles_204: 1179978383
+      dungeon_tiles_205: 831455417
+      dungeon_tiles_206: -638148619
+      dungeon_tiles_207: 655010371
+      dungeon_tiles_208: -1126145794
+      dungeon_tiles_209: 1608447237
+      dungeon_tiles_210: 1135906209
+      dungeon_tiles_211: -1565661465
+      dungeon_tiles_212: -1622398301
+      dungeon_tiles_213: 636865754
+      dungeon_tiles_214: -2018447938
+      dungeon_tiles_215: -1716158553
+      dungeon_tiles_216: 371263355
+      dungeon_tiles_217: 1417387305
+      dungeon_tiles_218: 1948390490
+      dungeon_tiles_219: -992054455
+      dungeon_tiles_220: 890023944
+      dungeon_tiles_221: -1549692397
+      dungeon_tiles_222: -1700031647
+      dungeon_tiles_223: 1046953306
+      dungeon_tiles_224: -1784639357
+      dungeon_tiles_225: 1389046038
+      dungeon_tiles_226: -110380276
+      dungeon_tiles_227: 1020431572
+      dungeon_tiles_228: 1540955674
+      dungeon_tiles_229: -594615623
+      dungeon_tiles_230: 420088846
+      dungeon_tiles_231: -227324294
+      dungeon_tiles_232: -1747352102
+      dungeon_tiles_233: -438795825
+      dungeon_tiles_234: 2064561003
+      dungeon_tiles_235: -891194050
+      dungeon_tiles_236: 1325873422
+      dungeon_tiles_237: -1572460130
+      dungeon_tiles_238: -1711314773
+      dungeon_tiles_239: 713574359
+      dungeon_tiles_24: -257014355559042649
+      dungeon_tiles_240: -322898253
+      dungeon_tiles_241: -2121957470
+      dungeon_tiles_242: 1011806975
+      dungeon_tiles_243: 2075071220
+      dungeon_tiles_244: 957595780
+      dungeon_tiles_245: 1175077797
+      dungeon_tiles_246: -1760018781
+      dungeon_tiles_247: 440890419
+      dungeon_tiles_248: 1391735443
+      dungeon_tiles_249: 1576852407
+      dungeon_tiles_25: -4354237494524392354
+      dungeon_tiles_250: -2956637
+      dungeon_tiles_251: -1493589618
+      dungeon_tiles_252: 1337461725
+      dungeon_tiles_253: -814091839
+      dungeon_tiles_254: -2047418154
+      dungeon_tiles_255: 977192689
+      dungeon_tiles_256: -1388080607
+      dungeon_tiles_257: -1547354938
+      dungeon_tiles_258: 314893776
+      dungeon_tiles_259: 2083007733
+      dungeon_tiles_26: 2664481278081565330
+      dungeon_tiles_260: 1694435372
+      dungeon_tiles_261: 1323104187
+      dungeon_tiles_262: 283408575
+      dungeon_tiles_263: 823240977
+      dungeon_tiles_264: 1127302335
+      dungeon_tiles_27: 2609174863554348470
+      dungeon_tiles_28: 3610339231219930621
+      dungeon_tiles_29: 290047839109599427
+      dungeon_tiles_30: -2900853429046034592
+      dungeon_tiles_31: -1967943382963979276
+      dungeon_tiles_32: 6765227283418963874
+      dungeon_tiles_33: 3283300695089771475
+      dungeon_tiles_34: 4810687501681150605
+      dungeon_tiles_35: 8930077307140411828
+      dungeon_tiles_36: -1313345583907432619
+      dungeon_tiles_37: -1622683439983695371
+      dungeon_tiles_43: -501926953
+      dungeon_tiles_44: -996125319
+      dungeon_tiles_45: 921494719
+      dungeon_tiles_46: 1450973863
+      dungeon_tiles_47: -1150932837
+      dungeon_tiles_48: -1840172824
+      dungeon_tiles_49: -544114975
+      dungeon_tiles_5: 2054877772185783745
+      dungeon_tiles_50: 9758070
+      dungeon_tiles_51: -1598476529
+      dungeon_tiles_52: -30169065
+      dungeon_tiles_53: -1776122235
+      dungeon_tiles_54: 163777844
+      dungeon_tiles_55: -2139268609
+      dungeon_tiles_56: -187039118
+      dungeon_tiles_6: -7083331958401386302
+      dungeon_tiles_62: -444909442
+      dungeon_tiles_63: 906657395
+      dungeon_tiles_64: -137074541
+      dungeon_tiles_65: -996757570
+      dungeon_tiles_66: -1442913089
+      dungeon_tiles_67: 724207778
+      dungeon_tiles_68: 1347921007
+      dungeon_tiles_69: 498288484
+      dungeon_tiles_7: 6971619310513607880
+      dungeon_tiles_70: -1282703684
+      dungeon_tiles_71: 176819844
+      dungeon_tiles_72: 772834509
+      dungeon_tiles_73: 1387744675
+      dungeon_tiles_79: 1862690016
+      dungeon_tiles_8: 4558597556851542799
+      dungeon_tiles_80: -2085866971
+      dungeon_tiles_81: -1774481670
+      dungeon_tiles_82: 1805227160
+      dungeon_tiles_83: -1011525448
+      dungeon_tiles_84: 1492164439
+      dungeon_tiles_85: -1887648159
+      dungeon_tiles_86: -1157405598
+      dungeon_tiles_87: 1535678733
+      dungeon_tiles_88: -1495142538
+      dungeon_tiles_89: 2015644534
+      dungeon_tiles_9: 1794310841801812479
+      dungeon_tiles_90: 782685822
+      dungeon_tiles_91: -1501713318
+      dungeon_tiles_92: -774946231
+      dungeon_tiles_93: -675411756
+      dungeon_tiles_94: -152878594
+      dungeon_tiles_95: 2009772328
+      dungeon_tiles_96: -1304821190
+      dungeon_tiles_97: -1823331311
+      dungeon_tiles_98: -1748796891
+      dungeon_tiles_99: -207780752
+      dungeon_wall_BL: 1714272216
+      dungeon_wall_BR: -1811780126
+      dungeon_wall_B_1: -1423139918
+      dungeon_wall_B_2: 1428764279
+      dungeon_wall_B_3: 1592102541
+      dungeon_wall_L_1: -8199437182966303622
+      dungeon_wall_L_2: -5745523329672321289
+      dungeon_wall_L_3: -197391811
+      dungeon_wall_R_1: 5540061561785502580
+      dungeon_wall_R_2: -2082485468
+      dungeon_wall_R_3: 1748794082
+      dungeon_wall_TL: 6420404250380019895
+      dungeon_wall_TR: -3230975458514250041
+      dungeon_wall_T_1: 1084784950523803941
+      dungeon_wall_T_2: -8746033620184659114
+      dungeon_wall_T_3: 2728243367429221048
+  mipmapLimitGroupName: 
+  pSDRemoveMatte: 0
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 36 - 0
Assets/UI/Tilemaps/dungeon_tiles_0.asset

@@ -0,0 +1,36 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 0}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 13312, guid: 0000000000000000e000000000000000, type: 0}
+  m_Name: dungeon_tiles_0
+  m_EditorClassIdentifier: UnityEngine.dll::UnityEngine.Tilemaps.Tile
+  m_Sprite: {fileID: 6420404250380019895, guid: a9e4f0eb957e06a4d8e479b9c0a9ea9f, type: 3}
+  m_Color: {r: 1, g: 1, b: 1, a: 1}
+  m_Transform:
+    e00: 1
+    e01: 0
+    e02: 0
+    e03: 0
+    e10: 0
+    e11: 1
+    e12: 0
+    e13: 0
+    e20: 0
+    e21: 0
+    e22: 1
+    e23: 0
+    e30: 0
+    e31: 0
+    e32: 0
+    e33: 1
+  m_InstancedGameObject: {fileID: 0}
+  m_Flags: 1
+  m_ColliderType: 1

+ 8 - 0
Assets/UI/Tilemaps/dungeon_tiles_0.asset.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 6665dab6ce137f84899194761975f4f3
+NativeFormatImporter:
+  externalObjects: {}
+  mainObjectFileID: 11400000
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 36 - 0
Assets/UI/Tilemaps/dungeon_tiles_1.asset

@@ -0,0 +1,36 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 0}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 13312, guid: 0000000000000000e000000000000000, type: 0}
+  m_Name: dungeon_tiles_1
+  m_EditorClassIdentifier: UnityEngine.dll::UnityEngine.Tilemaps.Tile
+  m_Sprite: {fileID: 1084784950523803941, guid: a9e4f0eb957e06a4d8e479b9c0a9ea9f, type: 3}
+  m_Color: {r: 1, g: 1, b: 1, a: 1}
+  m_Transform:
+    e00: 1
+    e01: 0
+    e02: 0
+    e03: 0
+    e10: 0
+    e11: 1
+    e12: 0
+    e13: 0
+    e20: 0
+    e21: 0
+    e22: 1
+    e23: 0
+    e30: 0
+    e31: 0
+    e32: 0
+    e33: 1
+  m_InstancedGameObject: {fileID: 0}
+  m_Flags: 1
+  m_ColliderType: 1

+ 8 - 0
Assets/UI/Tilemaps/dungeon_tiles_1.asset.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: db7847a1004edbe4a82d786dc712f890
+NativeFormatImporter:
+  externalObjects: {}
+  mainObjectFileID: 11400000
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 36 - 0
Assets/UI/Tilemaps/dungeon_tiles_10.asset

@@ -0,0 +1,36 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 0}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 13312, guid: 0000000000000000e000000000000000, type: 0}
+  m_Name: dungeon_tiles_10
+  m_EditorClassIdentifier: UnityEngine.dll::UnityEngine.Tilemaps.Tile
+  m_Sprite: {fileID: 4545685854912230521, guid: a9e4f0eb957e06a4d8e479b9c0a9ea9f, type: 3}
+  m_Color: {r: 1, g: 1, b: 1, a: 1}
+  m_Transform:
+    e00: 1
+    e01: 0
+    e02: 0
+    e03: 0
+    e10: 0
+    e11: 1
+    e12: 0
+    e13: 0
+    e20: 0
+    e21: 0
+    e22: 1
+    e23: 0
+    e30: 0
+    e31: 0
+    e32: 0
+    e33: 1
+  m_InstancedGameObject: {fileID: 0}
+  m_Flags: 1
+  m_ColliderType: 1

+ 8 - 0
Assets/UI/Tilemaps/dungeon_tiles_10.asset.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 2af60325606727f48a405b2ba196dd56
+NativeFormatImporter:
+  externalObjects: {}
+  mainObjectFileID: 11400000
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 36 - 0
Assets/UI/Tilemaps/dungeon_tiles_11.asset

@@ -0,0 +1,36 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 0}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 13312, guid: 0000000000000000e000000000000000, type: 0}
+  m_Name: dungeon_tiles_11
+  m_EditorClassIdentifier: UnityEngine.dll::UnityEngine.Tilemaps.Tile
+  m_Sprite: {fileID: -3023061875091369103, guid: a9e4f0eb957e06a4d8e479b9c0a9ea9f, type: 3}
+  m_Color: {r: 1, g: 1, b: 1, a: 1}
+  m_Transform:
+    e00: 1
+    e01: 0
+    e02: 0
+    e03: 0
+    e10: 0
+    e11: 1
+    e12: 0
+    e13: 0
+    e20: 0
+    e21: 0
+    e22: 1
+    e23: 0
+    e30: 0
+    e31: 0
+    e32: 0
+    e33: 1
+  m_InstancedGameObject: {fileID: 0}
+  m_Flags: 1
+  m_ColliderType: 1

+ 8 - 0
Assets/UI/Tilemaps/dungeon_tiles_11.asset.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 0796734781c843f428552b9632aba407
+NativeFormatImporter:
+  externalObjects: {}
+  mainObjectFileID: 11400000
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 36 - 0
Assets/UI/Tilemaps/dungeon_tiles_12.asset

@@ -0,0 +1,36 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 0}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 13312, guid: 0000000000000000e000000000000000, type: 0}
+  m_Name: dungeon_tiles_12
+  m_EditorClassIdentifier: UnityEngine.dll::UnityEngine.Tilemaps.Tile
+  m_Sprite: {fileID: 6725311274419569171, guid: a9e4f0eb957e06a4d8e479b9c0a9ea9f, type: 3}
+  m_Color: {r: 1, g: 1, b: 1, a: 1}
+  m_Transform:
+    e00: 1
+    e01: 0
+    e02: 0
+    e03: 0
+    e10: 0
+    e11: 1
+    e12: 0
+    e13: 0
+    e20: 0
+    e21: 0
+    e22: 1
+    e23: 0
+    e30: 0
+    e31: 0
+    e32: 0
+    e33: 1
+  m_InstancedGameObject: {fileID: 0}
+  m_Flags: 1
+  m_ColliderType: 1

+ 8 - 0
Assets/UI/Tilemaps/dungeon_tiles_12.asset.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 69e470777a02fa0459ecae00e5b7730f
+NativeFormatImporter:
+  externalObjects: {}
+  mainObjectFileID: 11400000
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 36 - 0
Assets/UI/Tilemaps/dungeon_tiles_13.asset

@@ -0,0 +1,36 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 0}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 13312, guid: 0000000000000000e000000000000000, type: 0}
+  m_Name: dungeon_tiles_13
+  m_EditorClassIdentifier: UnityEngine.dll::UnityEngine.Tilemaps.Tile
+  m_Sprite: {fileID: 650693403263584314, guid: a9e4f0eb957e06a4d8e479b9c0a9ea9f, type: 3}
+  m_Color: {r: 1, g: 1, b: 1, a: 1}
+  m_Transform:
+    e00: 1
+    e01: 0
+    e02: 0
+    e03: 0
+    e10: 0
+    e11: 1
+    e12: 0
+    e13: 0
+    e20: 0
+    e21: 0
+    e22: 1
+    e23: 0
+    e30: 0
+    e31: 0
+    e32: 0
+    e33: 1
+  m_InstancedGameObject: {fileID: 0}
+  m_Flags: 1
+  m_ColliderType: 1

+ 8 - 0
Assets/UI/Tilemaps/dungeon_tiles_13.asset.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: c6ca8c8365fe394438a2b6cf4fa280ad
+NativeFormatImporter:
+  externalObjects: {}
+  mainObjectFileID: 11400000
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 36 - 0
Assets/UI/Tilemaps/dungeon_tiles_14.asset

@@ -0,0 +1,36 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 0}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 13312, guid: 0000000000000000e000000000000000, type: 0}
+  m_Name: dungeon_tiles_14
+  m_EditorClassIdentifier: UnityEngine.dll::UnityEngine.Tilemaps.Tile
+  m_Sprite: {fileID: -5058788211806469395, guid: a9e4f0eb957e06a4d8e479b9c0a9ea9f, type: 3}
+  m_Color: {r: 1, g: 1, b: 1, a: 1}
+  m_Transform:
+    e00: 1
+    e01: 0
+    e02: 0
+    e03: 0
+    e10: 0
+    e11: 1
+    e12: 0
+    e13: 0
+    e20: 0
+    e21: 0
+    e22: 1
+    e23: 0
+    e30: 0
+    e31: 0
+    e32: 0
+    e33: 1
+  m_InstancedGameObject: {fileID: 0}
+  m_Flags: 1
+  m_ColliderType: 1

Daži faili netika attēloti, jo izmaiņu fails ir pārāk liels