diff --git a/Assets/DefaultNetworkPrefabs.asset b/Assets/DefaultNetworkPrefabs.asset
index 8f1b198..b3cf2c0 100644
--- a/Assets/DefaultNetworkPrefabs.asset
+++ b/Assets/DefaultNetworkPrefabs.asset
@@ -24,11 +24,6 @@ MonoBehaviour:
SourcePrefabToOverride: {fileID: 0}
SourceHashToOverride: 0
OverridingTargetPrefab: {fileID: 0}
- - Override: 0
- Prefab: {fileID: 6482414459531823157, guid: 85ad5cd50543454891b343720f3048d6, type: 3}
- SourcePrefabToOverride: {fileID: 0}
- SourceHashToOverride: 0
- OverridingTargetPrefab: {fileID: 0}
- Override: 0
Prefab: {fileID: 116861493430507844, guid: 3398cc5831880954487717577f61b6d7, type: 3}
SourcePrefabToOverride: {fileID: 0}
diff --git a/Assets/_Project/Art/Sprites/Towers.meta b/Assets/_Project/Art/Sprites/Towers.meta
deleted file mode 100644
index 31e40d5..0000000
--- a/Assets/_Project/Art/Sprites/Towers.meta
+++ /dev/null
@@ -1,8 +0,0 @@
-fileFormatVersion: 2
-guid: cf1fa78cd62d44dd9882bb2d76bf1443
-folderAsset: yes
-DefaultImporter:
- externalObjects: {}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Assets/_Project/Art/Sprites/Towers/arrow.png b/Assets/_Project/Art/Sprites/Towers/arrow.png
deleted file mode 100644
index 7237b49..0000000
--- a/Assets/_Project/Art/Sprites/Towers/arrow.png
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:28be0634e691ce222fab744a01eccf421e84e5eda3d42af2039b5e6e2abc65b5
-size 18755
diff --git a/Assets/_Project/Art/Sprites/Towers/arrow.png.meta b/Assets/_Project/Art/Sprites/Towers/arrow.png.meta
deleted file mode 100644
index b6332c9..0000000
--- a/Assets/_Project/Art/Sprites/Towers/arrow.png.meta
+++ /dev/null
@@ -1,101 +0,0 @@
-fileFormatVersion: 2
-guid: afe216737d1b46e783889299bda1c252
-TextureImporter:
- internalIDToNameTable: []
- 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
- 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: 1
- spriteExtrude: 1
- spriteMeshType: 1
- alignment: 0
- spritePivot: {x: 0.5, y: 0.5}
- spritePixelsToUnits: 100
- 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: 3
- 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
- spriteSheet:
- serializedVersion: 2
- sprites: []
- outline: []
- physicsShape: []
- bones: []
- spriteID: 5e97eb03825dee720800000000000000
- internalID: 0
- vertices: []
- indices:
- edges: []
- weights: []
- secondaryTextures: []
- nameFileIdTable: {}
- spritePackingTag:
- pSDRemoveMatte: 0
- pSDShowRemoveMatteOption: 0
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Assets/_Project/Art/Sprites/Towers/siege.png b/Assets/_Project/Art/Sprites/Towers/siege.png
deleted file mode 100644
index 8ac6b6e..0000000
--- a/Assets/_Project/Art/Sprites/Towers/siege.png
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:f2e3748739d63be5f5e35d4efacae24923f9a9551563f5263a5b05b62b9c7d00
-size 62603
diff --git a/Assets/_Project/Art/Sprites/Towers/siege.png.meta b/Assets/_Project/Art/Sprites/Towers/siege.png.meta
deleted file mode 100644
index 797abf3..0000000
--- a/Assets/_Project/Art/Sprites/Towers/siege.png.meta
+++ /dev/null
@@ -1,101 +0,0 @@
-fileFormatVersion: 2
-guid: 1423e4bda9704c3b826b0eb847c29c1c
-TextureImporter:
- internalIDToNameTable: []
- 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
- 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: 1
- spriteExtrude: 1
- spriteMeshType: 1
- alignment: 0
- spritePivot: {x: 0.5, y: 0.5}
- spritePixelsToUnits: 100
- 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: 3
- 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
- spriteSheet:
- serializedVersion: 2
- sprites: []
- outline: []
- physicsShape: []
- bones: []
- spriteID: 7d2e9f1c4a6b3d850800000000000000
- internalID: 0
- vertices: []
- indices:
- edges: []
- weights: []
- secondaryTextures: []
- nameFileIdTable: {}
- spritePackingTag:
- pSDRemoveMatte: 0
- pSDShowRemoveMatteOption: 0
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Assets/_Project/Definitions/Towers/BasicArrowTower.asset b/Assets/_Project/Definitions/Towers/BasicTower.asset
similarity index 79%
rename from Assets/_Project/Definitions/Towers/BasicArrowTower.asset
rename to Assets/_Project/Definitions/Towers/BasicTower.asset
index 7709fe3..e32563a 100644
--- a/Assets/_Project/Definitions/Towers/BasicArrowTower.asset
+++ b/Assets/_Project/Definitions/Towers/BasicTower.asset
@@ -10,11 +10,11 @@ MonoBehaviour:
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 7b353a757b6e6774d97e6fb8ba138fcc, type: 3}
- m_Name: BasicArrowTower
+ m_Name: BasicTower
m_EditorClassIdentifier: Assembly-CSharp::TD.Towers.TowerDefinition
- DisplayName: Basic Arrow Tower
- Description: Single-target tower that fires arrows at ground and air enemies. The
- backbone of any maze.
+ DisplayName: Basic Arrow
+ Description: Targets ground and air. Fires single-target arrows. The bread and butter
+ of any maze.
FootprintSize: {x: 2, y: 2}
GoldCost: 25
BuildTime: 0.5
@@ -35,4 +35,3 @@ MonoBehaviour:
ProjectilePrefab: {fileID: 2664719039363295382, guid: dc2e4a4108e03874a8b2dab88dcc8fba, type: 3}
ProjectileSpeed: 15
UpgradePaths: []
- Icon: {fileID: 21300000, guid: afe216737d1b46e783889299bda1c252, type: 3}
diff --git a/Assets/_Project/Definitions/Towers/BasicArrowTower.asset.meta b/Assets/_Project/Definitions/Towers/BasicTower.asset.meta
similarity index 100%
rename from Assets/_Project/Definitions/Towers/BasicArrowTower.asset.meta
rename to Assets/_Project/Definitions/Towers/BasicTower.asset.meta
diff --git a/Assets/_Project/Definitions/Towers/SiegeCannonTower.asset b/Assets/_Project/Definitions/Towers/SiegeCannonTower.asset
deleted file mode 100644
index 54d91dd..0000000
--- a/Assets/_Project/Definitions/Towers/SiegeCannonTower.asset
+++ /dev/null
@@ -1,38 +0,0 @@
-%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: 7b353a757b6e6774d97e6fb8ba138fcc, type: 3}
- m_Name: SiegeCannonTower
- m_EditorClassIdentifier: Assembly-CSharp::TD.Towers.TowerDefinition
- DisplayName: Siege Cannon Tower
- Description: Lobs a ballistic shell that deals splash damage where it lands. Targets
- ground enemies only.
- FootprintSize: {x: 2, y: 2}
- GoldCost: 50
- BuildTime: 0.5
- TowerPrefab: {fileID: 6482414459531823157, guid: 85ad5cd50543454891b343720f3048d6, type: 3}
- DamageType: 0
- TargetPriority: 0
- TargetType: 1
- GroundedOnly: 1
- Damage: 25
- Range: 16
- FireRate: 0.8
- SplashRadius: 3
- ChainCount: 0
- ChainRange: 0
- SlowFactor: 0
- DotDamagePerSecond: 0
- EffectDuration: 0
- ProjectilePrefab: {fileID: 2664719039363295382, guid: dc2e4a4108e03874a8b2dab88dcc8fba, type: 3}
- ProjectileSpeed: 10
- UpgradePaths: []
- Icon: {fileID: 21300000, guid: 1423e4bda9704c3b826b0eb847c29c1c, type: 3}
diff --git a/Assets/_Project/Definitions/Towers/SiegeCannonTower.asset.meta b/Assets/_Project/Definitions/Towers/SiegeCannonTower.asset.meta
deleted file mode 100644
index 72fa85b..0000000
--- a/Assets/_Project/Definitions/Towers/SiegeCannonTower.asset.meta
+++ /dev/null
@@ -1,8 +0,0 @@
-fileFormatVersion: 2
-guid: 04219895bbea4fb9a94fd62fef35bf2a
-NativeFormatImporter:
- externalObjects: {}
- mainObjectFileID: 11400000
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Assets/_Project/Prefabs/Towers/Tower_SiegeCannon.prefab b/Assets/_Project/Prefabs/Towers/Tower_Basic.prefab
similarity index 97%
rename from Assets/_Project/Prefabs/Towers/Tower_SiegeCannon.prefab
rename to Assets/_Project/Prefabs/Towers/Tower_Basic.prefab
index 1c6e32f..42defa0 100644
--- a/Assets/_Project/Prefabs/Towers/Tower_SiegeCannon.prefab
+++ b/Assets/_Project/Prefabs/Towers/Tower_Basic.prefab
@@ -70,7 +70,7 @@ GameObject:
- component: {fileID: 805962841523123163}
- component: {fileID: 8853488620519990682}
m_Layer: 0
- m_Name: Tower_SiegeCannon
+ m_Name: Tower_Basic
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
@@ -86,7 +86,7 @@ Transform:
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
- m_LocalScale: {x: 2, y: 0.5, z: 2}
+ m_LocalScale: {x: 2, y: 1, z: 2}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 5753294230586596248}
@@ -100,7 +100,7 @@ MeshFilter:
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6482414459531823157}
- m_Mesh: {fileID: 10206, guid: 0000000000000000e000000000000000, type: 0}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
--- !u!23 &4028055828417179692
MeshRenderer:
m_ObjectHideFlags: 0
@@ -181,9 +181,9 @@ MonoBehaviour:
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: d5a57f767e5e46a458fc5d3c628d0cbb, type: 3}
- m_Name:
+ m_Name:
m_EditorClassIdentifier: Unity.Netcode.Runtime::Unity.Netcode.NetworkObject
- GlobalObjectIdHash: 3344551122
+ GlobalObjectIdHash: 2767478135
InScenePlacedSourceGlobalObjectIdHash: 0
DeferredDespawnTick: 0
Ownership: 1
@@ -206,7 +206,7 @@ MonoBehaviour:
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fb111fc88b3d6a340a3abde5a1502af3, type: 3}
- m_Name:
+ m_Name:
m_EditorClassIdentifier: Assembly-CSharp::TD.Gameplay.TowerInstance
ShowTopMostFoldoutHeaderGroup: 1
tintedRenderers:
@@ -221,7 +221,7 @@ MonoBehaviour:
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 7eb6cce6cd96b23478b7d2173cebf74d, type: 3}
- m_Name:
+ m_Name:
m_EditorClassIdentifier: Assembly-CSharp::TD.Combat.TowerCombat
ShowTopMostFoldoutHeaderGroup: 1
enemyLayerMask:
@@ -237,7 +237,7 @@ MonoBehaviour:
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: c0edb0c5206ca454bbd7c300c6cc7574, type: 3}
- m_Name:
+ m_Name:
m_EditorClassIdentifier: Assembly-CSharp::TD.Combat.TowerRangeIndicator
rangeProjector: {fileID: 8255517343120954594}
projectionDepth: 50
@@ -283,7 +283,7 @@ MonoBehaviour:
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 0777d029ed3dffa4692f417d4aba19ca, type: 3}
- m_Name:
+ m_Name:
m_EditorClassIdentifier: Unity.RenderPipelines.Universal.Runtime::UnityEngine.Rendering.Universal.DecalProjector
m_Material: {fileID: 2100000, guid: f99227cbde481ce47a2527e6bca709d2, type: 2}
m_DrawDistance: 1000
diff --git a/Assets/_Project/Prefabs/Towers/Tower_BasicArrow.prefab.meta b/Assets/_Project/Prefabs/Towers/Tower_Basic.prefab.meta
similarity index 100%
rename from Assets/_Project/Prefabs/Towers/Tower_BasicArrow.prefab.meta
rename to Assets/_Project/Prefabs/Towers/Tower_Basic.prefab.meta
diff --git a/Assets/_Project/Prefabs/Towers/Tower_BasicArrow.prefab b/Assets/_Project/Prefabs/Towers/Tower_BasicArrow.prefab
deleted file mode 100644
index 72ae323..0000000
--- a/Assets/_Project/Prefabs/Towers/Tower_BasicArrow.prefab
+++ /dev/null
@@ -1,321 +0,0 @@
-%YAML 1.1
-%TAG !u! tag:unity3d.com,2011:
---- !u!1 &39352475684176306
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 5753294230586596248}
- - component: {fileID: 5360241685303413176}
- m_Layer: 8
- m_Name: SelectionVolume
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!4 &5753294230586596248
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 39352475684176306}
- 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: 1283036264165444500}
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!65 &5360241685303413176
-BoxCollider:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 39352475684176306}
- m_Material: {fileID: 0}
- m_IncludeLayers:
- serializedVersion: 2
- m_Bits: 0
- m_ExcludeLayers:
- serializedVersion: 2
- m_Bits: 0
- m_LayerOverridePriority: 0
- m_IsTrigger: 1
- m_ProvidesContacts: 0
- m_Enabled: 1
- serializedVersion: 3
- m_Size: {x: 1, y: 1, z: 1}
- m_Center: {x: 0, y: 0, z: 0}
---- !u!1 &6482414459531823157
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 1283036264165444500}
- - component: {fileID: 6869333096494165105}
- - component: {fileID: 4028055828417179692}
- - component: {fileID: 5594214090440991794}
- - component: {fileID: 7630870068340451557}
- - component: {fileID: 9137031893466587143}
- - component: {fileID: 805962841523123163}
- - component: {fileID: 8853488620519990682}
- - component: {fileID: 5360241685303413177}
- m_Layer: 0
- m_Name: Tower_BasicArrow
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!4 &1283036264165444500
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 6482414459531823157}
- serializedVersion: 2
- m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
- m_LocalPosition: {x: 0, y: 0, z: 0}
- m_LocalScale: {x: 2, y: 1, z: 2}
- m_ConstrainProportionsScale: 0
- m_Children:
- - {fileID: 5753294230586596248}
- - {fileID: 7547850274173754846}
- m_Father: {fileID: 0}
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!33 &6869333096494165105
-MeshFilter:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 6482414459531823157}
- m_Mesh: {fileID: 0}
---- !u!23 &4028055828417179692
-MeshRenderer:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 6482414459531823157}
- 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: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, 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: 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!65 &5594214090440991794
-BoxCollider:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 6482414459531823157}
- m_Material: {fileID: 0}
- m_IncludeLayers:
- serializedVersion: 2
- m_Bits: 0
- m_ExcludeLayers:
- serializedVersion: 2
- m_Bits: 0
- m_LayerOverridePriority: 0
- m_IsTrigger: 0
- m_ProvidesContacts: 0
- m_Enabled: 1
- serializedVersion: 3
- m_Size: {x: 1, y: 1, z: 1}
- m_Center: {x: 0, y: 0, z: 0}
---- !u!114 &7630870068340451557
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 6482414459531823157}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: d5a57f767e5e46a458fc5d3c628d0cbb, type: 3}
- m_Name:
- m_EditorClassIdentifier: Unity.Netcode.Runtime::Unity.Netcode.NetworkObject
- GlobalObjectIdHash: 2767478135
- InScenePlacedSourceGlobalObjectIdHash: 0
- DeferredDespawnTick: 0
- Ownership: 1
- AlwaysReplicateAsRoot: 0
- SynchronizeTransform: 1
- ActiveSceneSynchronization: 0
- SceneMigrationSynchronization: 0
- SpawnWithObservers: 1
- DontDestroyWithOwner: 0
- AutoObjectParentSync: 1
- SyncOwnerTransformWhenParented: 1
- AllowOwnerToParent: 0
---- !u!114 &9137031893466587143
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 6482414459531823157}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: fb111fc88b3d6a340a3abde5a1502af3, type: 3}
- m_Name:
- m_EditorClassIdentifier: Assembly-CSharp::TD.Gameplay.TowerInstance
- ShowTopMostFoldoutHeaderGroup: 1
- tintedRenderers:
- - {fileID: 4028055828417179692}
---- !u!114 &805962841523123163
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 6482414459531823157}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: 7eb6cce6cd96b23478b7d2173cebf74d, type: 3}
- m_Name:
- m_EditorClassIdentifier: Assembly-CSharp::TD.Combat.TowerCombat
- ShowTopMostFoldoutHeaderGroup: 1
- enemyLayerMask:
- serializedVersion: 2
- m_Bits: 1024
---- !u!114 &8853488620519990682
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 6482414459531823157}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: c0edb0c5206ca454bbd7c300c6cc7574, type: 3}
- m_Name:
- m_EditorClassIdentifier: Assembly-CSharp::TD.Combat.TowerRangeIndicator
- rangeProjector: {fileID: 8255517343120954594}
- projectionDepth: 50
---- !u!114 &5360241685303413177
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 6482414459531823157}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: 93bc533262394e1e8b122bbfad89391a, type: 3}
- m_Name:
- m_EditorClassIdentifier: Assembly-CSharp::TD.Visuals.ConeMesh
- sides: 4
- radius: 0.7071068
- height: 1.5
- angularOffsetDegrees: 45
---- !u!1 &7580197837852108944
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 7547850274173754846}
- - component: {fileID: 8255517343120954594}
- m_Layer: 0
- m_Name: RangeIndicator
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!4 &7547850274173754846
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 7580197837852108944}
- serializedVersion: 2
- m_LocalRotation: {x: 0.7071068, y: -0, z: -0, w: 0.7071068}
- m_LocalPosition: {x: 0, y: 0, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_ConstrainProportionsScale: 0
- m_Children: []
- m_Father: {fileID: 1283036264165444500}
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!114 &8255517343120954594
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 7580197837852108944}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: 0777d029ed3dffa4692f417d4aba19ca, type: 3}
- m_Name:
- m_EditorClassIdentifier: Unity.RenderPipelines.Universal.Runtime::UnityEngine.Rendering.Universal.DecalProjector
- m_Material: {fileID: 2100000, guid: f99227cbde481ce47a2527e6bca709d2, type: 2}
- m_DrawDistance: 1000
- m_FadeScale: 0.9
- m_StartAngleFade: 180
- m_EndAngleFade: 180
- m_UVScale: {x: 1, y: 1}
- m_UVBias: {x: 0, y: 0}
- m_RenderingLayerMask:
- serializedVersion: 0
- m_Bits: 1
- m_ScaleMode: 0
- m_Offset: {x: 0, y: 0, z: 0.5}
- m_Size: {x: 1, y: 1, z: 1}
- m_FadeFactor: 1
- m_VisibleInScene: 1
- version: 1
- m_DecalLayerMask: 1
diff --git a/Assets/_Project/Prefabs/Towers/Tower_SiegeCannon.prefab.meta b/Assets/_Project/Prefabs/Towers/Tower_SiegeCannon.prefab.meta
deleted file mode 100644
index fe27c56..0000000
--- a/Assets/_Project/Prefabs/Towers/Tower_SiegeCannon.prefab.meta
+++ /dev/null
@@ -1,7 +0,0 @@
-fileFormatVersion: 2
-guid: 85ad5cd50543454891b343720f3048d6
-PrefabImporter:
- externalObjects: {}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Assets/_Project/Scenes/Levels/9Player.unity b/Assets/_Project/Scenes/Levels/9Player.unity
index b0eec47..9e21cf2 100644
--- a/Assets/_Project/Scenes/Levels/9Player.unity
+++ b/Assets/_Project/Scenes/Levels/9Player.unity
@@ -632,8 +632,8 @@ Mesh:
m_CookingOptions: 30
m_BakedConvexCollisionMesh:
m_BakedTriangleCollisionMesh:
- m_MeshMetrics[0]: 1
- m_MeshMetrics[1]: 1
+ 'm_MeshMetrics[0]': 1
+ 'm_MeshMetrics[1]': 1
m_MeshOptimizationFlags: 1
m_StreamData:
serializedVersion: 2
@@ -1371,8 +1371,8 @@ Mesh:
m_CookingOptions: 30
m_BakedConvexCollisionMesh:
m_BakedTriangleCollisionMesh:
- m_MeshMetrics[0]: 1
- m_MeshMetrics[1]: 1
+ 'm_MeshMetrics[0]': 1
+ 'm_MeshMetrics[1]': 1
m_MeshOptimizationFlags: 1
m_StreamData:
serializedVersion: 2
@@ -2379,8 +2379,8 @@ Mesh:
m_CookingOptions: 30
m_BakedConvexCollisionMesh:
m_BakedTriangleCollisionMesh:
- m_MeshMetrics[0]: 1
- m_MeshMetrics[1]: 1
+ 'm_MeshMetrics[0]': 1
+ 'm_MeshMetrics[1]': 1
m_MeshOptimizationFlags: 1
m_StreamData:
serializedVersion: 2
@@ -2983,8 +2983,8 @@ Mesh:
m_CookingOptions: 30
m_BakedConvexCollisionMesh:
m_BakedTriangleCollisionMesh:
- m_MeshMetrics[0]: 1
- m_MeshMetrics[1]: 1
+ 'm_MeshMetrics[0]': 1
+ 'm_MeshMetrics[1]': 1
m_MeshOptimizationFlags: 1
m_StreamData:
serializedVersion: 2
@@ -3161,8 +3161,8 @@ Mesh:
m_CookingOptions: 30
m_BakedConvexCollisionMesh:
m_BakedTriangleCollisionMesh:
- m_MeshMetrics[0]: 1
- m_MeshMetrics[1]: 1
+ 'm_MeshMetrics[0]': 1
+ 'm_MeshMetrics[1]': 1
m_MeshOptimizationFlags: 1
m_StreamData:
serializedVersion: 2
@@ -4477,8 +4477,8 @@ Mesh:
m_CookingOptions: 30
m_BakedConvexCollisionMesh:
m_BakedTriangleCollisionMesh:
- m_MeshMetrics[0]: 1
- m_MeshMetrics[1]: 1
+ 'm_MeshMetrics[0]': 1
+ 'm_MeshMetrics[1]': 1
m_MeshOptimizationFlags: 1
m_StreamData:
serializedVersion: 2
@@ -6479,8 +6479,8 @@ Mesh:
m_CookingOptions: 30
m_BakedConvexCollisionMesh:
m_BakedTriangleCollisionMesh:
- m_MeshMetrics[0]: 1
- m_MeshMetrics[1]: 1
+ 'm_MeshMetrics[0]': 1
+ 'm_MeshMetrics[1]': 1
m_MeshOptimizationFlags: 1
m_StreamData:
serializedVersion: 2
@@ -6657,8 +6657,8 @@ Mesh:
m_CookingOptions: 30
m_BakedConvexCollisionMesh:
m_BakedTriangleCollisionMesh:
- m_MeshMetrics[0]: 1
- m_MeshMetrics[1]: 1
+ 'm_MeshMetrics[0]': 1
+ 'm_MeshMetrics[1]': 1
m_MeshOptimizationFlags: 1
m_StreamData:
serializedVersion: 2
@@ -6905,8 +6905,8 @@ Mesh:
m_CookingOptions: 30
m_BakedConvexCollisionMesh:
m_BakedTriangleCollisionMesh:
- m_MeshMetrics[0]: 1
- m_MeshMetrics[1]: 1
+ 'm_MeshMetrics[0]': 1
+ 'm_MeshMetrics[1]': 1
m_MeshOptimizationFlags: 1
m_StreamData:
serializedVersion: 2
@@ -7795,8 +7795,8 @@ Mesh:
m_CookingOptions: 30
m_BakedConvexCollisionMesh:
m_BakedTriangleCollisionMesh:
- m_MeshMetrics[0]: 1
- m_MeshMetrics[1]: 1
+ 'm_MeshMetrics[0]': 1
+ 'm_MeshMetrics[1]': 1
m_MeshOptimizationFlags: 1
m_StreamData:
serializedVersion: 2
@@ -7973,8 +7973,8 @@ Mesh:
m_CookingOptions: 30
m_BakedConvexCollisionMesh:
m_BakedTriangleCollisionMesh:
- m_MeshMetrics[0]: 1
- m_MeshMetrics[1]: 1
+ 'm_MeshMetrics[0]': 1
+ 'm_MeshMetrics[1]': 1
m_MeshOptimizationFlags: 1
m_StreamData:
serializedVersion: 2
@@ -8541,8 +8541,8 @@ Mesh:
m_CookingOptions: 30
m_BakedConvexCollisionMesh:
m_BakedTriangleCollisionMesh:
- m_MeshMetrics[0]: 1
- m_MeshMetrics[1]: 1
+ 'm_MeshMetrics[0]': 1
+ 'm_MeshMetrics[1]': 1
m_MeshOptimizationFlags: 1
m_StreamData:
serializedVersion: 2
@@ -9075,8 +9075,8 @@ Mesh:
m_CookingOptions: 30
m_BakedConvexCollisionMesh:
m_BakedTriangleCollisionMesh:
- m_MeshMetrics[0]: 1
- m_MeshMetrics[1]: 1
+ 'm_MeshMetrics[0]': 1
+ 'm_MeshMetrics[1]': 1
m_MeshOptimizationFlags: 1
m_StreamData:
serializedVersion: 2
@@ -9679,8 +9679,8 @@ Mesh:
m_CookingOptions: 30
m_BakedConvexCollisionMesh:
m_BakedTriangleCollisionMesh:
- m_MeshMetrics[0]: 1
- m_MeshMetrics[1]: 1
+ 'm_MeshMetrics[0]': 1
+ 'm_MeshMetrics[1]': 1
m_MeshOptimizationFlags: 1
m_StreamData:
serializedVersion: 2
@@ -10247,8 +10247,8 @@ Mesh:
m_CookingOptions: 30
m_BakedConvexCollisionMesh:
m_BakedTriangleCollisionMesh:
- m_MeshMetrics[0]: 1
- m_MeshMetrics[1]: 1
+ 'm_MeshMetrics[0]': 1
+ 'm_MeshMetrics[1]': 1
m_MeshOptimizationFlags: 1
m_StreamData:
serializedVersion: 2
@@ -11137,8 +11137,8 @@ Mesh:
m_CookingOptions: 30
m_BakedConvexCollisionMesh:
m_BakedTriangleCollisionMesh:
- m_MeshMetrics[0]: 1
- m_MeshMetrics[1]: 1
+ 'm_MeshMetrics[0]': 1
+ 'm_MeshMetrics[1]': 1
m_MeshOptimizationFlags: 1
m_StreamData:
serializedVersion: 2
@@ -11315,8 +11315,8 @@ Mesh:
m_CookingOptions: 30
m_BakedConvexCollisionMesh:
m_BakedTriangleCollisionMesh:
- m_MeshMetrics[0]: 1
- m_MeshMetrics[1]: 1
+ 'm_MeshMetrics[0]': 1
+ 'm_MeshMetrics[1]': 1
m_MeshOptimizationFlags: 1
m_StreamData:
serializedVersion: 2
@@ -12205,8 +12205,8 @@ Mesh:
m_CookingOptions: 30
m_BakedConvexCollisionMesh:
m_BakedTriangleCollisionMesh:
- m_MeshMetrics[0]: 1
- m_MeshMetrics[1]: 1
+ 'm_MeshMetrics[0]': 1
+ 'm_MeshMetrics[1]': 1
m_MeshOptimizationFlags: 1
m_StreamData:
serializedVersion: 2
@@ -13489,8 +13489,8 @@ Mesh:
m_CookingOptions: 30
m_BakedConvexCollisionMesh:
m_BakedTriangleCollisionMesh:
- m_MeshMetrics[0]: 1
- m_MeshMetrics[1]: 1
+ 'm_MeshMetrics[0]': 1
+ 'm_MeshMetrics[1]': 1
m_MeshOptimizationFlags: 1
m_StreamData:
serializedVersion: 2
@@ -13805,8 +13805,8 @@ Mesh:
m_CookingOptions: 30
m_BakedConvexCollisionMesh:
m_BakedTriangleCollisionMesh:
- m_MeshMetrics[0]: 1
- m_MeshMetrics[1]: 1
+ 'm_MeshMetrics[0]': 1
+ 'm_MeshMetrics[1]': 1
m_MeshOptimizationFlags: 1
m_StreamData:
serializedVersion: 2
@@ -13983,8 +13983,8 @@ Mesh:
m_CookingOptions: 30
m_BakedConvexCollisionMesh:
m_BakedTriangleCollisionMesh:
- m_MeshMetrics[0]: 1
- m_MeshMetrics[1]: 1
+ 'm_MeshMetrics[0]': 1
+ 'm_MeshMetrics[1]': 1
m_MeshOptimizationFlags: 1
m_StreamData:
serializedVersion: 2
@@ -14514,8 +14514,8 @@ Mesh:
m_CookingOptions: 30
m_BakedConvexCollisionMesh:
m_BakedTriangleCollisionMesh:
- m_MeshMetrics[0]: 1
- m_MeshMetrics[1]: 1
+ 'm_MeshMetrics[0]': 1
+ 'm_MeshMetrics[1]': 1
m_MeshOptimizationFlags: 1
m_StreamData:
serializedVersion: 2
@@ -15124,8 +15124,8 @@ Mesh:
m_CookingOptions: 30
m_BakedConvexCollisionMesh:
m_BakedTriangleCollisionMesh:
- m_MeshMetrics[0]: 1
- m_MeshMetrics[1]: 1
+ 'm_MeshMetrics[0]': 1
+ 'm_MeshMetrics[1]': 1
m_MeshOptimizationFlags: 1
m_StreamData:
serializedVersion: 2
@@ -15892,8 +15892,8 @@ Mesh:
m_CookingOptions: 30
m_BakedConvexCollisionMesh:
m_BakedTriangleCollisionMesh:
- m_MeshMetrics[0]: 1
- m_MeshMetrics[1]: 1
+ 'm_MeshMetrics[0]': 1
+ 'm_MeshMetrics[1]': 1
m_MeshOptimizationFlags: 1
m_StreamData:
serializedVersion: 2
@@ -16172,8 +16172,8 @@ Mesh:
m_CookingOptions: 30
m_BakedConvexCollisionMesh:
m_BakedTriangleCollisionMesh:
- m_MeshMetrics[0]: 1
- m_MeshMetrics[1]: 1
+ 'm_MeshMetrics[0]': 1
+ 'm_MeshMetrics[1]': 1
m_MeshOptimizationFlags: 1
m_StreamData:
serializedVersion: 2
@@ -16706,8 +16706,8 @@ Mesh:
m_CookingOptions: 30
m_BakedConvexCollisionMesh:
m_BakedTriangleCollisionMesh:
- m_MeshMetrics[0]: 1
- m_MeshMetrics[1]: 1
+ 'm_MeshMetrics[0]': 1
+ 'm_MeshMetrics[1]': 1
m_MeshOptimizationFlags: 1
m_StreamData:
serializedVersion: 2
@@ -17308,8 +17308,8 @@ Mesh:
m_CookingOptions: 30
m_BakedConvexCollisionMesh:
m_BakedTriangleCollisionMesh:
- m_MeshMetrics[0]: 1
- m_MeshMetrics[1]: 1
+ 'm_MeshMetrics[0]': 1
+ 'm_MeshMetrics[1]': 1
m_MeshOptimizationFlags: 1
m_StreamData:
serializedVersion: 2
@@ -17486,8 +17486,8 @@ Mesh:
m_CookingOptions: 30
m_BakedConvexCollisionMesh:
m_BakedTriangleCollisionMesh:
- m_MeshMetrics[0]: 1
- m_MeshMetrics[1]: 1
+ 'm_MeshMetrics[0]': 1
+ 'm_MeshMetrics[1]': 1
m_MeshOptimizationFlags: 1
m_StreamData:
serializedVersion: 2
@@ -17799,8 +17799,8 @@ Mesh:
m_CookingOptions: 30
m_BakedConvexCollisionMesh:
m_BakedTriangleCollisionMesh:
- m_MeshMetrics[0]: 1
- m_MeshMetrics[1]: 1
+ 'm_MeshMetrics[0]': 1
+ 'm_MeshMetrics[1]': 1
m_MeshOptimizationFlags: 1
m_StreamData:
serializedVersion: 2
@@ -18061,8 +18061,8 @@ Mesh:
m_CookingOptions: 30
m_BakedConvexCollisionMesh:
m_BakedTriangleCollisionMesh:
- m_MeshMetrics[0]: 1
- m_MeshMetrics[1]: 1
+ 'm_MeshMetrics[0]': 1
+ 'm_MeshMetrics[1]': 1
m_MeshOptimizationFlags: 1
m_StreamData:
serializedVersion: 2
@@ -18307,8 +18307,8 @@ Mesh:
m_CookingOptions: 30
m_BakedConvexCollisionMesh:
m_BakedTriangleCollisionMesh:
- m_MeshMetrics[0]: 1
- m_MeshMetrics[1]: 1
+ 'm_MeshMetrics[0]': 1
+ 'm_MeshMetrics[1]': 1
m_MeshOptimizationFlags: 1
m_StreamData:
serializedVersion: 2
@@ -19657,8 +19657,8 @@ Mesh:
m_CookingOptions: 30
m_BakedConvexCollisionMesh:
m_BakedTriangleCollisionMesh:
- m_MeshMetrics[0]: 1
- m_MeshMetrics[1]: 1
+ 'm_MeshMetrics[0]': 1
+ 'm_MeshMetrics[1]': 1
m_MeshOptimizationFlags: 1
m_StreamData:
serializedVersion: 2
@@ -19774,7 +19774,6 @@ MonoBehaviour:
- {fileID: 11400000, guid: 0f693e29ca953e1439e10cb8f12e4b30, type: 2}
- {fileID: 11400000, guid: c4a1f7e92b6d8a4e3f0c9b1d6e5a2f80, type: 2}
- {fileID: 11400000, guid: d5b2e8fa3c7e9b5f4a1d0c2e7f6b3a91, type: 2}
- - {fileID: 11400000, guid: 04219895bbea4fb9a94fd62fef35bf2a, type: 2}
startingDeck:
- {fileID: 11400000, guid: d5b2e8fa3c7e9b5f4a1d0c2e7f6b3a91, type: 2}
- {fileID: 11400000, guid: 0f693e29ca953e1439e10cb8f12e4b30, type: 2}
@@ -19910,7 +19909,6 @@ MonoBehaviour:
m_EditorClassIdentifier: Assembly-CSharp::TD.Gameplay.TowerRegistry
definitions:
- {fileID: 11400000, guid: 0f693e29ca953e1439e10cb8f12e4b30, type: 2}
- - {fileID: 11400000, guid: 04219895bbea4fb9a94fd62fef35bf2a, type: 2}
--- !u!1 &1547583984
GameObject:
m_ObjectHideFlags: 0
@@ -20627,8 +20625,8 @@ Mesh:
m_CookingOptions: 30
m_BakedConvexCollisionMesh:
m_BakedTriangleCollisionMesh:
- m_MeshMetrics[0]: 1
- m_MeshMetrics[1]: 1
+ 'm_MeshMetrics[0]': 1
+ 'm_MeshMetrics[1]': 1
m_MeshOptimizationFlags: 1
m_StreamData:
serializedVersion: 2
@@ -21231,8 +21229,8 @@ Mesh:
m_CookingOptions: 30
m_BakedConvexCollisionMesh:
m_BakedTriangleCollisionMesh:
- m_MeshMetrics[0]: 1
- m_MeshMetrics[1]: 1
+ 'm_MeshMetrics[0]': 1
+ 'm_MeshMetrics[1]': 1
m_MeshOptimizationFlags: 1
m_StreamData:
serializedVersion: 2
@@ -21409,8 +21407,8 @@ Mesh:
m_CookingOptions: 30
m_BakedConvexCollisionMesh:
m_BakedTriangleCollisionMesh:
- m_MeshMetrics[0]: 1
- m_MeshMetrics[1]: 1
+ 'm_MeshMetrics[0]': 1
+ 'm_MeshMetrics[1]': 1
m_MeshOptimizationFlags: 1
m_StreamData:
serializedVersion: 2
@@ -21943,8 +21941,8 @@ Mesh:
m_CookingOptions: 30
m_BakedConvexCollisionMesh:
m_BakedTriangleCollisionMesh:
- m_MeshMetrics[0]: 1
- m_MeshMetrics[1]: 1
+ 'm_MeshMetrics[0]': 1
+ 'm_MeshMetrics[1]': 1
m_MeshOptimizationFlags: 1
m_StreamData:
serializedVersion: 2
@@ -22477,8 +22475,8 @@ Mesh:
m_CookingOptions: 30
m_BakedConvexCollisionMesh:
m_BakedTriangleCollisionMesh:
- m_MeshMetrics[0]: 1
- m_MeshMetrics[1]: 1
+ 'm_MeshMetrics[0]': 1
+ 'm_MeshMetrics[1]': 1
m_MeshOptimizationFlags: 1
m_StreamData:
serializedVersion: 2
@@ -23125,8 +23123,8 @@ Mesh:
m_CookingOptions: 30
m_BakedConvexCollisionMesh:
m_BakedTriangleCollisionMesh:
- m_MeshMetrics[0]: 1
- m_MeshMetrics[1]: 1
+ 'm_MeshMetrics[0]': 1
+ 'm_MeshMetrics[1]': 1
m_MeshOptimizationFlags: 1
m_StreamData:
serializedVersion: 2
@@ -25022,8 +25020,8 @@ Mesh:
m_CookingOptions: 30
m_BakedConvexCollisionMesh:
m_BakedTriangleCollisionMesh:
- m_MeshMetrics[0]: 1
- m_MeshMetrics[1]: 1
+ 'm_MeshMetrics[0]': 1
+ 'm_MeshMetrics[1]': 1
m_MeshOptimizationFlags: 1
m_StreamData:
serializedVersion: 2
@@ -25556,8 +25554,8 @@ Mesh:
m_CookingOptions: 30
m_BakedConvexCollisionMesh:
m_BakedTriangleCollisionMesh:
- m_MeshMetrics[0]: 1
- m_MeshMetrics[1]: 1
+ 'm_MeshMetrics[0]': 1
+ 'm_MeshMetrics[1]': 1
m_MeshOptimizationFlags: 1
m_StreamData:
serializedVersion: 2
@@ -26183,8 +26181,8 @@ Mesh:
m_CookingOptions: 30
m_BakedConvexCollisionMesh:
m_BakedTriangleCollisionMesh:
- m_MeshMetrics[0]: 1
- m_MeshMetrics[1]: 1
+ 'm_MeshMetrics[0]': 1
+ 'm_MeshMetrics[1]': 1
m_MeshOptimizationFlags: 1
m_StreamData:
serializedVersion: 2
@@ -27141,8 +27139,8 @@ Mesh:
m_CookingOptions: 30
m_BakedConvexCollisionMesh:
m_BakedTriangleCollisionMesh:
- m_MeshMetrics[0]: 1
- m_MeshMetrics[1]: 1
+ 'm_MeshMetrics[0]': 1
+ 'm_MeshMetrics[1]': 1
m_MeshOptimizationFlags: 1
m_StreamData:
serializedVersion: 2
@@ -27389,8 +27387,8 @@ Mesh:
m_CookingOptions: 30
m_BakedConvexCollisionMesh:
m_BakedTriangleCollisionMesh:
- m_MeshMetrics[0]: 1
- m_MeshMetrics[1]: 1
+ 'm_MeshMetrics[0]': 1
+ 'm_MeshMetrics[1]': 1
m_MeshOptimizationFlags: 1
m_StreamData:
serializedVersion: 2
@@ -27567,8 +27565,8 @@ Mesh:
m_CookingOptions: 30
m_BakedConvexCollisionMesh:
m_BakedTriangleCollisionMesh:
- m_MeshMetrics[0]: 1
- m_MeshMetrics[1]: 1
+ 'm_MeshMetrics[0]': 1
+ 'm_MeshMetrics[1]': 1
m_MeshOptimizationFlags: 1
m_StreamData:
serializedVersion: 2
@@ -27745,8 +27743,8 @@ Mesh:
m_CookingOptions: 30
m_BakedConvexCollisionMesh:
m_BakedTriangleCollisionMesh:
- m_MeshMetrics[0]: 1
- m_MeshMetrics[1]: 1
+ 'm_MeshMetrics[0]': 1
+ 'm_MeshMetrics[1]': 1
m_MeshOptimizationFlags: 1
m_StreamData:
serializedVersion: 2
@@ -28349,8 +28347,8 @@ Mesh:
m_CookingOptions: 30
m_BakedConvexCollisionMesh:
m_BakedTriangleCollisionMesh:
- m_MeshMetrics[0]: 1
- m_MeshMetrics[1]: 1
+ 'm_MeshMetrics[0]': 1
+ 'm_MeshMetrics[1]': 1
m_MeshOptimizationFlags: 1
m_StreamData:
serializedVersion: 2
diff --git a/Assets/_Project/Scenes/Levels/Main.unity b/Assets/_Project/Scenes/Levels/Main.unity
index ccfea25..9c9afa2 100644
--- a/Assets/_Project/Scenes/Levels/Main.unity
+++ b/Assets/_Project/Scenes/Levels/Main.unity
@@ -1842,7 +1842,6 @@ MonoBehaviour:
towerDefinitions:
- {fileID: 0}
- {fileID: 11400000, guid: 0f693e29ca953e1439e10cb8f12e4b30, type: 2}
- - {fileID: 11400000, guid: 04219895bbea4fb9a94fd62fef35bf2a, type: 2}
--- !u!4 &1507514109
Transform:
m_ObjectHideFlags: 0
@@ -1904,7 +1903,6 @@ MonoBehaviour:
m_EditorClassIdentifier: Assembly-CSharp::TD.Gameplay.TowerRegistry
definitions:
- {fileID: 11400000, guid: 0f693e29ca953e1439e10cb8f12e4b30, type: 2}
- - {fileID: 11400000, guid: 04219895bbea4fb9a94fd62fef35bf2a, type: 2}
--- !u!1 &1597884408
GameObject:
m_ObjectHideFlags: 0
diff --git a/Assets/_Project/Scripts/Editor/Towers.meta b/Assets/_Project/Scripts/Editor/Towers.meta
deleted file mode 100644
index a821b80..0000000
--- a/Assets/_Project/Scripts/Editor/Towers.meta
+++ /dev/null
@@ -1,8 +0,0 @@
-fileFormatVersion: 2
-guid: 2bef66c4dde743cc87f8272b863c12d4
-folderAsset: yes
-DefaultImporter:
- externalObjects: {}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Assets/_Project/Scripts/Editor/Towers/TowerIconGenerator.cs b/Assets/_Project/Scripts/Editor/Towers/TowerIconGenerator.cs
deleted file mode 100644
index 15ceab8..0000000
--- a/Assets/_Project/Scripts/Editor/Towers/TowerIconGenerator.cs
+++ /dev/null
@@ -1,190 +0,0 @@
-// Assets/_Project/Scripts/Editor/Towers/TowerIconGenerator.cs
-using System.Collections.Generic;
-using System.IO;
-using UnityEditor;
-using UnityEngine;
-using TD.Towers;
-
-namespace TD.Towers.Editor
-{
- ///
- /// Editor utility that renders each 's prefab to a square
- /// thumbnail PNG and assigns it back to the definition's Icon field, so the HUD
- /// build menu shows "how the building looks when built" on each tower tile.
- ///
- ///
- /// Run via TD > Generate Tower Icons. Uses
- /// (synchronous, controllable) rather than the async AssetPreview API so the whole
- /// pass completes within the menu callback. Generated PNGs are written to
- /// Assets/_Project/Art/Sprites/Towers/, imported as Sprites, and wired onto the
- /// matching asset. Re-running regenerates and overwrites in place.
- ///
- public static class TowerIconGenerator
- {
- private const string OutputFolder = "Assets/_Project/Art/Sprites/Towers";
- private const int IconSize = 128;
-
- [MenuItem("TD/Generate Tower Icons")]
- public static void GenerateAll()
- {
- EnsureFolder(OutputFolder);
-
- string[] guids = AssetDatabase.FindAssets("t:TowerDefinition");
- if (guids.Length == 0)
- {
- Debug.LogWarning("[TowerIconGenerator] No TowerDefinition assets found.");
- return;
- }
-
- int generated = 0;
- try
- {
- foreach (string guid in guids)
- {
- string defPath = AssetDatabase.GUIDToAssetPath(guid);
- var def = AssetDatabase.LoadAssetAtPath(defPath);
- if (def == null || def.TowerPrefab == null)
- {
- Debug.LogWarning($"[TowerIconGenerator] Skipping '{defPath}' — " +
- "missing TowerDefinition or TowerPrefab.");
- continue;
- }
-
- Texture2D icon = RenderPrefabIcon(def.TowerPrefab);
- if (icon == null) continue;
-
- string pngPath = $"{OutputFolder}/{def.name}.png";
- File.WriteAllBytes(pngPath, icon.EncodeToPNG());
- Object.DestroyImmediate(icon);
-
- AssetDatabase.ImportAsset(pngPath, ImportAssetOptions.ForceSynchronousImport);
- ConfigureAsSprite(pngPath);
-
- var sprite = AssetDatabase.LoadAssetAtPath(pngPath);
- AssignIcon(def, sprite);
- generated++;
- }
- }
- finally
- {
- AssetDatabase.SaveAssets();
- AssetDatabase.Refresh();
- }
-
- Debug.Log($"[TowerIconGenerator] Generated {generated} tower icon(s) into {OutputFolder}.");
- }
-
- // ----- Rendering --------------------------------------------------
-
- private static Texture2D RenderPrefabIcon(GameObject prefab)
- {
- var pru = new PreviewRenderUtility();
- GameObject instance = null;
- try
- {
- instance = Object.Instantiate(prefab);
- instance.hideFlags = HideFlags.HideAndDontSave;
- pru.AddSingleGO(instance);
-
- if (!TryGetWorldBounds(instance, out Bounds bounds))
- {
- Debug.LogWarning($"[TowerIconGenerator] '{prefab.name}' has no renderers to capture.");
- return null;
- }
-
- // 3/4 view framed to the prefab's combined bounds.
- const float fov = 30f;
- float radius = Mathf.Max(bounds.extents.magnitude, 0.01f);
- float distance = radius / Mathf.Sin(Mathf.Deg2Rad * fov * 0.5f) * 1.15f;
- Quaternion dir = Quaternion.Euler(20f, 135f, 0f);
-
- var cam = pru.camera;
- cam.fieldOfView = fov;
- cam.transform.rotation = dir;
- cam.transform.position = bounds.center - dir * Vector3.forward * distance;
- cam.nearClipPlane = 0.01f;
- cam.farClipPlane = distance * 4f;
- cam.clearFlags = CameraClearFlags.SolidColor;
- cam.backgroundColor = new Color(0f, 0f, 0f, 0f); // transparent
-
- pru.lights[0].intensity = 1.2f;
- pru.lights[0].transform.rotation = Quaternion.Euler(40f, 40f, 0f);
- pru.lights[1].intensity = 0.6f;
- pru.ambientColor = new Color(0.35f, 0.35f, 0.35f, 1f);
-
- var rect = new Rect(0, 0, IconSize, IconSize);
- pru.BeginPreview(rect, GUIStyle.none);
- pru.camera.Render();
- Texture rendered = pru.EndPreview();
-
- var result = new Texture2D(IconSize, IconSize, TextureFormat.RGBA32, false);
- RenderTexture prev = RenderTexture.active;
- RenderTexture.active = rendered as RenderTexture;
- result.ReadPixels(rect, 0, 0);
- result.Apply();
- RenderTexture.active = prev;
- return result;
- }
- finally
- {
- if (instance != null) Object.DestroyImmediate(instance);
- pru.Cleanup();
- }
- }
-
- private static bool TryGetWorldBounds(GameObject go, out Bounds bounds)
- {
- var renderers = go.GetComponentsInChildren();
- bounds = default;
- bool any = false;
- foreach (var r in renderers)
- {
- // Skip projector/decal-style renderers that don't represent the tower body.
- if (r is MeshRenderer || r is SkinnedMeshRenderer)
- {
- if (!any) { bounds = r.bounds; any = true; }
- else { bounds.Encapsulate(r.bounds); }
- }
- }
- return any;
- }
-
- // ----- Asset wiring -----------------------------------------------
-
- private static void ConfigureAsSprite(string pngPath)
- {
- var importer = AssetImporter.GetAtPath(pngPath) as TextureImporter;
- if (importer == null) return;
-
- importer.textureType = TextureImporterType.Sprite;
- importer.spriteImportMode = SpriteImportMode.Single;
- importer.alphaIsTransparency = true;
- importer.mipmapEnabled = false;
- importer.SaveAndReimport();
- }
-
- private static void AssignIcon(TowerDefinition def, Sprite sprite)
- {
- if (sprite == null) return;
- var so = new SerializedObject(def);
- so.FindProperty("Icon").objectReferenceValue = sprite;
- so.ApplyModifiedPropertiesWithoutUndo();
- EditorUtility.SetDirty(def);
- }
-
- private static void EnsureFolder(string assetFolder)
- {
- if (AssetDatabase.IsValidFolder(assetFolder)) return;
-
- string[] parts = assetFolder.Split('/');
- string current = parts[0]; // "Assets"
- for (int i = 1; i < parts.Length; i++)
- {
- string next = $"{current}/{parts[i]}";
- if (!AssetDatabase.IsValidFolder(next))
- AssetDatabase.CreateFolder(current, parts[i]);
- current = next;
- }
- }
- }
-}
diff --git a/Assets/_Project/Scripts/Editor/Towers/TowerIconGenerator.cs.meta b/Assets/_Project/Scripts/Editor/Towers/TowerIconGenerator.cs.meta
deleted file mode 100644
index 01731bf..0000000
--- a/Assets/_Project/Scripts/Editor/Towers/TowerIconGenerator.cs.meta
+++ /dev/null
@@ -1,11 +0,0 @@
-fileFormatVersion: 2
-guid: de83f68d5958449185d2a0c8199c41ec
-MonoImporter:
- externalObjects: {}
- serializedVersion: 2
- defaultReferences: []
- executionOrder: 0
- icon: {instanceID: 0}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Assets/_Project/Scripts/Towers/TowerDefinition.cs b/Assets/_Project/Scripts/Towers/TowerDefinition.cs
index 8d80828..a106ebf 100644
--- a/Assets/_Project/Scripts/Towers/TowerDefinition.cs
+++ b/Assets/_Project/Scripts/Towers/TowerDefinition.cs
@@ -68,11 +68,6 @@ namespace TD.Towers
"replace with a real mesh when art is available.")]
public GameObject TowerPrefab;
- [Tooltip("Icon shown on this tower's tile in the HUD build menu. Auto-generated from " +
- "the TowerPrefab by the 'TD/Generate Tower Icons' menu item, or assign a " +
- "Sprite manually. Null falls back to the grey placeholder icon.")]
- public Sprite Icon;
-
// -------------------------------------------------------------------
// Combat
// -------------------------------------------------------------------
diff --git a/Assets/_Project/Scripts/UI/HUDController.cs b/Assets/_Project/Scripts/UI/HUDController.cs
index 28b4558..ccef8f0 100644
--- a/Assets/_Project/Scripts/UI/HUDController.cs
+++ b/Assets/_Project/Scripts/UI/HUDController.cs
@@ -858,15 +858,6 @@ namespace TD.UI
Debug.LogWarning("[HUDController] No TowerPlacementController assigned.");
});
- // Show the tower's thumbnail on the icon placeholder. Falls back to the grey
- // placeholder square when no Icon is assigned (see CreatePaintButton for the pattern).
- if (def.Icon != null)
- {
- var icon = btn.Q(null, "cmd-icon-placeholder");
- if (icon != null)
- icon.style.backgroundImage = new StyleBackground(def.Icon);
- }
-
btn.RegisterCallback(_ => ShowTooltip(def));
btn.RegisterCallback(_ => ClearTooltip());
return btn;
diff --git a/Assets/_Project/Scripts/Visuals.meta b/Assets/_Project/Scripts/Visuals.meta
deleted file mode 100644
index 367f7c2..0000000
--- a/Assets/_Project/Scripts/Visuals.meta
+++ /dev/null
@@ -1,8 +0,0 @@
-fileFormatVersion: 2
-guid: 16f3da2efd0d4431888e3f04056646c2
-folderAsset: yes
-DefaultImporter:
- externalObjects: {}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Assets/_Project/Scripts/Visuals/ConeMesh.cs b/Assets/_Project/Scripts/Visuals/ConeMesh.cs
deleted file mode 100644
index 7b0f322..0000000
--- a/Assets/_Project/Scripts/Visuals/ConeMesh.cs
+++ /dev/null
@@ -1,132 +0,0 @@
-// Assets/_Project/Scripts/Visuals/ConeMesh.cs
-using UnityEngine;
-
-namespace TD.Visuals
-{
- ///
- /// Procedurally generates a cone mesh and assigns it to the GameObject's
- /// . Unity ships no built-in cone primitive, so this
- /// fills that gap for tower visuals (e.g. the Basic Arrow Tower).
- ///
- ///
- /// Visual only. No networking, no collision — the mesh is purely cosmetic.
- /// The existing MeshRenderer + material (and any owner/paint tinting via
- /// TowerInstance.tintedRenderers) keep working unchanged.
- ///
- /// Pivot. The cone is centred on the local origin: its base ring sits at
- /// y = -height/2 and its apex at y = +height/2, matching the vertical
- /// extents of a unit cube so it sits on a build tile the same way the old cube did.
- ///
- /// Edit-time. [ExecuteAlways] rebuilds the mesh in the editor so the
- /// cone is visible without entering play mode. The generated mesh is flagged
- /// HideFlags.DontSave so it is never written out as a project asset.
- ///
- [ExecuteAlways]
- [RequireComponent(typeof(MeshFilter))]
- public class ConeMesh : MonoBehaviour
- {
- [Tooltip("Number of radial segments around the base. Higher = smoother circle.")]
- [Range(3, 64)]
- [SerializeField] private int sides = 16;
-
- [Tooltip("Radius of the cone's base in local units.")]
- [Min(0.001f)]
- [SerializeField] private float radius = 0.5f;
-
- [Tooltip("Height of the cone from base to apex in local units.")]
- [Min(0.001f)]
- [SerializeField] private float height = 1f;
-
- [Tooltip("Rotation of the base ring around the vertical axis, in degrees. With a low " +
- "side count this makes a pyramid; e.g. sides = 4 with a 45° offset and " +
- "radius 0.7071 yields a square-based pyramid whose faces align to the X/Z axes.")]
- [SerializeField] private float angularOffsetDegrees = 0f;
-
- private Mesh mesh;
-
- private void OnEnable() => Rebuild();
-
- private void OnValidate()
- {
- // OnValidate can fire before OnEnable in the editor; guard the component.
- if (isActiveAndEnabled) Rebuild();
- }
-
- private void OnDisable()
- {
- // Clean up the generated mesh so it doesn't linger when the object is destroyed.
- if (mesh != null)
- {
- if (Application.isPlaying) Destroy(mesh);
- else DestroyImmediate(mesh);
- mesh = null;
- }
- }
-
- private void Rebuild()
- {
- var filter = GetComponent();
- if (filter == null) return;
-
- if (mesh == null)
- {
- mesh = new Mesh { name = "ProceduralCone", hideFlags = HideFlags.DontSave };
- }
-
- BuildCone(mesh);
- filter.sharedMesh = mesh;
- }
-
- private void BuildCone(Mesh target)
- {
- target.Clear();
-
- float halfHeight = height * 0.5f;
-
- // Vertex layout:
- // [0 .. sides-1] base ring
- // [sides] apex
- // [sides + 1] base centre (for the bottom cap)
- int baseRingStart = 0;
- int apexIndex = sides;
- int baseCentreIndex = sides + 1;
-
- var vertices = new Vector3[sides + 2];
- for (int i = 0; i < sides; i++)
- {
- float angle = (i / (float)sides) * Mathf.PI * 2f
- + angularOffsetDegrees * Mathf.Deg2Rad;
- vertices[baseRingStart + i] = new Vector3(
- Mathf.Cos(angle) * radius,
- -halfHeight,
- Mathf.Sin(angle) * radius);
- }
- vertices[apexIndex] = new Vector3(0f, halfHeight, 0f);
- vertices[baseCentreIndex] = new Vector3(0f, -halfHeight, 0f);
-
- // Side faces (base ring -> apex) + base cap (fan from centre).
- // Wind both so they face outward / downward respectively.
- var triangles = new int[sides * 3 * 2];
- int t = 0;
- for (int i = 0; i < sides; i++)
- {
- int next = (i + 1) % sides;
-
- // Side triangle, outward-facing.
- triangles[t++] = baseRingStart + i;
- triangles[t++] = apexIndex;
- triangles[t++] = baseRingStart + next;
-
- // Base cap triangle, downward-facing.
- triangles[t++] = baseCentreIndex;
- triangles[t++] = baseRingStart + next;
- triangles[t++] = baseRingStart + i;
- }
-
- target.vertices = vertices;
- target.triangles = triangles;
- target.RecalculateNormals();
- target.RecalculateBounds();
- }
- }
-}
diff --git a/Assets/_Project/Scripts/Visuals/ConeMesh.cs.meta b/Assets/_Project/Scripts/Visuals/ConeMesh.cs.meta
deleted file mode 100644
index 2db0b9d..0000000
--- a/Assets/_Project/Scripts/Visuals/ConeMesh.cs.meta
+++ /dev/null
@@ -1,11 +0,0 @@
-fileFormatVersion: 2
-guid: 93bc533262394e1e8b122bbfad89391a
-MonoImporter:
- externalObjects: {}
- serializedVersion: 2
- defaultReferences: []
- executionOrder: 0
- icon: {instanceID: 0}
- userData:
- assetBundleName:
- assetBundleVariant: