diff --git a/Assets/Scenes/ArtStaging.unity b/Assets/Scenes/ArtStaging.unity index 60848ba72..bcfe33a77 100644 --- a/Assets/Scenes/ArtStaging.unity +++ b/Assets/Scenes/ArtStaging.unity @@ -298,6 +298,103 @@ Transform: m_Children: [] m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1315222322 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1315222324} + - component: {fileID: 1315222323} + m_Layer: 0 + m_Name: RimCold + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!108 &1315222323 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1315222322} + m_Enabled: 1 + serializedVersion: 13 + m_Type: 1 + m_Color: {r: 0.45, g: 0.75, b: 1, a: 1} + m_Intensity: 0.7 + m_Range: 10 + m_SpotAngle: 30 + m_InnerSpotAngle: 21.80208 + m_CookieSize2D: {x: 0.5, y: 0.5} + m_Shadows: + m_Type: 0 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 1 + m_Bias: 0.05 + m_NormalBias: 0.4 + m_NearPlane: 0.2 + m_CullingMatrixOverride: + e00: 1 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 1 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 1 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 1 + m_UseCullingMatrixOverride: 0 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingLayerMask: 1 + m_Lightmapping: 4 + m_LightShadowCasterMode: 0 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 1 + m_ColorTemperature: 6570 + m_UseColorTemperature: 0 + m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} + m_UseBoundingSphereOverride: 0 + m_UseViewFrustumForShadowCasterCull: 1 + m_ForceVisible: 0 + m_ShapeRadius: 0.025 + m_ShadowAngle: 0 + m_LightUnit: 1 + m_LuxAtDistance: 1 + m_EnableSpotReflector: 1 +--- !u!4 &1315222324 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1315222322} + serializedVersion: 2 + m_LocalRotation: {x: -0.022624101, y: 0.9709478, z: -0.10205072, w: -0.21525395} + 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 &1464065895 GameObject: m_ObjectHideFlags: 0 @@ -501,6 +598,7 @@ GameObject: m_Component: - component: {fileID: 1858992822} - component: {fileID: 1858992821} + - component: {fileID: 1858992823} m_Layer: 0 m_Name: ~StagingDev m_TagString: Untagged @@ -535,6 +633,26 @@ Transform: m_Children: [] m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1858992823 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1858992820} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: abe491d4d98103f4ab08712d8a78a1eb, type: 3} + m_Name: + m_EditorClassIdentifier: ProjectM.Client::ProjectM.Client.StagingAmbiance + causticsSpinDegPerSec: 4 + floraPulseAmount: 0.35 + floraPulseSpeed: 1.1 + camDriftAmplitude: 0.13 + camDriftSpeed: 0.17 + bobAmplitude: 0.045 + bobSpeed: 0.55 + swayDegrees: 0.9 --- !u!1 &1943208579 GameObject: m_ObjectHideFlags: 0 @@ -1232,13 +1350,25 @@ PrefabInstance: propertyPath: m_InnerSpotAngle value: 40 objectReference: {fileID: 0} + - target: {fileID: 3746036557242884362, guid: a56e554160baf224282f9467d6a5dfa0, type: 3} + propertyPath: m_Shadows.m_Type + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 3746036557242884362, guid: a56e554160baf224282f9467d6a5dfa0, type: 3} + propertyPath: m_Shadows.m_Strength + value: 0.55 + objectReference: {fileID: 0} - target: {fileID: 4458646397483401264, guid: a56e554160baf224282f9467d6a5dfa0, type: 3} propertyPath: m_Intensity value: 0.22 objectReference: {fileID: 0} - target: {fileID: 4548773710126222555, guid: a56e554160baf224282f9467d6a5dfa0, type: 3} propertyPath: m_Intensity - value: 0.15 + value: 0.85 + objectReference: {fileID: 0} + - target: {fileID: 4548773710126222555, guid: a56e554160baf224282f9467d6a5dfa0, type: 3} + propertyPath: m_Shadows.m_Strength + value: 0.75 objectReference: {fileID: 0} - target: {fileID: 6513448254367613169, guid: a56e554160baf224282f9467d6a5dfa0, type: 3} propertyPath: m_LocalPosition.x @@ -1305,3 +1435,4 @@ SceneRoots: - {fileID: 1464065898} - {fileID: 1943208582} - {fileID: 1858992822} + - {fileID: 1315222324} diff --git a/Assets/Scenes/Game.unity b/Assets/Scenes/Game.unity index 49c5e196b..b5519ce0f 100644 --- a/Assets/Scenes/Game.unity +++ b/Assets/Scenes/Game.unity @@ -183,7 +183,7 @@ Transform: m_Children: [] m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &205208180 +--- !u!1 &190248698 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -191,43 +191,43 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 205208181} - - component: {fileID: 205208182} + - component: {fileID: 190248699} + - component: {fileID: 190248700} m_Layer: 0 - m_Name: SurveyCampLight_S1 + m_Name: RimCold m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &205208181 +--- !u!4 &190248699 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 205208180} + m_GameObject: {fileID: 190248698} serializedVersion: 2 - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 1538, y: 2.5, z: 23} + m_LocalRotation: {x: -0.022624101, y: 0.9709478, z: -0.10205072, w: -0.21525395} + m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 1276835916} + m_Father: {fileID: 1643709739} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!108 &205208182 +--- !u!108 &190248700 Light: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 205208180} + m_GameObject: {fileID: 190248698} m_Enabled: 1 serializedVersion: 13 - m_Type: 2 - m_Color: {r: 1, g: 0.72, b: 0.4, a: 1} - m_Intensity: 3.5 - m_Range: 12 + m_Type: 1 + m_Color: {r: 0.45, g: 0.75, b: 1, a: 1} + m_Intensity: 1.025 + m_Range: 10 m_SpotAngle: 30 m_InnerSpotAngle: 21.80208 m_CookieSize2D: {x: 0.5, y: 0.5} @@ -490,260 +490,6 @@ MonoBehaviour: FallbackTarget: {x: 3, y: 0, z: 4} AimLeadDistance: 0.5 LeadSharpness: 3 ---- !u!1 &410087039 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 410087041} - - component: {fileID: 410087040} - - component: {fileID: 410087042} - m_Layer: 0 - m_Name: Directional Light - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!108 &410087040 -Light: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 410087039} - m_Enabled: 1 - serializedVersion: 13 - m_Type: 1 - m_Color: {r: 0.93, g: 0.91, b: 0.88, a: 1} - m_Intensity: 1.05 - m_Range: 10 - m_SpotAngle: 30 - m_InnerSpotAngle: 21.80208 - m_CookieSize2D: {x: 10, y: 10} - m_Shadows: - m_Type: 2 - m_Resolution: -1 - m_CustomResolution: -1 - m_Strength: 0.85 - m_Bias: 0.05 - m_NormalBias: 0.4 - m_NearPlane: 0.2 - m_CullingMatrixOverride: - e00: 1 - e01: 0 - e02: 0 - e03: 0 - e10: 0 - e11: 1 - e12: 0 - e13: 0 - e20: 0 - e21: 0 - e22: 1 - e23: 0 - e30: 0 - e31: 0 - e32: 0 - e33: 1 - m_UseCullingMatrixOverride: 0 - m_Cookie: {fileID: 0} - m_DrawHalo: 0 - m_Flare: {fileID: 0} - m_RenderMode: 0 - m_CullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_RenderingLayerMask: 1 - m_Lightmapping: 4 - m_LightShadowCasterMode: 0 - m_AreaSize: {x: 1, y: 1} - m_BounceIntensity: 1 - m_ColorTemperature: 5000 - m_UseColorTemperature: 1 - m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} - m_UseBoundingSphereOverride: 0 - m_UseViewFrustumForShadowCasterCull: 1 - m_ForceVisible: 0 - m_ShapeRadius: 0 - m_ShadowAngle: 0 - m_LightUnit: 1 - m_LuxAtDistance: 1 - m_EnableSpotReflector: 1 ---- !u!4 &410087041 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 410087039} - serializedVersion: 2 - m_LocalRotation: {x: 0.39713126, y: 0.30997553, z: -0.14454395, w: 0.8516508} - m_LocalPosition: {x: 0, y: 3, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 0} - m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} ---- !u!114 &410087042 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 410087039} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 474bcb49853aa07438625e644c072ee6, type: 3} - m_Name: - m_EditorClassIdentifier: - m_UsePipelineSettings: 1 - m_AdditionalLightsShadowResolutionTier: 2 - m_CustomShadowLayers: 0 - m_LightCookieSize: {x: 1, y: 1} - m_LightCookieOffset: {x: 0, y: 0} - m_SoftShadowQuality: 1 - m_RenderingLayersMask: - serializedVersion: 0 - m_Bits: 1 - m_ShadowRenderingLayersMask: - serializedVersion: 0 - m_Bits: 1 - m_Version: 4 - m_LightLayerMask: 1 - m_ShadowLayerMask: 1 - m_RenderingLayers: 1 - m_ShadowRenderingLayers: 1 ---- !u!1 &663963125 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 663963126} - - component: {fileID: 663963127} - - component: {fileID: 663963128} - m_Layer: 0 - m_Name: ArtefactLight - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &663963126 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 663963125} - serializedVersion: 2 - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 1030, y: 3.5, z: -8} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 1276835916} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!108 &663963127 -Light: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 663963125} - m_Enabled: 1 - serializedVersion: 13 - m_Type: 2 - m_Color: {r: 0.75, g: 0.45, b: 1, a: 1} - m_Intensity: 4.5 - m_Range: 14 - m_SpotAngle: 30 - m_InnerSpotAngle: 21.80208 - m_CookieSize2D: {x: 0.5, y: 0.5} - m_Shadows: - m_Type: 0 - m_Resolution: -1 - m_CustomResolution: -1 - m_Strength: 1 - m_Bias: 0.05 - m_NormalBias: 0.4 - m_NearPlane: 0.2 - m_CullingMatrixOverride: - e00: 1 - e01: 0 - e02: 0 - e03: 0 - e10: 0 - e11: 1 - e12: 0 - e13: 0 - e20: 0 - e21: 0 - e22: 1 - e23: 0 - e30: 0 - e31: 0 - e32: 0 - e33: 1 - m_UseCullingMatrixOverride: 0 - m_Cookie: {fileID: 0} - m_DrawHalo: 0 - m_Flare: {fileID: 0} - m_RenderMode: 0 - m_CullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_RenderingLayerMask: 1 - m_Lightmapping: 4 - m_LightShadowCasterMode: 0 - m_AreaSize: {x: 1, y: 1} - m_BounceIntensity: 1 - m_ColorTemperature: 6570 - m_UseColorTemperature: 0 - m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} - m_UseBoundingSphereOverride: 0 - m_UseViewFrustumForShadowCasterCull: 1 - m_ForceVisible: 0 - m_ShapeRadius: 0.025 - m_ShadowAngle: 0 - m_LightUnit: 1 - m_LuxAtDistance: 1 - m_EnableSpotReflector: 1 ---- !u!114 &663963128 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 663963125} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 474bcb49853aa07438625e644c072ee6, type: 3} - m_Name: - m_EditorClassIdentifier: Unity.RenderPipelines.Universal.Runtime::UnityEngine.Rendering.Universal.UniversalAdditionalLightData - m_UsePipelineSettings: 1 - m_AdditionalLightsShadowResolutionTier: 2 - m_CustomShadowLayers: 0 - m_LightCookieSize: {x: 1, y: 1} - m_LightCookieOffset: {x: 0, y: 0} - m_SoftShadowQuality: 0 - m_RenderingLayersMask: - serializedVersion: 0 - m_Bits: 1 - m_ShadowRenderingLayersMask: - serializedVersion: 0 - m_Bits: 1 - m_Version: 4 - m_LightLayerMask: 1 - m_ShadowLayerMask: 1 - m_RenderingLayers: 1 - m_ShadowRenderingLayers: 1 --- !u!1 &832575517 GameObject: m_ObjectHideFlags: 0 @@ -906,170 +652,6 @@ Transform: m_Children: [] m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1120306465 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1120306466} - - component: {fileID: 1120306467} - - component: {fileID: 1120306468} - m_Layer: 0 - m_Name: SurveyCampLight - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &1120306466 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1120306465} - serializedVersion: 2 - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 1038, y: 2.5, z: 23} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 1276835916} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!108 &1120306467 -Light: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1120306465} - m_Enabled: 1 - serializedVersion: 13 - m_Type: 2 - m_Color: {r: 1, g: 0.72, b: 0.4, a: 1} - m_Intensity: 3.5 - m_Range: 12 - m_SpotAngle: 30 - m_InnerSpotAngle: 21.80208 - m_CookieSize2D: {x: 0.5, y: 0.5} - m_Shadows: - m_Type: 0 - m_Resolution: -1 - m_CustomResolution: -1 - m_Strength: 1 - m_Bias: 0.05 - m_NormalBias: 0.4 - m_NearPlane: 0.2 - m_CullingMatrixOverride: - e00: 1 - e01: 0 - e02: 0 - e03: 0 - e10: 0 - e11: 1 - e12: 0 - e13: 0 - e20: 0 - e21: 0 - e22: 1 - e23: 0 - e30: 0 - e31: 0 - e32: 0 - e33: 1 - m_UseCullingMatrixOverride: 0 - m_Cookie: {fileID: 0} - m_DrawHalo: 0 - m_Flare: {fileID: 0} - m_RenderMode: 0 - m_CullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_RenderingLayerMask: 1 - m_Lightmapping: 4 - m_LightShadowCasterMode: 0 - m_AreaSize: {x: 1, y: 1} - m_BounceIntensity: 1 - m_ColorTemperature: 6570 - m_UseColorTemperature: 0 - m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} - m_UseBoundingSphereOverride: 0 - m_UseViewFrustumForShadowCasterCull: 1 - m_ForceVisible: 0 - m_ShapeRadius: 0.025 - m_ShadowAngle: 0 - m_LightUnit: 1 - m_LuxAtDistance: 1 - m_EnableSpotReflector: 1 ---- !u!114 &1120306468 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1120306465} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 474bcb49853aa07438625e644c072ee6, type: 3} - m_Name: - m_EditorClassIdentifier: Unity.RenderPipelines.Universal.Runtime::UnityEngine.Rendering.Universal.UniversalAdditionalLightData - m_UsePipelineSettings: 1 - m_AdditionalLightsShadowResolutionTier: 2 - m_CustomShadowLayers: 0 - m_LightCookieSize: {x: 1, y: 1} - m_LightCookieOffset: {x: 0, y: 0} - m_SoftShadowQuality: 0 - m_RenderingLayersMask: - serializedVersion: 0 - m_Bits: 1 - m_ShadowRenderingLayersMask: - serializedVersion: 0 - m_Bits: 1 - m_Version: 4 - m_LightLayerMask: 1 - m_ShadowLayerMask: 1 - m_RenderingLayers: 1 - m_ShadowRenderingLayers: 1 ---- !u!1 &1276835915 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1276835916} - m_Layer: 0 - m_Name: LandmarkLights - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &1276835916 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1276835915} - 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: 1915626474} - - {fileID: 663963126} - - {fileID: 1501947283} - - {fileID: 1120306466} - - {fileID: 205208181} - - {fileID: 2045829909} - m_Father: {fileID: 0} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1314640898 GameObject: m_ObjectHideFlags: 0 @@ -1123,103 +705,6 @@ Transform: m_Children: [] m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1501947282 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1501947283} - - component: {fileID: 1501947284} - m_Layer: 0 - m_Name: ArtefactLight_S1 - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &1501947283 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1501947282} - serializedVersion: 2 - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 1530, y: 3.5, z: -8} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 1276835916} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!108 &1501947284 -Light: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1501947282} - m_Enabled: 1 - serializedVersion: 13 - m_Type: 2 - m_Color: {r: 0.75, g: 0.45, b: 1, a: 1} - m_Intensity: 4.5 - m_Range: 14 - m_SpotAngle: 30 - m_InnerSpotAngle: 21.80208 - m_CookieSize2D: {x: 0.5, y: 0.5} - m_Shadows: - m_Type: 0 - m_Resolution: -1 - m_CustomResolution: -1 - m_Strength: 1 - m_Bias: 0.05 - m_NormalBias: 0.4 - m_NearPlane: 0.2 - m_CullingMatrixOverride: - e00: 1 - e01: 0 - e02: 0 - e03: 0 - e10: 0 - e11: 1 - e12: 0 - e13: 0 - e20: 0 - e21: 0 - e22: 1 - e23: 0 - e30: 0 - e31: 0 - e32: 0 - e33: 1 - m_UseCullingMatrixOverride: 0 - m_Cookie: {fileID: 0} - m_DrawHalo: 0 - m_Flare: {fileID: 0} - m_RenderMode: 0 - m_CullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_RenderingLayerMask: 1 - m_Lightmapping: 4 - m_LightShadowCasterMode: 0 - m_AreaSize: {x: 1, y: 1} - m_BounceIntensity: 1 - m_ColorTemperature: 6570 - m_UseColorTemperature: 0 - m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} - m_UseBoundingSphereOverride: 0 - m_UseViewFrustumForShadowCasterCull: 1 - m_ForceVisible: 0 - m_ShapeRadius: 0.025 - m_ShadowAngle: 0 - m_LightUnit: 1 - m_LuxAtDistance: 1 - m_EnableSpotReflector: 1 --- !u!1001 &1643709738 PrefabInstance: m_ObjectHideFlags: 0 @@ -1232,6 +717,18 @@ PrefabInstance: propertyPath: m_Name value: Env_SeabedKit objectReference: {fileID: 0} + - target: {fileID: 3746036557242884362, guid: a56e554160baf224282f9467d6a5dfa0, type: 3} + propertyPath: m_Shadows.m_Type + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 3746036557242884362, guid: a56e554160baf224282f9467d6a5dfa0, type: 3} + propertyPath: m_Shadows.m_Strength + value: 0.55 + objectReference: {fileID: 0} + - target: {fileID: 4458646397483401264, guid: a56e554160baf224282f9467d6a5dfa0, type: 3} + propertyPath: m_Intensity + value: 0.3238342 + objectReference: {fileID: 0} - target: {fileID: 6513448254367613169, guid: a56e554160baf224282f9467d6a5dfa0, type: 3} propertyPath: m_LocalPosition.x value: 0 @@ -1274,9 +771,17 @@ PrefabInstance: objectReference: {fileID: 0} m_RemovedComponents: [] m_RemovedGameObjects: [] - m_AddedGameObjects: [] + m_AddedGameObjects: + - targetCorrespondingSourceObject: {fileID: 6513448254367613169, guid: a56e554160baf224282f9467d6a5dfa0, type: 3} + insertIndex: -1 + addedObject: {fileID: 190248699} m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: a56e554160baf224282f9467d6a5dfa0, type: 3} +--- !u!4 &1643709739 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 6513448254367613169, guid: a56e554160baf224282f9467d6a5dfa0, type: 3} + m_PrefabInstance: {fileID: 1643709738} + m_PrefabAsset: {fileID: 0} --- !u!1 &1709609452 GameObject: m_ObjectHideFlags: 0 @@ -1329,272 +834,16 @@ Transform: m_Children: [] m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1915626473 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1915626474} - - component: {fileID: 1915626475} - - component: {fileID: 1915626476} - m_Layer: 0 - m_Name: WarpgateLight - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &1915626474 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1915626473} - serializedVersion: 2 - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 3, z: -21.5} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 1276835916} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!108 &1915626475 -Light: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1915626473} - m_Enabled: 1 - serializedVersion: 13 - m_Type: 2 - m_Color: {r: 0.35, g: 0.85, b: 1, a: 1} - m_Intensity: 4 - m_Range: 14 - m_SpotAngle: 30 - m_InnerSpotAngle: 21.80208 - m_CookieSize2D: {x: 0.5, y: 0.5} - m_Shadows: - m_Type: 0 - m_Resolution: -1 - m_CustomResolution: -1 - m_Strength: 1 - m_Bias: 0.05 - m_NormalBias: 0.4 - m_NearPlane: 0.2 - m_CullingMatrixOverride: - e00: 1 - e01: 0 - e02: 0 - e03: 0 - e10: 0 - e11: 1 - e12: 0 - e13: 0 - e20: 0 - e21: 0 - e22: 1 - e23: 0 - e30: 0 - e31: 0 - e32: 0 - e33: 1 - m_UseCullingMatrixOverride: 0 - m_Cookie: {fileID: 0} - m_DrawHalo: 0 - m_Flare: {fileID: 0} - m_RenderMode: 0 - m_CullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_RenderingLayerMask: 1 - m_Lightmapping: 4 - m_LightShadowCasterMode: 0 - m_AreaSize: {x: 1, y: 1} - m_BounceIntensity: 1 - m_ColorTemperature: 6570 - m_UseColorTemperature: 0 - m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} - m_UseBoundingSphereOverride: 0 - m_UseViewFrustumForShadowCasterCull: 1 - m_ForceVisible: 0 - m_ShapeRadius: 0.025 - m_ShadowAngle: 0 - m_LightUnit: 1 - m_LuxAtDistance: 1 - m_EnableSpotReflector: 1 ---- !u!114 &1915626476 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1915626473} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 474bcb49853aa07438625e644c072ee6, type: 3} - m_Name: - m_EditorClassIdentifier: Unity.RenderPipelines.Universal.Runtime::UnityEngine.Rendering.Universal.UniversalAdditionalLightData - m_UsePipelineSettings: 1 - m_AdditionalLightsShadowResolutionTier: 2 - m_CustomShadowLayers: 0 - m_LightCookieSize: {x: 1, y: 1} - m_LightCookieOffset: {x: 0, y: 0} - m_SoftShadowQuality: 0 - m_RenderingLayersMask: - serializedVersion: 0 - m_Bits: 1 - m_ShadowRenderingLayersMask: - serializedVersion: 0 - m_Bits: 1 - m_Version: 4 - m_LightLayerMask: 1 - m_ShadowLayerMask: 1 - m_RenderingLayers: 1 - m_ShadowRenderingLayers: 1 ---- !u!1 &2045829908 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 2045829909} - - component: {fileID: 2045829910} - - component: {fileID: 2045829911} - m_Layer: 0 - m_Name: CabinLight - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &2045829909 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2045829908} - serializedVersion: 2 - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 22, y: 2.5, z: 14} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 1276835916} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!108 &2045829910 -Light: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2045829908} - m_Enabled: 1 - serializedVersion: 13 - m_Type: 2 - m_Color: {r: 1, g: 0.75, b: 0.45, a: 1} - m_Intensity: 3 - m_Range: 10 - m_SpotAngle: 30 - m_InnerSpotAngle: 21.80208 - m_CookieSize2D: {x: 0.5, y: 0.5} - m_Shadows: - m_Type: 0 - m_Resolution: -1 - m_CustomResolution: -1 - m_Strength: 1 - m_Bias: 0.05 - m_NormalBias: 0.4 - m_NearPlane: 0.2 - m_CullingMatrixOverride: - e00: 1 - e01: 0 - e02: 0 - e03: 0 - e10: 0 - e11: 1 - e12: 0 - e13: 0 - e20: 0 - e21: 0 - e22: 1 - e23: 0 - e30: 0 - e31: 0 - e32: 0 - e33: 1 - m_UseCullingMatrixOverride: 0 - m_Cookie: {fileID: 0} - m_DrawHalo: 0 - m_Flare: {fileID: 0} - m_RenderMode: 0 - m_CullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_RenderingLayerMask: 1 - m_Lightmapping: 4 - m_LightShadowCasterMode: 0 - m_AreaSize: {x: 1, y: 1} - m_BounceIntensity: 1 - m_ColorTemperature: 6570 - m_UseColorTemperature: 0 - m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} - m_UseBoundingSphereOverride: 0 - m_UseViewFrustumForShadowCasterCull: 1 - m_ForceVisible: 0 - m_ShapeRadius: 0.025 - m_ShadowAngle: 0 - m_LightUnit: 1 - m_LuxAtDistance: 1 - m_EnableSpotReflector: 1 ---- !u!114 &2045829911 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2045829908} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 474bcb49853aa07438625e644c072ee6, type: 3} - m_Name: - m_EditorClassIdentifier: Unity.RenderPipelines.Universal.Runtime::UnityEngine.Rendering.Universal.UniversalAdditionalLightData - m_UsePipelineSettings: 1 - m_AdditionalLightsShadowResolutionTier: 2 - m_CustomShadowLayers: 0 - m_LightCookieSize: {x: 1, y: 1} - m_LightCookieOffset: {x: 0, y: 0} - m_SoftShadowQuality: 0 - m_RenderingLayersMask: - serializedVersion: 0 - m_Bits: 1 - m_ShadowRenderingLayersMask: - serializedVersion: 0 - m_Bits: 1 - m_Version: 4 - m_LightLayerMask: 1 - m_ShadowLayerMask: 1 - m_RenderingLayers: 1 - m_ShadowRenderingLayers: 1 --- !u!1660057539 &9223372036854775807 SceneRoots: m_ObjectHideFlags: 0 m_Roots: - {fileID: 330585546} - - {fileID: 410087041} - {fileID: 832575519} - {fileID: 1314640900} - {fileID: 228729546} - {fileID: 1116745582} - {fileID: 1709609454} - {fileID: 70737666} - - {fileID: 1276835916} - {fileID: 1007206783} - {fileID: 1643709738} diff --git a/Assets/_Project/Animation/AC_EnemyTopDown.controller b/Assets/_Project/Animation/AC_EnemyTopDown.controller index 612f1fe5a..ad149ce1e 100644 --- a/Assets/_Project/Animation/AC_EnemyTopDown.controller +++ b/Assets/_Project/Animation/AC_EnemyTopDown.controller @@ -316,7 +316,8 @@ AnimatorState: m_Name: Death m_Speed: 1 m_CycleOffset: 0 - m_Transitions: [] + m_Transitions: + - {fileID: 8293450300144498373} m_StateMachineBehaviours: [] m_Position: {x: 50, y: 50, z: 0} m_IKOnFeet: 0 @@ -508,6 +509,31 @@ AnimatorState: m_MirrorParameter: m_CycleOffsetParameter: m_TimeParameter: +--- !u!1101 &8293450300144498373 +AnimatorStateTransition: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + m_Conditions: + - m_ConditionMode: 2 + m_ConditionEvent: IsDead + m_EventTreshold: 0 + m_DstStateMachine: {fileID: 0} + m_DstState: {fileID: 8302574255206078140} + m_Solo: 0 + m_Mute: 0 + m_IsExit: 0 + serializedVersion: 3 + m_TransitionDuration: 0.25 + m_TransitionOffset: 0 + m_ExitTime: 0.9 + m_HasExitTime: 0 + m_HasFixedDuration: 1 + m_InterruptionSource: 0 + m_OrderedInterruption: 1 + m_CanTransitionToSelf: 1 --- !u!1102 &8302574255206078140 AnimatorState: serializedVersion: 6 diff --git a/Assets/_Project/Animation/AC_PlayerTopDown.controller b/Assets/_Project/Animation/AC_PlayerTopDown.controller index 6469a0fbb..1245a212e 100644 --- a/Assets/_Project/Animation/AC_PlayerTopDown.controller +++ b/Assets/_Project/Animation/AC_PlayerTopDown.controller @@ -317,6 +317,31 @@ AnimatorState: m_MirrorParameter: m_CycleOffsetParameter: m_TimeParameter: +--- !u!1101 &-3626785697368707688 +AnimatorStateTransition: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + m_Conditions: + - m_ConditionMode: 2 + m_ConditionEvent: IsDead + m_EventTreshold: 0 + m_DstStateMachine: {fileID: 0} + m_DstState: {fileID: 8302574255206078140} + m_Solo: 0 + m_Mute: 0 + m_IsExit: 0 + serializedVersion: 3 + m_TransitionDuration: 0.25 + m_TransitionOffset: 0 + m_ExitTime: 0.9 + m_HasExitTime: 0 + m_HasFixedDuration: 1 + m_InterruptionSource: 0 + m_OrderedInterruption: 1 + m_CanTransitionToSelf: 1 --- !u!206 &-3541598292348706530 BlendTree: m_ObjectHideFlags: 1 @@ -892,7 +917,8 @@ AnimatorState: m_Name: Death m_Speed: 1 m_CycleOffset: 0 - m_Transitions: [] + m_Transitions: + - {fileID: -3626785697368707688} m_StateMachineBehaviours: [] m_Position: {x: 50, y: 50, z: 0} m_IKOnFeet: 0 diff --git a/Assets/_Project/Art/Materials/Staging/M_EmissiveGloam_Flora.mat b/Assets/_Project/Art/Materials/Staging/M_EmissiveGloam_Flora.mat index e3000ceb0..eb10a651f 100644 --- a/Assets/_Project/Art/Materials/Staging/M_EmissiveGloam_Flora.mat +++ b/Assets/_Project/Art/Materials/Staging/M_EmissiveGloam_Flora.mat @@ -25,8 +25,8 @@ Material: m_TexEnvs: [] m_Ints: [] m_Floats: - - _FlickerAmount: 0.35 - - _FlickerSpeed: 5 + - _FlickerAmount: 0.6 + - _FlickerSpeed: 2.6 - _Seed: 0 m_Colors: - _EmissionColor: {r: 0.28, g: 2.1000001, b: 3.5, a: 3.5} diff --git a/Assets/_Project/Materials/M_Drowner_EyeGlow.mat b/Assets/_Project/Materials/M_Drowner_EyeGlow.mat index 8ad86a4fb..599496c46 100644 --- a/Assets/_Project/Materials/M_Drowner_EyeGlow.mat +++ b/Assets/_Project/Materials/M_Drowner_EyeGlow.mat @@ -25,9 +25,9 @@ Material: m_TexEnvs: [] m_Ints: [] m_Floats: - - _FlickerAmount: 0.4 - - _FlickerSpeed: 5.5 - - _Seed: 0 + - _FlickerAmount: 0.7 + - _FlickerSpeed: 3 + - _Seed: 2.7 m_Colors: - _EmissionColor: {r: 0.45000002, g: 2.85, b: 1.2, a: 3} m_BuildTextureStacks: [] diff --git a/Assets/_Project/Scripts/Client/Presentation/AmbientMotionConfig.cs b/Assets/_Project/Scripts/Client/Presentation/AmbientMotionConfig.cs index 41df7e120..db0516c9b 100644 --- a/Assets/_Project/Scripts/Client/Presentation/AmbientMotionConfig.cs +++ b/Assets/_Project/Scripts/Client/Presentation/AmbientMotionConfig.cs @@ -16,15 +16,12 @@ namespace ProjectM.Client [Header("Master")] public bool Enabled = true; - [Header("Biome drift particles (emitter follows the camera; sim space stays world)")] + [Header("Ambient drift particles (emitter follows the camera; sim space stays world)")] + // 2026-08-07: the four per-biome mote colours + AridWind went with the expedition — LANTERN is one look, + // so the colour is fixed cold in AmbientMotionSystem. Only rate and size stay tunable. public bool DriftEnabled = true; - [Min(0f)] public float DriftRate = 28f; - [Min(0.01f)] public float DriftSize = 0.09f; - public Color MeadowMoteColor = new Color(0.62f, 0.85f, 0.60f, 0.35f); - public Color AridDustColor = new Color(0.85f, 0.68f, 0.45f, 0.28f); - public Color CavernMoteColor = new Color(0.55f, 0.65f, 0.95f, 0.33f); - public Color BlightSporeColor = new Color(0.72f, 0.50f, 0.85f, 0.33f); - public Vector3 AridWind = new Vector3(2.2f, -0.15f, 0.5f); + [Min(0f)] public float DriftRate = 18f; + [Min(0.01f)] public float DriftSize = 0.07f; [Header("Idle foliage sway (root tilt) — OFF by default since 1.5b: ALL Synty flora uses the Synty/Foliage")] [Header("VERTEX-wind shader, so root tilt double-animates. Keep for A/B; rustle below stays the reactive layer.")] diff --git a/Assets/_Project/Scripts/Client/Presentation/AmbientMotionSystem.cs b/Assets/_Project/Scripts/Client/Presentation/AmbientMotionSystem.cs index f2bf661f5..5241975a0 100644 --- a/Assets/_Project/Scripts/Client/Presentation/AmbientMotionSystem.cs +++ b/Assets/_Project/Scripts/Client/Presentation/AmbientMotionSystem.cs @@ -147,35 +147,22 @@ namespace ProjectM.Client emission.enabled = true; } - // palette key: base hub vs the replicated per-room biome (WorldAtmosphereSystem's switch shape) - int key = 0; // 0 = meadow/base - if (_cam.transform.position.x > 500f) + // 2026-08-07 (A0 gate): the per-biome drift — meadow / arid / cavern / blight — went with the + // expedition. LANTERN is ONE look, so this collapses to a single cold marine particulate. The old + // "meadow" default was painting GREEN motes across the whole seabed (the most off-palette thing in + // the shipping frame), and the x>500 region probe pointed at space that now holds zero renderers. + if (_biomeKey != 0) { - key = 1; // arid default - // 2026-08-07 audit purge: per-room biome selection keyed off RunInfo.CurrentBiome, which went - // with the run FSM. The expedition region keeps its single motion set. - } - if (key != _biomeKey) - { - _biomeKey = key; + _biomeKey = 0; var main = _drift.main; - main.startSize = cfg != null ? cfg.DriftSize : 0.09f; - Color c; - Vector3 wind; - switch (key) - { - case 1: c = cfg != null ? cfg.AridDustColor : new Color(0.85f, 0.68f, 0.45f, 0.28f); wind = cfg != null ? cfg.AridWind : new Vector3(2.2f, -0.15f, 0.5f); break; - case 2: c = cfg != null ? cfg.CavernMoteColor : new Color(0.55f, 0.65f, 0.95f, 0.33f); wind = new Vector3(0f, 0.18f, 0f); break; - case 3: c = cfg != null ? cfg.BlightSporeColor : new Color(0.72f, 0.50f, 0.85f, 0.33f); wind = new Vector3(0f, 0.28f, 0f); break; - default: c = cfg != null ? cfg.MeadowMoteColor : new Color(0.62f, 0.85f, 0.60f, 0.35f); wind = new Vector3(0f, 0.22f, 0f); break; - } - main.startColor = c; + main.startSize = cfg != null ? cfg.DriftSize : 0.07f; + main.startColor = new Color(0.55f, 0.80f, 0.95f, 0.26f); // cold: warm is reserved for OURS var vel = _drift.velocityOverLifetime; vel.enabled = true; vel.space = ParticleSystemSimulationSpace.World; - vel.x = wind.x; vel.y = wind.y; vel.z = wind.z; + vel.x = 0f; vel.y = 0.16f; vel.z = 0f; // detritus rising up the water column var emission = _drift.emission; - emission.rateOverTime = cfg != null ? cfg.DriftRate : 28f; + emission.rateOverTime = cfg != null ? cfg.DriftRate : 18f; } if (!_drift.isPlaying) _drift.Play(); // follow the camera's ground focus so the volume always blankets the view diff --git a/Assets/_Project/Scripts/Client/Presentation/FeedbackFx.cs b/Assets/_Project/Scripts/Client/Presentation/FeedbackFx.cs index 64e95b771..bb3e38735 100644 --- a/Assets/_Project/Scripts/Client/Presentation/FeedbackFx.cs +++ b/Assets/_Project/Scripts/Client/Presentation/FeedbackFx.cs @@ -33,6 +33,38 @@ namespace ProjectM.Client return clip; } + static Texture2D s_softDot; + + /// + /// Sprites/Default with NO texture renders hard SQUARES — which is what the ambient drift was painting + /// across the seabed (found at the 2026-08-07 A0 gate). Build the dot procedurally instead of referencing + /// an asset: runtime Resources.Load is stripped from player builds, and asset-free presentation is the + /// house rule. Self-healing across fast-enter-playmode — a destroyed texture compares == null and rebuilds. + /// + public static Texture2D SoftDot() + { + if (s_softDot != null) return s_softDot; + const int N = 32; + var t = new Texture2D(N, N, TextureFormat.RGBA32, false) + { + name = "T_SoftDotProc", + wrapMode = TextureWrapMode.Clamp + }; + for (int y = 0; y < N; y++) + { + for (int x = 0; x < N; x++) + { + float dx = (x + 0.5f) / N * 2f - 1f; + float dy = (y + 0.5f) / N * 2f - 1f; + float a = Mathf.Clamp01(1f - Mathf.Sqrt(dx * dx + dy * dy)); + t.SetPixel(x, y, new Color(1f, 1f, 1f, a * a)); // squared = softer falloff + } + } + t.Apply(); + s_softDot = t; + return t; + } + public static Material MakeParticleMaterial(string name = "FeedbackParticle") { // Sprites/Default is an always-included transparent vertex-coloured shader (reliable billboarded sparks; @@ -40,7 +72,7 @@ namespace ProjectM.Client Shader sh = Shader.Find("Sprites/Default"); if (sh == null) sh = Shader.Find("Universal Render Pipeline/Particles/Unlit"); if (sh == null) sh = Shader.Find("Unlit/Color"); - return new Material(sh) { name = name }; + return new Material(sh) { name = name, mainTexture = SoftDot() }; } public static ParticleSystem MakeBurst(Transform parent, string name, Material mat, Color color, diff --git a/Assets/_Project/Scripts/Client/Presentation/StagingAmbiance.cs b/Assets/_Project/Scripts/Client/Presentation/StagingAmbiance.cs index 66b3fdc1b..05fe242be 100644 --- a/Assets/_Project/Scripts/Client/Presentation/StagingAmbiance.cs +++ b/Assets/_Project/Scripts/Client/Presentation/StagingAmbiance.cs @@ -3,8 +3,15 @@ using UnityEngine; namespace ProjectM.Client { /// - /// Dev-only ambiance animator for the ArtStaging scene. Play-mode; modulates LIGHTS only - /// (no material/asset writes) so nothing persists on Play exit. Self-wires by object name. + /// Dev-only ambiance animator for the ArtStaging scene. Play-mode; touches LIGHTS, TRANSFORMS of dev-only + /// objects, and particle play-state — never materials or assets — so nothing persists on Play exit. + /// Self-wires by object name. + /// + /// 2026-08-07 (A0 gate, operator: "it looks flat and static"): this component existed but was attached to + /// NOTHING, so the staging scene had never actually animated. Its flora wiring also looked for a "FloraLights" + /// parent that does not exist in the scene — it now matches lights by name prefix instead. Added the motion a + /// static-bake scene cannot get from animation: camera drift, buoyancy bob on the posed heroes, and a current + /// on the particulate. The readability law is unchanged: STEADY warm = true light, GUTTERING cold = false. /// [DisallowMultipleComponent] public sealed class StagingAmbiance : MonoBehaviour @@ -12,52 +19,106 @@ namespace ProjectM.Client [Header("Caustics")] public float causticsSpinDegPerSec = 4f; - [Header("Warm beacon flicker")] - public float beaconFlickerAmount = 0.06f; + [Header("Bioluminescent pulse (cold = false light)")] + public float floraPulseAmount = 0.35f; + public float floraPulseSpeed = 1.1f; - [Header("Bioluminescent pulse")] - public float floraPulseAmount = 0.22f; - public float floraPulseSpeed = 1.4f; + [Header("Camera drift — a locked-off camera reads as a screenshot, not a place")] + public float camDriftAmplitude = 0.13f; + public float camDriftSpeed = 0.17f; + + [Header("Buoyancy — the heroes are static bakes; sell the water instead")] + public float bobAmplitude = 0.045f; + public float bobSpeed = 0.55f; + public float swayDegrees = 0.9f; Transform _caustics; - Light _beacon; float _beaconBase; Light[] _flora; float[] _floraBase; + Transform _cam; Vector3 _camBase; + Transform[] _heroes; Vector3[] _heroBase; float[] _heroPhase; void Awake() { var c = GameObject.Find("CausticsSpot"); if (c != null) _caustics = c.transform; - var b = GameObject.Find("WarmPool"); - if (b != null) { _beacon = b.GetComponent(); if (_beacon != null) _beaconBase = _beacon.intensity; } + // Match by NAME, not by parent — the scene has no "FloraLights" container (that wiring silently + // matched nothing, which is half of why the scene looked static). + var flora = new System.Collections.Generic.List(); + foreach (var l in Object.FindObjectsByType(FindObjectsSortMode.None)) + if (l.gameObject.name.StartsWith("FloraGlow")) flora.Add(l); + _flora = flora.ToArray(); + _floraBase = new float[_flora.Length]; + for (int i = 0; i < _flora.Length; i++) _floraBase[i] = _flora[i].intensity; - var fl = GameObject.Find("FloraLights"); - if (fl != null) - { - _flora = fl.GetComponentsInChildren(); - _floraBase = new float[_flora.Length]; - for (int i = 0; i < _flora.Length; i++) _floraBase[i] = _flora[i].intensity; - } + var hero = new System.Collections.Generic.List(); + foreach (var go in Object.FindObjectsByType(FindObjectsSortMode.None)) + if (go.parent == null && go.name.StartsWith("Hero_")) hero.Add(go); + _heroes = hero.ToArray(); + _heroBase = new Vector3[_heroes.Length]; + _heroPhase = new float[_heroes.Length]; + for (int i = 0; i < _heroes.Length; i++) { _heroBase[i] = _heroes[i].position; _heroPhase[i] = i * 2.1f; } + + // Particulate: only start LOOPING ambient emitters. "Bubbles" under ~CombatFeedbackFX is the combat + // one-shot pool (loop=false, duration 5) — force-playing it just fired the burst once and left it + // stopped, which read as "the scene is static". Never drive the feedback pool from here. + foreach (var ps in Object.FindObjectsByType(FindObjectsSortMode.None)) + if (ps.main.loop && !ps.isPlaying) ps.Play(); } -void Update() + void OnEnable() => CacheCamera(); + + void CacheCamera() + { + var cam = Camera.main != null ? Camera.main : Object.FindFirstObjectByType(); + if (cam == null) return; + if (_cam != cam.transform) { _cam = cam.transform; _camBase = _cam.position; } + } + + void LateUpdate() { float t = Time.time; - // caustics slowly drift across the seabed if (_caustics != null) _caustics.Rotate(0f, causticsSpinDegPerSec * Time.deltaTime, 0f, Space.World); - // readability law: STEADY = true light. The warm beacon is left unmodulated (steady) on purpose. - // FLICKER = false/counterfeit light -> the cold gloam pools gutter with organic Perlin flicker, - // so "ours vs the deep's" reads through cadence even with hue/value removed. + // Readability law: STEADY = true light, so the warm beacon is deliberately NOT modulated here. + // The cold gloam pools gutter on organic Perlin noise — "ours vs the deep's" reads through cadence + // even with hue and value removed. if (_flora != null) for (int i = 0; i < _flora.Length; i++) { float phase = i * 3.1f; - float flick = 0.55f + 0.45f * Mathf.PerlinNoise(t * floraPulseSpeed * 1.8f + phase, phase * 0.7f); + float n = Mathf.PerlinNoise(t * floraPulseSpeed * 1.8f + phase, phase * 0.7f); + float flick = (1f - floraPulseAmount) + floraPulseAmount * 2f * n; _flora[i].intensity = _floraBase[i] * flick; } + + // A locked-off camera in a still scene reads as a screenshot. A slow lissajous drift (centimetres, + // not metres) is enough to make the murk feel like water you are suspended in. + CacheCamera(); + if (_cam != null) + { + float a = camDriftAmplitude; + _cam.position = _camBase + new Vector3( + Mathf.Sin(t * camDriftSpeed) * a, + Mathf.Sin(t * camDriftSpeed * 1.37f + 1.1f) * a * 0.6f, + Mathf.Cos(t * camDriftSpeed * 0.83f) * a); + } + + // The heroes are posed static bakes with no rig bound, so they cannot idle. A buoyancy bob + micro-sway + // costs nothing and sells "suspended in water" — which is what the frame is actually claiming. + if (_heroes != null) + for (int i = 0; i < _heroes.Length; i++) + { + if (_heroes[i] == null) continue; + float p = t * bobSpeed + _heroPhase[i]; + _heroes[i].position = _heroBase[i] + new Vector3(0f, Mathf.Sin(p) * bobAmplitude, 0f); + _heroes[i].rotation = Quaternion.Euler( + Mathf.Sin(p * 0.7f) * swayDegrees * 0.5f, + _heroes[i].rotation.eulerAngles.y, + Mathf.Cos(p * 0.9f) * swayDegrees); + } } } }