wip : scarecrow fix & subtitle event implementation
This commit is contained in:
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -17,5 +17,5 @@ MonoBehaviour:
|
|||||||
- English
|
- English
|
||||||
- French
|
- French
|
||||||
_values:
|
_values:
|
||||||
- 'What ? '
|
- Where am I ?
|
||||||
- 'Quoi ? '
|
- 'Ou suis je ? '
|
||||||
|
|||||||
@@ -17,5 +17,5 @@ MonoBehaviour:
|
|||||||
- English
|
- English
|
||||||
- French
|
- French
|
||||||
_values:
|
_values:
|
||||||
- 'It won''t stop ? '
|
- I don't understand ?
|
||||||
- "Ca ne veut pas s'arr\xEAter ? "
|
- 'Je ne comprends pas ? '
|
||||||
|
|||||||
@@ -17,5 +17,5 @@ MonoBehaviour:
|
|||||||
- English
|
- English
|
||||||
- French
|
- French
|
||||||
_values:
|
_values:
|
||||||
- The theatre ?
|
- 'He ? '
|
||||||
- 'Le theatre ? '
|
- 'Hein ? '
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@@ -132,7 +132,7 @@ Material:
|
|||||||
- _Surface: 0
|
- _Surface: 0
|
||||||
- _VignettePower: 4.92
|
- _VignettePower: 4.92
|
||||||
- _VignetteStrength: 1
|
- _VignetteStrength: 1
|
||||||
- _Weight: 0.08962297
|
- _Weight: 1
|
||||||
- _WorkflowMode: 1
|
- _WorkflowMode: 1
|
||||||
- _XRMotionVectorsPass: 1
|
- _XRMotionVectorsPass: 1
|
||||||
- _ZWrite: 1
|
- _ZWrite: 1
|
||||||
|
|||||||
@@ -11,7 +11,6 @@ GameObject:
|
|||||||
- component: {fileID: 688462554248565909}
|
- component: {fileID: 688462554248565909}
|
||||||
- component: {fileID: 3502526413762748772}
|
- component: {fileID: 3502526413762748772}
|
||||||
- component: {fileID: 3666808908055770611}
|
- component: {fileID: 3666808908055770611}
|
||||||
- component: {fileID: 1386704396112132862}
|
|
||||||
m_Layer: 0
|
m_Layer: 0
|
||||||
m_Name: Ray
|
m_Name: Ray
|
||||||
m_TagString: Untagged
|
m_TagString: Untagged
|
||||||
@@ -62,6 +61,8 @@ MeshRenderer:
|
|||||||
m_RayTracingAccelStructBuildFlagsOverride: 0
|
m_RayTracingAccelStructBuildFlagsOverride: 0
|
||||||
m_RayTracingAccelStructBuildFlags: 1
|
m_RayTracingAccelStructBuildFlags: 1
|
||||||
m_SmallMeshCulling: 1
|
m_SmallMeshCulling: 1
|
||||||
|
m_ForceMeshLod: -1
|
||||||
|
m_MeshLodSelectionBias: 0
|
||||||
m_RenderingLayerMask: 1
|
m_RenderingLayerMask: 1
|
||||||
m_RendererPriority: 0
|
m_RendererPriority: 0
|
||||||
m_Materials:
|
m_Materials:
|
||||||
@@ -83,21 +84,9 @@ MeshRenderer:
|
|||||||
m_AutoUVMaxDistance: 0.5
|
m_AutoUVMaxDistance: 0.5
|
||||||
m_AutoUVMaxAngle: 89
|
m_AutoUVMaxAngle: 89
|
||||||
m_LightmapParameters: {fileID: 0}
|
m_LightmapParameters: {fileID: 0}
|
||||||
|
m_GlobalIlluminationMeshLod: 0
|
||||||
m_SortingLayerID: 0
|
m_SortingLayerID: 0
|
||||||
m_SortingLayer: 0
|
m_SortingLayer: 0
|
||||||
m_SortingOrder: 0
|
m_SortingOrder: 0
|
||||||
|
m_MaskInteraction: 0
|
||||||
m_AdditionalVertexStreams: {fileID: 0}
|
m_AdditionalVertexStreams: {fileID: 0}
|
||||||
--- !u!114 &1386704396112132862
|
|
||||||
MonoBehaviour:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 2541733693143394657}
|
|
||||||
m_Enabled: 1
|
|
||||||
m_EditorHideFlags: 0
|
|
||||||
m_Script: {fileID: 11500000, guid: cc3f4e6ebaca477438c280760d2d2f16, type: 3}
|
|
||||||
m_Name:
|
|
||||||
m_EditorClassIdentifier:
|
|
||||||
MeshFilter: {fileID: 3502526413762748772}
|
|
||||||
Renderer: {fileID: 3666808908055770611}
|
|
||||||
|
|||||||
@@ -806,11 +806,11 @@ PrefabInstance:
|
|||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 4440040250278121308, guid: 6493d77978c5c1246a0410d1f9204524, type: 3}
|
- target: {fileID: 4440040250278121308, guid: 6493d77978c5c1246a0410d1f9204524, type: 3}
|
||||||
propertyPath: m_LocalRotation.w
|
propertyPath: m_LocalRotation.w
|
||||||
value: 1
|
value: 0.9816273
|
||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 4440040250278121308, guid: 6493d77978c5c1246a0410d1f9204524, type: 3}
|
- target: {fileID: 4440040250278121308, guid: 6493d77978c5c1246a0410d1f9204524, type: 3}
|
||||||
propertyPath: m_LocalRotation.x
|
propertyPath: m_LocalRotation.x
|
||||||
value: 0
|
value: -0.19080894
|
||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 4440040250278121308, guid: 6493d77978c5c1246a0410d1f9204524, type: 3}
|
- target: {fileID: 4440040250278121308, guid: 6493d77978c5c1246a0410d1f9204524, type: 3}
|
||||||
propertyPath: m_LocalRotation.y
|
propertyPath: m_LocalRotation.y
|
||||||
@@ -822,7 +822,7 @@ PrefabInstance:
|
|||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 4440040250278121308, guid: 6493d77978c5c1246a0410d1f9204524, type: 3}
|
- target: {fileID: 4440040250278121308, guid: 6493d77978c5c1246a0410d1f9204524, type: 3}
|
||||||
propertyPath: m_LocalEulerAnglesHint.x
|
propertyPath: m_LocalEulerAnglesHint.x
|
||||||
value: 0
|
value: -22
|
||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 4484393045093388587, guid: 6493d77978c5c1246a0410d1f9204524, type: 3}
|
- target: {fileID: 4484393045093388587, guid: 6493d77978c5c1246a0410d1f9204524, type: 3}
|
||||||
propertyPath: _debugStressValue
|
propertyPath: _debugStressValue
|
||||||
@@ -1004,12 +1004,6 @@ PrefabInstance:
|
|||||||
insertIndex: -1
|
insertIndex: -1
|
||||||
addedObject: {fileID: 1918828521}
|
addedObject: {fileID: 1918828521}
|
||||||
m_AddedComponents:
|
m_AddedComponents:
|
||||||
- targetCorrespondingSourceObject: {fileID: 5575782855984327677, guid: 6493d77978c5c1246a0410d1f9204524, type: 3}
|
|
||||||
insertIndex: -1
|
|
||||||
addedObject: {fileID: 130733312}
|
|
||||||
- targetCorrespondingSourceObject: {fileID: 5575782855984327677, guid: 6493d77978c5c1246a0410d1f9204524, type: 3}
|
|
||||||
insertIndex: -1
|
|
||||||
addedObject: {fileID: 130733313}
|
|
||||||
- targetCorrespondingSourceObject: {fileID: 2101508725665932610, guid: 6493d77978c5c1246a0410d1f9204524, type: 3}
|
- targetCorrespondingSourceObject: {fileID: 2101508725665932610, guid: 6493d77978c5c1246a0410d1f9204524, type: 3}
|
||||||
insertIndex: -1
|
insertIndex: -1
|
||||||
addedObject: {fileID: 126892899}
|
addedObject: {fileID: 126892899}
|
||||||
@@ -1072,102 +1066,6 @@ MonoBehaviour:
|
|||||||
scalingFactor: 1
|
scalingFactor: 1
|
||||||
m_posOffsetData: {fileID: 0}
|
m_posOffsetData: {fileID: 0}
|
||||||
listenerMask: 1
|
listenerMask: 1
|
||||||
--- !u!1 &130733311 stripped
|
|
||||||
GameObject:
|
|
||||||
m_CorrespondingSourceObject: {fileID: 5575782855984327677, guid: 6493d77978c5c1246a0410d1f9204524, type: 3}
|
|
||||||
m_PrefabInstance: {fileID: 126892893}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
--- !u!114 &130733312
|
|
||||||
MonoBehaviour:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 130733311}
|
|
||||||
m_Enabled: 1
|
|
||||||
m_EditorHideFlags: 0
|
|
||||||
m_Script: {fileID: 11500000, guid: 0097589062bdfad4a96fa20e8effbe2f, type: 3}
|
|
||||||
m_Name:
|
|
||||||
m_EditorClassIdentifier: OctoCore.Runtime::OctoCore.Components.OctoProceduralAnimator
|
|
||||||
_settings:
|
|
||||||
Space: 0
|
|
||||||
Type: 3
|
|
||||||
Balance: 1
|
|
||||||
Curve:
|
|
||||||
serializedVersion: 2
|
|
||||||
m_Curve:
|
|
||||||
- serializedVersion: 3
|
|
||||||
time: 0
|
|
||||||
value: 0
|
|
||||||
inSlope: 0
|
|
||||||
outSlope: 0
|
|
||||||
tangentMode: 0
|
|
||||||
weightedMode: 0
|
|
||||||
inWeight: 0
|
|
||||||
outWeight: 0
|
|
||||||
- serializedVersion: 3
|
|
||||||
time: 1
|
|
||||||
value: 1
|
|
||||||
inSlope: 0
|
|
||||||
outSlope: 0
|
|
||||||
tangentMode: 0
|
|
||||||
weightedMode: 0
|
|
||||||
inWeight: 0
|
|
||||||
outWeight: 0
|
|
||||||
m_PreInfinity: 2
|
|
||||||
m_PostInfinity: 2
|
|
||||||
m_RotationOrder: 4
|
|
||||||
RandomOffset: 1
|
|
||||||
Duration: 15
|
|
||||||
CycleOffset: 0
|
|
||||||
Translation: {x: 0, y: 0, z: 0}
|
|
||||||
Rotation: {x: -22, y: 0, z: 0}
|
|
||||||
Scale: {x: 0, y: 0, z: 0}
|
|
||||||
_state:
|
|
||||||
CurrentTime: 0
|
|
||||||
IsFinished: 0
|
|
||||||
InitialPosition: {x: 0, y: 0, z: 0}
|
|
||||||
InitialRotation: {x: 0, y: 0, z: 0, w: 0}
|
|
||||||
InitialScale: {x: 0, y: 0, z: 0}
|
|
||||||
--- !u!114 &130733313
|
|
||||||
MonoBehaviour:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 130733311}
|
|
||||||
m_Enabled: 1
|
|
||||||
m_EditorHideFlags: 0
|
|
||||||
m_Script: {fileID: 11500000, guid: 5170627695bd877419928fa9ca37865d, type: 3}
|
|
||||||
m_Name:
|
|
||||||
m_EditorClassIdentifier: OctoCore.Runtime::OctoCore.Components.OctoWorldEvent
|
|
||||||
_trigger: 2
|
|
||||||
_action: 0
|
|
||||||
_condition: 0
|
|
||||||
_tags: []
|
|
||||||
_targets: []
|
|
||||||
_tolerance: 0.5
|
|
||||||
_duration: 1
|
|
||||||
_execution: 1
|
|
||||||
_delay: 10
|
|
||||||
_onTrigger:
|
|
||||||
m_PersistentCalls:
|
|
||||||
m_Calls: []
|
|
||||||
_onTriggerDelayed:
|
|
||||||
m_PersistentCalls:
|
|
||||||
m_Calls:
|
|
||||||
- m_Target: {fileID: 130733312}
|
|
||||||
m_TargetAssemblyTypeName: OctoCore.Components.OctoProceduralAnimator, OctoCore.Runtime
|
|
||||||
m_MethodName: PlayAnimation
|
|
||||||
m_Mode: 1
|
|
||||||
m_Arguments:
|
|
||||||
m_ObjectArgument: {fileID: 0}
|
|
||||||
m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
|
|
||||||
m_IntArgument: 0
|
|
||||||
m_FloatArgument: 0
|
|
||||||
m_StringArgument:
|
|
||||||
m_BoolArgument: 0
|
|
||||||
m_CallState: 2
|
|
||||||
--- !u!1 &166766592 stripped
|
--- !u!1 &166766592 stripped
|
||||||
GameObject:
|
GameObject:
|
||||||
m_CorrespondingSourceObject: {fileID: 8829451551789304542, guid: 8206b722d11501a449d6a278cca2adfa, type: 3}
|
m_CorrespondingSourceObject: {fileID: 8829451551789304542, guid: 8206b722d11501a449d6a278cca2adfa, type: 3}
|
||||||
@@ -1239,6 +1137,39 @@ Transform:
|
|||||||
- {fileID: 498371833}
|
- {fileID: 498371833}
|
||||||
m_Father: {fileID: 0}
|
m_Father: {fileID: 0}
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
--- !u!1 &228353701
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 228353702}
|
||||||
|
m_Layer: 0
|
||||||
|
m_Name: 'FlamesReflections '
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!4 &228353702
|
||||||
|
Transform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 228353701}
|
||||||
|
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: 1879689922}
|
||||||
|
- {fileID: 1952597877}
|
||||||
|
m_Father: {fileID: 571823342}
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
--- !u!1001 &230644866
|
--- !u!1001 &230644866
|
||||||
PrefabInstance:
|
PrefabInstance:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@@ -1249,23 +1180,23 @@ PrefabInstance:
|
|||||||
m_Modifications:
|
m_Modifications:
|
||||||
- target: {fileID: 303326238445583123, guid: b235f6e405ca9644bb305756268ae07f, type: 3}
|
- target: {fileID: 303326238445583123, guid: b235f6e405ca9644bb305756268ae07f, type: 3}
|
||||||
propertyPath: m_LocalScale.x
|
propertyPath: m_LocalScale.x
|
||||||
value: 4
|
value: 8
|
||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 303326238445583123, guid: b235f6e405ca9644bb305756268ae07f, type: 3}
|
- target: {fileID: 303326238445583123, guid: b235f6e405ca9644bb305756268ae07f, type: 3}
|
||||||
propertyPath: m_LocalScale.y
|
propertyPath: m_LocalScale.y
|
||||||
value: 5.0204
|
value: 9.774718
|
||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 303326238445583123, guid: b235f6e405ca9644bb305756268ae07f, type: 3}
|
- target: {fileID: 303326238445583123, guid: b235f6e405ca9644bb305756268ae07f, type: 3}
|
||||||
propertyPath: m_LocalScale.z
|
propertyPath: m_LocalScale.z
|
||||||
value: 4
|
value: 8
|
||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 303326238445583123, guid: b235f6e405ca9644bb305756268ae07f, type: 3}
|
- target: {fileID: 303326238445583123, guid: b235f6e405ca9644bb305756268ae07f, type: 3}
|
||||||
propertyPath: m_LocalPosition.x
|
propertyPath: m_LocalPosition.x
|
||||||
value: 12.46
|
value: 24
|
||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 303326238445583123, guid: b235f6e405ca9644bb305756268ae07f, type: 3}
|
- target: {fileID: 303326238445583123, guid: b235f6e405ca9644bb305756268ae07f, type: 3}
|
||||||
propertyPath: m_LocalPosition.y
|
propertyPath: m_LocalPosition.y
|
||||||
value: -3.094842
|
value: 8.6539
|
||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 303326238445583123, guid: b235f6e405ca9644bb305756268ae07f, type: 3}
|
- target: {fileID: 303326238445583123, guid: b235f6e405ca9644bb305756268ae07f, type: 3}
|
||||||
propertyPath: m_LocalPosition.z
|
propertyPath: m_LocalPosition.z
|
||||||
@@ -1301,7 +1232,7 @@ PrefabInstance:
|
|||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 303326238445583123, guid: b235f6e405ca9644bb305756268ae07f, type: 3}
|
- target: {fileID: 303326238445583123, guid: b235f6e405ca9644bb305756268ae07f, type: 3}
|
||||||
propertyPath: m_ConstrainProportionsScale
|
propertyPath: m_ConstrainProportionsScale
|
||||||
value: 1
|
value: 0
|
||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 787135931011508029, guid: b235f6e405ca9644bb305756268ae07f, type: 3}
|
- target: {fileID: 787135931011508029, guid: b235f6e405ca9644bb305756268ae07f, type: 3}
|
||||||
propertyPath: m_Name
|
propertyPath: m_Name
|
||||||
@@ -1719,7 +1650,7 @@ Transform:
|
|||||||
m_ConstrainProportionsScale: 0
|
m_ConstrainProportionsScale: 0
|
||||||
m_Children:
|
m_Children:
|
||||||
- {fileID: 1058633435}
|
- {fileID: 1058633435}
|
||||||
- {fileID: 1879689922}
|
- {fileID: 228353702}
|
||||||
m_Father: {fileID: 0}
|
m_Father: {fileID: 0}
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
--- !u!1 &575144955
|
--- !u!1 &575144955
|
||||||
@@ -2007,51 +1938,6 @@ Transform:
|
|||||||
m_CorrespondingSourceObject: {fileID: 2721267321453921552, guid: a4ca96f09a0c04645aa697def551b52d, type: 3}
|
m_CorrespondingSourceObject: {fileID: 2721267321453921552, guid: a4ca96f09a0c04645aa697def551b52d, type: 3}
|
||||||
m_PrefabInstance: {fileID: 620676192}
|
m_PrefabInstance: {fileID: 620676192}
|
||||||
m_PrefabAsset: {fileID: 0}
|
m_PrefabAsset: {fileID: 0}
|
||||||
--- !u!1 &658668483
|
|
||||||
GameObject:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
serializedVersion: 6
|
|
||||||
m_Component:
|
|
||||||
- component: {fileID: 658668485}
|
|
||||||
- component: {fileID: 658668484}
|
|
||||||
m_Layer: 0
|
|
||||||
m_Name: InputManager
|
|
||||||
m_TagString: Untagged
|
|
||||||
m_Icon: {fileID: 0}
|
|
||||||
m_NavMeshLayer: 0
|
|
||||||
m_StaticEditorFlags: 0
|
|
||||||
m_IsActive: 1
|
|
||||||
--- !u!114 &658668484
|
|
||||||
MonoBehaviour:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 658668483}
|
|
||||||
m_Enabled: 0
|
|
||||||
m_EditorHideFlags: 0
|
|
||||||
m_Script: {fileID: 11500000, guid: e340839b22a784542ba8afdfde612c2e, type: 3}
|
|
||||||
m_Name:
|
|
||||||
m_EditorClassIdentifier: Assembly-CSharp::Unheimlich.Core.Input.InputManager
|
|
||||||
_currentContext: 3
|
|
||||||
--- !u!4 &658668485
|
|
||||||
Transform:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 658668483}
|
|
||||||
serializedVersion: 2
|
|
||||||
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
|
|
||||||
m_LocalPosition: {x: -1.32941, y: -1.014, z: 2.47307}
|
|
||||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
|
||||||
m_ConstrainProportionsScale: 0
|
|
||||||
m_Children: []
|
|
||||||
m_Father: {fileID: 1358231749}
|
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
|
||||||
--- !u!1 &832575517
|
--- !u!1 &832575517
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@@ -2455,23 +2341,23 @@ PrefabInstance:
|
|||||||
m_Modifications:
|
m_Modifications:
|
||||||
- target: {fileID: 303326238445583123, guid: b235f6e405ca9644bb305756268ae07f, type: 3}
|
- target: {fileID: 303326238445583123, guid: b235f6e405ca9644bb305756268ae07f, type: 3}
|
||||||
propertyPath: m_LocalScale.x
|
propertyPath: m_LocalScale.x
|
||||||
value: 4
|
value: 8
|
||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 303326238445583123, guid: b235f6e405ca9644bb305756268ae07f, type: 3}
|
- target: {fileID: 303326238445583123, guid: b235f6e405ca9644bb305756268ae07f, type: 3}
|
||||||
propertyPath: m_LocalScale.y
|
propertyPath: m_LocalScale.y
|
||||||
value: 5.0204
|
value: 9.774718
|
||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 303326238445583123, guid: b235f6e405ca9644bb305756268ae07f, type: 3}
|
- target: {fileID: 303326238445583123, guid: b235f6e405ca9644bb305756268ae07f, type: 3}
|
||||||
propertyPath: m_LocalScale.z
|
propertyPath: m_LocalScale.z
|
||||||
value: 4
|
value: 8
|
||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 303326238445583123, guid: b235f6e405ca9644bb305756268ae07f, type: 3}
|
- target: {fileID: 303326238445583123, guid: b235f6e405ca9644bb305756268ae07f, type: 3}
|
||||||
propertyPath: m_LocalPosition.x
|
propertyPath: m_LocalPosition.x
|
||||||
value: -12
|
value: -24
|
||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 303326238445583123, guid: b235f6e405ca9644bb305756268ae07f, type: 3}
|
- target: {fileID: 303326238445583123, guid: b235f6e405ca9644bb305756268ae07f, type: 3}
|
||||||
propertyPath: m_LocalPosition.y
|
propertyPath: m_LocalPosition.y
|
||||||
value: -3.094842
|
value: 8.6539
|
||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 303326238445583123, guid: b235f6e405ca9644bb305756268ae07f, type: 3}
|
- target: {fileID: 303326238445583123, guid: b235f6e405ca9644bb305756268ae07f, type: 3}
|
||||||
propertyPath: m_LocalPosition.z
|
propertyPath: m_LocalPosition.z
|
||||||
@@ -2507,7 +2393,7 @@ PrefabInstance:
|
|||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 303326238445583123, guid: b235f6e405ca9644bb305756268ae07f, type: 3}
|
- target: {fileID: 303326238445583123, guid: b235f6e405ca9644bb305756268ae07f, type: 3}
|
||||||
propertyPath: m_ConstrainProportionsScale
|
propertyPath: m_ConstrainProportionsScale
|
||||||
value: 1
|
value: 0
|
||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 787135931011508029, guid: b235f6e405ca9644bb305756268ae07f, type: 3}
|
- target: {fileID: 787135931011508029, guid: b235f6e405ca9644bb305756268ae07f, type: 3}
|
||||||
propertyPath: m_Name
|
propertyPath: m_Name
|
||||||
@@ -2843,7 +2729,6 @@ Transform:
|
|||||||
m_ConstrainProportionsScale: 0
|
m_ConstrainProportionsScale: 0
|
||||||
m_Children:
|
m_Children:
|
||||||
- {fileID: 1533276369}
|
- {fileID: 1533276369}
|
||||||
- {fileID: 658668485}
|
|
||||||
- {fileID: 882795733}
|
- {fileID: 882795733}
|
||||||
m_Father: {fileID: 0}
|
m_Father: {fileID: 0}
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
@@ -2875,8 +2760,8 @@ Transform:
|
|||||||
m_GameObject: {fileID: 1520114605}
|
m_GameObject: {fileID: 1520114605}
|
||||||
serializedVersion: 2
|
serializedVersion: 2
|
||||||
m_LocalRotation: {x: 0.7071068, y: -0, z: -0, w: 0.7071068}
|
m_LocalRotation: {x: 0.7071068, y: -0, z: -0, w: 0.7071068}
|
||||||
m_LocalPosition: {x: 0, y: -16.294641, z: 0}
|
m_LocalPosition: {x: 0, y: -19.2968, z: 0}
|
||||||
m_LocalScale: {x: 2.297417, y: 5, z: 4.9749117}
|
m_LocalScale: {x: 5.169189, y: 11.250002, z: 10.593136}
|
||||||
m_ConstrainProportionsScale: 1
|
m_ConstrainProportionsScale: 1
|
||||||
m_Children: []
|
m_Children: []
|
||||||
m_Father: {fileID: 1527450886}
|
m_Father: {fileID: 1527450886}
|
||||||
@@ -2928,7 +2813,7 @@ MeshRenderer:
|
|||||||
m_RenderingLayerMask: 1
|
m_RenderingLayerMask: 1
|
||||||
m_RendererPriority: 0
|
m_RendererPriority: 0
|
||||||
m_Materials:
|
m_Materials:
|
||||||
- {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, type: 2}
|
- {fileID: 2100000, guid: 5f465680b9c699e4a8e573e246fa1e9e, type: 2}
|
||||||
m_StaticBatchInfo:
|
m_StaticBatchInfo:
|
||||||
firstSubMesh: 0
|
firstSubMesh: 0
|
||||||
subMeshCount: 0
|
subMeshCount: 0
|
||||||
@@ -3116,9 +3001,12 @@ MonoBehaviour:
|
|||||||
m_PreInfinity: 2
|
m_PreInfinity: 2
|
||||||
m_PostInfinity: 2
|
m_PostInfinity: 2
|
||||||
m_RotationOrder: 4
|
m_RotationOrder: 4
|
||||||
_heatMaterial: {fileID: 2100000, guid: 1daabe35e56c7bf41bb81f984e694029, type: 2}
|
_heatMaterial: {fileID: 0}
|
||||||
_lightFlicker: {fileID: 0}
|
_lights:
|
||||||
_targetLightIntensity: 15000
|
- Flicker: {fileID: 1879689923}
|
||||||
|
TargetIntensity: 15000
|
||||||
|
- Flicker: {fileID: 1952597878}
|
||||||
|
TargetIntensity: 300
|
||||||
--- !u!4 &1533276369
|
--- !u!4 &1533276369
|
||||||
Transform:
|
Transform:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@@ -3720,7 +3608,7 @@ PrefabInstance:
|
|||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 8829451551789304537, guid: 8206b722d11501a449d6a278cca2adfa, type: 3}
|
- target: {fileID: 8829451551789304537, guid: 8206b722d11501a449d6a278cca2adfa, type: 3}
|
||||||
propertyPath: m_LocalScale.y
|
propertyPath: m_LocalScale.y
|
||||||
value: 9.897436
|
value: 9
|
||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 8829451551789304537, guid: 8206b722d11501a449d6a278cca2adfa, type: 3}
|
- target: {fileID: 8829451551789304537, guid: 8206b722d11501a449d6a278cca2adfa, type: 3}
|
||||||
propertyPath: m_LocalScale.z
|
propertyPath: m_LocalScale.z
|
||||||
@@ -3732,7 +3620,7 @@ PrefabInstance:
|
|||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 8829451551789304537, guid: 8206b722d11501a449d6a278cca2adfa, type: 3}
|
- target: {fileID: 8829451551789304537, guid: 8206b722d11501a449d6a278cca2adfa, type: 3}
|
||||||
propertyPath: m_LocalPosition.y
|
propertyPath: m_LocalPosition.y
|
||||||
value: 9.4512825
|
value: 8.44
|
||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 8829451551789304537, guid: 8206b722d11501a449d6a278cca2adfa, type: 3}
|
- target: {fileID: 8829451551789304537, guid: 8206b722d11501a449d6a278cca2adfa, type: 3}
|
||||||
propertyPath: m_LocalPosition.z
|
propertyPath: m_LocalPosition.z
|
||||||
@@ -3864,7 +3752,7 @@ GameObject:
|
|||||||
- component: {fileID: 1879689922}
|
- component: {fileID: 1879689922}
|
||||||
- component: {fileID: 1879689921}
|
- component: {fileID: 1879689921}
|
||||||
- component: {fileID: 1879689920}
|
- component: {fileID: 1879689920}
|
||||||
- component: {fileID: 1879689919}
|
- component: {fileID: 1879689923}
|
||||||
m_Layer: 0
|
m_Layer: 0
|
||||||
m_Name: Point Light
|
m_Name: Point Light
|
||||||
m_TagString: Untagged
|
m_TagString: Untagged
|
||||||
@@ -3872,18 +3760,6 @@ GameObject:
|
|||||||
m_NavMeshLayer: 0
|
m_NavMeshLayer: 0
|
||||||
m_StaticEditorFlags: 0
|
m_StaticEditorFlags: 0
|
||||||
m_IsActive: 1
|
m_IsActive: 1
|
||||||
--- !u!114 &1879689919
|
|
||||||
MonoBehaviour:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 1879689918}
|
|
||||||
m_Enabled: 1
|
|
||||||
m_EditorHideFlags: 0
|
|
||||||
m_Script: {fileID: 11500000, guid: d4144428452c31843a84d459266f8212, type: 3}
|
|
||||||
m_Name:
|
|
||||||
m_EditorClassIdentifier: Assembly-CSharp::MonoLimboStudio.LightFlicker
|
|
||||||
--- !u!114 &1879689920
|
--- !u!114 &1879689920
|
||||||
MonoBehaviour:
|
MonoBehaviour:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@@ -3923,9 +3799,9 @@ Light:
|
|||||||
m_Enabled: 1
|
m_Enabled: 1
|
||||||
serializedVersion: 12
|
serializedVersion: 12
|
||||||
m_Type: 2
|
m_Type: 2
|
||||||
m_Color: {r: 0.5471698, g: 0.2757114, b: 0.17722787, a: 1}
|
m_Color: {r: 0.9716981, g: 0.32118085, b: 0, a: 1}
|
||||||
m_Intensity: 5000
|
m_Intensity: 5000
|
||||||
m_Range: 25.400116
|
m_Range: 32.184563
|
||||||
m_SpotAngle: 30
|
m_SpotAngle: 30
|
||||||
m_InnerSpotAngle: 21.80208
|
m_InnerSpotAngle: 21.80208
|
||||||
m_CookieSize2D: {x: 0.5, y: 0.5}
|
m_CookieSize2D: {x: 0.5, y: 0.5}
|
||||||
@@ -3987,12 +3863,31 @@ Transform:
|
|||||||
m_GameObject: {fileID: 1879689918}
|
m_GameObject: {fileID: 1879689918}
|
||||||
serializedVersion: 2
|
serializedVersion: 2
|
||||||
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
|
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
|
||||||
m_LocalPosition: {x: 0.17059004, y: 10.366, z: -1.12693}
|
m_LocalPosition: {x: 0, y: 15.91, z: -1.3500001}
|
||||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
m_ConstrainProportionsScale: 0
|
m_ConstrainProportionsScale: 0
|
||||||
m_Children: []
|
m_Children: []
|
||||||
m_Father: {fileID: 571823342}
|
m_Father: {fileID: 228353702}
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
--- !u!114 &1879689923
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1879689918}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 1df1fd6452d396e4699ee7d8406130a2, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier: Assembly-CSharp::MonoLimboStudio.LightFlicker
|
||||||
|
targetLight: {fileID: 1879689921}
|
||||||
|
baseIntensity: 0
|
||||||
|
flickerRange: 0.4
|
||||||
|
flickerSpeed: 0.6
|
||||||
|
glitchChance: 0.15
|
||||||
|
glitchMinDuration: 0.1
|
||||||
|
glitchMaxDuration: 0.2
|
||||||
--- !u!1001 &1884628755
|
--- !u!1001 &1884628755
|
||||||
PrefabInstance:
|
PrefabInstance:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@@ -4201,6 +4096,153 @@ MeshFilter:
|
|||||||
m_PrefabAsset: {fileID: 0}
|
m_PrefabAsset: {fileID: 0}
|
||||||
m_GameObject: {fileID: 1918828520}
|
m_GameObject: {fileID: 1918828520}
|
||||||
m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0}
|
m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0}
|
||||||
|
--- !u!1 &1952597876
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 1952597877}
|
||||||
|
- component: {fileID: 1952597880}
|
||||||
|
- component: {fileID: 1952597879}
|
||||||
|
- component: {fileID: 1952597878}
|
||||||
|
m_Layer: 0
|
||||||
|
m_Name: Point Light (1)
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!4 &1952597877
|
||||||
|
Transform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1952597876}
|
||||||
|
serializedVersion: 2
|
||||||
|
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
|
||||||
|
m_LocalPosition: {x: 0, y: 15.91, z: 9.53}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_ConstrainProportionsScale: 0
|
||||||
|
m_Children: []
|
||||||
|
m_Father: {fileID: 228353702}
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
--- !u!114 &1952597878
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1952597876}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 1df1fd6452d396e4699ee7d8406130a2, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier: Assembly-CSharp::MonoLimboStudio.LightFlicker
|
||||||
|
targetLight: {fileID: 1952597880}
|
||||||
|
baseIntensity: 0
|
||||||
|
flickerRange: 0.2
|
||||||
|
flickerSpeed: 0.4
|
||||||
|
glitchChance: 0
|
||||||
|
glitchMinDuration: 0
|
||||||
|
glitchMaxDuration: 0
|
||||||
|
--- !u!114 &1952597879
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1952597876}
|
||||||
|
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!108 &1952597880
|
||||||
|
Light:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1952597876}
|
||||||
|
m_Enabled: 1
|
||||||
|
serializedVersion: 12
|
||||||
|
m_Type: 2
|
||||||
|
m_Color: {r: 0.972549, g: 0.17432763, b: 0, a: 1}
|
||||||
|
m_Intensity: 200
|
||||||
|
m_Range: 32.184563
|
||||||
|
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_ShadowRadius: 0
|
||||||
|
m_ShadowAngle: 0
|
||||||
|
m_LightUnit: 1
|
||||||
|
m_LuxAtDistance: 1
|
||||||
|
m_EnableSpotReflector: 1
|
||||||
--- !u!1001 &1976921335
|
--- !u!1001 &1976921335
|
||||||
PrefabInstance:
|
PrefabInstance:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
|
|||||||
@@ -1654,6 +1654,18 @@ MonoBehaviour:
|
|||||||
m_StringArgument:
|
m_StringArgument:
|
||||||
m_BoolArgument: 1
|
m_BoolArgument: 1
|
||||||
m_CallState: 2
|
m_CallState: 2
|
||||||
|
- m_Target: {fileID: 625490235}
|
||||||
|
m_TargetAssemblyTypeName: Unheimlich.World.CameraSystem.LostFootageRig, Assembly-CSharp
|
||||||
|
m_MethodName: Enable
|
||||||
|
m_Mode: 1
|
||||||
|
m_Arguments:
|
||||||
|
m_ObjectArgument: {fileID: 0}
|
||||||
|
m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
|
||||||
|
m_IntArgument: 0
|
||||||
|
m_FloatArgument: 0
|
||||||
|
m_StringArgument:
|
||||||
|
m_BoolArgument: 1
|
||||||
|
m_CallState: 2
|
||||||
_onTriggerDelayed:
|
_onTriggerDelayed:
|
||||||
m_PersistentCalls:
|
m_PersistentCalls:
|
||||||
m_Calls: []
|
m_Calls: []
|
||||||
@@ -4874,6 +4886,17 @@ Light:
|
|||||||
m_LightUnit: 1
|
m_LightUnit: 1
|
||||||
m_LuxAtDistance: 1
|
m_LuxAtDistance: 1
|
||||||
m_EnableSpotReflector: 1
|
m_EnableSpotReflector: 1
|
||||||
|
--- !u!114 &625490235 stripped
|
||||||
|
MonoBehaviour:
|
||||||
|
m_CorrespondingSourceObject: {fileID: 1476756471834662335, guid: 6493d77978c5c1246a0410d1f9204524, type: 3}
|
||||||
|
m_PrefabInstance: {fileID: 1549040694}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 320cde26f18d40b40a31c85e85ee4e59, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier: Assembly-CSharp::Unheimlich.World.CameraSystem.LostFootageRig
|
||||||
--- !u!4 &638798851 stripped
|
--- !u!4 &638798851 stripped
|
||||||
Transform:
|
Transform:
|
||||||
m_CorrespondingSourceObject: {fileID: -1693702828174715032, guid: 026d90e6b31bf0f47b6072ba92aef39a, type: 3}
|
m_CorrespondingSourceObject: {fileID: -1693702828174715032, guid: 026d90e6b31bf0f47b6072ba92aef39a, type: 3}
|
||||||
@@ -8202,10 +8225,12 @@ GameObject:
|
|||||||
- component: {fileID: 938880779}
|
- component: {fileID: 938880779}
|
||||||
- component: {fileID: 938880778}
|
- component: {fileID: 938880778}
|
||||||
- component: {fileID: 938880777}
|
- component: {fileID: 938880777}
|
||||||
- component: {fileID: 938880775}
|
- component: {fileID: 938880781}
|
||||||
- component: {fileID: 938880776}
|
- component: {fileID: 938880776}
|
||||||
|
- component: {fileID: 938880775}
|
||||||
|
- component: {fileID: 938880780}
|
||||||
m_Layer: 0
|
m_Layer: 0
|
||||||
m_Name: DialogueOne
|
m_Name: DialogueA
|
||||||
m_TagString: Untagged
|
m_TagString: Untagged
|
||||||
m_Icon: {fileID: 0}
|
m_Icon: {fileID: 0}
|
||||||
m_NavMeshLayer: 0
|
m_NavMeshLayer: 0
|
||||||
@@ -8293,7 +8318,7 @@ MonoBehaviour:
|
|||||||
m_Script: {fileID: 11500000, guid: 1023fdbb836c50f48bd4b52575ed3689, type: 3}
|
m_Script: {fileID: 11500000, guid: 1023fdbb836c50f48bd4b52575ed3689, type: 3}
|
||||||
m_Name:
|
m_Name:
|
||||||
m_EditorClassIdentifier: OctoCore.Runtime::OctoCore.Localization.OctoLocalizedText
|
m_EditorClassIdentifier: OctoCore.Runtime::OctoCore.Localization.OctoLocalizedText
|
||||||
data: {fileID: 0}
|
data: {fileID: 11400000, guid: 973e511f44be1e7419527fbc54fa0bf1, type: 2}
|
||||||
text: {fileID: 0}
|
text: {fileID: 0}
|
||||||
textMeshPro: {fileID: 0}
|
textMeshPro: {fileID: 0}
|
||||||
textMeshProUGUI: {fileID: 938880778}
|
textMeshProUGUI: {fileID: 938880778}
|
||||||
@@ -8342,7 +8367,7 @@ MonoBehaviour:
|
|||||||
m_OnCullStateChanged:
|
m_OnCullStateChanged:
|
||||||
m_PersistentCalls:
|
m_PersistentCalls:
|
||||||
m_Calls: []
|
m_Calls: []
|
||||||
m_text: 'Ou suis je ? '
|
m_text: Where am I ?
|
||||||
m_isRightToLeft: 0
|
m_isRightToLeft: 0
|
||||||
m_fontAsset: {fileID: 11400000, guid: 9861d68f4cda1504f8e39cc1464e8bec, type: 2}
|
m_fontAsset: {fileID: 11400000, guid: 9861d68f4cda1504f8e39cc1464e8bec, type: 2}
|
||||||
m_sharedMaterial: {fileID: -7153799593197912463, guid: 9861d68f4cda1504f8e39cc1464e8bec, type: 2}
|
m_sharedMaterial: {fileID: -7153799593197912463, guid: 9861d68f4cda1504f8e39cc1464e8bec, type: 2}
|
||||||
@@ -8422,6 +8447,58 @@ CanvasRenderer:
|
|||||||
m_PrefabAsset: {fileID: 0}
|
m_PrefabAsset: {fileID: 0}
|
||||||
m_GameObject: {fileID: 938880773}
|
m_GameObject: {fileID: 938880773}
|
||||||
m_CullTransparentMesh: 1
|
m_CullTransparentMesh: 1
|
||||||
|
--- !u!114 &938880780
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 938880773}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 5170627695bd877419928fa9ca37865d, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier: OctoCore.Runtime::OctoCore.Components.OctoWorldEvent
|
||||||
|
_trigger: 3
|
||||||
|
_action: 0
|
||||||
|
_condition: 0
|
||||||
|
_tags: []
|
||||||
|
_targets: []
|
||||||
|
_tolerance: 0.5
|
||||||
|
_duration: 1
|
||||||
|
_execution: 1
|
||||||
|
_delay: 3
|
||||||
|
_onTrigger:
|
||||||
|
m_PersistentCalls:
|
||||||
|
m_Calls: []
|
||||||
|
_onTriggerDelayed:
|
||||||
|
m_PersistentCalls:
|
||||||
|
m_Calls:
|
||||||
|
- m_Target: {fileID: 681190132}
|
||||||
|
m_TargetAssemblyTypeName: Unheimlich.Features.Hallucination.HallucinationFlash,
|
||||||
|
Assembly-CSharp
|
||||||
|
m_MethodName: Play
|
||||||
|
m_Mode: 1
|
||||||
|
m_Arguments:
|
||||||
|
m_ObjectArgument: {fileID: 0}
|
||||||
|
m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
|
||||||
|
m_IntArgument: 0
|
||||||
|
m_FloatArgument: 0
|
||||||
|
m_StringArgument:
|
||||||
|
m_BoolArgument: 0
|
||||||
|
m_CallState: 2
|
||||||
|
--- !u!114 &938880781
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 938880773}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: a2fcf97d75546f147adf431e737bce52, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier: Assembly-CSharp::Unheimlich.Features.Dialogue.LocalizedSubtitle
|
||||||
--- !u!1 &939771951
|
--- !u!1 &939771951
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@@ -10769,6 +10846,18 @@ MonoBehaviour:
|
|||||||
m_StringArgument:
|
m_StringArgument:
|
||||||
m_BoolArgument: 0
|
m_BoolArgument: 0
|
||||||
m_CallState: 2
|
m_CallState: 2
|
||||||
|
- m_Target: {fileID: 625490235}
|
||||||
|
m_TargetAssemblyTypeName: Unheimlich.World.CameraSystem.LostFootageRig, Assembly-CSharp
|
||||||
|
m_MethodName: Disable
|
||||||
|
m_Mode: 1
|
||||||
|
m_Arguments:
|
||||||
|
m_ObjectArgument: {fileID: 0}
|
||||||
|
m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
|
||||||
|
m_IntArgument: 0
|
||||||
|
m_FloatArgument: 0
|
||||||
|
m_StringArgument:
|
||||||
|
m_BoolArgument: 0
|
||||||
|
m_CallState: 2
|
||||||
_onTriggerDelayed:
|
_onTriggerDelayed:
|
||||||
m_PersistentCalls:
|
m_PersistentCalls:
|
||||||
m_Calls: []
|
m_Calls: []
|
||||||
@@ -10809,7 +10898,7 @@ GameObject:
|
|||||||
- component: {fileID: 1161394551}
|
- component: {fileID: 1161394551}
|
||||||
- component: {fileID: 1161394545}
|
- component: {fileID: 1161394545}
|
||||||
m_Layer: 0
|
m_Layer: 0
|
||||||
m_Name: DialogueThree
|
m_Name: DialogueC
|
||||||
m_TagString: Untagged
|
m_TagString: Untagged
|
||||||
m_Icon: {fileID: 0}
|
m_Icon: {fileID: 0}
|
||||||
m_NavMeshLayer: 0
|
m_NavMeshLayer: 0
|
||||||
@@ -12093,10 +12182,11 @@ GameObject:
|
|||||||
- component: {fileID: 1221498299}
|
- component: {fileID: 1221498299}
|
||||||
- component: {fileID: 1221498298}
|
- component: {fileID: 1221498298}
|
||||||
- component: {fileID: 1221498297}
|
- component: {fileID: 1221498297}
|
||||||
- component: {fileID: 1221498295}
|
- component: {fileID: 1221498300}
|
||||||
- component: {fileID: 1221498296}
|
- component: {fileID: 1221498296}
|
||||||
|
- component: {fileID: 1221498295}
|
||||||
m_Layer: 0
|
m_Layer: 0
|
||||||
m_Name: DialogueThree
|
m_Name: DialogueC
|
||||||
m_TagString: Untagged
|
m_TagString: Untagged
|
||||||
m_Icon: {fileID: 0}
|
m_Icon: {fileID: 0}
|
||||||
m_NavMeshLayer: 0
|
m_NavMeshLayer: 0
|
||||||
@@ -12148,7 +12238,7 @@ MonoBehaviour:
|
|||||||
_onTriggerDelayed:
|
_onTriggerDelayed:
|
||||||
m_PersistentCalls:
|
m_PersistentCalls:
|
||||||
m_Calls:
|
m_Calls:
|
||||||
- m_Target: {fileID: 6305877997866428113}
|
- m_Target: {fileID: 477153748}
|
||||||
m_TargetAssemblyTypeName: Unheimlich.Features.Hallucination.HallucinationFlash,
|
m_TargetAssemblyTypeName: Unheimlich.Features.Hallucination.HallucinationFlash,
|
||||||
Assembly-CSharp
|
Assembly-CSharp
|
||||||
m_MethodName: Play
|
m_MethodName: Play
|
||||||
@@ -12173,7 +12263,7 @@ MonoBehaviour:
|
|||||||
m_Script: {fileID: 11500000, guid: 1023fdbb836c50f48bd4b52575ed3689, type: 3}
|
m_Script: {fileID: 11500000, guid: 1023fdbb836c50f48bd4b52575ed3689, type: 3}
|
||||||
m_Name:
|
m_Name:
|
||||||
m_EditorClassIdentifier: OctoCore.Runtime::OctoCore.Localization.OctoLocalizedText
|
m_EditorClassIdentifier: OctoCore.Runtime::OctoCore.Localization.OctoLocalizedText
|
||||||
data: {fileID: 0}
|
data: {fileID: 11400000, guid: 1775f09327d76ab4eac9a8b4b75480ff, type: 2}
|
||||||
text: {fileID: 0}
|
text: {fileID: 0}
|
||||||
textMeshPro: {fileID: 0}
|
textMeshPro: {fileID: 0}
|
||||||
textMeshProUGUI: {fileID: 1221498298}
|
textMeshProUGUI: {fileID: 1221498298}
|
||||||
@@ -12222,7 +12312,7 @@ MonoBehaviour:
|
|||||||
m_OnCullStateChanged:
|
m_OnCullStateChanged:
|
||||||
m_PersistentCalls:
|
m_PersistentCalls:
|
||||||
m_Calls: []
|
m_Calls: []
|
||||||
m_text: 'Hein ? '
|
m_text: 'He ? '
|
||||||
m_isRightToLeft: 0
|
m_isRightToLeft: 0
|
||||||
m_fontAsset: {fileID: 11400000, guid: 9861d68f4cda1504f8e39cc1464e8bec, type: 2}
|
m_fontAsset: {fileID: 11400000, guid: 9861d68f4cda1504f8e39cc1464e8bec, type: 2}
|
||||||
m_sharedMaterial: {fileID: -7153799593197912463, guid: 9861d68f4cda1504f8e39cc1464e8bec, type: 2}
|
m_sharedMaterial: {fileID: -7153799593197912463, guid: 9861d68f4cda1504f8e39cc1464e8bec, type: 2}
|
||||||
@@ -12302,6 +12392,18 @@ CanvasRenderer:
|
|||||||
m_PrefabAsset: {fileID: 0}
|
m_PrefabAsset: {fileID: 0}
|
||||||
m_GameObject: {fileID: 1221498293}
|
m_GameObject: {fileID: 1221498293}
|
||||||
m_CullTransparentMesh: 1
|
m_CullTransparentMesh: 1
|
||||||
|
--- !u!114 &1221498300
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1221498293}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: a2fcf97d75546f147adf431e737bce52, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier: Assembly-CSharp::Unheimlich.Features.Dialogue.LocalizedSubtitle
|
||||||
--- !u!1 &1233009596
|
--- !u!1 &1233009596
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@@ -12357,10 +12459,12 @@ GameObject:
|
|||||||
- component: {fileID: 1270400839}
|
- component: {fileID: 1270400839}
|
||||||
- component: {fileID: 1270400838}
|
- component: {fileID: 1270400838}
|
||||||
- component: {fileID: 1270400837}
|
- component: {fileID: 1270400837}
|
||||||
- component: {fileID: 1270400835}
|
- component: {fileID: 1270400841}
|
||||||
- component: {fileID: 1270400836}
|
- component: {fileID: 1270400836}
|
||||||
|
- component: {fileID: 1270400835}
|
||||||
|
- component: {fileID: 1270400840}
|
||||||
m_Layer: 0
|
m_Layer: 0
|
||||||
m_Name: DialogueTwo
|
m_Name: DialogueB
|
||||||
m_TagString: Untagged
|
m_TagString: Untagged
|
||||||
m_Icon: {fileID: 0}
|
m_Icon: {fileID: 0}
|
||||||
m_NavMeshLayer: 0
|
m_NavMeshLayer: 0
|
||||||
@@ -12448,7 +12552,7 @@ MonoBehaviour:
|
|||||||
m_Script: {fileID: 11500000, guid: 1023fdbb836c50f48bd4b52575ed3689, type: 3}
|
m_Script: {fileID: 11500000, guid: 1023fdbb836c50f48bd4b52575ed3689, type: 3}
|
||||||
m_Name:
|
m_Name:
|
||||||
m_EditorClassIdentifier: OctoCore.Runtime::OctoCore.Localization.OctoLocalizedText
|
m_EditorClassIdentifier: OctoCore.Runtime::OctoCore.Localization.OctoLocalizedText
|
||||||
data: {fileID: 0}
|
data: {fileID: 11400000, guid: 3c05ba91d318d524fbcf867fe886c553, type: 2}
|
||||||
text: {fileID: 0}
|
text: {fileID: 0}
|
||||||
textMeshPro: {fileID: 0}
|
textMeshPro: {fileID: 0}
|
||||||
textMeshProUGUI: {fileID: 1270400838}
|
textMeshProUGUI: {fileID: 1270400838}
|
||||||
@@ -12497,7 +12601,7 @@ MonoBehaviour:
|
|||||||
m_OnCullStateChanged:
|
m_OnCullStateChanged:
|
||||||
m_PersistentCalls:
|
m_PersistentCalls:
|
||||||
m_Calls: []
|
m_Calls: []
|
||||||
m_text: 'Je ne comprend pas ? '
|
m_text: I don't understand ?
|
||||||
m_isRightToLeft: 0
|
m_isRightToLeft: 0
|
||||||
m_fontAsset: {fileID: 11400000, guid: 9861d68f4cda1504f8e39cc1464e8bec, type: 2}
|
m_fontAsset: {fileID: 11400000, guid: 9861d68f4cda1504f8e39cc1464e8bec, type: 2}
|
||||||
m_sharedMaterial: {fileID: -7153799593197912463, guid: 9861d68f4cda1504f8e39cc1464e8bec, type: 2}
|
m_sharedMaterial: {fileID: -7153799593197912463, guid: 9861d68f4cda1504f8e39cc1464e8bec, type: 2}
|
||||||
@@ -12577,6 +12681,58 @@ CanvasRenderer:
|
|||||||
m_PrefabAsset: {fileID: 0}
|
m_PrefabAsset: {fileID: 0}
|
||||||
m_GameObject: {fileID: 1270400833}
|
m_GameObject: {fileID: 1270400833}
|
||||||
m_CullTransparentMesh: 1
|
m_CullTransparentMesh: 1
|
||||||
|
--- !u!114 &1270400840
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1270400833}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 5170627695bd877419928fa9ca37865d, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier: OctoCore.Runtime::OctoCore.Components.OctoWorldEvent
|
||||||
|
_trigger: 3
|
||||||
|
_action: 0
|
||||||
|
_condition: 0
|
||||||
|
_tags: []
|
||||||
|
_targets: []
|
||||||
|
_tolerance: 0.5
|
||||||
|
_duration: 1
|
||||||
|
_execution: 1
|
||||||
|
_delay: 3
|
||||||
|
_onTrigger:
|
||||||
|
m_PersistentCalls:
|
||||||
|
m_Calls: []
|
||||||
|
_onTriggerDelayed:
|
||||||
|
m_PersistentCalls:
|
||||||
|
m_Calls:
|
||||||
|
- m_Target: {fileID: 1916608619}
|
||||||
|
m_TargetAssemblyTypeName: Unheimlich.Features.Hallucination.HallucinationFlash,
|
||||||
|
Assembly-CSharp
|
||||||
|
m_MethodName: Play
|
||||||
|
m_Mode: 1
|
||||||
|
m_Arguments:
|
||||||
|
m_ObjectArgument: {fileID: 0}
|
||||||
|
m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
|
||||||
|
m_IntArgument: 0
|
||||||
|
m_FloatArgument: 0
|
||||||
|
m_StringArgument:
|
||||||
|
m_BoolArgument: 0
|
||||||
|
m_CallState: 2
|
||||||
|
--- !u!114 &1270400841
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1270400833}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: a2fcf97d75546f147adf431e737bce52, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier: Assembly-CSharp::Unheimlich.Features.Dialogue.LocalizedSubtitle
|
||||||
--- !u!1 &1276767359
|
--- !u!1 &1276767359
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@@ -13639,12 +13795,12 @@ GameObject:
|
|||||||
- component: {fileID: 1385908343}
|
- component: {fileID: 1385908343}
|
||||||
- component: {fileID: 1385908342}
|
- component: {fileID: 1385908342}
|
||||||
- component: {fileID: 1385908341}
|
- component: {fileID: 1385908341}
|
||||||
- component: {fileID: 1385908339}
|
|
||||||
- component: {fileID: 1385908345}
|
- component: {fileID: 1385908345}
|
||||||
- component: {fileID: 1385908344}
|
- component: {fileID: 1385908344}
|
||||||
|
- component: {fileID: 1385908339}
|
||||||
- component: {fileID: 1385908346}
|
- component: {fileID: 1385908346}
|
||||||
m_Layer: 0
|
m_Layer: 0
|
||||||
m_Name: DialogueTwo
|
m_Name: DialogueB
|
||||||
m_TagString: Untagged
|
m_TagString: Untagged
|
||||||
m_Icon: {fileID: 0}
|
m_Icon: {fileID: 0}
|
||||||
m_NavMeshLayer: 0
|
m_NavMeshLayer: 0
|
||||||
@@ -15223,8 +15379,44 @@ PrefabInstance:
|
|||||||
propertyPath: m_Enabled
|
propertyPath: m_Enabled
|
||||||
value: 1
|
value: 1
|
||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 1476756471834662335, guid: 6493d77978c5c1246a0410d1f9204524, type: 3}
|
||||||
|
propertyPath: _isActive
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 1476756471834662335, guid: 6493d77978c5c1246a0410d1f9204524, type: 3}
|
- target: {fileID: 1476756471834662335, guid: 6493d77978c5c1246a0410d1f9204524, type: 3}
|
||||||
propertyPath: m_Enabled
|
propertyPath: m_Enabled
|
||||||
|
value: 1
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 1476756471834662335, guid: 6493d77978c5c1246a0410d1f9204524, type: 3}
|
||||||
|
propertyPath: _stressLevel
|
||||||
|
value: 0.3
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 1476756471834662335, guid: 6493d77978c5c1246a0410d1f9204524, type: 3}
|
||||||
|
propertyPath: _idleAmplitude
|
||||||
|
value: 0.5
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 1476756471834662335, guid: 6493d77978c5c1246a0410d1f9204524, type: 3}
|
||||||
|
propertyPath: _walkAmplitude
|
||||||
|
value: 0.7
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 1476756471834662335, guid: 6493d77978c5c1246a0410d1f9204524, type: 3}
|
||||||
|
propertyPath: _idleNoiseSpeed
|
||||||
|
value: 1.6
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 1476756471834662335, guid: 6493d77978c5c1246a0410d1f9204524, type: 3}
|
||||||
|
propertyPath: _walkNoiseSpeed
|
||||||
|
value: 2
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 1476756471834662335, guid: 6493d77978c5c1246a0410d1f9204524, type: 3}
|
||||||
|
propertyPath: _masterIntensity
|
||||||
|
value: 1.5
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 1476756471834662335, guid: 6493d77978c5c1246a0410d1f9204524, type: 3}
|
||||||
|
propertyPath: _debugStressValue
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 1476756471834662335, guid: 6493d77978c5c1246a0410d1f9204524, type: 3}
|
||||||
|
propertyPath: _debugSustainStress
|
||||||
value: 0
|
value: 0
|
||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 5295567073180248356, guid: 6493d77978c5c1246a0410d1f9204524, type: 3}
|
- target: {fileID: 5295567073180248356, guid: 6493d77978c5c1246a0410d1f9204524, type: 3}
|
||||||
@@ -16518,6 +16710,19 @@ MonoBehaviour:
|
|||||||
m_StringArgument:
|
m_StringArgument:
|
||||||
m_BoolArgument: 1
|
m_BoolArgument: 1
|
||||||
m_CallState: 2
|
m_CallState: 2
|
||||||
|
- m_Target: {fileID: 625490235}
|
||||||
|
m_TargetAssemblyTypeName: Unheimlich.World.CameraSystem.LostFootageRig,
|
||||||
|
Assembly-CSharp
|
||||||
|
m_MethodName: Enable
|
||||||
|
m_Mode: 1
|
||||||
|
m_Arguments:
|
||||||
|
m_ObjectArgument: {fileID: 0}
|
||||||
|
m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
|
||||||
|
m_IntArgument: 0
|
||||||
|
m_FloatArgument: 0
|
||||||
|
m_StringArgument:
|
||||||
|
m_BoolArgument: 1
|
||||||
|
m_CallState: 2
|
||||||
Triggered: 0
|
Triggered: 0
|
||||||
- Progression: 0.5
|
- Progression: 0.5
|
||||||
OnReached:
|
OnReached:
|
||||||
@@ -16629,37 +16834,6 @@ MonoBehaviour:
|
|||||||
m_BoolArgument: 0
|
m_BoolArgument: 0
|
||||||
m_CallState: 2
|
m_CallState: 2
|
||||||
Triggered: 0
|
Triggered: 0
|
||||||
- Progression: 0.9
|
|
||||||
OnReached:
|
|
||||||
m_PersistentCalls:
|
|
||||||
m_Calls:
|
|
||||||
- m_Target: {fileID: 2002434881}
|
|
||||||
m_TargetAssemblyTypeName: Unheimlich.Features.Hallucination.HallucinationPostProcess,
|
|
||||||
Assembly-CSharp
|
|
||||||
m_MethodName: AddSanityWrapper
|
|
||||||
m_Mode: 1
|
|
||||||
m_Arguments:
|
|
||||||
m_ObjectArgument: {fileID: 0}
|
|
||||||
m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
|
|
||||||
m_IntArgument: 0
|
|
||||||
m_FloatArgument: 0
|
|
||||||
m_StringArgument:
|
|
||||||
m_BoolArgument: 0
|
|
||||||
m_CallState: 2
|
|
||||||
- m_Target: {fileID: 3473725938941227729}
|
|
||||||
m_TargetAssemblyTypeName: Unheimlich.Features.Hallucination.HallucinationFlash,
|
|
||||||
Assembly-CSharp
|
|
||||||
m_MethodName: Play
|
|
||||||
m_Mode: 1
|
|
||||||
m_Arguments:
|
|
||||||
m_ObjectArgument: {fileID: 0}
|
|
||||||
m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
|
|
||||||
m_IntArgument: 0
|
|
||||||
m_FloatArgument: 0
|
|
||||||
m_StringArgument:
|
|
||||||
m_BoolArgument: 0
|
|
||||||
m_CallState: 2
|
|
||||||
Triggered: 0
|
|
||||||
--- !u!1 &1708782433
|
--- !u!1 &1708782433
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@@ -22539,12 +22713,12 @@ GameObject:
|
|||||||
- component: {fileID: 6820444050397160330}
|
- component: {fileID: 6820444050397160330}
|
||||||
- component: {fileID: 160056245658704172}
|
- component: {fileID: 160056245658704172}
|
||||||
- component: {fileID: 6984622148685993083}
|
- component: {fileID: 6984622148685993083}
|
||||||
- component: {fileID: 6984622148685993084}
|
|
||||||
- component: {fileID: 6984622148685993087}
|
- component: {fileID: 6984622148685993087}
|
||||||
- component: {fileID: 6984622148685993085}
|
- component: {fileID: 6984622148685993085}
|
||||||
|
- component: {fileID: 6984622148685993084}
|
||||||
- component: {fileID: 6984622148685993088}
|
- component: {fileID: 6984622148685993088}
|
||||||
m_Layer: 0
|
m_Layer: 0
|
||||||
m_Name: DialogueOne
|
m_Name: DialogueA
|
||||||
m_TagString: Untagged
|
m_TagString: Untagged
|
||||||
m_Icon: {fileID: 0}
|
m_Icon: {fileID: 0}
|
||||||
m_NavMeshLayer: 0
|
m_NavMeshLayer: 0
|
||||||
|
|||||||
@@ -1,4 +1,6 @@
|
|||||||
using System.Collections;
|
using System.Collections;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using Unheimlich.VFX;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
using UnityEngine.Rendering;
|
using UnityEngine.Rendering;
|
||||||
|
|
||||||
@@ -8,7 +10,6 @@ public class ScarecrowFire : MonoBehaviour
|
|||||||
public class FireElement
|
public class FireElement
|
||||||
{
|
{
|
||||||
public GameObject VFX;
|
public GameObject VFX;
|
||||||
/// <summary>Original scale captured at initialization, used as lerp target.</summary>
|
|
||||||
[HideInInspector] public Vector3 OriginalScale;
|
[HideInInspector] public Vector3 OriginalScale;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -23,14 +24,9 @@ public class ScarecrowFire : MonoBehaviour
|
|||||||
[SerializeField] private FireElement _fireBig;
|
[SerializeField] private FireElement _fireBig;
|
||||||
|
|
||||||
[Header("Propagation Timings")]
|
[Header("Propagation Timings")]
|
||||||
[Tooltip("Duration of the scale lerp for each fire element (seconds).")]
|
|
||||||
[SerializeField] private float _growDuration = 3f;
|
[SerializeField] private float _growDuration = 3f;
|
||||||
|
|
||||||
[Tooltip("How early the next stage starts before the current one finishes (0 = no overlap, 1 = instant).")]
|
|
||||||
[Range(0f, 1f)]
|
[Range(0f, 1f)]
|
||||||
[SerializeField] private float _overlapFactor = 0.4f;
|
[SerializeField] private float _overlapFactor = 0.4f;
|
||||||
|
|
||||||
[Tooltip("Curve driving the scale growth — tweak directly in the Inspector.")]
|
|
||||||
[SerializeField] private AnimationCurve _growCurve = new AnimationCurve(
|
[SerializeField] private AnimationCurve _growCurve = new AnimationCurve(
|
||||||
new Keyframe(0f, 0f, 0f, 0f),
|
new Keyframe(0f, 0f, 0f, 0f),
|
||||||
new Keyframe(0.3f, 0.1f, 0f, 2f),
|
new Keyframe(0.3f, 0.1f, 0f, 2f),
|
||||||
@@ -39,10 +35,7 @@ public class ScarecrowFire : MonoBehaviour
|
|||||||
);
|
);
|
||||||
|
|
||||||
[Header("Post Process")]
|
[Header("Post Process")]
|
||||||
[Tooltip("Volume driving the heat haze effect — weight is driven up as fire spreads.")]
|
|
||||||
[SerializeField] private Volume _heatVolume;
|
[SerializeField] private Volume _heatVolume;
|
||||||
|
|
||||||
[Tooltip("Curve driving all heat effects over the full sequence duration.")]
|
|
||||||
[SerializeField] private AnimationCurve _heatCurve = new AnimationCurve(
|
[SerializeField] private AnimationCurve _heatCurve = new AnimationCurve(
|
||||||
new Keyframe(0f, 0f, 0f, 0.5f),
|
new Keyframe(0f, 0f, 0f, 0.5f),
|
||||||
new Keyframe(0.5f, 0.4f, 1f, 1f),
|
new Keyframe(0.5f, 0.4f, 1f, 1f),
|
||||||
@@ -50,17 +43,18 @@ public class ScarecrowFire : MonoBehaviour
|
|||||||
);
|
);
|
||||||
|
|
||||||
[Header("Heat Shader")]
|
[Header("Heat Shader")]
|
||||||
[Tooltip("Material using the HeatHaze shader — _Weight property is driven from 0 to 1.")]
|
|
||||||
[SerializeField] private Material _heatMaterial;
|
[SerializeField] private Material _heatMaterial;
|
||||||
|
|
||||||
[Header("Light")]
|
[Header("Lights")]
|
||||||
[Tooltip("LightFlicker component to drive — baseIntensity is ramped up with the fire.")]
|
[SerializeField] private List<LightEntry> _lights = new List<LightEntry>();
|
||||||
[SerializeField] private MonoLimboStudio.LightFlicker _lightFlicker;
|
|
||||||
|
|
||||||
[Tooltip("Final light intensity reached when the fire is fully ablaze.")]
|
[System.Serializable]
|
||||||
[SerializeField] private float _targetLightIntensity = 3f;
|
public class LightEntry
|
||||||
|
{
|
||||||
|
public LightFlicker Flicker;
|
||||||
|
public float TargetIntensity = 3f;
|
||||||
|
}
|
||||||
|
|
||||||
// Flag set when the last GrowFire completes — DriveHeatEffects waits on this
|
|
||||||
private bool _fireSequenceComplete = false;
|
private bool _fireSequenceComplete = false;
|
||||||
private float _totalSequenceDuration = 0f;
|
private float _totalSequenceDuration = 0f;
|
||||||
|
|
||||||
@@ -77,16 +71,13 @@ public class ScarecrowFire : MonoBehaviour
|
|||||||
InitElement(_fireHead);
|
InitElement(_fireHead);
|
||||||
InitElement(_fireBig);
|
InitElement(_fireBig);
|
||||||
|
|
||||||
// Used as a time reference for _heatCurve mapping — doesn't need to be exact
|
|
||||||
// since DriveHeatEffects now syncs to _fireSequenceComplete rather than this value
|
|
||||||
float overlapDelay = _growDuration * (1f - _overlapFactor);
|
float overlapDelay = _growDuration * (1f - _overlapFactor);
|
||||||
_totalSequenceDuration = _growDuration + (7f * overlapDelay);
|
_totalSequenceDuration = _growDuration + (7f * overlapDelay);
|
||||||
|
|
||||||
// Ensure everything starts at zero
|
|
||||||
SetHeatShaderWeight(0f);
|
SetHeatShaderWeight(0f);
|
||||||
|
|
||||||
if (_lightFlicker)
|
foreach (var entry in _lights)
|
||||||
_lightFlicker.SetBaseIntensity(0f);
|
if (entry.Flicker) entry.Flicker.SetBaseIntensity(0f);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Start()
|
void Start()
|
||||||
@@ -94,10 +85,6 @@ public class ScarecrowFire : MonoBehaviour
|
|||||||
TriggerFire();
|
TriggerFire();
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Captures the original Inspector scale, then sets the starting scale to
|
|
||||||
/// (x * 0.2, y * 0.1, z * 0.2) so each element grows from near-nothing.
|
|
||||||
/// </summary>
|
|
||||||
private void InitElement(FireElement el)
|
private void InitElement(FireElement el)
|
||||||
{
|
{
|
||||||
if (!el.VFX) return;
|
if (!el.VFX) return;
|
||||||
@@ -113,51 +100,36 @@ public class ScarecrowFire : MonoBehaviour
|
|||||||
|
|
||||||
// ─────────────────────────────────────────────────────────────────────────
|
// ─────────────────────────────────────────────────────────────────────────
|
||||||
|
|
||||||
/// <summary>Starts the full fire propagation sequence.</summary>
|
|
||||||
public void TriggerFire()
|
public void TriggerFire()
|
||||||
{
|
{
|
||||||
_fireSequenceComplete = false;
|
_fireSequenceComplete = false;
|
||||||
StartCoroutine(FireSequence());
|
StartCoroutine(FireSequence());
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Propagates fire bottom-up with overlapping stages for an organic feel.
|
|
||||||
/// Sets _fireSequenceComplete when the last element finishes growing.
|
|
||||||
/// </summary>
|
|
||||||
private IEnumerator FireSequence()
|
private IEnumerator FireSequence()
|
||||||
{
|
{
|
||||||
float overlapDelay = _growDuration * (1f - _overlapFactor);
|
float overlapDelay = _growDuration * (1f - _overlapFactor);
|
||||||
|
|
||||||
// Drive all heat effects independently — syncs via _fireSequenceComplete
|
|
||||||
StartCoroutine(DriveHeatEffects());
|
StartCoroutine(DriveHeatEffects());
|
||||||
|
|
||||||
// Feet
|
|
||||||
StartCoroutine(GrowFire(_fireBase));
|
StartCoroutine(GrowFire(_fireBase));
|
||||||
yield return new WaitForSeconds(overlapDelay);
|
yield return new WaitForSeconds(overlapDelay);
|
||||||
|
|
||||||
// Torso overlaps with feet still growing
|
|
||||||
StartCoroutine(GrowFire(_fireTorso));
|
StartCoroutine(GrowFire(_fireTorso));
|
||||||
yield return new WaitForSeconds(overlapDelay);
|
yield return new WaitForSeconds(overlapDelay);
|
||||||
|
|
||||||
// Both arms ignite simultaneously, each propagating from shoulder to tip
|
|
||||||
StartCoroutine(PropagateArm(_fireArmLeft, _fireArmLeftEnd, overlapDelay));
|
StartCoroutine(PropagateArm(_fireArmLeft, _fireArmLeftEnd, overlapDelay));
|
||||||
StartCoroutine(PropagateArm(_fireArmRight, _fireArmRightEnd, overlapDelay));
|
StartCoroutine(PropagateArm(_fireArmRight, _fireArmRightEnd, overlapDelay));
|
||||||
yield return new WaitForSeconds(overlapDelay * 2f);
|
yield return new WaitForSeconds(overlapDelay * 2f);
|
||||||
|
|
||||||
// Head
|
|
||||||
StartCoroutine(GrowFire(_fireHead));
|
StartCoroutine(GrowFire(_fireHead));
|
||||||
yield return new WaitForSeconds(overlapDelay);
|
yield return new WaitForSeconds(overlapDelay);
|
||||||
|
|
||||||
// Full blaze — wait for it to fully complete before flagging done
|
|
||||||
yield return StartCoroutine(GrowFire(_fireBig));
|
yield return StartCoroutine(GrowFire(_fireBig));
|
||||||
|
|
||||||
_fireSequenceComplete = true;
|
_fireSequenceComplete = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Propagates fire along one arm: shoulder ignites first,
|
|
||||||
/// then tip starts after overlapDelay rather than waiting for shoulder to finish.
|
|
||||||
/// </summary>
|
|
||||||
private IEnumerator PropagateArm(FireElement shoulder, FireElement tip, float overlapDelay)
|
private IEnumerator PropagateArm(FireElement shoulder, FireElement tip, float overlapDelay)
|
||||||
{
|
{
|
||||||
StartCoroutine(GrowFire(shoulder));
|
StartCoroutine(GrowFire(shoulder));
|
||||||
@@ -165,10 +137,6 @@ public class ScarecrowFire : MonoBehaviour
|
|||||||
yield return StartCoroutine(GrowFire(tip));
|
yield return StartCoroutine(GrowFire(tip));
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Activates a fire element and lerps its scale from near-zero to its original
|
|
||||||
/// Inspector scale, driven by _growCurve for an organic progression.
|
|
||||||
/// </summary>
|
|
||||||
private IEnumerator GrowFire(FireElement el)
|
private IEnumerator GrowFire(FireElement el)
|
||||||
{
|
{
|
||||||
if (!el.VFX) yield break;
|
if (!el.VFX) yield break;
|
||||||
@@ -195,57 +163,54 @@ public class ScarecrowFire : MonoBehaviour
|
|||||||
|
|
||||||
// ─────────────────────────────────────────────────────────────────────────
|
// ─────────────────────────────────────────────────────────────────────────
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Drives all heat effects (post-process volume, heat shader, light intensity)
|
|
||||||
/// using _heatCurve until _fireSequenceComplete is set, then snaps cleanly to 1.
|
|
||||||
/// Decoupled from individual fire element timing for smoother blending.
|
|
||||||
/// </summary>
|
|
||||||
private IEnumerator DriveHeatEffects()
|
private IEnumerator DriveHeatEffects()
|
||||||
{
|
{
|
||||||
float elapsed = 0f;
|
float elapsed = 0f;
|
||||||
|
float lastWeight = 0f;
|
||||||
|
|
||||||
|
// Phase 1 : monte avec la heatCurve jusqu'à ce que la séquence feu soit finie.
|
||||||
|
// On snapshote lastWeight à chaque frame pour partir de la vraie valeur courante
|
||||||
|
// en phase 2, évitant tout creux si la courbe redescend après t=1.
|
||||||
while (!_fireSequenceComplete)
|
while (!_fireSequenceComplete)
|
||||||
{
|
{
|
||||||
elapsed += Time.deltaTime;
|
elapsed += Time.deltaTime;
|
||||||
float t = elapsed / _totalSequenceDuration;
|
float t = elapsed / _totalSequenceDuration;
|
||||||
float weight = _heatCurve.Evaluate(Mathf.Min(t, 0.99f));
|
lastWeight = _heatCurve.Evaluate(Mathf.Clamp01(t));
|
||||||
|
|
||||||
if (_heatVolume)
|
|
||||||
_heatVolume.weight = weight;
|
|
||||||
|
|
||||||
SetHeatShaderWeight(weight);
|
|
||||||
|
|
||||||
if (_lightFlicker)
|
|
||||||
_lightFlicker.SetBaseIntensity(_targetLightIntensity * weight);
|
|
||||||
|
|
||||||
|
ApplyHeatWeight(lastWeight);
|
||||||
yield return null;
|
yield return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
float lerpElapsed = 0f;
|
// Phase 2 : lerp propre de la valeur courante vers 1, sans jamais redescendre.
|
||||||
|
float lerpElapsed = 0f;
|
||||||
float lerpDuration = 8f;
|
float lerpDuration = 8f;
|
||||||
float startWeight = _heatCurve.Evaluate(0.99f);
|
float startWeight = lastWeight; // ← valeur réelle au moment du flag, pas heatCurve(0.99)
|
||||||
|
|
||||||
while (lerpElapsed < lerpDuration)
|
while (lerpElapsed < lerpDuration)
|
||||||
{
|
{
|
||||||
lerpElapsed += Time.deltaTime;
|
lerpElapsed += Time.deltaTime;
|
||||||
float weight = Mathf.Lerp(startWeight, 1f, lerpElapsed / lerpDuration);
|
float weight = Mathf.Lerp(startWeight, 1f, lerpElapsed / lerpDuration);
|
||||||
|
|
||||||
if (_heatVolume) _heatVolume.weight = weight;
|
ApplyHeatWeight(weight);
|
||||||
SetHeatShaderWeight(weight);
|
|
||||||
if (_lightFlicker) _lightFlicker.SetBaseIntensity(_targetLightIntensity * weight);
|
|
||||||
|
|
||||||
yield return null;
|
yield return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_heatVolume) _heatVolume.weight = 1f;
|
// Phase 3 : maintien à 1 à l'infini.
|
||||||
SetHeatShaderWeight(1f);
|
ApplyHeatWeight(1f);
|
||||||
if (_lightFlicker) _lightFlicker.SetBaseIntensity(_targetLightIntensity);
|
}
|
||||||
|
|
||||||
|
/// <summary>Applique un weight normalisé à tous les effets de chaleur + lumière.</summary>
|
||||||
|
private void ApplyHeatWeight(float weight)
|
||||||
|
{
|
||||||
|
if (_heatVolume) _heatVolume.weight = weight;
|
||||||
|
SetHeatShaderWeight(weight);
|
||||||
|
|
||||||
|
// ScarecrowFire pilote la base — LightFlicker applique le flicker par-dessus
|
||||||
|
// sans écrire directement sur targetLight.intensity.
|
||||||
|
foreach (var entry in _lights)
|
||||||
|
if (entry.Flicker) entry.Flicker.SetBaseIntensity(entry.TargetIntensity * weight);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Drives the heat shader via a single normalized weight (0-1).
|
|
||||||
/// All visual parameters are tweaked directly on the material in the Inspector.
|
|
||||||
/// </summary>
|
|
||||||
private void SetHeatShaderWeight(float weight)
|
private void SetHeatShaderWeight(float weight)
|
||||||
{
|
{
|
||||||
if (!_heatMaterial) return;
|
if (!_heatMaterial) return;
|
||||||
|
|||||||
@@ -7,12 +7,15 @@ namespace Unheimlich.World.CameraSystem
|
|||||||
/// Overlays a "lost footage / handheld camcorder" shake on a dedicated pivot
|
/// Overlays a "lost footage / handheld camcorder" shake on a dedicated pivot
|
||||||
/// sitting between CameraPivot and Camera Player.
|
/// sitting between CameraPivot and Camera Player.
|
||||||
///
|
///
|
||||||
/// Layered in three passes:
|
/// Layered in four passes:
|
||||||
/// 1. Continuous Perlin drift — organic idle tremor, scales with movement and stress.
|
/// 1. Continuous Perlin drift — organic idle tremor, scales with movement and stress.
|
||||||
/// 2. Micro-jolts — randomised snap/recoil spikes, only fire when the camera
|
/// 2. Micro-jolts — randomised snap/recoil spikes, only fire when the
|
||||||
/// is steady (attenuated during active mouse look).
|
/// camera is steady (attenuated during active mouse look).
|
||||||
/// 3. Inertia swinging — the camera "lags" behind head rotation on all axes,
|
/// 3. Inertia swinging — the camera "lags" behind head rotation on all axes,
|
||||||
/// simulating the physical weight of a handheld camcorder.
|
/// simulating the physical weight of a handheld camcorder.
|
||||||
|
/// 4. Spinning/dizzy drift — a slow, persistent rotational pull on Y (and a subtle
|
||||||
|
/// rolling tilt on Z) that builds with stress, simulating
|
||||||
|
/// a confused/disoriented head.
|
||||||
///
|
///
|
||||||
/// Hierarchy expected:
|
/// Hierarchy expected:
|
||||||
/// OctoPlayerFP (mouse-look root)
|
/// OctoPlayerFP (mouse-look root)
|
||||||
@@ -20,13 +23,32 @@ namespace Unheimlich.World.CameraSystem
|
|||||||
/// └── LostFootagePivot ← this component
|
/// └── LostFootagePivot ← this component
|
||||||
/// └── Camera Player
|
/// └── Camera Player
|
||||||
///
|
///
|
||||||
/// Mouse-look speed is sampled on OctoPlayerFP (grandparent) to avoid being
|
/// Quick setup:
|
||||||
/// polluted by the continuous rotations CameraHeadBob writes on CameraPivot.
|
/// • Toggle "Is Active" in the inspector (or call SetActive()) to enable/disable with fade.
|
||||||
/// Movement blend (moveT) is smoothed to avoid noise amplitude spikes on
|
/// • "Master Intensity" scales everything: noise, jolts, inertia and spin.
|
||||||
/// direction changes.
|
/// • "Stress Level" can be driven externally (e.g. by a StressController) or left at 0.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class LostFootageRig : MonoBehaviour
|
public class LostFootageRig : MonoBehaviour
|
||||||
{
|
{
|
||||||
|
// ── Inspector — Global ────────────────────────────────────────────────────
|
||||||
|
|
||||||
|
[Header("Global")]
|
||||||
|
[Tooltip("Enable or disable the whole rig (with fade). Can also be toggled at runtime via SetActive().")]
|
||||||
|
[SerializeField] private bool _isActive = true;
|
||||||
|
|
||||||
|
[Tooltip("Master scale applied to ALL effects (noise amplitude, jolt amplitude, inertia strength, spin strength). 0 = off, 1 = nominal.")]
|
||||||
|
[SerializeField] [Range(0f, 3f)] private float _masterIntensity = 1f;
|
||||||
|
|
||||||
|
// ── Inspector — Stress ────────────────────────────────────────────────────
|
||||||
|
|
||||||
|
[Header("Stress")]
|
||||||
|
[Tooltip("Stress level in [0, 1]. Can be driven externally (StressController.Instance → rig.StressLevel = ...) or set manually here for testing.")]
|
||||||
|
[SerializeField] [Range(0f, 1f)] private float _stressLevel = 0f;
|
||||||
|
|
||||||
|
[Header("Stress — noise scale")]
|
||||||
|
[SerializeField] private float _stressAmplitudeMul = 2.5f;
|
||||||
|
[SerializeField] private float _stressSpeedMul = 1f;
|
||||||
|
|
||||||
// ── Inspector — Noise ─────────────────────────────────────────────────────
|
// ── Inspector — Noise ─────────────────────────────────────────────────────
|
||||||
|
|
||||||
[Header("Noise — idle")]
|
[Header("Noise — idle")]
|
||||||
@@ -41,12 +63,8 @@ namespace Unheimlich.World.CameraSystem
|
|||||||
[SerializeField] private float _runAmplitude = 5f;
|
[SerializeField] private float _runAmplitude = 5f;
|
||||||
[SerializeField] private float _runNoiseSpeed = 0.6f;
|
[SerializeField] private float _runNoiseSpeed = 0.6f;
|
||||||
|
|
||||||
[Header("Noise — stress scale")]
|
|
||||||
[SerializeField] private float _stressAmplitudeMul = 2.5f;
|
|
||||||
[SerializeField] private float _stressSpeedMul = 1f;
|
|
||||||
|
|
||||||
[Header("Noise — smoothing")]
|
[Header("Noise — smoothing")]
|
||||||
[Tooltip("How fast the noise amplitude blends between idle/walk/run. Lower = smoother transitions.")]
|
[Tooltip("How fast the noise amplitude blends between idle/walk/run.")]
|
||||||
[SerializeField] private float _moveTSmoothSpeed = 4f;
|
[SerializeField] private float _moveTSmoothSpeed = 4f;
|
||||||
|
|
||||||
// ── Inspector — Micro-jolts ───────────────────────────────────────────────
|
// ── Inspector — Micro-jolts ───────────────────────────────────────────────
|
||||||
@@ -64,56 +82,73 @@ namespace Unheimlich.World.CameraSystem
|
|||||||
[SerializeField] private Vector2 _runJoltIntervalRange = new Vector2(1f, 2f);
|
[SerializeField] private Vector2 _runJoltIntervalRange = new Vector2(1f, 2f);
|
||||||
|
|
||||||
[Header("Micro-jolts — shared")]
|
[Header("Micro-jolts — shared")]
|
||||||
[Tooltip("How fast the jolt snaps to its target (fraction of interval).")]
|
[SerializeField] private float _joltSnapFraction = 0.1f;
|
||||||
[SerializeField] private float _joltSnapFraction = 0.1f;
|
[SerializeField] private float _stressJoltFreqMul = 2f;
|
||||||
[Tooltip("Jolt interval is divided by this value when stress = 1.")]
|
[SerializeField] private float _stressJoltAmpMul = 1.4f;
|
||||||
[SerializeField] private float _stressJoltFreqMul = 2f;
|
[Tooltip("Look speed (deg/s) above which jolts are fully suppressed.")]
|
||||||
[Tooltip("Jolt amplitude is multiplied by this value when stress = 1.")]
|
[SerializeField] private float _joltLookSuppressSpeed = 5f;
|
||||||
[SerializeField] private float _stressJoltAmpMul = 1.4f;
|
|
||||||
[Tooltip("Look speed (deg/s) above which jolts are fully suppressed. Sampled on OctoPlayerFP to bypass CameraHeadBob noise.")]
|
|
||||||
[SerializeField] private float _joltLookSuppressSpeed = 5f;
|
|
||||||
|
|
||||||
// ── Inspector — Inertia swing ─────────────────────────────────────────────
|
// ── Inspector — Inertia swing ─────────────────────────────────────────────
|
||||||
|
|
||||||
[Header("Inertia swing")]
|
[Header("Inertia swing")]
|
||||||
[Tooltip("How strongly the camera lags behind movement. Higher = more swing.")]
|
|
||||||
[SerializeField] private float _inertiaStrength = 4f;
|
[SerializeField] private float _inertiaStrength = 4f;
|
||||||
[Tooltip("How fast the inertia offset returns to zero. Lower = longer swing tail.")]
|
|
||||||
[SerializeField] private float _inertiaDamping = 6f;
|
[SerializeField] private float _inertiaDamping = 6f;
|
||||||
[Tooltip("Maximum swing angle (degrees) on each axis to avoid excessive drift.")]
|
|
||||||
[SerializeField] private float _inertiaMaxAngle = 8f;
|
[SerializeField] private float _inertiaMaxAngle = 8f;
|
||||||
|
|
||||||
|
// ── Inspector — Spinning / dizzy head ─────────────────────────────────────
|
||||||
|
|
||||||
|
[Header("Spinning / dizzy head")]
|
||||||
|
[Tooltip("Maximum Y-axis spin angle (degrees) at stress = 1 and masterIntensity = 1.")]
|
||||||
|
[SerializeField] private float _spinMaxYAngle = 6f;
|
||||||
|
|
||||||
|
[Tooltip("Maximum Z-axis roll angle (degrees) at stress = 1 — the subtle listing tilt.")]
|
||||||
|
[SerializeField] private float _spinMaxZAngle = 2.5f;
|
||||||
|
|
||||||
|
[Tooltip("Speed of the Perlin noise driving the spin drift. Lower = slower, more nauseating.")]
|
||||||
|
[SerializeField] private float _spinNoiseSpeed = 0.08f;
|
||||||
|
|
||||||
|
[Tooltip("How fast the spin offset interpolates toward its target. Lower = more sluggish/drunk.")]
|
||||||
|
[SerializeField] private float _spinDamping = 2f;
|
||||||
|
|
||||||
// ── Inspector — Fade ──────────────────────────────────────────────────────
|
// ── Inspector — Fade ──────────────────────────────────────────────────────
|
||||||
|
|
||||||
[Header("Fade")]
|
[Header("Fade")]
|
||||||
[Tooltip("Duration (seconds) of the fade-in / fade-out when toggling the rig.")]
|
|
||||||
[SerializeField] private float _fadeDuration = 0.6f;
|
[SerializeField] private float _fadeDuration = 0.6f;
|
||||||
|
|
||||||
// ── Inspector — Debug ─────────────────────────────────────────────────────
|
// ── Inspector — Debug ─────────────────────────────────────────────────────
|
||||||
|
|
||||||
[Header("Debug")]
|
[Header("Debug")]
|
||||||
[SerializeField] private bool _debugSustainStress;
|
[SerializeField] private bool _debugOverrideStress;
|
||||||
[SerializeField] [Range(0f, 1f)] private float _debugStressValue;
|
[SerializeField] [Range(0f, 1f)] private float _debugStressOverride;
|
||||||
|
|
||||||
// ── Runtime state ─────────────────────────────────────────────────────────
|
// ── Public API ────────────────────────────────────────────────────────────
|
||||||
|
|
||||||
/// <summary>Current stress level in [0, 1]. Driven by <see cref="StressController"/>.</summary>
|
/// <summary>
|
||||||
public float StressLevel { get; set; }
|
/// Current stress level in [0, 1].
|
||||||
|
/// Set this from an external controller (e.g. StressController) each frame,
|
||||||
|
/// or leave it at the inspector default.
|
||||||
|
/// </summary>
|
||||||
|
public float StressLevel
|
||||||
|
{
|
||||||
|
get => _stressLevel;
|
||||||
|
set => _stressLevel = Mathf.Clamp01(value);
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>Whether the rig is currently active (or fading in/out).</summary>
|
/// <summary>Whether the rig is currently active (or fading in/out).</summary>
|
||||||
public bool IsActive { get; private set; }
|
public bool IsActive { get; private set; }
|
||||||
|
|
||||||
|
// ── Runtime state ─────────────────────────────────────────────────────────
|
||||||
|
|
||||||
private float _weight;
|
private float _weight;
|
||||||
private float _noiseTimer;
|
private float _initialMasterIntensity; // value set in inspector, restored on Enable()
|
||||||
|
private float _noiseTimer;
|
||||||
|
private float _spinTimer;
|
||||||
private Vector3 _noiseOffset;
|
private Vector3 _noiseOffset;
|
||||||
private Vector3 _joltRotation;
|
private Vector3 _joltRotation;
|
||||||
private Vector3 _inertiaOffset;
|
private Vector3 _inertiaOffset;
|
||||||
|
private Vector3 _spinOffset; // current smoothed spin (Y, Z) rotation
|
||||||
|
private float _smoothMoveT;
|
||||||
|
|
||||||
// Smoothed movement blend — avoids amplitude spikes on direction changes.
|
|
||||||
private float _smoothMoveT;
|
|
||||||
|
|
||||||
// Mouse-look speed sampled on OctoPlayerFP (grandparent) — used to gate
|
|
||||||
// micro-jolts so they only fire when the player is not actively looking around.
|
|
||||||
private Quaternion _lastLookRootRotation;
|
private Quaternion _lastLookRootRotation;
|
||||||
private float _lookSpeed;
|
private float _lookSpeed;
|
||||||
|
|
||||||
@@ -129,65 +164,87 @@ namespace Unheimlich.World.CameraSystem
|
|||||||
Random.Range(0f, 100f),
|
Random.Range(0f, 100f),
|
||||||
Random.Range(0f, 100f)
|
Random.Range(0f, 100f)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
// Spin uses its own offset to decouple from the main noise.
|
||||||
|
_spinTimer = Random.Range(0f, 100f);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void Start()
|
private void Start()
|
||||||
{
|
{
|
||||||
|
// Store the inspector value so Enable() can restore it even if the rig
|
||||||
|
// started disabled (and _masterIntensity was faded to 0).
|
||||||
|
_initialMasterIntensity = _masterIntensity;
|
||||||
|
|
||||||
|
// Sync inspector toggle on first frame.
|
||||||
|
IsActive = _isActive;
|
||||||
|
_weight = _isActive ? 1f : 0f;
|
||||||
|
|
||||||
Transform lookRoot = transform.parent?.parent;
|
Transform lookRoot = transform.parent?.parent;
|
||||||
_lastLookRootRotation = lookRoot != null
|
_lastLookRootRotation = lookRoot != null
|
||||||
? lookRoot.localRotation
|
? lookRoot.localRotation
|
||||||
: Quaternion.identity;
|
: Quaternion.identity;
|
||||||
|
|
||||||
|
if (_isActive)
|
||||||
|
_joltCoroutine = StartCoroutine(JoltCoroutine());
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnValidate()
|
||||||
|
{
|
||||||
|
// Allow toggling _isActive from the inspector during Play mode.
|
||||||
|
if (!Application.isPlaying) return;
|
||||||
|
SetActive(_isActive);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void Update()
|
private void Update()
|
||||||
{
|
{
|
||||||
if (_debugSustainStress)
|
if (_debugOverrideStress)
|
||||||
StressLevel = _debugStressValue;
|
_stressLevel = _debugStressOverride;
|
||||||
|
|
||||||
|
float stress = Mathf.Clamp01(_stressLevel);
|
||||||
|
float intensity = _masterIntensity;
|
||||||
|
|
||||||
|
UpdateInertia();
|
||||||
|
|
||||||
if (_weight <= 0f)
|
if (_weight <= 0f)
|
||||||
{
|
{
|
||||||
UpdateInertia();
|
transform.localRotation = Quaternion.identity;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
float stress = Mathf.Clamp01(StressLevel);
|
// ── 1. Movement state ─────────────────────────────────────────────────
|
||||||
|
|
||||||
// ── 1. Resolve movement state ─────────────────────────────────────────
|
|
||||||
|
|
||||||
float horizontalSpeed = 0f;
|
float horizontalSpeed = 0f;
|
||||||
bool isRunning = false;
|
bool running = IsRunning();
|
||||||
|
|
||||||
if (Unheimlich.Features.Player.PlayerController.Instance?.CharController != null)
|
if (Unheimlich.Features.Player.PlayerController.Instance?.CharController != null)
|
||||||
{
|
{
|
||||||
var vel = Unheimlich.Features.Player.PlayerController.Instance.CharController.velocity;
|
var vel = Unheimlich.Features.Player.PlayerController.Instance.CharController.velocity;
|
||||||
horizontalSpeed = new Vector3(vel.x, 0f, vel.z).magnitude;
|
horizontalSpeed = new Vector3(vel.x, 0f, vel.z).magnitude;
|
||||||
isRunning = OctoCore.Components.OctoPlayer.Instance != null
|
|
||||||
&& OctoCore.Components.OctoPlayer.Instance.State.IsRunning;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const float WalkSpeedMs = 10f / 3.6f;
|
const float WalkSpeedMs = 10f / 3.6f;
|
||||||
const float RunSpeedMs = 20f / 3.6f;
|
const float RunSpeedMs = 20f / 3.6f;
|
||||||
|
|
||||||
float maxSpeed = isRunning ? RunSpeedMs : WalkSpeedMs;
|
float maxSpeed = running ? RunSpeedMs : WalkSpeedMs;
|
||||||
float rawMoveT = Mathf.Clamp01(horizontalSpeed / maxSpeed);
|
float rawMoveT = Mathf.Clamp01(horizontalSpeed / maxSpeed);
|
||||||
|
_smoothMoveT = Mathf.Lerp(_smoothMoveT, rawMoveT, Time.deltaTime * _moveTSmoothSpeed);
|
||||||
|
|
||||||
// Smooth moveT to avoid abrupt amplitude jumps on direction changes.
|
// ── 2. Noise parameters ───────────────────────────────────────────────
|
||||||
_smoothMoveT = Mathf.Lerp(_smoothMoveT, rawMoveT, Time.deltaTime * _moveTSmoothSpeed);
|
|
||||||
|
|
||||||
// ── 2. Interpolate noise parameters from movement state ───────────────
|
float targetAmp = running
|
||||||
|
|
||||||
float targetAmp = isRunning
|
|
||||||
? Mathf.Lerp(_walkAmplitude, _runAmplitude, _smoothMoveT)
|
? Mathf.Lerp(_walkAmplitude, _runAmplitude, _smoothMoveT)
|
||||||
: Mathf.Lerp(_idleAmplitude, _walkAmplitude, _smoothMoveT);
|
: Mathf.Lerp(_idleAmplitude, _walkAmplitude, _smoothMoveT);
|
||||||
|
|
||||||
float targetSpeed = isRunning
|
float targetSpeed = running
|
||||||
? Mathf.Lerp(_walkNoiseSpeed, _runNoiseSpeed, _smoothMoveT)
|
? Mathf.Lerp(_walkNoiseSpeed, _runNoiseSpeed, _smoothMoveT)
|
||||||
: Mathf.Lerp(_idleNoiseSpeed, _walkNoiseSpeed, _smoothMoveT);
|
: Mathf.Lerp(_idleNoiseSpeed, _walkNoiseSpeed, _smoothMoveT);
|
||||||
|
|
||||||
float amp = (targetAmp + stress * _stressAmplitudeMul) * _weight;
|
float amp = (targetAmp + stress * _stressAmplitudeMul) * _weight * intensity;
|
||||||
float spd = (targetSpeed + stress * _stressSpeedMul);
|
float spd = targetSpeed + stress * _stressSpeedMul;
|
||||||
|
|
||||||
_noiseTimer += Time.deltaTime * spd;
|
_noiseTimer += Time.deltaTime * spd;
|
||||||
if (_noiseTimer > 1000f) _noiseTimer -= 1000f; // wrap to avoid float precision loss
|
if (_noiseTimer > 1000f) _noiseTimer -= 1000f;
|
||||||
|
|
||||||
float t = _noiseTimer;
|
float t = _noiseTimer;
|
||||||
|
|
||||||
// ── 3. Perlin drift ───────────────────────────────────────────────────
|
// ── 3. Perlin drift ───────────────────────────────────────────────────
|
||||||
@@ -198,74 +255,101 @@ namespace Unheimlich.World.CameraSystem
|
|||||||
|
|
||||||
// ── 4. Inertia swing ──────────────────────────────────────────────────
|
// ── 4. Inertia swing ──────────────────────────────────────────────────
|
||||||
|
|
||||||
UpdateInertia();
|
Vector3 swing = _inertiaOffset * _weight * intensity;
|
||||||
Vector3 swing = _inertiaOffset * _weight;
|
|
||||||
|
|
||||||
// ── 5. Compose and apply ──────────────────────────────────────────────
|
// ── 5. Spinning / dizzy drift ─────────────────────────────────────────
|
||||||
|
//
|
||||||
|
// Two independent Perlin channels drive a slow yaw drift (Y) and a
|
||||||
|
// listing roll (Z). Both scale with stress and masterIntensity.
|
||||||
|
// The offset is smoothed via _spinDamping so it feels heavy and sluggish
|
||||||
|
// rather than jittery — like a head that's struggling to stay level.
|
||||||
|
|
||||||
|
_spinTimer += Time.deltaTime * _spinNoiseSpeed;
|
||||||
|
if (_spinTimer > 1000f) _spinTimer -= 1000f;
|
||||||
|
|
||||||
|
float spinScale = stress * _weight * intensity;
|
||||||
|
|
||||||
|
float targetSpinY = (Mathf.PerlinNoise(_noiseOffset.x * 0.5f + _spinTimer, 10f) - 0.5f)
|
||||||
|
* _spinMaxYAngle * 2f * spinScale;
|
||||||
|
|
||||||
|
float targetSpinZ = (Mathf.PerlinNoise(_noiseOffset.z * 0.5f + _spinTimer, 20f) - 0.5f)
|
||||||
|
* _spinMaxZAngle * 2f * spinScale;
|
||||||
|
|
||||||
|
Vector3 targetSpin = new Vector3(0f, targetSpinY, targetSpinZ);
|
||||||
|
_spinOffset = Vector3.Lerp(_spinOffset, targetSpin, Time.deltaTime * _spinDamping);
|
||||||
|
|
||||||
|
// ── 6. Compose and apply ──────────────────────────────────────────────
|
||||||
|
|
||||||
transform.localRotation = Quaternion.Euler(
|
transform.localRotation = Quaternion.Euler(
|
||||||
rx + _joltRotation.x + swing.x,
|
rx + _joltRotation.x + swing.x,
|
||||||
ry + _joltRotation.y + swing.y,
|
ry + _joltRotation.y + swing.y + _spinOffset.y,
|
||||||
rz + _joltRotation.z + swing.z
|
rz + _joltRotation.z + swing.z + _spinOffset.z
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
// ── Public API ────────────────────────────────────────────────────────────
|
// ── Public API ────────────────────────────────────────────────────────────
|
||||||
|
|
||||||
|
/// <summary>UnityEvent-friendly wrapper — enables with the inspector master intensity.</summary>
|
||||||
|
public void Enable() => Enable(_initialMasterIntensity, _stressLevel);
|
||||||
|
|
||||||
|
/// <summary>UnityEvent-friendly wrapper — disables with a fade to 0.</summary>
|
||||||
|
public void Disable() => Disable(0f);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Enables or disables the lost-footage effect with a smooth fade.
|
/// Enables the rig and lerps <see cref="_masterIntensity"/> toward
|
||||||
/// Safe to call multiple times — an in-progress fade is cancelled and reversed.
|
/// <paramref name="targetIntensity"/> and <see cref="_stressLevel"/> toward
|
||||||
|
/// <paramref name="targetStress"/> over <see cref="_fadeDuration"/> seconds.
|
||||||
|
/// Pass the values you want to reach — the current inspector values are left
|
||||||
|
/// untouched if you don't call this.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public void SetActive(bool active)
|
public void Enable(float targetIntensity, float targetStress = 0f)
|
||||||
{
|
{
|
||||||
if (IsActive == active)
|
_isActive = true;
|
||||||
return;
|
IsActive = true;
|
||||||
|
|
||||||
IsActive = active;
|
if (_fadeCoroutine != null) StopCoroutine(_fadeCoroutine);
|
||||||
|
_fadeCoroutine = StartCoroutine(FadeCoroutine(true, targetIntensity, targetStress));
|
||||||
|
|
||||||
if (_fadeCoroutine != null)
|
if (_joltCoroutine != null) StopCoroutine(_joltCoroutine);
|
||||||
StopCoroutine(_fadeCoroutine);
|
_joltCoroutine = StartCoroutine(JoltCoroutine());
|
||||||
|
|
||||||
_fadeCoroutine = StartCoroutine(FadeCoroutine(active));
|
|
||||||
|
|
||||||
if (active)
|
|
||||||
{
|
|
||||||
if (_joltCoroutine != null)
|
|
||||||
StopCoroutine(_joltCoroutine);
|
|
||||||
|
|
||||||
_joltCoroutine = StartCoroutine(JoltCoroutine());
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Disables the rig, lerping <see cref="_masterIntensity"/> toward
|
||||||
|
/// <paramref name="targetIntensity"/> (default 0) over <see cref="_fadeDuration"/> seconds.
|
||||||
|
/// </summary>
|
||||||
|
public void Disable(float targetIntensity = 0f)
|
||||||
|
{
|
||||||
|
_isActive = false;
|
||||||
|
IsActive = false;
|
||||||
|
|
||||||
|
if (_fadeCoroutine != null) StopCoroutine(_fadeCoroutine);
|
||||||
|
_fadeCoroutine = StartCoroutine(FadeCoroutine(false, targetIntensity, _stressLevel));
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>Backwards-compatible toggle — calls Enable() or Disable().</summary>
|
||||||
|
public void SetActive(bool active) { if (active) Enable(); else Disable(); }
|
||||||
|
|
||||||
// ── Private helpers ───────────────────────────────────────────────────────
|
// ── Private helpers ───────────────────────────────────────────────────────
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Drives inertia swing from CharController velocity projected into local camera space,
|
|
||||||
/// avoiding the rotation-delta approach which caused spikes whenever CameraHeadBob
|
|
||||||
/// changed phase. Also samples OctoPlayerFP (grandparent) rotation delta to measure
|
|
||||||
/// true mouse-look speed for jolt gating.
|
|
||||||
/// </summary>
|
|
||||||
private void UpdateInertia()
|
private void UpdateInertia()
|
||||||
{
|
{
|
||||||
// ── Inertia from CharController velocity ──────────────────────────────
|
|
||||||
|
|
||||||
Vector3 velocity = Vector3.zero;
|
Vector3 velocity = Vector3.zero;
|
||||||
|
|
||||||
if (Unheimlich.Features.Player.PlayerController.Instance?.CharController != null)
|
if (Unheimlich.Features.Player.PlayerController.Instance?.CharController != null)
|
||||||
velocity = Unheimlich.Features.Player.PlayerController.Instance.CharController.velocity;
|
velocity = Unheimlich.Features.Player.PlayerController.Instance.CharController.velocity;
|
||||||
|
|
||||||
// Project velocity into local camera space so the swing feels attached to the view.
|
Vector3 localVel = transform.parent != null
|
||||||
Vector3 localVel = transform.parent != null
|
|
||||||
? transform.parent.InverseTransformDirection(velocity)
|
? transform.parent.InverseTransformDirection(velocity)
|
||||||
: velocity;
|
: velocity;
|
||||||
|
|
||||||
Vector3 targetInertia = new Vector3(-localVel.z, 0f, localVel.x) * (_inertiaStrength * 0.01f);
|
Vector3 targetInertia = new Vector3(-localVel.z, 0f, localVel.x)
|
||||||
targetInertia = Vector3.ClampMagnitude(targetInertia, _inertiaMaxAngle);
|
* (_inertiaStrength * _masterIntensity * 0.01f);
|
||||||
|
targetInertia = Vector3.ClampMagnitude(targetInertia, _inertiaMaxAngle);
|
||||||
|
|
||||||
_inertiaOffset = Vector3.Lerp(_inertiaOffset, targetInertia, _inertiaDamping * Time.deltaTime);
|
_inertiaOffset = Vector3.Lerp(_inertiaOffset, targetInertia, _inertiaDamping * Time.deltaTime);
|
||||||
|
|
||||||
// ── Mouse-look speed from OctoPlayerFP (grandparent) ─────────────────
|
// Mouse-look speed from OctoPlayerFP (grandparent) — gates micro-jolts.
|
||||||
|
|
||||||
Transform lookRoot = transform.parent?.parent;
|
Transform lookRoot = transform.parent?.parent;
|
||||||
Quaternion lookRot = lookRoot != null ? lookRoot.localRotation : Quaternion.identity;
|
Quaternion lookRot = lookRoot != null ? lookRoot.localRotation : Quaternion.identity;
|
||||||
Quaternion lookDelta = lookRot * Quaternion.Inverse(_lastLookRootRotation);
|
Quaternion lookDelta = lookRot * Quaternion.Inverse(_lastLookRootRotation);
|
||||||
@@ -277,21 +361,28 @@ namespace Unheimlich.World.CameraSystem
|
|||||||
_lastLookRootRotation = lookRot;
|
_lastLookRootRotation = lookRot;
|
||||||
}
|
}
|
||||||
|
|
||||||
private IEnumerator FadeCoroutine(bool fadeIn)
|
private IEnumerator FadeCoroutine(bool fadeIn, float targetIntensity, float targetStress)
|
||||||
{
|
{
|
||||||
float start = _weight;
|
float startIntensity = _masterIntensity;
|
||||||
float target = fadeIn ? 1f : 0f;
|
float startStress = _stressLevel;
|
||||||
float elapsed = 0f;
|
float elapsed = 0f;
|
||||||
|
|
||||||
|
if (fadeIn && _weight <= 0f) _weight = 0.001f;
|
||||||
|
|
||||||
while (elapsed < _fadeDuration)
|
while (elapsed < _fadeDuration)
|
||||||
{
|
{
|
||||||
elapsed += Time.deltaTime;
|
elapsed += Time.deltaTime;
|
||||||
_weight = Mathf.Lerp(start, target, elapsed / _fadeDuration);
|
float t = elapsed / _fadeDuration;
|
||||||
|
_masterIntensity = Mathf.Lerp(startIntensity, targetIntensity, t);
|
||||||
|
_stressLevel = Mathf.Lerp(startStress, targetStress, t);
|
||||||
|
_weight = _masterIntensity > 0f ? 1f : 0f;
|
||||||
yield return null;
|
yield return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
_weight = target;
|
_masterIntensity = targetIntensity;
|
||||||
_fadeCoroutine = null;
|
_stressLevel = targetStress;
|
||||||
|
_weight = targetIntensity > 0f ? 1f : 0f;
|
||||||
|
_fadeCoroutine = null;
|
||||||
|
|
||||||
if (!fadeIn && _joltCoroutine != null)
|
if (!fadeIn && _joltCoroutine != null)
|
||||||
{
|
{
|
||||||
@@ -304,14 +395,14 @@ namespace Unheimlich.World.CameraSystem
|
|||||||
{
|
{
|
||||||
while (true)
|
while (true)
|
||||||
{
|
{
|
||||||
float stress = Mathf.Clamp01(StressLevel);
|
float stress = Mathf.Clamp01(_stressLevel);
|
||||||
|
bool running = IsRunning();
|
||||||
|
|
||||||
// Use the same smoothed moveT as Update to keep jolt parameters consistent.
|
float joltAmp = running
|
||||||
float joltAmp = isRunning()
|
|
||||||
? Mathf.Lerp(_walkJoltAmplitude, _runJoltAmplitude, _smoothMoveT)
|
? Mathf.Lerp(_walkJoltAmplitude, _runJoltAmplitude, _smoothMoveT)
|
||||||
: Mathf.Lerp(_idleJoltAmplitude, _walkJoltAmplitude, _smoothMoveT);
|
: Mathf.Lerp(_idleJoltAmplitude, _walkJoltAmplitude, _smoothMoveT);
|
||||||
|
|
||||||
Vector2 intervalRange = isRunning()
|
Vector2 intervalRange = running
|
||||||
? Vector2.Lerp(_walkJoltIntervalRange, _runJoltIntervalRange, _smoothMoveT)
|
? Vector2.Lerp(_walkJoltIntervalRange, _runJoltIntervalRange, _smoothMoveT)
|
||||||
: Vector2.Lerp(_idleJoltIntervalRange, _walkJoltIntervalRange, _smoothMoveT);
|
: Vector2.Lerp(_idleJoltIntervalRange, _walkJoltIntervalRange, _smoothMoveT);
|
||||||
|
|
||||||
@@ -320,10 +411,8 @@ namespace Unheimlich.World.CameraSystem
|
|||||||
|
|
||||||
yield return new WaitForSeconds(interval);
|
yield return new WaitForSeconds(interval);
|
||||||
|
|
||||||
// Jolts only fire when the camera is steady — steadyFactor is 1 when still,
|
|
||||||
// 0 when the player is actively looking around.
|
|
||||||
float steadyFactor = 1f - Mathf.Clamp01(_lookSpeed / _joltLookSuppressSpeed);
|
float steadyFactor = 1f - Mathf.Clamp01(_lookSpeed / _joltLookSuppressSpeed);
|
||||||
float ampScale = (1f + stress * _stressJoltAmpMul) * _weight * steadyFactor;
|
float ampScale = (1f + stress * _stressJoltAmpMul) * _weight * _masterIntensity * steadyFactor;
|
||||||
|
|
||||||
Vector3 target = new Vector3(
|
Vector3 target = new Vector3(
|
||||||
Random.Range(-1f, 1f) * joltAmp * ampScale,
|
Random.Range(-1f, 1f) * joltAmp * ampScale,
|
||||||
@@ -335,17 +424,12 @@ namespace Unheimlich.World.CameraSystem
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>Returns true if the player is currently running.</summary>
|
private bool IsRunning()
|
||||||
private bool isRunning()
|
|
||||||
{
|
{
|
||||||
return OctoCore.Components.OctoPlayer.Instance != null
|
return OctoCore.Components.OctoPlayer.Instance != null
|
||||||
&& OctoCore.Components.OctoPlayer.Instance.State.IsRunning;
|
&& OctoCore.Components.OctoPlayer.Instance.State.IsRunning;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Snaps to <paramref name="target"/> in the first fraction of the interval,
|
|
||||||
/// then eases back to zero for the remainder — simulating a hand recoil.
|
|
||||||
/// </summary>
|
|
||||||
private IEnumerator ApplyJolt(Vector3 target, float totalDuration)
|
private IEnumerator ApplyJolt(Vector3 target, float totalDuration)
|
||||||
{
|
{
|
||||||
float snapDur = totalDuration * _joltSnapFraction;
|
float snapDur = totalDuration * _joltSnapFraction;
|
||||||
|
|||||||
@@ -1,74 +1,39 @@
|
|||||||
using System.Collections;
|
using System.Collections;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
using UnityEngine.Rendering;
|
|
||||||
|
|
||||||
namespace MonoLimboStudio
|
namespace Unheimlich.VFX
|
||||||
{
|
{
|
||||||
public class LightFlicker : MonoBehaviour
|
public class LightFlicker : MonoBehaviour
|
||||||
{
|
{
|
||||||
[Header("Light Settings")]
|
|
||||||
public Light targetLight;
|
public Light targetLight;
|
||||||
|
|
||||||
[Tooltip("Base intensity set externally (e.g. by ScarecrowFire). Flicker oscillates around this value.")]
|
[Tooltip("Flicker oscillates around this value. Driven each frame by ScarecrowFire.")]
|
||||||
public float baseIntensity = 1f;
|
public float baseIntensity = 0f;
|
||||||
|
|
||||||
[Tooltip("Flicker range applied relative to baseIntensity (e.g. 0.3 = ±30%).")]
|
[Range(0f, 1f)] public float flickerRange = 0.3f;
|
||||||
[Range(0f, 1f)]
|
|
||||||
public float flickerRange = 0.3f;
|
|
||||||
|
|
||||||
[Header("Perlin Flicker (smooth)")]
|
|
||||||
public float flickerSpeed = 5f;
|
public float flickerSpeed = 5f;
|
||||||
|
|
||||||
[Header("Glitch Flicker (bursts)")]
|
[Range(0f, 1f)] public float glitchChance = 0.15f;
|
||||||
[Range(0f, 1f)] public float glitchChance = 0.15f;
|
public float glitchMinDuration = 0.02f;
|
||||||
public float glitchMinDuration = 0.02f;
|
public float glitchMaxDuration = 0.12f;
|
||||||
public float glitchMaxDuration = 0.12f;
|
|
||||||
|
|
||||||
[Header("Material Settings")]
|
private float _randomOffset;
|
||||||
public Renderer targetRenderer;
|
|
||||||
public string opacityProperty = "_Opacity";
|
|
||||||
[Range(0f, 1f)] public float minOpacity = 0.2f;
|
|
||||||
[Range(0f, 1f)] public float maxOpacity = 1.0f;
|
|
||||||
|
|
||||||
private Material _materialInstance;
|
|
||||||
private float _randomOffset;
|
|
||||||
|
|
||||||
// ─────────────────────────────────────────────────────────────────────
|
|
||||||
|
|
||||||
void Start()
|
void Start()
|
||||||
{
|
{
|
||||||
_randomOffset = Random.Range(0f, 1000f);
|
_randomOffset = Random.Range(0f, 1000f);
|
||||||
|
|
||||||
if (targetRenderer != null)
|
|
||||||
{
|
|
||||||
_materialInstance = targetRenderer.material;
|
|
||||||
|
|
||||||
if (!_materialInstance.HasProperty(opacityProperty))
|
|
||||||
Debug.LogWarning($"Property '{opacityProperty}' not found on material.");
|
|
||||||
}
|
|
||||||
|
|
||||||
StartCoroutine(FlickerRoutine());
|
StartCoroutine(FlickerRoutine());
|
||||||
}
|
}
|
||||||
|
|
||||||
// ─────────────────────────────────────────────────────────────────────
|
/// <summary>Called each frame by ScarecrowFire to update the base the flicker oscillates around.</summary>
|
||||||
|
public void SetBaseIntensity(float value) => baseIntensity = value;
|
||||||
/// <summary>
|
|
||||||
/// Sets the base intensity that the flicker oscillates around.
|
|
||||||
/// Called each frame by ScarecrowFire as the fire grows.
|
|
||||||
/// </summary>
|
|
||||||
public void SetBaseIntensity(float value)
|
|
||||||
{
|
|
||||||
baseIntensity = value;
|
|
||||||
}
|
|
||||||
|
|
||||||
// ─────────────────────────────────────────────────────────────────────
|
|
||||||
|
|
||||||
private IEnumerator FlickerRoutine()
|
private IEnumerator FlickerRoutine()
|
||||||
{
|
{
|
||||||
while (true)
|
while (true)
|
||||||
{
|
{
|
||||||
float perlinValue = Mathf.PerlinNoise(Time.time * flickerSpeed + _randomOffset, 0f);
|
float t = Mathf.PerlinNoise(Time.time * flickerSpeed + _randomOffset, 0f);
|
||||||
ApplyFlicker(perlinValue);
|
ApplyFlicker(t);
|
||||||
|
|
||||||
if (Random.value < glitchChance)
|
if (Random.value < glitchChance)
|
||||||
yield return StartCoroutine(GlitchBurst());
|
yield return StartCoroutine(GlitchBurst());
|
||||||
@@ -79,8 +44,8 @@ namespace MonoLimboStudio
|
|||||||
|
|
||||||
private IEnumerator GlitchBurst()
|
private IEnumerator GlitchBurst()
|
||||||
{
|
{
|
||||||
float duration = Random.Range(glitchMinDuration, glitchMaxDuration);
|
|
||||||
float elapsed = 0f;
|
float elapsed = 0f;
|
||||||
|
float duration = Random.Range(glitchMinDuration, glitchMaxDuration);
|
||||||
|
|
||||||
while (elapsed < duration)
|
while (elapsed < duration)
|
||||||
{
|
{
|
||||||
@@ -90,26 +55,12 @@ namespace MonoLimboStudio
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Applies flicker as an offset around baseIntensity rather than
|
|
||||||
/// absolute min/max, so external intensity control stays intact.
|
|
||||||
/// </summary>
|
|
||||||
private void ApplyFlicker(float t)
|
private void ApplyFlicker(float t)
|
||||||
{
|
{
|
||||||
if (targetLight != null)
|
if (targetLight == null) return;
|
||||||
{
|
float offset = Mathf.Lerp(-baseIntensity * flickerRange,
|
||||||
float offset = Mathf.Lerp(-flickerRange, flickerRange, t);
|
baseIntensity * flickerRange, t);
|
||||||
targetLight.intensity = Mathf.Max(0f, baseIntensity + offset);
|
targetLight.intensity = Mathf.Max(0f, baseIntensity + offset);
|
||||||
}
|
|
||||||
|
|
||||||
if (_materialInstance != null && _materialInstance.HasProperty(opacityProperty))
|
|
||||||
_materialInstance.SetFloat(opacityProperty, Mathf.Lerp(minOpacity, maxOpacity, t));
|
|
||||||
}
|
|
||||||
|
|
||||||
void OnDestroy()
|
|
||||||
{
|
|
||||||
if (_materialInstance != null)
|
|
||||||
Destroy(_materialInstance);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user