From bbf418e7794495ee196394d2658e5c4e243b82b8 Mon Sep 17 00:00:00 2001 From: Luis Gonzalez Date: Sat, 11 Jul 2026 16:15:38 -0700 Subject: [PATCH] =?UTF-8?q?Hazard:=20destructible=20cover=20=E2=80=94=20ca?= =?UTF-8?q?rve-able=20rocks=20that=20genuinely=20block=20until=20broken?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Phase 1.5 long-term #8, the LAST 1.5 item (design review wf_e14dd739-069: both HIGHs + the distinct MEDs verified before the session limit ate the duplicate verifiers; unverified leftovers reasoned-closed in the spec). Cover = a BlightClutter ghost (Variant 4) with a baked Environment-layer BoxCollider: the runtime ghost's collider joins BuildPhysicsWorld -> blocks the player CC and the enemy sweep while alive, and the gap opens the instant the entity dies. Both hit paths already break it (the clutter chassis); 8 hits to carve. Review folds: - HIGH: the 07-07 anti-stuck nudge would phase enemies THROUGH cover after ~1.5s (it exists to prevent room soft-locks). The nudge is now COVER-AWARE: a SphereCast identifies the blocker; a live BlightClutter ghost suppresses the phase (no soft-lock possible - the blocker is destructible); static-geometry wedges still nudge. - HIGH: yield==durability made tanky cover an economy faucet. Deposit is DECOUPLED from the decrement at both hit sites: ScrapPerHit=0 = breaks in Remaining hits, yields NOTHING; fractional POSITIVE yields still credit >=1 (the B1 immortal-sink test pinned this - zero means zero, positive floors to 1). - MEDs: HitRadius 1.2 (visual core, not a shot-eating disc), NO cover in Boss rooms (no boss depenetration backstop), scatter keep-out >=7u from the room origin (player landing + portal), Variant=4 explicit (the clutter block's explosive reroll cannot leak). - Old static layer removed: 8 WorldColliders_RoomCover colliders (subscene) + the RoomCover_Visuals root (Game.unity). Verified live: 3 cover ghosts spawned with SOLID baked colliders; BLOCK - NudgeUntilTick stayed 0 across 3.5s of forced zero-progress (old code arms at 1.5s); DEPENETRATE - an enemy shoved inside a live rock exited to 1.7u (backstop holds against ghost colliders); CARVE - the rock died to the real sweep and the spot probed OPEN. 470/470 EditMode; console clean. Co-Authored-By: Claude Fable 5 --- Assets/Scenes/Game.unity | 761 +----------------- Assets/_Project/Prefabs/CoverRock.prefab | 203 +++++ Assets/_Project/Prefabs/CoverRock.prefab.meta | 7 + .../Economy/BlightClutterAuthoring.cs | 4 +- .../Economy/CoverFieldSpawnerAuthoring.cs | 35 + .../CoverFieldSpawnerAuthoring.cs.meta | 2 + .../Scripts/Server/Combat/EnemyAISystem.cs | 20 +- .../Server/Economy/ResourceHarvestSystem.cs | 10 +- .../Scripts/Server/Economy/RoomFieldSystem.cs | 27 + .../Simulation/Economy/CoverFieldSpawner.cs | 22 + .../Economy/CoverFieldSpawner.cs.meta | 2 + .../Simulation/Player/MeleeComboSystem.cs | 15 +- Assets/_Project/Subscenes/Gameplay.unity | 489 ++--------- 13 files changed, 386 insertions(+), 1211 deletions(-) create mode 100644 Assets/_Project/Prefabs/CoverRock.prefab create mode 100644 Assets/_Project/Prefabs/CoverRock.prefab.meta create mode 100644 Assets/_Project/Scripts/Authoring/Economy/CoverFieldSpawnerAuthoring.cs create mode 100644 Assets/_Project/Scripts/Authoring/Economy/CoverFieldSpawnerAuthoring.cs.meta create mode 100644 Assets/_Project/Scripts/Simulation/Economy/CoverFieldSpawner.cs create mode 100644 Assets/_Project/Scripts/Simulation/Economy/CoverFieldSpawner.cs.meta diff --git a/Assets/Scenes/Game.unity b/Assets/Scenes/Game.unity index fbf25bdbf..01f121aa3 100644 --- a/Assets/Scenes/Game.unity +++ b/Assets/Scenes/Game.unity @@ -2200,96 +2200,6 @@ Transform: m_CorrespondingSourceObject: {fileID: 1058388337777710864, guid: 4b5b62e8ff478c144863c2750ad3fb24, type: 3} m_PrefabInstance: {fileID: 44753596} m_PrefabAsset: {fileID: 0} ---- !u!1 &44814211 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 44814212} - - component: {fileID: 44814214} - - component: {fileID: 44814213} - m_Layer: 0 - m_Name: CoverRock_S0_2 - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &44814212 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 44814211} - serializedVersion: 2 - m_LocalRotation: {x: -0, y: 0.34202015, z: -0, w: 0.9396927} - m_LocalPosition: {x: 995, y: 0, z: -9} - m_LocalScale: {x: 1.2801043, y: 1.2801043, z: 1.2801043} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 1851179016} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!23 &44814213 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 44814211} - 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: 9ad3d533612e9404fa35e1d900ab70a9, 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!33 &44814214 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 44814211} - m_Mesh: {fileID: -2709579467351344360, guid: d68b1794e4e664d45925e6fe3eedfae2, type: 3} --- !u!1001 &45326438 PrefabInstance: m_ObjectHideFlags: 0 @@ -3474,6 +3384,7 @@ MonoBehaviour: Enabled: 1 MaxProjectileLights: 24 ProjectileColor: {r: 0.45, g: 0.85, b: 1, a: 1} + EnemyProjectileColor: {r: 0.55, g: 1, b: 0.35, a: 1} ProjectileIntensity: 2.6 ProjectileRange: 7 PortalColor: {r: 0.55, g: 0.95, b: 1, a: 1} @@ -30237,96 +30148,6 @@ Transform: m_CorrespondingSourceObject: {fileID: 8315364206485325802, guid: 6bf6dfab11a30084c9736d3b991fdaf6, type: 3} m_PrefabInstance: {fileID: 751562110} m_PrefabAsset: {fileID: 0} ---- !u!1 &752380414 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 752380415} - - component: {fileID: 752380417} - - component: {fileID: 752380416} - m_Layer: 0 - m_Name: CoverRock_S1_2 - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &752380415 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 752380414} - serializedVersion: 2 - m_LocalRotation: {x: -0, y: 0.34202015, z: -0, w: 0.9396927} - m_LocalPosition: {x: 1495, y: 0, z: -9} - m_LocalScale: {x: 1.2801043, y: 1.2801043, z: 1.2801043} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 1851179016} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!23 &752380416 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 752380414} - 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: 9ad3d533612e9404fa35e1d900ab70a9, 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!33 &752380417 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 752380414} - m_Mesh: {fileID: -2709579467351344360, guid: d68b1794e4e664d45925e6fe3eedfae2, type: 3} --- !u!1001 &752493985 PrefabInstance: m_ObjectHideFlags: 0 @@ -31867,96 +31688,6 @@ Transform: m_CorrespondingSourceObject: {fileID: 74766642427550001, guid: ab41e12e3193e5241a054da74ad6cee7, type: 3} m_PrefabInstance: {fileID: 801385345} m_PrefabAsset: {fileID: 0} ---- !u!1 &801747704 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 801747705} - - component: {fileID: 801747707} - - component: {fileID: 801747706} - m_Layer: 0 - m_Name: CoverRock_S0_0 - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &801747705 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 801747704} - serializedVersion: 2 - m_LocalRotation: {x: -0, y: 0.1305262, z: -0, w: 0.9914449} - m_LocalPosition: {x: 993, y: 0, z: 6} - m_LocalScale: {x: 1.6780516, y: 1.6780518, z: 1.6780516} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 1851179016} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!23 &801747706 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 801747704} - 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: 9ad3d533612e9404fa35e1d900ab70a9, 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!33 &801747707 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 801747704} - m_Mesh: {fileID: -2980332487971928681, guid: b26ded2dffadca04da4b267610d057ab, type: 3} --- !u!1001 &804084884 PrefabInstance: m_ObjectHideFlags: 0 @@ -36458,96 +36189,6 @@ Transform: m_CorrespondingSourceObject: {fileID: 8227573149044680746, guid: b33befb41106070409d86b725f2476e2, type: 3} m_PrefabInstance: {fileID: 912324564} m_PrefabAsset: {fileID: 0} ---- !u!1 &913094309 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 913094310} - - component: {fileID: 913094312} - - component: {fileID: 913094311} - m_Layer: 0 - m_Name: CoverRock_S1_1 - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &913094310 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 913094309} - serializedVersion: 2 - m_LocalRotation: {x: -0, y: 0.57357645, z: -0, w: 0.81915206} - m_LocalPosition: {x: 1508, y: 0, z: 5} - m_LocalScale: {x: 1.6780516, y: 1.6780518, z: 1.6780516} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 1851179016} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!23 &913094311 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 913094309} - 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: 9ad3d533612e9404fa35e1d900ab70a9, 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!33 &913094312 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 913094309} - m_Mesh: {fileID: -2980332487971928681, guid: b26ded2dffadca04da4b267610d057ab, type: 3} --- !u!1001 &913121664 PrefabInstance: m_ObjectHideFlags: 0 @@ -48598,96 +48239,6 @@ Transform: m_CorrespondingSourceObject: {fileID: 591573043354113928, guid: bafd1387c024a3a459afa35dd24cec25, type: 3} m_PrefabInstance: {fileID: 1241775351} m_PrefabAsset: {fileID: 0} ---- !u!1 &1247362408 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1247362409} - - component: {fileID: 1247362411} - - component: {fileID: 1247362410} - m_Layer: 0 - m_Name: CoverRock_S1_3 - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &1247362409 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1247362408} - serializedVersion: 2 - m_LocalRotation: {x: -0, y: 0.86602545, z: -0, w: 0.49999997} - m_LocalPosition: {x: 1509, y: 0, z: -7} - m_LocalScale: {x: 1.8546886, y: 1.8546889, z: 1.8546886} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 1851179016} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!23 &1247362410 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1247362408} - 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: 9ad3d533612e9404fa35e1d900ab70a9, 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!33 &1247362411 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1247362408} - m_Mesh: {fileID: -2980332487971928681, guid: b26ded2dffadca04da4b267610d057ab, type: 3} --- !u!1001 &1247686665 PrefabInstance: m_ObjectHideFlags: 0 @@ -53015,96 +52566,6 @@ Transform: m_CorrespondingSourceObject: {fileID: 6875251685013686615, guid: 3e44b897679ea1e458c6a0a8c84ef8ac, type: 3} m_PrefabInstance: {fileID: 1357398796} m_PrefabAsset: {fileID: 0} ---- !u!1 &1361156333 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1361156334} - - component: {fileID: 1361156336} - - component: {fileID: 1361156335} - m_Layer: 0 - m_Name: CoverRock_S0_1 - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &1361156334 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1361156333} - serializedVersion: 2 - m_LocalRotation: {x: -0, y: 0.57357645, z: -0, w: 0.81915206} - m_LocalPosition: {x: 1008, y: 0, z: 5} - m_LocalScale: {x: 1.6780516, y: 1.6780518, z: 1.6780516} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 1851179016} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!23 &1361156335 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1361156333} - 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: 9ad3d533612e9404fa35e1d900ab70a9, 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!33 &1361156336 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1361156333} - m_Mesh: {fileID: -2980332487971928681, guid: b26ded2dffadca04da4b267610d057ab, type: 3} --- !u!1 &1370587944 GameObject: m_ObjectHideFlags: 0 @@ -68965,96 +68426,6 @@ Transform: - {fileID: 807647776} m_Father: {fileID: 423312854} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1834212430 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1834212431} - - component: {fileID: 1834212433} - - component: {fileID: 1834212432} - m_Layer: 0 - m_Name: CoverRock_S0_3 - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &1834212431 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1834212430} - serializedVersion: 2 - m_LocalRotation: {x: -0, y: 0.86602545, z: -0, w: 0.49999997} - m_LocalPosition: {x: 1009, y: 0, z: -7} - m_LocalScale: {x: 1.8546886, y: 1.8546889, z: 1.8546886} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 1851179016} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!23 &1834212432 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1834212430} - 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: 9ad3d533612e9404fa35e1d900ab70a9, 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!33 &1834212433 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1834212430} - m_Mesh: {fileID: -2980332487971928681, guid: b26ded2dffadca04da4b267610d057ab, type: 3} --- !u!1001 &1840780466 PrefabInstance: m_ObjectHideFlags: 0 @@ -69583,45 +68954,6 @@ Transform: m_CorrespondingSourceObject: {fileID: 5731770526695229474, guid: b580bce9b46b41e49aa07bbf1145e610, type: 3} m_PrefabInstance: {fileID: 1850925310} m_PrefabAsset: {fileID: 0} ---- !u!1 &1851179015 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1851179016} - m_Layer: 0 - m_Name: RoomCover_Visuals - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &1851179016 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1851179015} - 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: 801747705} - - {fileID: 1361156334} - - {fileID: 44814212} - - {fileID: 1834212431} - - {fileID: 1851924120} - - {fileID: 913094310} - - {fileID: 752380415} - - {fileID: 1247362409} - m_Father: {fileID: 0} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1851908148 GameObject: m_ObjectHideFlags: 0 @@ -69712,96 +69044,6 @@ MeshFilter: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1851908148} m_Mesh: {fileID: 6900561688886725036, guid: d02afc6bc2148dd4a9e7d81b46df4b06, type: 3} ---- !u!1 &1851924119 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1851924120} - - component: {fileID: 1851924122} - - component: {fileID: 1851924121} - m_Layer: 0 - m_Name: CoverRock_S1_0 - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &1851924120 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1851924119} - serializedVersion: 2 - m_LocalRotation: {x: -0, y: 0.1305262, z: -0, w: 0.9914449} - m_LocalPosition: {x: 1493, y: 0, z: 6} - m_LocalScale: {x: 1.6780516, y: 1.6780518, z: 1.6780516} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 1851179016} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!23 &1851924121 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1851924119} - 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: 9ad3d533612e9404fa35e1d900ab70a9, 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!33 &1851924122 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1851924119} - m_Mesh: {fileID: -2980332487971928681, guid: b26ded2dffadca04da4b267610d057ab, type: 3} --- !u!1001 &1857983222 PrefabInstance: m_ObjectHideFlags: 0 @@ -81382,7 +80624,6 @@ SceneRoots: - {fileID: 1913270911} - {fileID: 433101879} - {fileID: 1709609454} - - {fileID: 1851179016} - {fileID: 70737666} - {fileID: 1276835916} - {fileID: 1007206783} diff --git a/Assets/_Project/Prefabs/CoverRock.prefab b/Assets/_Project/Prefabs/CoverRock.prefab new file mode 100644 index 000000000..3de23e313 --- /dev/null +++ b/Assets/_Project/Prefabs/CoverRock.prefab @@ -0,0 +1,203 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &1085570720822716955 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7703565366570969279} + - component: {fileID: 3470614019461566012} + - component: {fileID: 2902084588362297385} + m_Layer: 8 + m_Name: Model + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &7703565366570969279 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1085570720822716955} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: -1, z: 0} + m_LocalScale: {x: 1.7, y: 1.7, z: 1.7} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 3572766465862231365} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &3470614019461566012 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1085570720822716955} + m_Mesh: {fileID: -2980332487971928681, guid: b26ded2dffadca04da4b267610d057ab, type: 3} +--- !u!23 &2902084588362297385 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1085570720822716955} + 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: 71e41e43b459a244abaf5acca76b89ee, 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!1 &3885353946372160549 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3572766465862231365} + - component: {fileID: 9053853372340598254} + - component: {fileID: 6834786618115927220} + - component: {fileID: 1664972900393443061} + - component: {fileID: 4959636876878325759} + m_Layer: 8 + m_Name: CoverRock + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &3572766465862231365 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3885353946372160549} + 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: 7703565366570969279} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &9053853372340598254 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3885353946372160549} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c16549610bfe4458aa9389201d072bb6, type: 3} + m_Name: + m_EditorClassIdentifier: Unity.Entities.Hybrid::Unity.Entities.Hybrid.Baking.LinkedEntityGroupAuthoring +--- !u!114 &6834786618115927220 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3885353946372160549} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7c79d771cedb4794bf100ce60df5f764, type: 3} + m_Name: + m_EditorClassIdentifier: Unity.NetCode.Authoring.Hybrid::Unity.NetCode.GhostAuthoringComponent + HasOwner: 0 + SupportAutoCommandTarget: 1 + TrackInterpolationDelay: 0 + GhostGroup: 0 + UsePreSerialization: 0 + UseSingleBaseline: 0 + RollbackPredictedSpawnedGhostState: 0 + RollbackPredictionOnStructuralChanges: 1 + DefaultGhostMode: 0 + SupportedGhostModes: 3 + OptimizationMode: 0 + Importance: 1 + MaxSendRate: 0 + prefabId: 8565e5eb00679fb45b8b7dac1e2ae9f3 +--- !u!114 &1664972900393443061 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3885353946372160549} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6b1aa9b83194a2c41b940dd9532377f4, type: 3} + m_Name: + m_EditorClassIdentifier: ProjectM.Authoring::ProjectM.Authoring.BlightClutterAuthoring + Remaining: 8 + ScrapPerHit: 0 + HitRadius: 1.2 + Variant: 4 +--- !u!65 &4959636876878325759 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3885353946372160549} + 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: 2.6, y: 2.6, z: 2.4} + m_Center: {x: 0, y: 0.1, z: 0} diff --git a/Assets/_Project/Prefabs/CoverRock.prefab.meta b/Assets/_Project/Prefabs/CoverRock.prefab.meta new file mode 100644 index 000000000..777ae3ddb --- /dev/null +++ b/Assets/_Project/Prefabs/CoverRock.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 25159665cc5735b44bf91ab9c8f90b76 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/_Project/Scripts/Authoring/Economy/BlightClutterAuthoring.cs b/Assets/_Project/Scripts/Authoring/Economy/BlightClutterAuthoring.cs index 3270abd3d..af4ba2847 100644 --- a/Assets/_Project/Scripts/Authoring/Economy/BlightClutterAuthoring.cs +++ b/Assets/_Project/Scripts/Authoring/Economy/BlightClutterAuthoring.cs @@ -16,8 +16,8 @@ namespace ProjectM.Authoring [Tooltip("Hit-points before the clutter shatters.")] [Min(1)] public int Remaining = 2; // one-hit pop: both hit paths decrement by max(1,(int)ScrapPerHit) - [Tooltip("Scrap (Biomass) yielded per projectile hit — the 'minor scrap' trickle.")] - [Min(1f)] public float ScrapPerHit = 2f; + [Tooltip("Scrap (Biomass) yielded per hit. 0 = DESTRUCTIBLE COVER semantics: breaks in Remaining hits, yields nothing (deposit is decoupled from the decrement at both hit sites).")] + [Min(0f)] public float ScrapPerHit = 2f; [Tooltip("Hit radius (world units) for the clear sweep.")] [Min(0f)] public float HitRadius = 1.0f; diff --git a/Assets/_Project/Scripts/Authoring/Economy/CoverFieldSpawnerAuthoring.cs b/Assets/_Project/Scripts/Authoring/Economy/CoverFieldSpawnerAuthoring.cs new file mode 100644 index 000000000..db7544d10 --- /dev/null +++ b/Assets/_Project/Scripts/Authoring/Economy/CoverFieldSpawnerAuthoring.cs @@ -0,0 +1,35 @@ +using ProjectM.Simulation; +using Unity.Entities; +using UnityEngine; + +namespace ProjectM.Authoring +{ + /// + /// Authoring for the baked singleton (mirrors ClutterFieldSpawnerAuthoring). + /// Place once in the gameplay subscene and assign the CoverRock ghost prefab; RoomFieldSystem scatters + /// destructible cover per room (never in Boss rooms) with an origin keep-out. Carries no transform. + /// + public class CoverFieldSpawnerAuthoring : MonoBehaviour + { + [Tooltip("CoverRock ghost prefab: BlightClutterAuthoring (ScrapPerHit=0, Variant=4) + an Environment-layer collider + a GhostAuthoringComponent (ownerless, interpolated).")] + public GameObject CoverPrefab; + + [Tooltip("Cover rocks per room (Boss rooms get none).")] + [Min(0)] public int Count = 3; + + private class CoverFieldSpawnerBaker : Baker + { + public override void Bake(CoverFieldSpawnerAuthoring authoring) + { + var entity = GetEntity(authoring, TransformUsageFlags.None); + AddComponent(entity, new CoverFieldSpawner + { + Prefab = authoring.CoverPrefab != null + ? GetEntity(authoring.CoverPrefab, TransformUsageFlags.Dynamic) + : Entity.Null, + Count = authoring.Count, + }); + } + } + } +} diff --git a/Assets/_Project/Scripts/Authoring/Economy/CoverFieldSpawnerAuthoring.cs.meta b/Assets/_Project/Scripts/Authoring/Economy/CoverFieldSpawnerAuthoring.cs.meta new file mode 100644 index 000000000..527a9fb40 --- /dev/null +++ b/Assets/_Project/Scripts/Authoring/Economy/CoverFieldSpawnerAuthoring.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 0a9b08ef91676fa4185406d9dec18c5e \ No newline at end of file diff --git a/Assets/_Project/Scripts/Server/Combat/EnemyAISystem.cs b/Assets/_Project/Scripts/Server/Combat/EnemyAISystem.cs index 962fe68ec..66af99e0e 100644 --- a/Assets/_Project/Scripts/Server/Combat/EnemyAISystem.cs +++ b/Assets/_Project/Scripts/Server/Combat/EnemyAISystem.cs @@ -630,8 +630,24 @@ namespace ProjectM.Server nav.ValueRW.LastPos = npos; if (st >= StuckUnstickTicks) { - nav.ValueRW.NudgeUntilTick = TickUtil.NonZero(now + NudgeBurstTicks); - st = 0u; + // COVER-AWARE (destructible-cover review wf_e14dd739-069 HIGH): if what blocks this enemy + // is a LIVE cover GHOST (BlightClutter carrier), do NOT phase-nudge — cover must genuinely + // hold until the player breaks it. No soft-lock is possible: the blocker is destructible, + // and the counter stays primed so any OTHER wedge (static geometry) still nudges next check. + bool blockedByCover = false; + if (havePhysics) + { + float3 toTgt = nTarget - npos; toTgt.y = 0f; + float tl = math.length(toTgt); + if (tl > 1e-4f && physics.CollisionWorld.SphereCast( + npos, 0.35f, toTgt / tl, math.min(1.8f, tl), out var coverHit, envFilter)) + blockedByCover = SystemAPI.HasComponent(coverHit.Entity); + } + if (!blockedByCover) + { + nav.ValueRW.NudgeUntilTick = TickUtil.NonZero(now + NudgeBurstTicks); + st = 0u; + } } nav.ValueRW.StuckTicks = st; } diff --git a/Assets/_Project/Scripts/Server/Economy/ResourceHarvestSystem.cs b/Assets/_Project/Scripts/Server/Economy/ResourceHarvestSystem.cs index 9b2eadc39..12ade87a5 100644 --- a/Assets/_Project/Scripts/Server/Economy/ResourceHarvestSystem.cs +++ b/Assets/_Project/Scripts/Server/Economy/ResourceHarvestSystem.cs @@ -153,6 +153,11 @@ namespace ProjectM.Server // A positive baked yield must always make progress: a raw (int) truncation of a sub-1.0 per-hit // value would deposit 0 AND never decrement Remaining -> an immortal target that silently eats shots. int amount = math.max(1, (int)tgtYieldPerHit[bestIdx]); + // DECOUPLED deposit (cover review wf_e14dd739-069): DESTRUCTIBLE COVER has ScrapPerHit=0 — it + // breaks in Remaining hits but yields NOTHING (durability must not be an economy faucet). + // Nodes/clutter (PerHit >= 1) keep deposit == decrement exactly as before. + // zero means ZERO (cover); any POSITIVE yield still credits >= 1 (the fractional-yield guard). + int deposit = tgtYieldPerHit[bestIdx] > 0f ? amount : 0; byte yieldId = tgtYieldId[bestIdx]; // Route the yield into the HARVESTING player's PERSONAL inventory. The projectile carries the @@ -162,8 +167,9 @@ namespace ProjectM.Server if (m_GhostOwnerLookup.HasComponent(projEntity) && playerByConn.TryGetValue(m_GhostOwnerLookup[projEntity].NetworkId, out var ownedPlayer)) harvester = ownedPlayer; - HarvestMath.DepositYield(yieldId, amount, tgtToLedger[bestIdx], harvester, - m_InvLookup, ledger, true, haveDb, itemDb); + if (deposit > 0) + HarvestMath.DepositYield(yieldId, deposit, tgtToLedger[bestIdx], harvester, + m_InvLookup, ledger, true, haveDb, itemDb); int rem = tgtRemaining[bestIdx] - amount; tgtRemaining[bestIdx] = rem; ecb.DestroyEntity(projEntity); diff --git a/Assets/_Project/Scripts/Server/Economy/RoomFieldSystem.cs b/Assets/_Project/Scripts/Server/Economy/RoomFieldSystem.cs index 4f8160538..270020e87 100644 --- a/Assets/_Project/Scripts/Server/Economy/RoomFieldSystem.cs +++ b/Assets/_Project/Scripts/Server/Economy/RoomFieldSystem.cs @@ -128,6 +128,33 @@ namespace ProjectM.Server } } + // DESTRUCTIBLE COVER (OPTIONAL singleton; review wf_e14dd739-069): never in Boss rooms (the boss + // has no depenetration backstop) and never inside the origin keep-out ring (player landing + + // portal). Variant stays the prefab's 4 — NEVER rerolled (the clutter block's explosive + // reroll must not leak into this copy). + if (plan.RoomType != RoomTypeId.Boss + && SystemAPI.TryGetSingleton(out var cover) + && cover.Prefab != Entity.Null) + { + var kBaked = SystemAPI.GetComponent(cover.Prefab); + var krng = new Random(RunMapMath.Hash(run.RunSeed, (uint)run.CurrentNodeId, 0xC0Eu) | 1u); + int kCount = math.clamp(cover.Count, 0, 6); + const float KeepOutFromOrigin = 7f; + for (int i = 0; i < kCount; i++) + { + float3 pos = origin; + for (int attempt = 0; attempt < 8; attempt++) + { + pos = RoomLayoutMath.ScatterInShape(plan.ShapeId, origin, i, kCount, ref krng); + if (math.distance(pos.xz, origin.xz) >= KeepOutFromOrigin) break; + } + if (math.distance(pos.xz, origin.xz) < KeepOutFromOrigin) continue; // unlucky draws: drop the piece + var e = ecb.Instantiate(cover.Prefab); + ecb.SetComponent(e, kBaked.WithPosition(pos)); + ecb.AddComponent(e, new RoomTag { Room = room }); + } + } + rf.LastSpawnedRoomEpoch = run.RoomEpoch; SystemAPI.SetComponent(spawnerEntity, rf); } diff --git a/Assets/_Project/Scripts/Simulation/Economy/CoverFieldSpawner.cs b/Assets/_Project/Scripts/Simulation/Economy/CoverFieldSpawner.cs new file mode 100644 index 000000000..fc0597315 --- /dev/null +++ b/Assets/_Project/Scripts/Simulation/Economy/CoverFieldSpawner.cs @@ -0,0 +1,22 @@ +using Unity.Entities; + +namespace ProjectM.Simulation +{ + /// + /// Baked singleton holding the DESTRUCTIBLE COVER ghost prefab (Exploding_Barrels sibling — + /// Cover_Rock_Build: a BlightClutter carrier with ScrapPerHit=0, Variant=4, and a baked + /// Environment-layer collider that blocks the player CC and the enemy sweep while alive). + /// RoomFieldSystem scatters cover rocks per room epoch — EXCEPT Boss rooms + /// (the boss has no depenetration backstop; review wf_e14dd739-069) — with a keep-out ring + /// around the room origin (player landing + portal). OPTIONAL: absent singleton = no cover. + /// Mirrors ; carries no transform. + /// + public struct CoverFieldSpawner : IComponentData + { + /// Baked cover-rock ghost prefab to instantiate. + public Entity Prefab; + + /// Cover rocks per room (Boss rooms get none). + public int Count; + } +} diff --git a/Assets/_Project/Scripts/Simulation/Economy/CoverFieldSpawner.cs.meta b/Assets/_Project/Scripts/Simulation/Economy/CoverFieldSpawner.cs.meta new file mode 100644 index 000000000..36a3620ad --- /dev/null +++ b/Assets/_Project/Scripts/Simulation/Economy/CoverFieldSpawner.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 0331196c0b301674189f1c1779f108da \ No newline at end of file diff --git a/Assets/_Project/Scripts/Simulation/Player/MeleeComboSystem.cs b/Assets/_Project/Scripts/Simulation/Player/MeleeComboSystem.cs index 1052ddb2f..f74755584 100644 --- a/Assets/_Project/Scripts/Simulation/Player/MeleeComboSystem.cs +++ b/Assets/_Project/Scripts/Simulation/Player/MeleeComboSystem.cs @@ -270,6 +270,10 @@ namespace ProjectM.Simulation continue; int amount = math.max(1, (int)harvPerHit[i]); + // DECOUPLED deposit (cover review): cover has ScrapPerHit=0 — breaks in Remaining hits, + // yields nothing. Nodes/clutter (PerHit >= 1) keep deposit == decrement as before. + // zero means ZERO (cover); any POSITIVE yield still credits >= 1 (the fractional-yield guard). + int deposit = harvPerHit[i] > 0f ? amount : 0; byte yieldId = harvYieldId[i]; // Route by region: Base nodes credit the shared ledger DIRECTLY (the build pool); an // expedition / un-tagged target goes to the swinging player's PERSONAL inventory (spill to @@ -278,10 +282,13 @@ namespace ProjectM.Simulation Entity meleeHarvester = Entity.Null; if (meleePlayerByConn.TryGetValue(hc.OwnerId, out var meleePlayer)) meleeHarvester = meleePlayer; - bool deposited = HarvestMath.DepositYield(yieldId, amount, harvToLedger[i], meleeHarvester, - m_InvLookup, ledger, haveLedger, haveDb, itemDb); - if (!deposited) - continue; + if (deposit > 0) + { + bool deposited = HarvestMath.DepositYield(yieldId, deposit, harvToLedger[i], meleeHarvester, + m_InvLookup, ledger, haveLedger, haveDb, itemDb); + if (!deposited) + continue; // never consume a YIELDING target for zero credit + } int rem = harvRemaining[i] - amount; harvRemaining[i] = rem; diff --git a/Assets/_Project/Subscenes/Gameplay.unity b/Assets/_Project/Subscenes/Gameplay.unity index 68252e206..cfe6c941b 100644 --- a/Assets/_Project/Subscenes/Gameplay.unity +++ b/Assets/_Project/Subscenes/Gameplay.unity @@ -661,60 +661,6 @@ BoxCollider: serializedVersion: 3 m_Size: {x: 3.9870093, y: 5, z: 1.5} m_Center: {x: 0, y: 2, z: 0} ---- !u!1 &47838509 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 47838510} - - component: {fileID: 47838511} - m_Layer: 8 - m_Name: Cover_S0_0 - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &47838510 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 47838509} - serializedVersion: 2 - m_LocalRotation: {x: -0, y: 0.1305262, z: -0, w: 0.9914449} - m_LocalPosition: {x: 993, y: 0, z: 6} - m_LocalScale: {x: 1.6780516, y: 1.6780518, z: 1.6780516} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 125166252} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!64 &47838511 -MeshCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 47838509} - 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: 5 - m_Convex: 1 - m_CookingOptions: 30 - m_Mesh: {fileID: -2980332487971928681, guid: b26ded2dffadca04da4b267610d057ab, type: 3} --- !u!1 &47846457 GameObject: m_ObjectHideFlags: 0 @@ -1591,15 +1537,7 @@ Transform: m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 47838510} - - {fileID: 1718746030} - - {fileID: 1814418716} - - {fileID: 1572202107} - - {fileID: 582536833} - - {fileID: 175117792} - - {fileID: 1785428319} - - {fileID: 1438996196} + m_Children: [] m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &135921087 @@ -1920,60 +1858,6 @@ BoxCollider: serializedVersion: 3 m_Size: {x: 3.8149579, y: 5, z: 1.5} m_Center: {x: 0, y: 2, z: 0} ---- !u!1 &175117791 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 175117792} - - component: {fileID: 175117793} - m_Layer: 8 - m_Name: Cover_S1_1 - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &175117792 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 175117791} - serializedVersion: 2 - m_LocalRotation: {x: -0, y: 0.57357645, z: -0, w: 0.81915206} - m_LocalPosition: {x: 1508, y: 0, z: 5} - m_LocalScale: {x: 1.6780517, y: 1.6780518, z: 1.6780517} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 125166252} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!64 &175117793 -MeshCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 175117791} - 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: 5 - m_Convex: 1 - m_CookingOptions: 30 - m_Mesh: {fileID: -2980332487971928681, guid: b26ded2dffadca04da4b267610d057ab, type: 3} --- !u!1 &175286056 GameObject: m_ObjectHideFlags: 0 @@ -5058,60 +4942,6 @@ BoxCollider: serializedVersion: 3 m_Size: {x: 1.7547715, y: 0.8, z: 1.3944197} m_Center: {x: 0.0000024735928, y: 0.4, z: -0.000009506941} ---- !u!1 &582536832 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 582536833} - - component: {fileID: 582536834} - m_Layer: 8 - m_Name: Cover_S1_0 - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &582536833 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 582536832} - serializedVersion: 2 - m_LocalRotation: {x: -0, y: 0.1305262, z: -0, w: 0.9914449} - m_LocalPosition: {x: 1493, y: 0, z: 6} - m_LocalScale: {x: 1.6780516, y: 1.6780518, z: 1.6780516} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 125166252} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!64 &582536834 -MeshCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 582536832} - 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: 5 - m_Convex: 1 - m_CookingOptions: 30 - m_Mesh: {fileID: -2980332487971928681, guid: b26ded2dffadca04da4b267610d057ab, type: 3} --- !u!1 &584781805 GameObject: m_ObjectHideFlags: 0 @@ -9082,6 +8912,52 @@ BoxCollider: serializedVersion: 3 m_Size: {x: 4.147015, y: 5, z: 1.5} m_Center: {x: 0, y: 2, z: 0} +--- !u!1 &1106173029 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1106173031} + - component: {fileID: 1106173030} + m_Layer: 0 + m_Name: CoverFieldSpawner + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1106173030 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1106173029} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0a9b08ef91676fa4185406d9dec18c5e, type: 3} + m_Name: + m_EditorClassIdentifier: ProjectM.Authoring::ProjectM.Authoring.CoverFieldSpawnerAuthoring + CoverPrefab: {fileID: 3885353946372160549, guid: 25159665cc5735b44bf91ab9c8f90b76, type: 3} + Count: 3 +--- !u!4 &1106173031 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1106173029} + 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 &1106672234 GameObject: m_ObjectHideFlags: 0 @@ -12027,60 +11903,6 @@ BoxCollider: serializedVersion: 3 m_Size: {x: 3.9249666, y: 5, z: 1.5} m_Center: {x: 0, y: 2, z: 0} ---- !u!1 &1438996195 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1438996196} - - component: {fileID: 1438996197} - m_Layer: 8 - m_Name: Cover_S1_3 - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &1438996196 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1438996195} - serializedVersion: 2 - m_LocalRotation: {x: -0, y: 0.86602545, z: -0, w: 0.49999997} - m_LocalPosition: {x: 1509, y: 0, z: -7} - m_LocalScale: {x: 1.8546889, y: 1.8546889, z: 1.8546889} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 125166252} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!64 &1438996197 -MeshCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1438996195} - 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: 5 - m_Convex: 1 - m_CookingOptions: 30 - m_Mesh: {fileID: -2980332487971928681, guid: b26ded2dffadca04da4b267610d057ab, type: 3} --- !u!1 &1441917224 GameObject: m_ObjectHideFlags: 0 @@ -13448,60 +13270,6 @@ BoxCollider: serializedVersion: 3 m_Size: {x: 1.6302872, y: 0.903802, z: 1.4047824} m_Center: {x: -0.07129079, y: 0.451901, z: 0.0632782} ---- !u!1 &1572202106 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1572202107} - - component: {fileID: 1572202108} - m_Layer: 8 - m_Name: Cover_S0_3 - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &1572202107 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1572202106} - serializedVersion: 2 - m_LocalRotation: {x: -0, y: 0.86602545, z: -0, w: 0.49999997} - m_LocalPosition: {x: 1009, y: 0, z: -7} - m_LocalScale: {x: 1.8546889, y: 1.8546889, z: 1.8546889} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 125166252} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!64 &1572202108 -MeshCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1572202106} - 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: 5 - m_Convex: 1 - m_CookingOptions: 30 - m_Mesh: {fileID: -2980332487971928681, guid: b26ded2dffadca04da4b267610d057ab, type: 3} --- !u!1 &1578777869 GameObject: m_ObjectHideFlags: 0 @@ -14753,60 +14521,6 @@ BoxCollider: serializedVersion: 3 m_Size: {x: 3.9799314, y: 5, z: 1.5} m_Center: {x: 0, y: 2, z: 0} ---- !u!1 &1718746029 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1718746030} - - component: {fileID: 1718746031} - m_Layer: 8 - m_Name: Cover_S0_1 - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &1718746030 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1718746029} - serializedVersion: 2 - m_LocalRotation: {x: -0, y: 0.57357645, z: -0, w: 0.81915206} - m_LocalPosition: {x: 1008, y: 0, z: 5} - m_LocalScale: {x: 1.6780517, y: 1.6780518, z: 1.6780517} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 125166252} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!64 &1718746031 -MeshCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1718746029} - 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: 5 - m_Convex: 1 - m_CookingOptions: 30 - m_Mesh: {fileID: -2980332487971928681, guid: b26ded2dffadca04da4b267610d057ab, type: 3} --- !u!1 &1723007258 GameObject: m_ObjectHideFlags: 0 @@ -15072,60 +14786,6 @@ BoxCollider: serializedVersion: 3 m_Size: {x: 2.4087837, y: 0.9642086, z: 2.2116926} m_Center: {x: -0.004358411, y: 0.4821043, z: 0.12872449} ---- !u!1 &1785428318 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1785428319} - - component: {fileID: 1785428320} - m_Layer: 8 - m_Name: Cover_S1_2 - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &1785428319 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1785428318} - serializedVersion: 2 - m_LocalRotation: {x: -0, y: 0.34202015, z: -0, w: 0.9396927} - m_LocalPosition: {x: 1495, y: 0, z: -9} - m_LocalScale: {x: 1.2801044, y: 1.2801043, z: 1.2801044} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 125166252} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!64 &1785428320 -MeshCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1785428318} - 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: 5 - m_Convex: 1 - m_CookingOptions: 30 - m_Mesh: {fileID: -2709579467351344360, guid: d68b1794e4e664d45925e6fe3eedfae2, type: 3} --- !u!1 &1800669619 GameObject: m_ObjectHideFlags: 0 @@ -15391,60 +15051,6 @@ BoxCollider: serializedVersion: 3 m_Size: {x: 4.1653576, y: 5, z: 1.5} m_Center: {x: 0, y: 2, z: 0} ---- !u!1 &1814418715 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1814418716} - - component: {fileID: 1814418717} - m_Layer: 8 - m_Name: Cover_S0_2 - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &1814418716 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1814418715} - serializedVersion: 2 - m_LocalRotation: {x: -0, y: 0.34202015, z: -0, w: 0.9396927} - m_LocalPosition: {x: 995, y: 0, z: -9} - m_LocalScale: {x: 1.2801044, y: 1.2801043, z: 1.2801044} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 125166252} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!64 &1814418717 -MeshCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1814418715} - 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: 5 - m_Convex: 1 - m_CookingOptions: 30 - m_Mesh: {fileID: -2709579467351344360, guid: d68b1794e4e664d45925e6fe3eedfae2, type: 3} --- !u!1 &1815241087 GameObject: m_ObjectHideFlags: 0 @@ -18643,3 +18249,4 @@ SceneRoots: - {fileID: 1518140828} - {fileID: 125166252} - {fileID: 1384477683} + - {fileID: 1106173031}