From 0444b84249359bce52405e285909ce74a824df0b Mon Sep 17 00:00:00 2001 From: Jeonghyeon Ha Date: Wed, 13 Aug 2025 21:21:35 +0900 Subject: [PATCH] =?UTF-8?q?=EC=9D=B8=ED=84=B0=EB=9E=99=EC=85=98=20?= =?UTF-8?q?=EC=95=84=EC=9B=83=EB=9D=BC=EC=9D=B8=20=EC=BB=B4=ED=8F=AC?= =?UTF-8?q?=EB=84=8C=ED=8A=B8=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Assets/External/HighlightPlus.meta | 10 + Assets/External/HighlightPlus/Demo.meta | 9 + .../Demo/Demo1_HighlightExample.meta | 8 + .../Demo/Demo1_HighlightExample.unity | 2132 +++++++++++ .../Demo/Demo1_HighlightExample.unity.meta | 9 + .../Demo1_HighlightExample/LightingData.asset | 3 + .../LightingData.asset.meta | 8 + .../ReflectionProbe-0.exr | 3 + .../ReflectionProbe-0.exr.meta | 117 + .../ReflectionProbe-1.exr | 3 + .../ReflectionProbe-1.exr.meta | 117 + .../Demo/Demo2_SelectionExample.unity | 2106 ++++++++++ .../Demo/Demo2_SelectionExample.unity.meta | 7 + .../Demo/Demo3_HitFXExample.meta | 8 + .../Demo/Demo3_HitFXExample.unity | 2116 +++++++++++ .../Demo/Demo3_HitFXExample.unity.meta | 7 + .../Demo3_HitFXExample/LightingData.asset | 3 + .../LightingData.asset.meta | 8 + .../Demo3_HitFXExample/ReflectionProbe-0.exr | 3 + .../ReflectionProbe-0.exr.meta | 117 + .../HighlightPlus/Demo/Materials.meta | 9 + .../HighlightPlus/Demo/Materials/Floor.mat | 150 + .../Demo/Materials/Floor.mat.meta | 5 + .../HighlightPlus/Demo/Materials/Gold.mat | 149 + .../Demo/Materials/Gold.mat.meta | 5 + .../Demo/Materials/PlasticGlossy.mat | 149 + .../Demo/Materials/PlasticGlossy.mat.meta | 5 + .../HighlightPlus/Demo/Materials/Silk.mat | 149 + .../Demo/Materials/Silk.mat.meta | 5 + .../HighlightPlus/Demo/Materials/Wall.mat | 152 + .../Demo/Materials/Wall.mat.meta | 5 + .../External/HighlightPlus/Demo/Profiles.meta | 8 + .../Demo/Profiles/Selected.asset | 3 + .../Demo/Profiles/Selected.asset.meta | 8 + .../Profiles/SelectedAndHighlighted.asset | 3 + .../SelectedAndHighlighted.asset.meta | 8 + ...niversalRenderPipelineGlobalSettings.asset | 3 + ...salRenderPipelineGlobalSettings.asset.meta | 8 + .../External/HighlightPlus/Demo/Scripts.meta | 9 + .../HighlightPlus/Demo/Scripts/HitFxDemo.cs | 24 + .../Demo/Scripts/HitFxDemo.cs.meta | 11 + .../Demo/Scripts/ManualSelectionDemo.cs | 28 + .../Demo/Scripts/ManualSelectionDemo.cs.meta | 11 + .../Scripts/SphereHighlightEventExample.cs | 40 + .../SphereHighlightEventExample.cs.meta | 12 + .../Scripts/SphereSelectionEventsExample.cs | 26 + .../SphereSelectionEventsExample.cs.meta | 11 + .../External/HighlightPlus/Demo/Sounds.meta | 8 + .../HighlightPlus/Demo/Sounds/metalHit.wav | 3 + .../Demo/Sounds/metalHit.wav.meta | 22 + .../External/HighlightPlus/Demo/Textures.meta | 9 + .../Demo/Textures/floor_tiles_06_diff_1k.png | 3 + .../Textures/floor_tiles_06_diff_1k.png.meta | 68 + .../Demo/Textures/floor_tiles_06_nor_1k.png | 3 + .../Textures/floor_tiles_06_nor_1k.png.meta | 68 + .../Demo/Textures/overlaySampleTex.png | 3 + .../Demo/Textures/overlaySampleTex.png.meta | 92 + .../red_brick_plaster_patch_02_AO_1k.png | 3 + .../red_brick_plaster_patch_02_AO_1k.png.meta | 68 + .../red_brick_plaster_patch_02_Nor_1k.png | 3 + ...red_brick_plaster_patch_02_Nor_1k.png.meta | 68 + .../red_brick_plaster_patch_02_bump_1k.png | 3 + ...ed_brick_plaster_patch_02_bump_1k.png.meta | 68 + .../red_brick_plaster_patch_02_diff_1k.png | 3 + ...ed_brick_plaster_patch_02_diff_1k.png.meta | 68 + .../HighlightPlus/Demo/URP settings.meta | 8 + .../HighlightPlusForwardRenderer.asset | 3 + .../HighlightPlusForwardRenderer.asset.meta | 8 + .../UniversalRenderPipelineAsset.asset | 3 + .../UniversalRenderPipelineAsset.asset.meta | 8 + .../External/HighlightPlus/Documentation.meta | 8 + .../Documentation/Documentation Online.url | 2 + .../Documentation Online.url.meta | 7 + .../Documentation/Documentation PDF.url | 2 + .../Documentation/Documentation PDF.url.meta | 7 + .../Documentation/Kronnect Assets.pdf | Bin 0 -> 991708 bytes .../Documentation/Kronnect Assets.pdf.meta | 7 + Assets/External/HighlightPlus/Editor.meta | 9 + .../Editor/HighlightEffectEditor.cs | 881 +++++ .../Editor/HighlightEffectEditor.cs.meta | 12 + .../Editor/HighlightManagerEditor.cs | 71 + .../Editor/HighlightManagerEditor.cs.meta | 12 + .../Editor/HighlightProfileEditor.cs | 448 +++ .../Editor/HighlightProfileEditor.cs.meta | 12 + .../HighlightSeeThroughOccluderEditor.cs | 32 + .../HighlightSeeThroughOccluderEditor.cs.meta | 12 + .../Editor/HighlightTriggerEditor.cs | 105 + .../Editor/HighlightTriggerEditor.cs.meta | 12 + .../Editor/TransparentWithDepth.cs | 92 + .../Editor/TransparentWithDepth.cs.meta | 13 + Assets/External/HighlightPlus/README.txt | 454 +++ Assets/External/HighlightPlus/README.txt.meta | 8 + Assets/External/HighlightPlus/Runtime.meta | 8 + .../HighlightPlus/Runtime/Resources.meta | 9 + .../Runtime/Resources/HighlightPlus.meta | 9 + .../HighlightPlus/CustomVertexTransform.cginc | 10 + .../CustomVertexTransform.cginc.meta | 9 + .../HighlightPlus/HighlightAddDepth.shader | 51 + .../HighlightAddDepth.shader.meta | 10 + .../HighlightBlockerOutlineAndGlow.mat | 99 + .../HighlightBlockerOutlineAndGlow.mat.meta | 8 + .../HighlightPlus/HighlightBlockerOverlay.mat | 99 + .../HighlightBlockerOverlay.mat.meta | 8 + .../HighlightPlus/HighlightBlurGlow.shader | 182 + .../HighlightBlurGlow.shader.meta | 9 + .../HighlightPlus/HighlightBlurOutline.shader | 168 + .../HighlightBlurOutline.shader.meta | 9 + .../HighlightClearStencil.shader | 95 + .../HighlightClearStencil.shader.meta | 9 + .../HighlightPlus/HighlightComposeGlow.shader | 168 + .../HighlightComposeGlow.shader.meta | 9 + .../HighlightComposeOutline.shader | 181 + .../HighlightComposeOutline.shader.meta | 9 + .../Resources/HighlightPlus/HighlightGlow.mat | 105 + .../HighlightPlus/HighlightGlow.mat.meta | 8 + .../HighlightPlus/HighlightGlow.shader | 134 + .../HighlightPlus/HighlightGlow.shader.meta | 12 + .../HighlightPlus/HighlightIconFX.shader | 69 + .../HighlightPlus/HighlightIconFX.shader.meta | 10 + .../HighlightPlus/HighlightInnerGlow.shader | 98 + .../HighlightInnerGlow.shader.meta | 9 + .../HighlightPlus/HighlightMask.shader | 117 + .../HighlightPlus/HighlightMask.shader.meta | 9 + .../HighlightPlus/HighlightOccluder.shader | 59 + .../HighlightOccluder.shader.meta | 9 + .../HighlightPlus/HighlightOutline.mat | 94 + .../HighlightPlus/HighlightOutline.mat.meta | 8 + .../HighlightPlus/HighlightOutline.shader | 193 + .../HighlightOutline.shader.meta | 9 + .../HighlightPlus/HighlightOverlay.shader | 144 + .../HighlightOverlay.shader.meta | 9 + .../HighlightPlus/HighlightPlusDepthWrite.mat | 76 + .../HighlightPlusDepthWrite.mat.meta | 9 + .../HighlightPlus/HighlightSeeThrough.shader | 170 + .../HighlightSeeThrough.shader.meta | 9 + .../HighlightSeeThroughBorder.shader | 124 + .../HighlightSeeThroughBorder.shader.meta | 9 + .../HighlightSeeThroughMask.shader | 62 + .../HighlightSeeThroughMask.shader.meta | 9 + .../HighlightPlus/HighlightSolidColor.shader | 142 + .../HighlightSolidColor.shader.meta | 9 + .../HighlightPlus/HighlightTarget.shader | 168 + .../HighlightPlus/HighlightTarget.shader.meta | 9 + .../HighlightPlus/HighlightUIMask.mat | 99 + .../HighlightPlus/HighlightUIMask.mat.meta | 8 + .../HighlightPlus/HighlightUIMask.shader | 74 + .../HighlightPlus/HighlightUIMask.shader.meta | 9 + .../Resources/HighlightPlus/IconMesh.fbx | 3 + .../Resources/HighlightPlus/IconMesh.fbx.meta | 106 + .../Resources/HighlightPlus/blueNoiseVL.png | 3 + .../HighlightPlus/blueNoiseVL.png.meta | 135 + .../Resources/HighlightPlus/target.png | 3 + .../Resources/HighlightPlus/target.png.meta | 100 + .../HighlightPlus/Runtime/Scripts.meta | 9 + .../Runtime/Scripts/HighlightEffect.cs | 3382 +++++++++++++++++ .../Runtime/Scripts/HighlightEffect.cs.meta | 12 + .../Runtime/Scripts/HighlightEffectActions.cs | 108 + .../Scripts/HighlightEffectActions.cs.meta | 12 + .../Runtime/Scripts/HighlightEffectBlocker.cs | 34 + .../Scripts/HighlightEffectBlocker.cs.meta | 11 + .../Scripts/HighlightEffectOccluderManager.cs | 278 ++ .../HighlightEffectOccluderManager.cs.meta | 12 + .../Runtime/Scripts/HighlightManager.cs | 476 +++ .../Runtime/Scripts/HighlightManager.cs.meta | 12 + .../Scripts/HighlightPlusRenderPassFeature.cs | 287 ++ .../HighlightPlusRenderPassFeature.cs.meta | 11 + .../Runtime/Scripts/HighlightProfile.cs | 504 +++ .../Runtime/Scripts/HighlightProfile.cs.meta | 12 + .../Scripts/HighlightSeeThroughOccluder.cs | 78 + .../HighlightSeeThroughOccluder.cs.meta | 12 + .../Runtime/Scripts/HighlightTrigger.cs | 456 +++ .../Runtime/Scripts/HighlightTrigger.cs.meta | 12 + .../Runtime/Scripts/InputProxy.cs | 90 + .../Runtime/Scripts/InputProxy.cs.meta | 11 + .../HighlightPlus/Runtime/Scripts/Misc.cs | 33 + .../Runtime/Scripts/Misc.cs.meta | 11 + .../Runtime/Scripts/RenderingUtils.cs | 47 + .../Runtime/Scripts/RenderingUtils.cs.meta | 11 + .../Runtime/Scripts/ShaderParams.cs | 105 + .../Runtime/Scripts/ShaderParams.cs.meta | 11 + .../HighlightPlus/Runtime/Scripts/VRCheck.cs | 62 + .../Runtime/Scripts/VRCheck.cs.meta | 11 + Assets/Settings/PC_Renderer.asset | 4 +- .../Environments/Props/Prop_Open.prefab | 218 ++ .../Prop/MenuBoard/PropMenuBoard.prefab | 220 +- .../Prefabs/RestaurantPlayer.prefab | 225 ++ .../RestaurantEvent/InteractableHighlight.cs | 155 + .../InteractableHighlight.cs.meta | 3 + .../_Scripts/RestaurantEvent/Solvers.meta | 3 + .../RestaurantManagementUiEventSolver.cs | 0 .../RestaurantManagementUiEventSolver.cs.meta | 0 .../RestaurantOpenEventSolver.cs | 0 .../RestaurantOpenEventSolver.cs.meta | 0 193 files changed, 21114 insertions(+), 4 deletions(-) create mode 100644 Assets/External/HighlightPlus.meta create mode 100644 Assets/External/HighlightPlus/Demo.meta create mode 100644 Assets/External/HighlightPlus/Demo/Demo1_HighlightExample.meta create mode 100644 Assets/External/HighlightPlus/Demo/Demo1_HighlightExample.unity create mode 100644 Assets/External/HighlightPlus/Demo/Demo1_HighlightExample.unity.meta create mode 100644 Assets/External/HighlightPlus/Demo/Demo1_HighlightExample/LightingData.asset create mode 100644 Assets/External/HighlightPlus/Demo/Demo1_HighlightExample/LightingData.asset.meta create mode 100644 Assets/External/HighlightPlus/Demo/Demo1_HighlightExample/ReflectionProbe-0.exr create mode 100644 Assets/External/HighlightPlus/Demo/Demo1_HighlightExample/ReflectionProbe-0.exr.meta create mode 100644 Assets/External/HighlightPlus/Demo/Demo1_HighlightExample/ReflectionProbe-1.exr create mode 100644 Assets/External/HighlightPlus/Demo/Demo1_HighlightExample/ReflectionProbe-1.exr.meta create mode 100644 Assets/External/HighlightPlus/Demo/Demo2_SelectionExample.unity create mode 100644 Assets/External/HighlightPlus/Demo/Demo2_SelectionExample.unity.meta create mode 100644 Assets/External/HighlightPlus/Demo/Demo3_HitFXExample.meta create mode 100644 Assets/External/HighlightPlus/Demo/Demo3_HitFXExample.unity create mode 100644 Assets/External/HighlightPlus/Demo/Demo3_HitFXExample.unity.meta create mode 100644 Assets/External/HighlightPlus/Demo/Demo3_HitFXExample/LightingData.asset create mode 100644 Assets/External/HighlightPlus/Demo/Demo3_HitFXExample/LightingData.asset.meta create mode 100644 Assets/External/HighlightPlus/Demo/Demo3_HitFXExample/ReflectionProbe-0.exr create mode 100644 Assets/External/HighlightPlus/Demo/Demo3_HitFXExample/ReflectionProbe-0.exr.meta create mode 100644 Assets/External/HighlightPlus/Demo/Materials.meta create mode 100644 Assets/External/HighlightPlus/Demo/Materials/Floor.mat create mode 100644 Assets/External/HighlightPlus/Demo/Materials/Floor.mat.meta create mode 100644 Assets/External/HighlightPlus/Demo/Materials/Gold.mat create mode 100644 Assets/External/HighlightPlus/Demo/Materials/Gold.mat.meta create mode 100644 Assets/External/HighlightPlus/Demo/Materials/PlasticGlossy.mat create mode 100644 Assets/External/HighlightPlus/Demo/Materials/PlasticGlossy.mat.meta create mode 100644 Assets/External/HighlightPlus/Demo/Materials/Silk.mat create mode 100644 Assets/External/HighlightPlus/Demo/Materials/Silk.mat.meta create mode 100644 Assets/External/HighlightPlus/Demo/Materials/Wall.mat create mode 100644 Assets/External/HighlightPlus/Demo/Materials/Wall.mat.meta create mode 100644 Assets/External/HighlightPlus/Demo/Profiles.meta create mode 100644 Assets/External/HighlightPlus/Demo/Profiles/Selected.asset create mode 100644 Assets/External/HighlightPlus/Demo/Profiles/Selected.asset.meta create mode 100644 Assets/External/HighlightPlus/Demo/Profiles/SelectedAndHighlighted.asset create mode 100644 Assets/External/HighlightPlus/Demo/Profiles/SelectedAndHighlighted.asset.meta create mode 100644 Assets/External/HighlightPlus/Demo/Profiles/UniversalRenderPipelineGlobalSettings.asset create mode 100644 Assets/External/HighlightPlus/Demo/Profiles/UniversalRenderPipelineGlobalSettings.asset.meta create mode 100644 Assets/External/HighlightPlus/Demo/Scripts.meta create mode 100644 Assets/External/HighlightPlus/Demo/Scripts/HitFxDemo.cs create mode 100644 Assets/External/HighlightPlus/Demo/Scripts/HitFxDemo.cs.meta create mode 100644 Assets/External/HighlightPlus/Demo/Scripts/ManualSelectionDemo.cs create mode 100644 Assets/External/HighlightPlus/Demo/Scripts/ManualSelectionDemo.cs.meta create mode 100644 Assets/External/HighlightPlus/Demo/Scripts/SphereHighlightEventExample.cs create mode 100644 Assets/External/HighlightPlus/Demo/Scripts/SphereHighlightEventExample.cs.meta create mode 100644 Assets/External/HighlightPlus/Demo/Scripts/SphereSelectionEventsExample.cs create mode 100644 Assets/External/HighlightPlus/Demo/Scripts/SphereSelectionEventsExample.cs.meta create mode 100644 Assets/External/HighlightPlus/Demo/Sounds.meta create mode 100644 Assets/External/HighlightPlus/Demo/Sounds/metalHit.wav create mode 100644 Assets/External/HighlightPlus/Demo/Sounds/metalHit.wav.meta create mode 100644 Assets/External/HighlightPlus/Demo/Textures.meta create mode 100644 Assets/External/HighlightPlus/Demo/Textures/floor_tiles_06_diff_1k.png create mode 100644 Assets/External/HighlightPlus/Demo/Textures/floor_tiles_06_diff_1k.png.meta create mode 100644 Assets/External/HighlightPlus/Demo/Textures/floor_tiles_06_nor_1k.png create mode 100644 Assets/External/HighlightPlus/Demo/Textures/floor_tiles_06_nor_1k.png.meta create mode 100644 Assets/External/HighlightPlus/Demo/Textures/overlaySampleTex.png create mode 100644 Assets/External/HighlightPlus/Demo/Textures/overlaySampleTex.png.meta create mode 100644 Assets/External/HighlightPlus/Demo/Textures/red_brick_plaster_patch_02_AO_1k.png create mode 100644 Assets/External/HighlightPlus/Demo/Textures/red_brick_plaster_patch_02_AO_1k.png.meta create mode 100644 Assets/External/HighlightPlus/Demo/Textures/red_brick_plaster_patch_02_Nor_1k.png create mode 100644 Assets/External/HighlightPlus/Demo/Textures/red_brick_plaster_patch_02_Nor_1k.png.meta create mode 100644 Assets/External/HighlightPlus/Demo/Textures/red_brick_plaster_patch_02_bump_1k.png create mode 100644 Assets/External/HighlightPlus/Demo/Textures/red_brick_plaster_patch_02_bump_1k.png.meta create mode 100644 Assets/External/HighlightPlus/Demo/Textures/red_brick_plaster_patch_02_diff_1k.png create mode 100644 Assets/External/HighlightPlus/Demo/Textures/red_brick_plaster_patch_02_diff_1k.png.meta create mode 100644 Assets/External/HighlightPlus/Demo/URP settings.meta create mode 100644 Assets/External/HighlightPlus/Demo/URP settings/HighlightPlusForwardRenderer.asset create mode 100644 Assets/External/HighlightPlus/Demo/URP settings/HighlightPlusForwardRenderer.asset.meta create mode 100644 Assets/External/HighlightPlus/Demo/URP settings/UniversalRenderPipelineAsset.asset create mode 100644 Assets/External/HighlightPlus/Demo/URP settings/UniversalRenderPipelineAsset.asset.meta create mode 100644 Assets/External/HighlightPlus/Documentation.meta create mode 100644 Assets/External/HighlightPlus/Documentation/Documentation Online.url create mode 100644 Assets/External/HighlightPlus/Documentation/Documentation Online.url.meta create mode 100644 Assets/External/HighlightPlus/Documentation/Documentation PDF.url create mode 100644 Assets/External/HighlightPlus/Documentation/Documentation PDF.url.meta create mode 100644 Assets/External/HighlightPlus/Documentation/Kronnect Assets.pdf create mode 100644 Assets/External/HighlightPlus/Documentation/Kronnect Assets.pdf.meta create mode 100644 Assets/External/HighlightPlus/Editor.meta create mode 100644 Assets/External/HighlightPlus/Editor/HighlightEffectEditor.cs create mode 100644 Assets/External/HighlightPlus/Editor/HighlightEffectEditor.cs.meta create mode 100644 Assets/External/HighlightPlus/Editor/HighlightManagerEditor.cs create mode 100644 Assets/External/HighlightPlus/Editor/HighlightManagerEditor.cs.meta create mode 100644 Assets/External/HighlightPlus/Editor/HighlightProfileEditor.cs create mode 100644 Assets/External/HighlightPlus/Editor/HighlightProfileEditor.cs.meta create mode 100644 Assets/External/HighlightPlus/Editor/HighlightSeeThroughOccluderEditor.cs create mode 100644 Assets/External/HighlightPlus/Editor/HighlightSeeThroughOccluderEditor.cs.meta create mode 100644 Assets/External/HighlightPlus/Editor/HighlightTriggerEditor.cs create mode 100644 Assets/External/HighlightPlus/Editor/HighlightTriggerEditor.cs.meta create mode 100644 Assets/External/HighlightPlus/Editor/TransparentWithDepth.cs create mode 100644 Assets/External/HighlightPlus/Editor/TransparentWithDepth.cs.meta create mode 100644 Assets/External/HighlightPlus/README.txt create mode 100644 Assets/External/HighlightPlus/README.txt.meta create mode 100644 Assets/External/HighlightPlus/Runtime.meta create mode 100644 Assets/External/HighlightPlus/Runtime/Resources.meta create mode 100644 Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus.meta create mode 100644 Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/CustomVertexTransform.cginc create mode 100644 Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/CustomVertexTransform.cginc.meta create mode 100644 Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightAddDepth.shader create mode 100644 Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightAddDepth.shader.meta create mode 100644 Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightBlockerOutlineAndGlow.mat create mode 100644 Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightBlockerOutlineAndGlow.mat.meta create mode 100644 Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightBlockerOverlay.mat create mode 100644 Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightBlockerOverlay.mat.meta create mode 100644 Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightBlurGlow.shader create mode 100644 Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightBlurGlow.shader.meta create mode 100644 Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightBlurOutline.shader create mode 100644 Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightBlurOutline.shader.meta create mode 100755 Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightClearStencil.shader create mode 100644 Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightClearStencil.shader.meta create mode 100644 Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightComposeGlow.shader create mode 100644 Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightComposeGlow.shader.meta create mode 100644 Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightComposeOutline.shader create mode 100644 Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightComposeOutline.shader.meta create mode 100644 Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightGlow.mat create mode 100644 Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightGlow.mat.meta create mode 100644 Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightGlow.shader create mode 100644 Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightGlow.shader.meta create mode 100644 Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightIconFX.shader create mode 100644 Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightIconFX.shader.meta create mode 100644 Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightInnerGlow.shader create mode 100644 Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightInnerGlow.shader.meta create mode 100644 Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightMask.shader create mode 100644 Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightMask.shader.meta create mode 100644 Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightOccluder.shader create mode 100644 Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightOccluder.shader.meta create mode 100644 Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightOutline.mat create mode 100644 Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightOutline.mat.meta create mode 100644 Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightOutline.shader create mode 100644 Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightOutline.shader.meta create mode 100644 Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightOverlay.shader create mode 100644 Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightOverlay.shader.meta create mode 100644 Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightPlusDepthWrite.mat create mode 100644 Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightPlusDepthWrite.mat.meta create mode 100644 Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightSeeThrough.shader create mode 100644 Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightSeeThrough.shader.meta create mode 100644 Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightSeeThroughBorder.shader create mode 100644 Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightSeeThroughBorder.shader.meta create mode 100644 Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightSeeThroughMask.shader create mode 100644 Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightSeeThroughMask.shader.meta create mode 100644 Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightSolidColor.shader create mode 100644 Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightSolidColor.shader.meta create mode 100644 Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightTarget.shader create mode 100644 Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightTarget.shader.meta create mode 100644 Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightUIMask.mat create mode 100644 Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightUIMask.mat.meta create mode 100644 Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightUIMask.shader create mode 100644 Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightUIMask.shader.meta create mode 100644 Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/IconMesh.fbx create mode 100644 Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/IconMesh.fbx.meta create mode 100755 Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/blueNoiseVL.png create mode 100644 Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/blueNoiseVL.png.meta create mode 100644 Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/target.png create mode 100644 Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/target.png.meta create mode 100644 Assets/External/HighlightPlus/Runtime/Scripts.meta create mode 100644 Assets/External/HighlightPlus/Runtime/Scripts/HighlightEffect.cs create mode 100644 Assets/External/HighlightPlus/Runtime/Scripts/HighlightEffect.cs.meta create mode 100644 Assets/External/HighlightPlus/Runtime/Scripts/HighlightEffectActions.cs create mode 100644 Assets/External/HighlightPlus/Runtime/Scripts/HighlightEffectActions.cs.meta create mode 100644 Assets/External/HighlightPlus/Runtime/Scripts/HighlightEffectBlocker.cs create mode 100644 Assets/External/HighlightPlus/Runtime/Scripts/HighlightEffectBlocker.cs.meta create mode 100644 Assets/External/HighlightPlus/Runtime/Scripts/HighlightEffectOccluderManager.cs create mode 100644 Assets/External/HighlightPlus/Runtime/Scripts/HighlightEffectOccluderManager.cs.meta create mode 100644 Assets/External/HighlightPlus/Runtime/Scripts/HighlightManager.cs create mode 100644 Assets/External/HighlightPlus/Runtime/Scripts/HighlightManager.cs.meta create mode 100644 Assets/External/HighlightPlus/Runtime/Scripts/HighlightPlusRenderPassFeature.cs create mode 100644 Assets/External/HighlightPlus/Runtime/Scripts/HighlightPlusRenderPassFeature.cs.meta create mode 100644 Assets/External/HighlightPlus/Runtime/Scripts/HighlightProfile.cs create mode 100644 Assets/External/HighlightPlus/Runtime/Scripts/HighlightProfile.cs.meta create mode 100644 Assets/External/HighlightPlus/Runtime/Scripts/HighlightSeeThroughOccluder.cs create mode 100644 Assets/External/HighlightPlus/Runtime/Scripts/HighlightSeeThroughOccluder.cs.meta create mode 100644 Assets/External/HighlightPlus/Runtime/Scripts/HighlightTrigger.cs create mode 100644 Assets/External/HighlightPlus/Runtime/Scripts/HighlightTrigger.cs.meta create mode 100644 Assets/External/HighlightPlus/Runtime/Scripts/InputProxy.cs create mode 100644 Assets/External/HighlightPlus/Runtime/Scripts/InputProxy.cs.meta create mode 100644 Assets/External/HighlightPlus/Runtime/Scripts/Misc.cs create mode 100644 Assets/External/HighlightPlus/Runtime/Scripts/Misc.cs.meta create mode 100644 Assets/External/HighlightPlus/Runtime/Scripts/RenderingUtils.cs create mode 100644 Assets/External/HighlightPlus/Runtime/Scripts/RenderingUtils.cs.meta create mode 100644 Assets/External/HighlightPlus/Runtime/Scripts/ShaderParams.cs create mode 100644 Assets/External/HighlightPlus/Runtime/Scripts/ShaderParams.cs.meta create mode 100644 Assets/External/HighlightPlus/Runtime/Scripts/VRCheck.cs create mode 100644 Assets/External/HighlightPlus/Runtime/Scripts/VRCheck.cs.meta create mode 100644 Assets/_DDD/_Scripts/RestaurantEvent/InteractableHighlight.cs create mode 100644 Assets/_DDD/_Scripts/RestaurantEvent/InteractableHighlight.cs.meta create mode 100644 Assets/_DDD/_Scripts/RestaurantEvent/Solvers.meta rename Assets/_DDD/_Scripts/RestaurantEvent/{ => Solvers}/RestaurantManagementUiEventSolver.cs (100%) rename Assets/_DDD/_Scripts/RestaurantEvent/{ => Solvers}/RestaurantManagementUiEventSolver.cs.meta (100%) rename Assets/_DDD/_Scripts/RestaurantEvent/{ => Solvers}/RestaurantOpenEventSolver.cs (100%) rename Assets/_DDD/_Scripts/RestaurantEvent/{ => Solvers}/RestaurantOpenEventSolver.cs.meta (100%) diff --git a/Assets/External/HighlightPlus.meta b/Assets/External/HighlightPlus.meta new file mode 100644 index 000000000..a3bbead6d --- /dev/null +++ b/Assets/External/HighlightPlus.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 5db7164e964ae4c6b82d2283320ad13d +folderAsset: yes +timeCreated: 1557315954 +licenseType: Store +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/HighlightPlus/Demo.meta b/Assets/External/HighlightPlus/Demo.meta new file mode 100644 index 000000000..c699cd39f --- /dev/null +++ b/Assets/External/HighlightPlus/Demo.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: b0c676f447c26429db5c9404720e279c +folderAsset: yes +timeCreated: 1542876294 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/HighlightPlus/Demo/Demo1_HighlightExample.meta b/Assets/External/HighlightPlus/Demo/Demo1_HighlightExample.meta new file mode 100644 index 000000000..1ab46ea88 --- /dev/null +++ b/Assets/External/HighlightPlus/Demo/Demo1_HighlightExample.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: cabf1d3dce35a47789134841c7df7562 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/HighlightPlus/Demo/Demo1_HighlightExample.unity b/Assets/External/HighlightPlus/Demo/Demo1_HighlightExample.unity new file mode 100644 index 000000000..05cdaeef9 --- /dev/null +++ b/Assets/External/HighlightPlus/Demo/Demo1_HighlightExample.unity @@ -0,0 +1,2132 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 9 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 0 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 2 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_IndirectSpecularColor: {r: 0.44717538, g: 0.49709505, b: 0.5751526, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &4 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 11 + m_GIWorkflowMode: 0 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 0 + m_EnableRealtimeLightmaps: 1 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 1 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 1024 + m_ReflectionCompression: 1 + m_MixedBakeMode: 1 + m_BakeBackend: 0 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 500 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 500 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 2 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 0 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 0 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_LightProbeSampleCountMultiplier: 4 + m_LightingDataAsset: {fileID: 112000000, guid: 334c1ca31d9f941d69425982909406b3, + type: 2} + m_UseShadowmask: 0 +--- !u!196 &5 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + accuratePlacement: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &165230857 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 102722, guid: a3244c08ab4d16f45b564401c17e84d4, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 165230858} + m_Layer: 0 + m_Name: CalibrationWalls + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &165230858 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 431536, guid: a3244c08ab4d16f45b564401c17e84d4, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 165230857} + 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_Children: + - {fileID: 1165184421} + - {fileID: 181859161} + - {fileID: 1435719952} + - {fileID: 1525858954} + m_Father: {fileID: 1694850532} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &181859160 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 125776, guid: a3244c08ab4d16f45b564401c17e84d4, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 181859161} + - component: {fileID: 181859164} + - component: {fileID: 181859163} + - component: {fileID: 181859162} + m_Layer: 0 + m_Name: CalibrationWallRearRight + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 65 + m_IsActive: 1 +--- !u!4 &181859161 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 494730, guid: a3244c08ab4d16f45b564401c17e84d4, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 181859160} + m_LocalRotation: {x: 0.5, y: 0.5, z: -0.5000001, w: 0.49999994} + m_LocalPosition: {x: -2.5, y: 2.5, z: 0} + m_LocalScale: {x: 0.5, y: 1, z: 0.49999997} + m_Children: [] + m_Father: {fileID: 165230858} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &181859162 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 2304408, guid: a3244c08ab4d16f45b564401c17e84d4, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 181859160} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 0 + m_RayTracingMode: 2 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 0062779a7c303451ab69ea6fc7893dc8, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!64 &181859163 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 6442406, guid: a3244c08ab4d16f45b564401c17e84d4, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 181859160} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 4 + m_Convex: 0 + m_CookingOptions: 30 + m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} +--- !u!33 &181859164 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 3378452, guid: a3244c08ab4d16f45b564401c17e84d4, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 181859160} + m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &472769855 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 100000, guid: e11f662626928b14e8f57acb029360b9, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 472769856} + - component: {fileID: 472769857} + - component: {fileID: 472769858} + m_Layer: 0 + m_Name: DirectionalLight + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &472769856 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 400000, guid: e11f662626928b14e8f57acb029360b9, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 472769855} + m_LocalRotation: {x: -0.5596046, y: 0.71660864, z: -0.3668599, w: -0.19679597} + m_LocalPosition: {x: 0, y: 2, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 48.249, y: 168.87, z: -80.97} +--- !u!108 &472769857 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 10800000, guid: e11f662626928b14e8f57acb029360b9, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 472769855} + m_Enabled: 1 + serializedVersion: 10 + m_Type: 1 + m_Shape: 0 + m_Color: {r: 1, g: 0.9885849, b: 0.95686275, a: 1} + m_Intensity: 1 + m_Range: 10 + m_SpotAngle: 30 + m_InnerSpotAngle: 21.802082 + m_CookieSize: 10 + m_Shadows: + m_Type: 1 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 0.5 + m_Bias: 1 + m_NormalBias: 1 + 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_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!114 &472769858 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 472769855} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 474bcb49853aa07438625e644c072ee6, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UsePipelineSettings: 1 +--- !u!1 &567592204 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 567592205} + - component: {fileID: 567592208} + - component: {fileID: 567592207} + - component: {fileID: 567592206} + m_Layer: 0 + m_Name: SmallWall + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &567592205 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 567592204} + m_LocalRotation: {x: 0, y: 0.34513432, z: 0, w: 0.93855333} + m_LocalPosition: {x: 1.42, y: 0.34, z: -0.77} + m_LocalScale: {x: 2, y: 1, z: 0.2} + m_Children: [] + m_Father: {fileID: 1694850532} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 40.38, z: 0} +--- !u!23 &567592206 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 567592204} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 0062779a7c303451ab69ea6fc7893dc8, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!65 &567592207 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 567592204} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &567592208 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 567592204} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &613470776 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 613470777} + - component: {fileID: 613470779} + - component: {fileID: 613470778} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &613470777 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 613470776} + 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_Children: [] + m_Father: {fileID: 1605869163} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.1} + m_AnchorMax: {x: 1, y: 0.9} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &613470778 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 613470776} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 1 + m_MinSize: 10 + m_MaxSize: 90 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 'HIGHLIGHT PLUS (OUTLINE, GLOW AND SEE-THROUGH) DEMO + + Click + or hover spheres to show effect. Press C to randomize glow color on gold sphere. + + This + asset requires Universal Rendering Pipeline. Please check README for setup instructions.' +--- !u!222 &613470779 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 613470776} + m_CullTransparentMesh: 0 +--- !u!1 &617211756 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 195550, guid: d7720c2417695eb45bd70f6d10a17068, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 617211757} + - component: {fileID: 617211762} + - component: {fileID: 617211761} + - component: {fileID: 617211760} + - component: {fileID: 617211759} + - component: {fileID: 617211758} + m_Layer: 1 + m_Name: SilkSphere + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &617211757 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 403562, guid: d7720c2417695eb45bd70f6d10a17068, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 617211756} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -1, y: 0.325, z: 0} + m_LocalScale: {x: 0.65, y: 0.65, z: 0.65} + m_Children: [] + m_Father: {fileID: 1202089666} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &617211758 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 617211756} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 888380afc233049ce9e618f9f36c8ba8, type: 3} + m_Name: + m_EditorClassIdentifier: + profile: {fileID: 0} + profileSync: 1 + previewInEditor: 1 + camerasLayerMask: + serializedVersion: 2 + m_Bits: 4294967295 + effectGroup: 0 + effectGroupLayer: + serializedVersion: 2 + m_Bits: 4294967295 + effectNameFilter: + combineMeshes: 0 + alphaCutOff: 0 + cullBackFaces: 1 + ignoreObjectVisibility: 0 + reflectionProbes: 0 + GPUInstancing: 1 + normalsOption: 0 + ignore: 0 + _highlighted: 0 + fadeInDuration: 0 + fadeOutDuration: 0 + flipY: 0 + constantWidth: 1 + subMeshMask: -1 + overlay: 0.5 + overlayColor: {r: 1, g: 0.92156863, b: 0.015686275, a: 1} + overlayAnimationSpeed: 1 + overlayMinIntensity: 0.5 + overlayBlending: 1 + overlayTexture: {fileID: 0} + overlayTextureScale: 1 + outline: 1 + outlineColor: {r: 0, g: 0, b: 0, a: 1} + outlineWidth: 0.62 + outlineQuality: 0 + outlineDownsampling: 2 + outlineVisibility: 0 + glowBlendMode: 0 + outlineBlitDebug: 0 + outlineIndependent: 0 + glow: 1.71 + glowWidth: 0.14 + glowQuality: 1 + glowDownsampling: 2 + glowHQColor: {r: 1, g: 0.52205884, b: 0.52205884, a: 1} + glowDithering: 1 + glowMagicNumber1: 0.75 + glowMagicNumber2: 0.5 + glowAnimationSpeed: 1 + glowVisibility: 0 + glowBlitDebug: 0 + glowBlendPasses: 1 + glowPasses: + - offset: 4 + alpha: 0.1 + color: {r: 0.64, g: 1, b: 0, a: 1} + - offset: 3 + alpha: 0.2 + color: {r: 0.64, g: 1, b: 0, a: 1} + - offset: 2 + alpha: 0.3 + color: {r: 0.64, g: 1, b: 0, a: 1} + - offset: 1 + alpha: 0.4 + color: {r: 0.64, g: 1, b: 0, a: 1} + innerGlow: 0.79 + innerGlowWidth: 1 + innerGlowColor: {r: 1, g: 1, b: 1, a: 1} + innerGlowVisibility: 0 + targetFX: 0 + targetFXTexture: {fileID: 0} + targetFXColor: {r: 1, g: 1, b: 1, a: 1} + targetFXCenter: {fileID: 0} + targetFXRotationSpeed: 30 + targetFXInitialScale: 2 + targetFXEndScale: 1.1 + targetFXScaleToRenderBounds: 0 + targetFXAlignToGround: 0 + targetFXFadePower: 32 + targetFXGroundMaxDistance: 10 + targetFXGroundLayerMask: + serializedVersion: 2 + m_Bits: 4294967295 + targetFXTransitionDuration: 0.5 + targetFXStayDuration: 2 + targetFXVisibility: 1 + seeThrough: 1 + seeThroughOccluderMask: + serializedVersion: 2 + m_Bits: 4294967295 + seeThroughOccluderThreshold: 0.3 + seeThroughOccluderMaskAccurate: 0 + seeThroughOccluderCheckInterval: 1 + seeThroughOccluderCheckIndividualObjects: 0 + seeThroughDepthOffset: 0 + seeThroughMaxDepth: 0 + seeThroughIntensity: 0.8 + seeThroughTintAlpha: 0.5 + seeThroughTintColor: {r: 1, g: 0, b: 0, a: 1} + seeThroughNoise: 1 + seeThroughBorder: 0 + seeThroughBorderColor: {r: 0, g: 0, b: 0, a: 1} + seeThroughBorderWidth: 0.45 + seeThroughOrdered: 0 + rmsCount: 1 + hitFxInitialIntensity: 1 + hitFxMode: 0 + hitFxFadeOutDuration: 0.25 + hitFxColor: {r: 1, g: 1, b: 1, a: 1} + hitFxRadius: 0.5 +--- !u!114 &617211759 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 617211756} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5009cbb7e54994bb586cde7a70f34e6b, type: 3} + m_Name: + m_EditorClassIdentifier: + highlightOnHover: 1 + triggerMode: 1 + raycastCamera: {fileID: 965526243} + raycastSource: 0 + minDistance: 0 + maxDistance: 0 + respectUI: 1 + volumeLayerMask: + serializedVersion: 2 + m_Bits: 0 + selectOnClick: 0 + selectedProfile: {fileID: 0} + selectedAndHighlightedProfile: {fileID: 0} + singleSelection: 0 + toggle: 0 +--- !u!23 &617211760 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 2319362, guid: d7720c2417695eb45bd70f6d10a17068, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 617211756} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 3 + m_RayTracingMode: 2 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 3134ae80e55101b468fe9ea362327f28, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 617211757} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!135 &617211761 +SphereCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 13518414, guid: d7720c2417695eb45bd70f6d10a17068, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 617211756} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.5 + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &617211762 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 3336432, guid: d7720c2417695eb45bd70f6d10a17068, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 617211756} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &656694097 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 158430, guid: d7720c2417695eb45bd70f6d10a17068, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 656694098} + - component: {fileID: 656694104} + - component: {fileID: 656694103} + - component: {fileID: 656694102} + - component: {fileID: 656694101} + - component: {fileID: 656694100} + - component: {fileID: 656694099} + m_Layer: 1 + m_Name: GoldSphere + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &656694098 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 494476, guid: d7720c2417695eb45bd70f6d10a17068, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 656694097} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.85, y: 0.325, z: 0.14} + m_LocalScale: {x: 0.65, y: 0.65, z: 0.65} + m_Children: + - {fileID: 1837449480} + m_Father: {fileID: 1202089666} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &656694099 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 656694097} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 36aa3934b8f65413188fabe723ded4da, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &656694100 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 656694097} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 888380afc233049ce9e618f9f36c8ba8, type: 3} + m_Name: + m_EditorClassIdentifier: + profile: {fileID: 0} + profileSync: 0 + previewInEditor: 1 + camerasLayerMask: + serializedVersion: 2 + m_Bits: 4294967295 + effectGroup: 0 + effectGroupLayer: + serializedVersion: 2 + m_Bits: 4294967295 + effectNameFilter: + combineMeshes: 0 + alphaCutOff: 0 + cullBackFaces: 1 + ignoreObjectVisibility: 0 + reflectionProbes: 0 + GPUInstancing: 1 + normalsOption: 0 + ignore: 0 + _highlighted: 0 + fadeInDuration: 0 + fadeOutDuration: 0 + flipY: 0 + constantWidth: 1 + subMeshMask: -1 + overlay: 0.488 + overlayColor: {r: 1, g: 0.92156863, b: 0.015686275, a: 1} + overlayAnimationSpeed: 1 + overlayMinIntensity: 0 + overlayBlending: 1 + overlayTexture: {fileID: 0} + overlayTextureScale: 1 + outline: 1 + outlineColor: {r: 0, g: 0, b: 0, a: 1} + outlineWidth: 0.62 + outlineQuality: 0 + outlineDownsampling: 1 + outlineVisibility: 0 + glowBlendMode: 0 + outlineBlitDebug: 0 + outlineIndependent: 0 + glow: 1.71 + glowWidth: 4.5 + glowQuality: 2 + glowDownsampling: 1 + glowHQColor: {r: 0.6392157, g: 1, b: 0, a: 1} + glowDithering: 1 + glowMagicNumber1: 0.75 + glowMagicNumber2: 0.5 + glowAnimationSpeed: 1 + glowVisibility: 0 + glowBlitDebug: 0 + glowBlendPasses: 1 + glowPasses: + - offset: 4 + alpha: 0.1 + color: {r: 0.64, g: 1, b: 0, a: 1} + - offset: 3 + alpha: 0.2 + color: {r: 0.64, g: 1, b: 0, a: 1} + - offset: 2 + alpha: 0.3 + color: {r: 0.64, g: 1, b: 0, a: 1} + - offset: 1 + alpha: 0.4 + color: {r: 0.64, g: 1, b: 0, a: 1} + innerGlow: 0 + innerGlowWidth: 1 + innerGlowColor: {r: 1, g: 1, b: 1, a: 1} + innerGlowVisibility: 0 + targetFX: 1 + targetFXTexture: {fileID: 2800000, guid: 1de3c566a6c8c405b9f6f453137273ec, type: 3} + targetFXColor: {r: 1, g: 1, b: 1, a: 1} + targetFXCenter: {fileID: 0} + targetFXRotationSpeed: 50 + targetFXInitialScale: 4 + targetFXEndScale: 1.5 + targetFXScaleToRenderBounds: 1 + targetFXAlignToGround: 0 + targetFXFadePower: 32 + targetFXGroundMaxDistance: 10 + targetFXGroundLayerMask: + serializedVersion: 2 + m_Bits: 4294967295 + targetFXTransitionDuration: 0.5 + targetFXStayDuration: 1.5 + targetFXVisibility: 1 + seeThrough: 1 + seeThroughOccluderMask: + serializedVersion: 2 + m_Bits: 4294967295 + seeThroughOccluderThreshold: 0.3 + seeThroughOccluderMaskAccurate: 0 + seeThroughOccluderCheckInterval: 1 + seeThroughOccluderCheckIndividualObjects: 0 + seeThroughDepthOffset: 0 + seeThroughMaxDepth: 0 + seeThroughIntensity: 0.8 + seeThroughTintAlpha: 0.5 + seeThroughTintColor: {r: 1, g: 0, b: 0, a: 1} + seeThroughNoise: 1 + seeThroughBorder: 0 + seeThroughBorderColor: {r: 0, g: 0, b: 0, a: 1} + seeThroughBorderWidth: 0.45 + seeThroughOrdered: 0 + rmsCount: 1 + hitFxInitialIntensity: 1 + hitFxMode: 0 + hitFxFadeOutDuration: 0.25 + hitFxColor: {r: 1, g: 1, b: 1, a: 1} + hitFxRadius: 0.5 +--- !u!114 &656694101 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 656694097} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5009cbb7e54994bb586cde7a70f34e6b, type: 3} + m_Name: + m_EditorClassIdentifier: + highlightOnHover: 1 + triggerMode: 1 + raycastCamera: {fileID: 965526243} + raycastSource: 0 + minDistance: 0 + maxDistance: 0 + respectUI: 1 + volumeLayerMask: + serializedVersion: 2 + m_Bits: 0 + selectOnClick: 0 + selectedProfile: {fileID: 0} + selectedAndHighlightedProfile: {fileID: 0} + singleSelection: 0 + toggle: 0 +--- !u!23 &656694102 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 2319392, guid: d7720c2417695eb45bd70f6d10a17068, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 656694097} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 3 + m_RayTracingMode: 2 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 5b12cf4be3e7c5149a5f24108ee6a551, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!135 &656694103 +SphereCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 13548954, guid: d7720c2417695eb45bd70f6d10a17068, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 656694097} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.5 + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &656694104 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 3351936, guid: d7720c2417695eb45bd70f6d10a17068, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 656694097} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &965526239 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 100000, guid: 97b34cadc45c6d94abd78dfc533fc3b2, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 965526244} + - component: {fileID: 965526243} + - component: {fileID: 965526240} + - component: {fileID: 965526241} + m_Layer: 0 + m_Name: Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!81 &965526240 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 8100000, guid: 97b34cadc45c6d94abd78dfc533fc3b2, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 965526239} + m_Enabled: 1 +--- !u!114 &965526241 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 965526239} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a79441f348de89743a2939f4d699eac1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_RenderShadows: 1 + m_RequiresDepthTextureOption: 2 + m_RequiresOpaqueTextureOption: 2 + m_CameraType: 0 + m_Cameras: [] + m_RendererIndex: -1 + m_VolumeLayerMask: + serializedVersion: 2 + m_Bits: 1 + m_VolumeTrigger: {fileID: 0} + m_RenderPostProcessing: 0 + m_Antialiasing: 0 + m_AntialiasingQuality: 2 + m_StopNaN: 0 + m_Dithering: 0 + m_ClearDepth: 1 + m_RequiresDepthTexture: 0 + m_RequiresColorTexture: 0 + m_Version: 2 +--- !u!20 &965526243 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 2000000, guid: 97b34cadc45c6d94abd78dfc533fc3b2, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 965526239} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.25, g: 0.25, b: 0.25, a: 0.003921569} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.1 + far clip plane: 20 + field of view: 40 + orthographic: 0 + orthographic size: 5 + m_Depth: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 1 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &965526244 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 400000, guid: 97b34cadc45c6d94abd78dfc533fc3b2, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 965526239} + m_LocalRotation: {x: 0.0010074005, y: 0.91790915, z: 0.0024223588, w: -0.39678213} + m_LocalPosition: {x: 2.4200273, y: 0.72167146, z: 2.4644732} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1165184420 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 182018, guid: a3244c08ab4d16f45b564401c17e84d4, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1165184421} + - component: {fileID: 1165184424} + - component: {fileID: 1165184423} + - component: {fileID: 1165184422} + m_Layer: 0 + m_Name: CalibrationWallRearLeft + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 65 + m_IsActive: 1 +--- !u!4 &1165184421 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 464034, guid: a3244c08ab4d16f45b564401c17e84d4, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1165184420} + m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071067} + m_LocalPosition: {x: 0, y: 2.5, z: -2.5} + m_LocalScale: {x: 0.5, y: 1, z: 0.5} + m_Children: [] + m_Father: {fileID: 165230858} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &1165184422 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 2391912, guid: a3244c08ab4d16f45b564401c17e84d4, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1165184420} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 0 + m_RayTracingMode: 2 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 0062779a7c303451ab69ea6fc7893dc8, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!64 &1165184423 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 6494426, guid: a3244c08ab4d16f45b564401c17e84d4, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1165184420} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 4 + m_Convex: 0 + m_CookingOptions: 30 + m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} +--- !u!33 &1165184424 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 3305810, guid: a3244c08ab4d16f45b564401c17e84d4, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1165184420} + m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1179472412 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 100006, guid: a3244c08ab4d16f45b564401c17e84d4, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1179472413} + - component: {fileID: 1179472416} + - component: {fileID: 1179472415} + - component: {fileID: 1179472414} + m_Layer: 0 + m_Name: CalibrationFloor + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 65 + m_IsActive: 1 +--- !u!4 &1179472413 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 400006, guid: a3244c08ab4d16f45b564401c17e84d4, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1179472412} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.5, y: 1, z: 0.5} + m_Children: [] + m_Father: {fileID: 1694850532} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &1179472414 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 2300004, guid: a3244c08ab4d16f45b564401c17e84d4, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1179472412} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 0 + m_RayTracingMode: 2 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: d681c1d72c3c16149abd2f0f25ca628c, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!64 &1179472415 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 6400004, guid: a3244c08ab4d16f45b564401c17e84d4, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1179472412} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 4 + m_Convex: 0 + m_CookingOptions: 30 + m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} +--- !u!33 &1179472416 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 3300004, guid: a3244c08ab4d16f45b564401c17e84d4, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1179472412} + m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1202089665 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 190392, guid: d7720c2417695eb45bd70f6d10a17068, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1202089666} + m_Layer: 0 + m_Name: SampleSpheres + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1202089666 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 470018, guid: d7720c2417695eb45bd70f6d10a17068, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1202089665} + 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_Children: + - {fileID: 1392572691} + - {fileID: 656694098} + - {fileID: 617211757} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1392572690 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 145214, guid: d7720c2417695eb45bd70f6d10a17068, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1392572691} + - component: {fileID: 1392572696} + - component: {fileID: 1392572695} + - component: {fileID: 1392572694} + - component: {fileID: 1392572693} + - component: {fileID: 1392572692} + m_Layer: 1 + m_Name: PlasticSphere + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1392572691 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 473706, guid: d7720c2417695eb45bd70f6d10a17068, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1392572690} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0.325, z: 1} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_Children: [] + m_Father: {fileID: 1202089666} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1392572692 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1392572690} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 888380afc233049ce9e618f9f36c8ba8, type: 3} + m_Name: + m_EditorClassIdentifier: + profile: {fileID: 0} + profileSync: 1 + previewInEditor: 1 + camerasLayerMask: + serializedVersion: 2 + m_Bits: 4294967295 + effectGroup: 0 + effectGroupLayer: + serializedVersion: 2 + m_Bits: 4294967295 + effectNameFilter: + combineMeshes: 0 + alphaCutOff: 0 + cullBackFaces: 1 + ignoreObjectVisibility: 0 + reflectionProbes: 0 + GPUInstancing: 1 + normalsOption: 0 + ignore: 0 + _highlighted: 0 + fadeInDuration: 1 + fadeOutDuration: 1 + flipY: 0 + constantWidth: 1 + subMeshMask: -1 + overlay: 0 + overlayColor: {r: 1, g: 0.92156863, b: 0.015686275, a: 1} + overlayAnimationSpeed: 0 + overlayMinIntensity: 0 + overlayBlending: 1 + overlayTexture: {fileID: 0} + overlayTextureScale: 1 + outline: 1 + outlineColor: {r: 1, g: 1, b: 1, a: 1} + outlineWidth: 0.62 + outlineQuality: 0 + outlineDownsampling: 2 + outlineVisibility: 0 + glowBlendMode: 0 + outlineBlitDebug: 0 + outlineIndependent: 0 + glow: 5 + glowWidth: 0.14 + glowQuality: 1 + glowDownsampling: 2 + glowHQColor: {r: 0.19117647, g: 0.36409733, b: 1, a: 1} + glowDithering: 1 + glowMagicNumber1: 0.75 + glowMagicNumber2: 0.5 + glowAnimationSpeed: 1 + glowVisibility: 0 + glowBlitDebug: 0 + glowBlendPasses: 1 + glowPasses: + - offset: 4 + alpha: 0.1 + color: {r: 0.64, g: 1, b: 0, a: 1} + - offset: 3 + alpha: 0.2 + color: {r: 0.64, g: 1, b: 0, a: 1} + - offset: 2 + alpha: 0.3 + color: {r: 0.64, g: 1, b: 0, a: 1} + - offset: 1 + alpha: 0.4 + color: {r: 0.64, g: 1, b: 0, a: 1} + innerGlow: 0 + innerGlowWidth: 1 + innerGlowColor: {r: 1, g: 1, b: 1, a: 1} + innerGlowVisibility: 0 + targetFX: 0 + targetFXTexture: {fileID: 2800000, guid: 1de3c566a6c8c405b9f6f453137273ec, type: 3} + targetFXColor: {r: 1, g: 1, b: 1, a: 1} + targetFXCenter: {fileID: 0} + targetFXRotationSpeed: 50 + targetFXInitialScale: 2 + targetFXEndScale: 1.5 + targetFXScaleToRenderBounds: 0 + targetFXAlignToGround: 0 + targetFXFadePower: 32 + targetFXGroundMaxDistance: 10 + targetFXGroundLayerMask: + serializedVersion: 2 + m_Bits: 4294967295 + targetFXTransitionDuration: 0.5 + targetFXStayDuration: 2 + targetFXVisibility: 1 + seeThrough: 2 + seeThroughOccluderMask: + serializedVersion: 2 + m_Bits: 4294967295 + seeThroughOccluderThreshold: 0.3 + seeThroughOccluderMaskAccurate: 0 + seeThroughOccluderCheckInterval: 1 + seeThroughOccluderCheckIndividualObjects: 0 + seeThroughDepthOffset: 0 + seeThroughMaxDepth: 0 + seeThroughIntensity: 0.8 + seeThroughTintAlpha: 0.5 + seeThroughTintColor: {r: 1, g: 0, b: 0, a: 1} + seeThroughNoise: 1 + seeThroughBorder: 0 + seeThroughBorderColor: {r: 0, g: 0, b: 0, a: 1} + seeThroughBorderWidth: 0.45 + seeThroughOrdered: 0 + rmsCount: 1 + hitFxInitialIntensity: 1 + hitFxMode: 0 + hitFxFadeOutDuration: 0.25 + hitFxColor: {r: 1, g: 1, b: 1, a: 1} + hitFxRadius: 0.5 +--- !u!114 &1392572693 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1392572690} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5009cbb7e54994bb586cde7a70f34e6b, type: 3} + m_Name: + m_EditorClassIdentifier: + highlightOnHover: 1 + triggerMode: 1 + raycastCamera: {fileID: 965526243} + raycastSource: 0 + minDistance: 0 + maxDistance: 0 + respectUI: 1 + volumeLayerMask: + serializedVersion: 2 + m_Bits: 0 + selectOnClick: 0 + selectedProfile: {fileID: 0} + selectedAndHighlightedProfile: {fileID: 0} + singleSelection: 0 + toggle: 0 +--- !u!23 &1392572694 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 2375834, guid: d7720c2417695eb45bd70f6d10a17068, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1392572690} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 3 + m_RayTracingMode: 2 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 958abb01761e1dc4ebf9ffdf8252d20e, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!135 &1392572695 +SphereCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 13564548, guid: d7720c2417695eb45bd70f6d10a17068, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1392572690} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.5 + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &1392572696 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 3335484, guid: d7720c2417695eb45bd70f6d10a17068, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1392572690} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1435719951 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 100002, guid: a3244c08ab4d16f45b564401c17e84d4, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1435719952} + - component: {fileID: 1435719955} + - component: {fileID: 1435719954} + - component: {fileID: 1435719953} + m_Layer: 0 + m_Name: CalibrationWallFrontLeft + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 65 + m_IsActive: 1 +--- !u!4 &1435719952 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 400002, guid: a3244c08ab4d16f45b564401c17e84d4, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1435719951} + m_LocalRotation: {x: 0.5000003, y: -0.5000001, z: -0.49999964, w: -0.50000006} + m_LocalPosition: {x: 2.4999998, y: 2.5, z: 0} + m_LocalScale: {x: 0.4999999, y: 1, z: 0.4999999} + m_Children: [] + m_Father: {fileID: 165230858} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &1435719953 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 2300002, guid: a3244c08ab4d16f45b564401c17e84d4, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1435719951} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 0 + m_RayTracingMode: 2 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 0062779a7c303451ab69ea6fc7893dc8, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!64 &1435719954 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 6400002, guid: a3244c08ab4d16f45b564401c17e84d4, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1435719951} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 4 + m_Convex: 0 + m_CookingOptions: 30 + m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} +--- !u!33 &1435719955 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 3300002, guid: a3244c08ab4d16f45b564401c17e84d4, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1435719951} + m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1525858953 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 100000, guid: a3244c08ab4d16f45b564401c17e84d4, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1525858954} + - component: {fileID: 1525858957} + - component: {fileID: 1525858956} + - component: {fileID: 1525858955} + m_Layer: 0 + m_Name: CalibrationWallFrontRight + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 65 + m_IsActive: 1 +--- !u!4 &1525858954 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 400000, guid: a3244c08ab4d16f45b564401c17e84d4, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1525858953} + m_LocalRotation: {x: 0.70710695, y: 0.0000002682209, z: 0.00000021584746, w: -0.7071066} + m_LocalPosition: {x: 0, y: 2.500002, z: 2.5000014} + m_LocalScale: {x: 0.49999997, y: 1, z: 0.5} + m_Children: [] + m_Father: {fileID: 165230858} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &1525858955 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 2300000, guid: a3244c08ab4d16f45b564401c17e84d4, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1525858953} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 0 + m_RayTracingMode: 2 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 0062779a7c303451ab69ea6fc7893dc8, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!64 &1525858956 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 6400000, guid: a3244c08ab4d16f45b564401c17e84d4, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1525858953} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 4 + m_Convex: 0 + m_CookingOptions: 30 + m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} +--- !u!33 &1525858957 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 3300000, guid: a3244c08ab4d16f45b564401c17e84d4, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1525858953} + m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1605869162 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1605869163} + - component: {fileID: 1605869165} + - component: {fileID: 1605869164} + m_Layer: 5 + m_Name: Panel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1605869163 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1605869162} + 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_Children: + - {fileID: 613470777} + m_Father: {fileID: 1819248545} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 0.1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 1} +--- !u!114 &1605869164 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1605869162} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 0.641} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1605869165 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1605869162} + m_CullTransparentMesh: 0 +--- !u!1 &1694850531 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 100004, guid: a3244c08ab4d16f45b564401c17e84d4, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1694850532} + m_Layer: 0 + m_Name: StaticGeometry + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 4294967295 + m_IsActive: 1 +--- !u!4 &1694850532 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 400004, guid: a3244c08ab4d16f45b564401c17e84d4, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1694850531} + 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_Children: + - {fileID: 1179472413} + - {fileID: 165230858} + - {fileID: 567592205} + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1819248541 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1819248545} + - component: {fileID: 1819248544} + - component: {fileID: 1819248543} + - component: {fileID: 1819248542} + m_Layer: 5 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1819248542 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1819248541} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &1819248543 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1819248541} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 1 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 800, y: 600} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 +--- !u!223 &1819248544 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1819248541} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_AdditionalShaderChannelsFlag: 0 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!224 &1819248545 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1819248541} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 1605869163} + m_Father: {fileID: 0} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!1 &1837449479 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1837449480} + - component: {fileID: 1837449481} + m_Layer: 0 + m_Name: Reflection Probe + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1837449480 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1837449479} + 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_Children: [] + m_Father: {fileID: 656694098} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!215 &1837449481 +ReflectionProbe: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1837449479} + m_Enabled: 1 + serializedVersion: 2 + m_Type: 0 + m_Mode: 1 + m_RefreshMode: 1 + m_TimeSlicingMode: 0 + m_Resolution: 512 + m_UpdateFrequency: 0 + m_BoxSize: {x: 5, y: 5, z: 5} + m_BoxOffset: {x: 0, y: 0, z: 0} + m_NearClip: 0.3 + m_FarClip: 20 + m_ShadowDistance: 20 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967293 + m_IntensityMultiplier: 1 + m_BlendDistance: 1 + m_HDR: 1 + m_BoxProjection: 0 + m_RenderDynamicObjects: 0 + m_UseOcclusionCulling: 0 + m_Importance: 1 + m_CustomBakedTexture: {fileID: 0} diff --git a/Assets/External/HighlightPlus/Demo/Demo1_HighlightExample.unity.meta b/Assets/External/HighlightPlus/Demo/Demo1_HighlightExample.unity.meta new file mode 100644 index 000000000..ee3f98eb2 --- /dev/null +++ b/Assets/External/HighlightPlus/Demo/Demo1_HighlightExample.unity.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: b18a9c16bcd174b1683d370384a8cab7 +timeCreated: 1542877475 +licenseType: Pro +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/HighlightPlus/Demo/Demo1_HighlightExample/LightingData.asset b/Assets/External/HighlightPlus/Demo/Demo1_HighlightExample/LightingData.asset new file mode 100644 index 000000000..e83a5fd9b --- /dev/null +++ b/Assets/External/HighlightPlus/Demo/Demo1_HighlightExample/LightingData.asset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:02b7c7630defbfd8617eefea0484d5a3a391b2d057320f3e9ac02a62d2a9c38a +size 414172 diff --git a/Assets/External/HighlightPlus/Demo/Demo1_HighlightExample/LightingData.asset.meta b/Assets/External/HighlightPlus/Demo/Demo1_HighlightExample/LightingData.asset.meta new file mode 100644 index 000000000..0c489c171 --- /dev/null +++ b/Assets/External/HighlightPlus/Demo/Demo1_HighlightExample/LightingData.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 55de1c4b7375b40f8b5e2e1e1e7f8cf9 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 112000000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/HighlightPlus/Demo/Demo1_HighlightExample/ReflectionProbe-0.exr b/Assets/External/HighlightPlus/Demo/Demo1_HighlightExample/ReflectionProbe-0.exr new file mode 100644 index 000000000..096856774 --- /dev/null +++ b/Assets/External/HighlightPlus/Demo/Demo1_HighlightExample/ReflectionProbe-0.exr @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:de06f8fed1529ea6aa223829170d8a4d95f4bdb5310335e58fe6979ab3a91b57 +size 5936966 diff --git a/Assets/External/HighlightPlus/Demo/Demo1_HighlightExample/ReflectionProbe-0.exr.meta b/Assets/External/HighlightPlus/Demo/Demo1_HighlightExample/ReflectionProbe-0.exr.meta new file mode 100644 index 000000000..ce334d024 --- /dev/null +++ b/Assets/External/HighlightPlus/Demo/Demo1_HighlightExample/ReflectionProbe-0.exr.meta @@ -0,0 +1,117 @@ +fileFormatVersion: 2 +guid: 0da7b08999e4c4197811539b65aa443a +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 1 + seamlessCubemap: 1 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 2 + aniso: 0 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 2 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 4 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 100 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/HighlightPlus/Demo/Demo1_HighlightExample/ReflectionProbe-1.exr b/Assets/External/HighlightPlus/Demo/Demo1_HighlightExample/ReflectionProbe-1.exr new file mode 100644 index 000000000..4cac1e8be --- /dev/null +++ b/Assets/External/HighlightPlus/Demo/Demo1_HighlightExample/ReflectionProbe-1.exr @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:83ce252f550142b3bdf4331325c8b28c0dcc3d966c74e7b61d7bd160874ba546 +size 161454 diff --git a/Assets/External/HighlightPlus/Demo/Demo1_HighlightExample/ReflectionProbe-1.exr.meta b/Assets/External/HighlightPlus/Demo/Demo1_HighlightExample/ReflectionProbe-1.exr.meta new file mode 100644 index 000000000..db86cc84c --- /dev/null +++ b/Assets/External/HighlightPlus/Demo/Demo1_HighlightExample/ReflectionProbe-1.exr.meta @@ -0,0 +1,117 @@ +fileFormatVersion: 2 +guid: d1335adcc2c64432eb37950a44f74a51 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 1 + seamlessCubemap: 1 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 2 + aniso: 0 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 2 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 4 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 100 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/HighlightPlus/Demo/Demo2_SelectionExample.unity b/Assets/External/HighlightPlus/Demo/Demo2_SelectionExample.unity new file mode 100644 index 000000000..c6f46d979 --- /dev/null +++ b/Assets/External/HighlightPlus/Demo/Demo2_SelectionExample.unity @@ -0,0 +1,2106 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 9 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 0 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 2 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_IndirectSpecularColor: {r: 0.44717664, g: 0.49709702, b: 0.5751535, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &4 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 12 + m_GIWorkflowMode: 0 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 0 + m_EnableRealtimeLightmaps: 1 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 1 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 1024 + m_ReflectionCompression: 1 + m_MixedBakeMode: 1 + m_BakeBackend: 0 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 500 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 500 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 2 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 0 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 0 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_LightProbeSampleCountMultiplier: 4 + m_LightingDataAsset: {fileID: 112000014, guid: 039bfaf33d1112a4d904b7d393a6e9bb, + type: 2} + m_LightingSettings: {fileID: 994670537} +--- !u!196 &5 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + accuratePlacement: 0 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &54660272 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 54660274} + - component: {fileID: 54660273} + m_Layer: 0 + m_Name: ManualSelectionExample + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &54660273 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 54660272} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9dfa112658ab74560a6251002174910b, type: 3} + m_Name: + m_EditorClassIdentifier: + objectToSelect: {fileID: 656694098} +--- !u!4 &54660274 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 54660272} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 7.5509014, y: -4.251323, z: 28.678097} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 11 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &165230857 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 102722, guid: a3244c08ab4d16f45b564401c17e84d4, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 165230858} + m_Layer: 0 + m_Name: CalibrationWalls + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &165230858 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 431536, guid: a3244c08ab4d16f45b564401c17e84d4, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 165230857} + 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_Children: + - {fileID: 1165184421} + - {fileID: 181859161} + - {fileID: 1435719952} + - {fileID: 1525858954} + m_Father: {fileID: 1694850532} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &171019437 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 171019439} + - component: {fileID: 171019438} + m_Layer: 0 + m_Name: EventsExample + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &171019438 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 171019437} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dbe1fcf5ef14345779fec3adb4479bc3, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!4 &171019439 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 171019437} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 7.5509014, y: -4.251323, z: 28.678097} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 10 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &181859160 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 125776, guid: a3244c08ab4d16f45b564401c17e84d4, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 181859161} + - component: {fileID: 181859164} + - component: {fileID: 181859163} + - component: {fileID: 181859162} + m_Layer: 0 + m_Name: CalibrationWallRearRight + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 65 + m_IsActive: 1 +--- !u!4 &181859161 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 494730, guid: a3244c08ab4d16f45b564401c17e84d4, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 181859160} + m_LocalRotation: {x: 0.5, y: 0.5, z: -0.5000001, w: 0.49999994} + m_LocalPosition: {x: -2.5, y: 2.5, z: 0} + m_LocalScale: {x: 0.5, y: 1, z: 0.49999997} + m_Children: [] + m_Father: {fileID: 165230858} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &181859162 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 2304408, guid: a3244c08ab4d16f45b564401c17e84d4, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 181859160} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 0 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 0062779a7c303451ab69ea6fc7893dc8, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!64 &181859163 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 6442406, guid: a3244c08ab4d16f45b564401c17e84d4, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 181859160} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 4 + m_Convex: 0 + m_CookingOptions: 30 + m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} +--- !u!33 &181859164 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 3378452, guid: a3244c08ab4d16f45b564401c17e84d4, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 181859160} + m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &207714439 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 207714440} + m_Layer: 0 + m_Name: --- SCENE --- + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!4 &207714440 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 207714439} + 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_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &472769855 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 100000, guid: e11f662626928b14e8f57acb029360b9, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 472769856} + - component: {fileID: 472769857} + m_Layer: 0 + m_Name: DirectionalLight + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &472769856 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 400000, guid: e11f662626928b14e8f57acb029360b9, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 472769855} + m_LocalRotation: {x: 0.4144551, y: -0.7420336, z: 0.5253307, w: -0.040507175} + m_LocalPosition: {x: 0, y: 2, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!108 &472769857 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 10800000, guid: e11f662626928b14e8f57acb029360b9, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 472769855} + m_Enabled: 1 + serializedVersion: 10 + m_Type: 1 + m_Shape: 0 + m_Color: {r: 1, g: 0.9885849, b: 0.95686275, a: 1} + m_Intensity: 1 + m_Range: 10 + m_SpotAngle: 30 + m_InnerSpotAngle: 21.802082 + m_CookieSize: 10 + m_Shadows: + m_Type: 2 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 1 + m_Bias: 0.01 + 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_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!1 &613470776 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 613470777} + - component: {fileID: 613470779} + - component: {fileID: 613470778} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &613470777 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 613470776} + 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_Children: [] + m_Father: {fileID: 1605869163} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.1} + m_AnchorMax: {x: 1, y: 0.9} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &613470778 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 613470776} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 1 + m_MinSize: 10 + m_MaxSize: 90 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 'HIGHLIGHT PLUS SELECTION DEMO (USES HIGHLIGHT MANAGER) + + Click + on spheres to select them. Click outside to clear selection. Press 1/2/3 keys + to select, toggle and unselect gold sphere.' +--- !u!222 &613470779 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 613470776} + m_CullTransparentMesh: 0 +--- !u!1 &617211756 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 195550, guid: d7720c2417695eb45bd70f6d10a17068, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 617211757} + - component: {fileID: 617211762} + - component: {fileID: 617211761} + - component: {fileID: 617211760} + m_Layer: 1 + m_Name: SilkSphere + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &617211757 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 403562, guid: d7720c2417695eb45bd70f6d10a17068, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 617211756} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.17, y: 0.325, z: 0} + m_LocalScale: {x: 0.65, y: 0.65, z: 0.65} + m_Children: [] + m_Father: {fileID: 1202089666} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &617211760 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 2319362, guid: d7720c2417695eb45bd70f6d10a17068, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 617211756} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 3 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 3134ae80e55101b468fe9ea362327f28, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 617211757} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!135 &617211761 +SphereCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 13518414, guid: d7720c2417695eb45bd70f6d10a17068, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 617211756} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.5 + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &617211762 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 3336432, guid: d7720c2417695eb45bd70f6d10a17068, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 617211756} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &656694097 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 158430, guid: d7720c2417695eb45bd70f6d10a17068, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 656694098} + - component: {fileID: 656694104} + - component: {fileID: 656694103} + - component: {fileID: 656694102} + m_Layer: 1 + m_Name: GoldSphere + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &656694098 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 494476, guid: d7720c2417695eb45bd70f6d10a17068, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 656694097} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.85, y: 0.325, z: 0} + m_LocalScale: {x: 0.65, y: 0.65, z: 0.65} + m_Children: + - {fileID: 1837449480} + m_Father: {fileID: 1202089666} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &656694102 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 2319392, guid: d7720c2417695eb45bd70f6d10a17068, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 656694097} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 3 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 5b12cf4be3e7c5149a5f24108ee6a551, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!135 &656694103 +SphereCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 13548954, guid: d7720c2417695eb45bd70f6d10a17068, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 656694097} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.5 + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &656694104 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 3351936, guid: d7720c2417695eb45bd70f6d10a17068, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 656694097} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &900649477 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 900649478} + m_Layer: 0 + m_Name: --- DEMO SCRIPTS --- + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!4 &900649478 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 900649477} + 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_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 9 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &965526239 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 100000, guid: 97b34cadc45c6d94abd78dfc533fc3b2, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 965526244} + - component: {fileID: 965526243} + - component: {fileID: 965526240} + - component: {fileID: 965526241} + m_Layer: 0 + m_Name: Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!81 &965526240 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 8100000, guid: 97b34cadc45c6d94abd78dfc533fc3b2, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 965526239} + m_Enabled: 1 +--- !u!114 &965526241 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 965526239} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a79441f348de89743a2939f4d699eac1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_RenderShadows: 1 + m_RequiresDepthTextureOption: 2 + m_RequiresOpaqueTextureOption: 2 + m_CameraType: 0 + m_Cameras: [] + m_RendererIndex: -1 + m_VolumeLayerMask: + serializedVersion: 2 + m_Bits: 1 + m_VolumeTrigger: {fileID: 0} + m_RenderPostProcessing: 0 + m_Antialiasing: 0 + m_AntialiasingQuality: 2 + m_StopNaN: 0 + m_Dithering: 0 + m_ClearDepth: 1 + m_AllowXRRendering: 1 + m_RequiresDepthTexture: 0 + m_RequiresColorTexture: 0 + m_Version: 2 +--- !u!20 &965526243 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 2000000, guid: 97b34cadc45c6d94abd78dfc533fc3b2, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 965526239} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.25, g: 0.25, b: 0.25, a: 0.003921569} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.1 + far clip plane: 20 + field of view: 40 + orthographic: 0 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294963199 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 1 + m_AllowMSAA: 0 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &965526244 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 400000, guid: 97b34cadc45c6d94abd78dfc533fc3b2, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 965526239} + m_LocalRotation: {x: 0.0010074005, y: 0.91790915, z: 0.0024223588, w: -0.39678213} + m_LocalPosition: {x: 2.4200273, y: 0.72167146, z: 2.4644732} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!850595691 &994670537 +LightingSettings: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Settings.lighting + serializedVersion: 3 + m_GIWorkflowMode: 0 + m_EnableBakedLightmaps: 0 + m_EnableRealtimeLightmaps: 1 + m_RealtimeEnvironmentLighting: 1 + m_BounceScale: 1 + m_AlbedoBoost: 1 + m_IndirectOutputScale: 1 + m_UsingShadowmask: 0 + m_BakeBackend: 0 + m_LightmapMaxSize: 1024 + m_BakeResolution: 40 + m_Padding: 2 + m_TextureCompression: 1 + m_AO: 1 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAO: 0 + m_MixedBakeMode: 1 + m_LightmapsBakeMode: 1 + m_FilterMode: 1 + m_LightmapParameters: {fileID: 15204, guid: 0000000000000000f000000000000000, type: 0} + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_RealtimeResolution: 2 + m_ForceWhiteAlbedo: 0 + m_ForceUpdates: 0 + m_FinalGather: 0 + m_FinalGatherRayCount: 1024 + m_FinalGatherFiltering: 1 + m_PVRCulling: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 500 + m_PVREnvironmentSampleCount: 500 + m_PVREnvironmentReferencePointCount: 2048 + m_LightProbeSampleCountMultiplier: 4 + m_PVRBounces: 2 + m_PVRMinBounces: 2 + m_PVREnvironmentMIS: 0 + m_PVRFilteringMode: 2 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 0 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 +--- !u!1 &1016798143 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1016798146} + - component: {fileID: 1016798145} + - component: {fileID: 1016798144} + m_Layer: 0 + m_Name: EventSystem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1016798144 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1016798143} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3} + m_Name: + m_EditorClassIdentifier: + m_HorizontalAxis: Horizontal + m_VerticalAxis: Vertical + m_SubmitButton: Submit + m_CancelButton: Cancel + m_InputActionsPerSecond: 10 + m_RepeatDelay: 0.5 + m_ForceModuleActive: 0 +--- !u!114 &1016798145 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1016798143} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_FirstSelected: {fileID: 0} + m_sendNavigationEvents: 1 + m_DragThreshold: 5 +--- !u!4 &1016798146 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1016798143} + 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_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1165184420 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 182018, guid: a3244c08ab4d16f45b564401c17e84d4, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1165184421} + - component: {fileID: 1165184424} + - component: {fileID: 1165184423} + - component: {fileID: 1165184422} + m_Layer: 0 + m_Name: CalibrationWallRearLeft + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 65 + m_IsActive: 1 +--- !u!4 &1165184421 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 464034, guid: a3244c08ab4d16f45b564401c17e84d4, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1165184420} + m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071067} + m_LocalPosition: {x: 0, y: 2.5, z: -2.5} + m_LocalScale: {x: 0.5, y: 1, z: 0.5} + m_Children: [] + m_Father: {fileID: 165230858} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &1165184422 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 2391912, guid: a3244c08ab4d16f45b564401c17e84d4, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1165184420} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 0 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 0062779a7c303451ab69ea6fc7893dc8, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!64 &1165184423 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 6494426, guid: a3244c08ab4d16f45b564401c17e84d4, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1165184420} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 4 + m_Convex: 0 + m_CookingOptions: 30 + m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} +--- !u!33 &1165184424 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 3305810, guid: a3244c08ab4d16f45b564401c17e84d4, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1165184420} + m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1179472412 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 100006, guid: a3244c08ab4d16f45b564401c17e84d4, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1179472413} + - component: {fileID: 1179472416} + - component: {fileID: 1179472415} + - component: {fileID: 1179472414} + m_Layer: 0 + m_Name: CalibrationFloor + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 65 + m_IsActive: 1 +--- !u!4 &1179472413 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 400006, guid: a3244c08ab4d16f45b564401c17e84d4, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1179472412} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.5, y: 1, z: 0.5} + m_Children: [] + m_Father: {fileID: 1694850532} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &1179472414 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 2300004, guid: a3244c08ab4d16f45b564401c17e84d4, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1179472412} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 0 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: d681c1d72c3c16149abd2f0f25ca628c, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!64 &1179472415 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 6400004, guid: a3244c08ab4d16f45b564401c17e84d4, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1179472412} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 4 + m_Convex: 0 + m_CookingOptions: 30 + m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} +--- !u!33 &1179472416 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 3300004, guid: a3244c08ab4d16f45b564401c17e84d4, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1179472412} + m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1202089665 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 190392, guid: d7720c2417695eb45bd70f6d10a17068, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1202089666} + m_Layer: 0 + m_Name: SampleSpheres + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1202089666 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 470018, guid: d7720c2417695eb45bd70f6d10a17068, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1202089665} + 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_Children: + - {fileID: 1392572691} + - {fileID: 656694098} + - {fileID: 617211757} + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1392572690 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 145214, guid: d7720c2417695eb45bd70f6d10a17068, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1392572691} + - component: {fileID: 1392572696} + - component: {fileID: 1392572695} + - component: {fileID: 1392572694} + m_Layer: 1 + m_Name: PlasticSphere + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1392572691 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 473706, guid: d7720c2417695eb45bd70f6d10a17068, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1392572690} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0.325, z: 1} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_Children: [] + m_Father: {fileID: 1202089666} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &1392572694 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 2375834, guid: d7720c2417695eb45bd70f6d10a17068, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1392572690} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 3 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 958abb01761e1dc4ebf9ffdf8252d20e, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!135 &1392572695 +SphereCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 13564548, guid: d7720c2417695eb45bd70f6d10a17068, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1392572690} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.5 + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &1392572696 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 3335484, guid: d7720c2417695eb45bd70f6d10a17068, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1392572690} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1435719951 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 100002, guid: a3244c08ab4d16f45b564401c17e84d4, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1435719952} + - component: {fileID: 1435719955} + - component: {fileID: 1435719954} + - component: {fileID: 1435719953} + m_Layer: 0 + m_Name: CalibrationWallFrontLeft + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 65 + m_IsActive: 1 +--- !u!4 &1435719952 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 400002, guid: a3244c08ab4d16f45b564401c17e84d4, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1435719951} + m_LocalRotation: {x: 0.5000003, y: -0.5000001, z: -0.49999964, w: -0.50000006} + m_LocalPosition: {x: 2.4999998, y: 2.5, z: 0} + m_LocalScale: {x: 0.4999999, y: 1, z: 0.4999999} + m_Children: [] + m_Father: {fileID: 165230858} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &1435719953 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 2300002, guid: a3244c08ab4d16f45b564401c17e84d4, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1435719951} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 0 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 0062779a7c303451ab69ea6fc7893dc8, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!64 &1435719954 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 6400002, guid: a3244c08ab4d16f45b564401c17e84d4, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1435719951} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 4 + m_Convex: 0 + m_CookingOptions: 30 + m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} +--- !u!33 &1435719955 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 3300002, guid: a3244c08ab4d16f45b564401c17e84d4, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1435719951} + m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1525858953 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 100000, guid: a3244c08ab4d16f45b564401c17e84d4, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1525858954} + - component: {fileID: 1525858957} + - component: {fileID: 1525858956} + - component: {fileID: 1525858955} + m_Layer: 0 + m_Name: CalibrationWallFrontRight + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 65 + m_IsActive: 1 +--- !u!4 &1525858954 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 400000, guid: a3244c08ab4d16f45b564401c17e84d4, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1525858953} + m_LocalRotation: {x: 0.70710695, y: 0.0000002682209, z: 0.00000021584746, w: -0.7071066} + m_LocalPosition: {x: 0, y: 2.500002, z: 2.5000014} + m_LocalScale: {x: 0.49999997, y: 1, z: 0.5} + m_Children: [] + m_Father: {fileID: 165230858} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &1525858955 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 2300000, guid: a3244c08ab4d16f45b564401c17e84d4, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1525858953} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 0 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 0062779a7c303451ab69ea6fc7893dc8, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!64 &1525858956 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 6400000, guid: a3244c08ab4d16f45b564401c17e84d4, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1525858953} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 4 + m_Convex: 0 + m_CookingOptions: 30 + m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} +--- !u!33 &1525858957 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 3300000, guid: a3244c08ab4d16f45b564401c17e84d4, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1525858953} + m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1605869162 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1605869163} + - component: {fileID: 1605869165} + - component: {fileID: 1605869164} + m_Layer: 5 + m_Name: Panel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1605869163 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1605869162} + 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_Children: + - {fileID: 613470777} + m_Father: {fileID: 1819248545} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 0.1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 1} +--- !u!114 &1605869164 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1605869162} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 0.641} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1605869165 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1605869162} + m_CullTransparentMesh: 0 +--- !u!1 &1669838390 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1669838393} + - component: {fileID: 1669838392} + - component: {fileID: 1669838391} + m_Layer: 0 + m_Name: HighlightPlusManager + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1669838391 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1669838390} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: af4d46fd89b9543e5be2358ac0c9ced0, type: 3} + m_Name: + m_EditorClassIdentifier: + highlightOnHover: 1 + layerMask: + serializedVersion: 2 + m_Bits: 2 + raycastCamera: {fileID: 0} + raycastSource: 0 + minDistance: 0 + maxDistance: 0 + respectUI: 1 + selectOnClick: 1 + selectedProfile: {fileID: 11400000, guid: e6e74f38237364260b68bef0cd1b8795, type: 2} + selectedAndHighlightedProfile: {fileID: 11400000, guid: 77128a10e40704023952e72c2046e685, + type: 2} + singleSelection: 0 + toggle: 0 + keepSelection: 0 +--- !u!114 &1669838392 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1669838390} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 888380afc233049ce9e618f9f36c8ba8, type: 3} + m_Name: + m_EditorClassIdentifier: + profile: {fileID: 0} + profileSync: 0 + previewInEditor: 1 + camerasLayerMask: + serializedVersion: 2 + m_Bits: 4294967295 + effectGroup: 0 + effectGroupLayer: + serializedVersion: 2 + m_Bits: 4294967295 + effectNameFilter: + combineMeshes: 0 + alphaCutOff: 0 + cullBackFaces: 1 + ignoreObjectVisibility: 0 + reflectionProbes: 0 + GPUInstancing: 1 + depthClip: 0 + cameraDistanceFade: 0 + cameraDistanceFadeNear: 0 + cameraDistanceFadeFar: 1000 + normalsOption: 0 + ignore: 0 + _highlighted: 0 + fadeInDuration: 0 + fadeOutDuration: 0 + flipY: 0 + constantWidth: 1 + subMeshMask: -1 + overlay: 0.5 + overlayMode: 0 + overlayColor: {r: 1, g: 0.92156863, b: 0.015686275, a: 1} + overlayAnimationSpeed: 1 + overlayMinIntensity: 0.5 + overlayBlending: 1 + overlayTexture: {fileID: 0} + overlayTextureUVSpace: 0 + overlayTextureScale: 1 + overlayVisibility: 0 + outline: 0 + outlineColor: {r: 0, g: 0, b: 0, a: 1} + outlineColorStyle: 0 + outlineGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, a: 1} + key2: {r: 0, g: 0, b: 0, a: 0} + key3: {r: 0, g: 0, b: 0, a: 0} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + outlineGradientInLocalSpace: 0 + outlineWidth: 0.45 + outlineQuality: 3 + outlineDownsampling: 2 + outlineVisibility: 0 + glowBlendMode: 0 + outlineBlitDebug: 0 + outlineIndependent: 0 + glow: 0 + glowWidth: 0.4 + glowQuality: 3 + glowDownsampling: 2 + glowHQColor: {r: 0.64, g: 1, b: 0, a: 1} + glowDithering: 1 + glowMagicNumber1: 0.75 + glowMagicNumber2: 0.5 + glowAnimationSpeed: 1 + glowVisibility: 0 + glowBlitDebug: 0 + glowBlendPasses: 1 + glowPasses: + - offset: 4 + alpha: 0.1 + color: {r: 0.64, g: 1, b: 0, a: 1} + - offset: 3 + alpha: 0.2 + color: {r: 0.64, g: 1, b: 0, a: 1} + - offset: 2 + alpha: 0.3 + color: {r: 0.64, g: 1, b: 0, a: 1} + - offset: 1 + alpha: 0.4 + color: {r: 0.64, g: 1, b: 0, a: 1} + glowIgnoreMask: 0 + innerGlow: 0.5 + innerGlowWidth: 1 + innerGlowColor: {r: 1, g: 1, b: 1, a: 1} + innerGlowVisibility: 0 + targetFX: 0 + targetFXTexture: {fileID: 0} + targetFXColor: {r: 1, g: 1, b: 1, a: 1} + targetFXCenter: {fileID: 0} + targetFXRotationSpeed: 50 + targetFXInitialScale: 4 + targetFXEndScale: 1.5 + targetFXScaleToRenderBounds: 1 + targetFXAlignToGround: 0 + targetFXFadePower: 32 + targetFXGroundMaxDistance: 10 + targetFXGroundLayerMask: + serializedVersion: 2 + m_Bits: 4294967295 + targetFXTransitionDuration: 0.5 + targetFXStayDuration: 1.5 + targetFXVisibility: 1 + seeThrough: 2 + seeThroughOccluderMask: + serializedVersion: 2 + m_Bits: 4294967295 + seeThroughOccluderThreshold: 0.3 + seeThroughOccluderMaskAccurate: 0 + seeThroughOccluderCheckInterval: 1 + seeThroughOccluderCheckIndividualObjects: 0 + seeThroughDepthOffset: 0 + seeThroughMaxDepth: 0 + seeThroughIntensity: 0.8 + seeThroughTintAlpha: 0.5 + seeThroughTintColor: {r: 1, g: 0, b: 0, a: 1} + seeThroughNoise: 1 + seeThroughBorder: 0 + seeThroughBorderColor: {r: 0, g: 0, b: 0, a: 1} + seeThroughBorderOnly: 0 + seeThroughBorderWidth: 0.45 + seeThroughOrdered: 0 + seeThroughTexture: {fileID: 0} + seeThroughTextureUVSpace: 0 + seeThroughTextureScale: 1 + rmsCount: 0 + hitFxInitialIntensity: 1 + hitFxMode: 0 + hitFxFadeOutDuration: 0.25 + hitFxColor: {r: 1, g: 1, b: 1, a: 1} + hitFxRadius: 0.5 +--- !u!4 &1669838393 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1669838390} + 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_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 8 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1694850531 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 100004, guid: a3244c08ab4d16f45b564401c17e84d4, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1694850532} + m_Layer: 0 + m_Name: StaticGeometry + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 4294967295 + m_IsActive: 1 +--- !u!4 &1694850532 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 400004, guid: a3244c08ab4d16f45b564401c17e84d4, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1694850531} + 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_Children: + - {fileID: 1179472413} + - {fileID: 165230858} + m_Father: {fileID: 0} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1819248541 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1819248545} + - component: {fileID: 1819248544} + - component: {fileID: 1819248543} + - component: {fileID: 1819248542} + m_Layer: 5 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1819248542 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1819248541} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &1819248543 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1819248541} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 1 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 800, y: 600} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 + m_PresetInfoIsWorld: 0 +--- !u!223 &1819248544 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1819248541} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_AdditionalShaderChannelsFlag: 0 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!224 &1819248545 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1819248541} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 1605869163} + m_Father: {fileID: 0} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!1 &1837449479 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1837449480} + - component: {fileID: 1837449481} + m_Layer: 0 + m_Name: Reflection Probe + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1837449480 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1837449479} + 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_Children: [] + m_Father: {fileID: 656694098} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!215 &1837449481 +ReflectionProbe: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1837449479} + m_Enabled: 1 + serializedVersion: 2 + m_Type: 0 + m_Mode: 1 + m_RefreshMode: 1 + m_TimeSlicingMode: 0 + m_Resolution: 512 + m_UpdateFrequency: 0 + m_BoxSize: {x: 5, y: 5, z: 5} + m_BoxOffset: {x: 0, y: 0, z: 0} + m_NearClip: 0.3 + m_FarClip: 20 + m_ShadowDistance: 20 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967293 + m_IntensityMultiplier: 1 + m_BlendDistance: 1 + m_HDR: 1 + m_BoxProjection: 0 + m_RenderDynamicObjects: 0 + m_UseOcclusionCulling: 0 + m_Importance: 1 + m_CustomBakedTexture: {fileID: 0} +--- !u!1 &1925176807 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1925176808} + m_Layer: 0 + m_Name: --- HIGHLIGHT MANAGER --- + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!4 &1925176808 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1925176807} + 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_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} diff --git a/Assets/External/HighlightPlus/Demo/Demo2_SelectionExample.unity.meta b/Assets/External/HighlightPlus/Demo/Demo2_SelectionExample.unity.meta new file mode 100644 index 000000000..5501c5d67 --- /dev/null +++ b/Assets/External/HighlightPlus/Demo/Demo2_SelectionExample.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: eb334622a9e1f41368317711b187e4c2 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/HighlightPlus/Demo/Demo3_HitFXExample.meta b/Assets/External/HighlightPlus/Demo/Demo3_HitFXExample.meta new file mode 100644 index 000000000..4193e6aa9 --- /dev/null +++ b/Assets/External/HighlightPlus/Demo/Demo3_HitFXExample.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 82d40cecf8100443f89e76349c3a0871 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/HighlightPlus/Demo/Demo3_HitFXExample.unity b/Assets/External/HighlightPlus/Demo/Demo3_HitFXExample.unity new file mode 100644 index 000000000..3d7ddb3a7 --- /dev/null +++ b/Assets/External/HighlightPlus/Demo/Demo3_HitFXExample.unity @@ -0,0 +1,2116 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 9 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 0 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 2 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_IndirectSpecularColor: {r: 0.4471771, g: 0.4970975, b: 0.57515424, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &4 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 11 + m_GIWorkflowMode: 0 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 0 + m_EnableRealtimeLightmaps: 1 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 1 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 1024 + m_ReflectionCompression: 1 + m_MixedBakeMode: 1 + m_BakeBackend: 0 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 500 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 500 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 2 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 0 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 0 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_LightProbeSampleCountMultiplier: 4 + m_LightingDataAsset: {fileID: 112000014, guid: 039bfaf33d1112a4d904b7d393a6e9bb, + type: 2} + m_UseShadowmask: 0 +--- !u!196 &5 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + accuratePlacement: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &165230857 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 102722, guid: a3244c08ab4d16f45b564401c17e84d4, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 165230858} + m_Layer: 0 + m_Name: CalibrationWalls + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &165230858 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 431536, guid: a3244c08ab4d16f45b564401c17e84d4, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 165230857} + 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_Children: + - {fileID: 1165184421} + - {fileID: 181859161} + - {fileID: 1435719952} + - {fileID: 1525858954} + m_Father: {fileID: 1694850532} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &181859160 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 125776, guid: a3244c08ab4d16f45b564401c17e84d4, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 181859161} + - component: {fileID: 181859164} + - component: {fileID: 181859163} + - component: {fileID: 181859162} + m_Layer: 0 + m_Name: CalibrationWallRearRight + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 65 + m_IsActive: 1 +--- !u!4 &181859161 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 494730, guid: a3244c08ab4d16f45b564401c17e84d4, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 181859160} + m_LocalRotation: {x: 0.5, y: 0.5, z: -0.5000001, w: 0.49999994} + m_LocalPosition: {x: -2.5, y: 2.5, z: 0} + m_LocalScale: {x: 0.5, y: 1, z: 0.49999997} + m_Children: [] + m_Father: {fileID: 165230858} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &181859162 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 2304408, guid: a3244c08ab4d16f45b564401c17e84d4, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 181859160} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 0 + m_RayTracingMode: 2 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 0062779a7c303451ab69ea6fc7893dc8, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!64 &181859163 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 6442406, guid: a3244c08ab4d16f45b564401c17e84d4, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 181859160} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 4 + m_Convex: 0 + m_CookingOptions: 30 + m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} +--- !u!33 &181859164 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 3378452, guid: a3244c08ab4d16f45b564401c17e84d4, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 181859160} + m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &271039439 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 271039440} + m_Layer: 0 + m_Name: --- Other Scene Stuff --- + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!4 &271039440 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 271039439} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -4.729038, y: -3.3103254, z: -4.729038} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &472769855 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 100000, guid: e11f662626928b14e8f57acb029360b9, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 472769856} + - component: {fileID: 472769857} + m_Layer: 0 + m_Name: DirectionalLight + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &472769856 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 400000, guid: e11f662626928b14e8f57acb029360b9, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 472769855} + m_LocalRotation: {x: 0.4144551, y: -0.7420336, z: 0.5253307, w: -0.040507175} + m_LocalPosition: {x: 0, y: 2, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 8 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!108 &472769857 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 10800000, guid: e11f662626928b14e8f57acb029360b9, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 472769855} + m_Enabled: 1 + serializedVersion: 10 + m_Type: 1 + m_Shape: 0 + m_Color: {r: 1, g: 0.9885849, b: 0.95686275, a: 1} + m_Intensity: 1 + m_Range: 10 + m_SpotAngle: 30 + m_InnerSpotAngle: 21.802082 + m_CookieSize: 10 + m_Shadows: + m_Type: 2 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 1 + m_Bias: 0.01 + 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_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!1 &567592204 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 567592205} + - component: {fileID: 567592208} + - component: {fileID: 567592207} + - component: {fileID: 567592206} + m_Layer: 0 + m_Name: SmallWall + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &567592205 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 567592204} + m_LocalRotation: {x: 0, y: 0.34513432, z: 0, w: 0.93855333} + m_LocalPosition: {x: 1.42, y: 0.34, z: -0.77} + m_LocalScale: {x: 2, y: 1, z: 0.2} + m_Children: [] + m_Father: {fileID: 1694850532} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 40.38, z: 0} +--- !u!23 &567592206 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 567592204} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 0062779a7c303451ab69ea6fc7893dc8, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!65 &567592207 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 567592204} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &567592208 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 567592204} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &613470776 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 613470777} + - component: {fileID: 613470779} + - component: {fileID: 613470778} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &613470777 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 613470776} + 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_Children: [] + m_Father: {fileID: 1605869163} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.1} + m_AnchorMax: {x: 1, y: 0.9} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &613470778 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 613470776} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 1 + m_MinSize: 10 + m_MaxSize: 90 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 'HIGHLIGHT PLUS HIT FX DEMO + + Click on + any capsule to trigger the effect.' +--- !u!222 &613470779 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 613470776} + m_CullTransparentMesh: 0 +--- !u!1 &617211756 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 195550, guid: d7720c2417695eb45bd70f6d10a17068, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 617211757} + - component: {fileID: 617211762} + - component: {fileID: 617211760} + - component: {fileID: 617211759} + - component: {fileID: 617211758} + - component: {fileID: 617211761} + m_Layer: 1 + m_Name: Target 3 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &617211757 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 403562, guid: d7720c2417695eb45bd70f6d10a17068, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 617211756} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0.97, y: 0.65, z: -0.97} + m_LocalScale: {x: 0.65, y: 0.65, z: 0.65} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &617211758 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 617211756} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 888380afc233049ce9e618f9f36c8ba8, type: 3} + m_Name: + m_EditorClassIdentifier: + profile: {fileID: 0} + profileSync: 1 + previewInEditor: 1 + camerasLayerMask: + serializedVersion: 2 + m_Bits: 4294967295 + effectGroup: 0 + effectGroupLayer: + serializedVersion: 2 + m_Bits: 4294967295 + effectNameFilter: + combineMeshes: 0 + alphaCutOff: 0 + cullBackFaces: 1 + ignoreObjectVisibility: 0 + reflectionProbes: 0 + GPUInstancing: 1 + normalsOption: 0 + ignore: 0 + _highlighted: 0 + fadeInDuration: 0 + fadeOutDuration: 0 + flipY: 0 + constantWidth: 1 + subMeshMask: -1 + overlay: 0.5 + overlayColor: {r: 1, g: 0.92156863, b: 0.015686275, a: 1} + overlayAnimationSpeed: 1 + overlayMinIntensity: 0.5 + overlayBlending: 1 + overlayTexture: {fileID: 0} + overlayTextureScale: 1 + outline: 1 + outlineColor: {r: 0, g: 0, b: 0, a: 1} + outlineWidth: 0.5 + outlineQuality: 0 + outlineDownsampling: 2 + outlineVisibility: 0 + outlineBlitDebug: 0 + outlineIndependent: 0 + glow: 1 + glowWidth: 0.89 + glowQuality: 2 + glowDownsampling: 2 + glowHQColor: {r: 1, g: 0.52205884, b: 0.52205884, a: 1} + glowDithering: 1 + glowMagicNumber1: 0.75 + glowMagicNumber2: 0.5 + glowAnimationSpeed: 1 + glowVisibility: 0 + glowBlitDebug: 0 + glowBlendPasses: 1 + glowPasses: + - offset: 4 + alpha: 0.1 + color: {r: 0.64, g: 1, b: 0, a: 1} + - offset: 3 + alpha: 0.2 + color: {r: 0.64, g: 1, b: 0, a: 1} + - offset: 2 + alpha: 0.3 + color: {r: 0.64, g: 1, b: 0, a: 1} + - offset: 1 + alpha: 0.4 + color: {r: 0.64, g: 1, b: 0, a: 1} + innerGlow: 0.79 + innerGlowWidth: 1 + innerGlowColor: {r: 1, g: 1, b: 1, a: 1} + innerGlowVisibility: 0 + targetFX: 0 + targetFXTexture: {fileID: 0} + targetFXColor: {r: 1, g: 1, b: 1, a: 1} + targetFXCenter: {fileID: 0} + targetFXRotationSpeed: 30 + targetFXInitialScale: 2 + targetFXEndScale: 1.1 + targetFXScaleToRenderBounds: 1 + targetFXAlignToGround: 0 + targetFXFadePower: 32 + targetFXGroundMaxDistance: 10 + targetFXGroundLayerMask: + serializedVersion: 2 + m_Bits: 4294967295 + targetFXTransitionDuration: 0.5 + targetFXStayDuration: 2 + targetFXVisibility: 1 + seeThrough: 1 + seeThroughOccluderMask: + serializedVersion: 2 + m_Bits: 4294967295 + seeThroughOccluderThreshold: 0.3 + seeThroughOccluderMaskAccurate: 0 + seeThroughOccluderCheckInterval: 1 + seeThroughOccluderCheckIndividualObjects: 0 + seeThroughDepthOffset: 0 + seeThroughMaxDepth: 0 + seeThroughIntensity: 0.8 + seeThroughTintAlpha: 0.5 + seeThroughTintColor: {r: 1, g: 0, b: 0, a: 1} + seeThroughNoise: 1 + seeThroughBorder: 0 + seeThroughBorderColor: {r: 0, g: 0, b: 0, a: 1} + seeThroughBorderWidth: 0.45 + seeThroughOrdered: 0 + rmsCount: 1 + hitFxInitialIntensity: 1 + hitFxMode: 0 + hitFxFadeOutDuration: 0.25 + hitFxColor: {r: 1, g: 0.83026266, b: 0, a: 1} + hitFxRadius: 0.5 +--- !u!114 &617211759 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 617211756} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5009cbb7e54994bb586cde7a70f34e6b, type: 3} + m_Name: + m_EditorClassIdentifier: + highlightOnHover: 1 + triggerMode: 1 + raycastCamera: {fileID: 965526243} + raycastSource: 0 + minDistance: 0 + maxDistance: 0 + respectUI: 1 + volumeLayerMask: + serializedVersion: 2 + m_Bits: 0 + selectOnClick: 0 + selectedProfile: {fileID: 0} + selectedAndHighlightedProfile: {fileID: 0} + singleSelection: 0 + toggle: 0 +--- !u!23 &617211760 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 2319362, guid: d7720c2417695eb45bd70f6d10a17068, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 617211756} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 3 + m_RayTracingMode: 2 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 3134ae80e55101b468fe9ea362327f28, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 617211757} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!136 &617211761 +CapsuleCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 617211756} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + m_Radius: 0.5 + m_Height: 2 + m_Direction: 1 + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &617211762 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 3336432, guid: d7720c2417695eb45bd70f6d10a17068, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 617211756} + m_Mesh: {fileID: 10208, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &640476129 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 640476130} + m_Layer: 0 + m_Name: --- Sample Targets --- + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!4 &640476130 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 640476129} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -4.729038, y: -3.3103254, z: -4.729038} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &656694097 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 158430, guid: d7720c2417695eb45bd70f6d10a17068, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 656694098} + - component: {fileID: 656694104} + - component: {fileID: 656694102} + - component: {fileID: 656694101} + - component: {fileID: 656694100} + - component: {fileID: 656694099} + - component: {fileID: 656694103} + m_Layer: 1 + m_Name: Target 1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &656694098 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 494476, guid: d7720c2417695eb45bd70f6d10a17068, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 656694097} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.85, y: 0.5, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &656694099 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 656694097} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 36aa3934b8f65413188fabe723ded4da, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &656694100 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 656694097} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 888380afc233049ce9e618f9f36c8ba8, type: 3} + m_Name: + m_EditorClassIdentifier: + profile: {fileID: 0} + profileSync: 1 + previewInEditor: 1 + camerasLayerMask: + serializedVersion: 2 + m_Bits: 4294967295 + effectGroup: 1 + effectGroupLayer: + serializedVersion: 2 + m_Bits: 18 + effectNameFilter: + combineMeshes: 0 + alphaCutOff: 0 + cullBackFaces: 1 + ignoreObjectVisibility: 0 + reflectionProbes: 0 + GPUInstancing: 1 + normalsOption: 0 + ignore: 0 + _highlighted: 0 + fadeInDuration: 0 + fadeOutDuration: 0.5 + flipY: 0 + constantWidth: 1 + subMeshMask: -1 + overlay: 0.05 + overlayColor: {r: 1, g: 0.92156863, b: 0.015686275, a: 1} + overlayAnimationSpeed: 0 + overlayMinIntensity: 0.5 + overlayBlending: 1 + overlayTexture: {fileID: 2800000, guid: aeb7aff1c8c1241ee8bfdfc05e9a9e92, type: 3} + overlayTextureScale: 1 + outline: 1 + outlineColor: {r: 0, g: 0, b: 0, a: 1} + outlineWidth: 0.4 + outlineQuality: 0 + outlineDownsampling: 2 + outlineVisibility: 0 + outlineBlitDebug: 0 + outlineIndependent: 0 + glow: 1.78 + glowWidth: 3.42 + glowQuality: 2 + glowDownsampling: 2 + glowHQColor: {r: 0.64, g: 1, b: 0, a: 1} + glowDithering: 1 + glowMagicNumber1: 0.75 + glowMagicNumber2: 0.5 + glowAnimationSpeed: 0.2 + glowVisibility: 0 + glowBlitDebug: 0 + glowBlendPasses: 1 + glowPasses: + - offset: 4 + alpha: 0.1 + color: {r: 0.64, g: 1, b: 0, a: 1} + - offset: 3 + alpha: 0.2 + color: {r: 0.64, g: 1, b: 0, a: 1} + - offset: 2 + alpha: 0.3 + color: {r: 0.64, g: 1, b: 0, a: 1} + - offset: 1 + alpha: 0.4 + color: {r: 0.64, g: 1, b: 0, a: 1} + innerGlow: 0 + innerGlowWidth: 1 + innerGlowColor: {r: 1, g: 1, b: 1, a: 1} + innerGlowVisibility: 0 + targetFX: 0 + targetFXTexture: {fileID: 2800000, guid: 1de3c566a6c8c405b9f6f453137273ec, type: 3} + targetFXColor: {r: 1, g: 1, b: 1, a: 1} + targetFXCenter: {fileID: 0} + targetFXRotationSpeed: 30 + targetFXInitialScale: 4 + targetFXEndScale: 1.5 + targetFXScaleToRenderBounds: 1 + targetFXAlignToGround: 0 + targetFXFadePower: 32 + targetFXGroundMaxDistance: 10 + targetFXGroundLayerMask: + serializedVersion: 2 + m_Bits: 4294967295 + targetFXTransitionDuration: 0.5 + targetFXStayDuration: 1.5 + targetFXVisibility: 1 + seeThrough: 1 + seeThroughOccluderMask: + serializedVersion: 2 + m_Bits: 4294967295 + seeThroughOccluderThreshold: 0.3 + seeThroughOccluderMaskAccurate: 0 + seeThroughOccluderCheckInterval: 1 + seeThroughOccluderCheckIndividualObjects: 0 + seeThroughDepthOffset: 0 + seeThroughMaxDepth: 0 + seeThroughIntensity: 0.8 + seeThroughTintAlpha: 0.5 + seeThroughTintColor: {r: 1, g: 0, b: 0, a: 1} + seeThroughNoise: 1 + seeThroughBorder: 0 + seeThroughBorderColor: {r: 0, g: 0, b: 0, a: 1} + seeThroughBorderWidth: 0.45 + seeThroughOrdered: 0 + rmsCount: 1 + hitFxInitialIntensity: 1 + hitFxMode: 2 + hitFxFadeOutDuration: 0.25 + hitFxColor: {r: 0.93333334, g: 1.1058824, b: 2, a: 1} + hitFxRadius: 0.5 +--- !u!114 &656694101 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 656694097} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5009cbb7e54994bb586cde7a70f34e6b, type: 3} + m_Name: + m_EditorClassIdentifier: + highlightOnHover: 1 + triggerMode: 1 + raycastCamera: {fileID: 965526243} + raycastSource: 0 + minDistance: 0 + maxDistance: 0 + respectUI: 1 + volumeLayerMask: + serializedVersion: 2 + m_Bits: 0 + selectOnClick: 0 + selectedProfile: {fileID: 0} + selectedAndHighlightedProfile: {fileID: 0} + singleSelection: 0 + toggle: 0 +--- !u!23 &656694102 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 2319392, guid: d7720c2417695eb45bd70f6d10a17068, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 656694097} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 3 + m_RayTracingMode: 2 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 5b12cf4be3e7c5149a5f24108ee6a551, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!136 &656694103 +CapsuleCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 656694097} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + m_Radius: 0.5 + m_Height: 2 + m_Direction: 1 + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &656694104 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 3351936, guid: d7720c2417695eb45bd70f6d10a17068, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 656694097} + m_Mesh: {fileID: 10208, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &965526239 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 100000, guid: 97b34cadc45c6d94abd78dfc533fc3b2, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 965526244} + - component: {fileID: 965526243} + - component: {fileID: 965526240} + - component: {fileID: 965526241} + m_Layer: 0 + m_Name: Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!81 &965526240 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 8100000, guid: 97b34cadc45c6d94abd78dfc533fc3b2, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 965526239} + m_Enabled: 1 +--- !u!114 &965526241 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 965526239} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a79441f348de89743a2939f4d699eac1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_RenderShadows: 1 + m_RequiresDepthTextureOption: 2 + m_RequiresOpaqueTextureOption: 2 + m_CameraType: 0 + m_Cameras: [] + m_RendererIndex: -1 + m_VolumeLayerMask: + serializedVersion: 2 + m_Bits: 1 + m_VolumeTrigger: {fileID: 0} + m_RenderPostProcessing: 0 + m_Antialiasing: 0 + m_AntialiasingQuality: 2 + m_StopNaN: 0 + m_Dithering: 0 + m_ClearDepth: 1 + m_RequiresDepthTexture: 0 + m_RequiresColorTexture: 0 + m_Version: 2 +--- !u!20 &965526243 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 2000000, guid: 97b34cadc45c6d94abd78dfc533fc3b2, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 965526239} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.25, g: 0.25, b: 0.25, a: 0.003921569} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.1 + far clip plane: 20 + field of view: 40 + orthographic: 0 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294963199 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 1 + m_AllowMSAA: 0 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &965526244 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 400000, guid: 97b34cadc45c6d94abd78dfc533fc3b2, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 965526239} + m_LocalRotation: {x: 0.0010074005, y: 0.91790915, z: 0.0024223588, w: -0.39678213} + m_LocalPosition: {x: 2.4200273, y: 0.72167146, z: 2.4644732} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1165184420 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 182018, guid: a3244c08ab4d16f45b564401c17e84d4, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1165184421} + - component: {fileID: 1165184424} + - component: {fileID: 1165184423} + - component: {fileID: 1165184422} + m_Layer: 0 + m_Name: CalibrationWallRearLeft + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 65 + m_IsActive: 1 +--- !u!4 &1165184421 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 464034, guid: a3244c08ab4d16f45b564401c17e84d4, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1165184420} + m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071067} + m_LocalPosition: {x: 0, y: 2.5, z: -2.5} + m_LocalScale: {x: 0.5, y: 1, z: 0.5} + m_Children: [] + m_Father: {fileID: 165230858} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &1165184422 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 2391912, guid: a3244c08ab4d16f45b564401c17e84d4, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1165184420} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 0 + m_RayTracingMode: 2 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 0062779a7c303451ab69ea6fc7893dc8, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!64 &1165184423 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 6494426, guid: a3244c08ab4d16f45b564401c17e84d4, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1165184420} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 4 + m_Convex: 0 + m_CookingOptions: 30 + m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} +--- !u!33 &1165184424 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 3305810, guid: a3244c08ab4d16f45b564401c17e84d4, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1165184420} + m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1179472412 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 100006, guid: a3244c08ab4d16f45b564401c17e84d4, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1179472413} + - component: {fileID: 1179472416} + - component: {fileID: 1179472415} + - component: {fileID: 1179472414} + m_Layer: 0 + m_Name: CalibrationFloor + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 65 + m_IsActive: 1 +--- !u!4 &1179472413 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 400006, guid: a3244c08ab4d16f45b564401c17e84d4, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1179472412} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.5, y: 1, z: 0.5} + m_Children: [] + m_Father: {fileID: 1694850532} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &1179472414 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 2300004, guid: a3244c08ab4d16f45b564401c17e84d4, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1179472412} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 0 + m_RayTracingMode: 2 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: d681c1d72c3c16149abd2f0f25ca628c, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!64 &1179472415 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 6400004, guid: a3244c08ab4d16f45b564401c17e84d4, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1179472412} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 4 + m_Convex: 0 + m_CookingOptions: 30 + m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} +--- !u!33 &1179472416 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 3300004, guid: a3244c08ab4d16f45b564401c17e84d4, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1179472412} + m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1392572690 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 145214, guid: d7720c2417695eb45bd70f6d10a17068, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1392572691} + - component: {fileID: 1392572696} + - component: {fileID: 1392572694} + - component: {fileID: 1392572693} + - component: {fileID: 1392572692} + - component: {fileID: 1392572695} + m_Layer: 1 + m_Name: Target 2 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1392572691 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 473706, guid: d7720c2417695eb45bd70f6d10a17068, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1392572690} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0.49, z: 1} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1392572692 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1392572690} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 888380afc233049ce9e618f9f36c8ba8, type: 3} + m_Name: + m_EditorClassIdentifier: + profile: {fileID: 0} + profileSync: 1 + previewInEditor: 1 + camerasLayerMask: + serializedVersion: 2 + m_Bits: 4294967295 + effectGroup: 0 + effectGroupLayer: + serializedVersion: 2 + m_Bits: 4294967295 + effectNameFilter: + combineMeshes: 0 + alphaCutOff: 0 + cullBackFaces: 1 + ignoreObjectVisibility: 0 + reflectionProbes: 0 + GPUInstancing: 1 + normalsOption: 0 + ignore: 0 + _highlighted: 0 + fadeInDuration: 1 + fadeOutDuration: 1 + flipY: 0 + constantWidth: 1 + subMeshMask: -1 + overlay: 0 + overlayColor: {r: 1, g: 0.92156863, b: 0.015686275, a: 1} + overlayAnimationSpeed: 0 + overlayMinIntensity: 0 + overlayBlending: 1 + overlayTexture: {fileID: 0} + overlayTextureScale: 1 + outline: 1 + outlineColor: {r: 1, g: 1, b: 1, a: 1} + outlineWidth: 0.4 + outlineQuality: 0 + outlineDownsampling: 2 + outlineVisibility: 0 + outlineBlitDebug: 0 + outlineIndependent: 0 + glow: 1.32 + glowWidth: 3 + glowQuality: 2 + glowDownsampling: 2 + glowHQColor: {r: 0.19117647, g: 0.36409733, b: 1, a: 1} + glowDithering: 1 + glowMagicNumber1: 0.75 + glowMagicNumber2: 0.5 + glowAnimationSpeed: 1 + glowVisibility: 0 + glowBlitDebug: 0 + glowBlendPasses: 1 + glowPasses: + - offset: 4 + alpha: 0.1 + color: {r: 0.64, g: 1, b: 0, a: 1} + - offset: 3 + alpha: 0.2 + color: {r: 0.64, g: 1, b: 0, a: 1} + - offset: 2 + alpha: 0.3 + color: {r: 0.64, g: 1, b: 0, a: 1} + - offset: 1 + alpha: 0.4 + color: {r: 0.64, g: 1, b: 0, a: 1} + innerGlow: 0 + innerGlowWidth: 1 + innerGlowColor: {r: 1, g: 1, b: 1, a: 1} + innerGlowVisibility: 0 + targetFX: 0 + targetFXTexture: {fileID: 2800000, guid: 1de3c566a6c8c405b9f6f453137273ec, type: 3} + targetFXColor: {r: 1, g: 1, b: 1, a: 1} + targetFXCenter: {fileID: 0} + targetFXRotationSpeed: 50 + targetFXInitialScale: 2 + targetFXEndScale: 1.5 + targetFXScaleToRenderBounds: 1 + targetFXAlignToGround: 0 + targetFXFadePower: 32 + targetFXGroundMaxDistance: 10 + targetFXGroundLayerMask: + serializedVersion: 2 + m_Bits: 4294967295 + targetFXTransitionDuration: 0.5 + targetFXStayDuration: 2 + targetFXVisibility: 1 + seeThrough: 0 + seeThroughOccluderMask: + serializedVersion: 2 + m_Bits: 4294967295 + seeThroughOccluderThreshold: 0.3 + seeThroughOccluderMaskAccurate: 0 + seeThroughOccluderCheckInterval: 1 + seeThroughOccluderCheckIndividualObjects: 0 + seeThroughDepthOffset: 0 + seeThroughMaxDepth: 0 + seeThroughIntensity: 0.8 + seeThroughTintAlpha: 0.5 + seeThroughTintColor: {r: 1, g: 0, b: 0, a: 1} + seeThroughNoise: 1 + seeThroughBorder: 0 + seeThroughBorderColor: {r: 0, g: 0, b: 0, a: 1} + seeThroughBorderWidth: 0.45 + seeThroughOrdered: 0 + rmsCount: 1 + hitFxInitialIntensity: 1 + hitFxMode: 2 + hitFxFadeOutDuration: 0.25 + hitFxColor: {r: 1, g: 1, b: 1, a: 1} + hitFxRadius: 0.5 +--- !u!114 &1392572693 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1392572690} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5009cbb7e54994bb586cde7a70f34e6b, type: 3} + m_Name: + m_EditorClassIdentifier: + highlightOnHover: 1 + triggerMode: 1 + raycastCamera: {fileID: 965526243} + raycastSource: 0 + minDistance: 0 + maxDistance: 0 + respectUI: 1 + volumeLayerMask: + serializedVersion: 2 + m_Bits: 0 + selectOnClick: 0 + selectedProfile: {fileID: 0} + selectedAndHighlightedProfile: {fileID: 0} + singleSelection: 0 + toggle: 0 +--- !u!23 &1392572694 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 2375834, guid: d7720c2417695eb45bd70f6d10a17068, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1392572690} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 3 + m_RayTracingMode: 2 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 958abb01761e1dc4ebf9ffdf8252d20e, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!136 &1392572695 +CapsuleCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1392572690} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + m_Radius: 0.5 + m_Height: 2 + m_Direction: 1 + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &1392572696 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 3335484, guid: d7720c2417695eb45bd70f6d10a17068, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1392572690} + m_Mesh: {fileID: 10208, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1435719951 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 100002, guid: a3244c08ab4d16f45b564401c17e84d4, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1435719952} + - component: {fileID: 1435719955} + - component: {fileID: 1435719954} + - component: {fileID: 1435719953} + m_Layer: 0 + m_Name: CalibrationWallFrontLeft + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 65 + m_IsActive: 1 +--- !u!4 &1435719952 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 400002, guid: a3244c08ab4d16f45b564401c17e84d4, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1435719951} + m_LocalRotation: {x: 0.5000003, y: -0.5000001, z: -0.49999964, w: -0.50000006} + m_LocalPosition: {x: 2.4999998, y: 2.5, z: 0} + m_LocalScale: {x: 0.4999999, y: 1, z: 0.4999999} + m_Children: [] + m_Father: {fileID: 165230858} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &1435719953 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 2300002, guid: a3244c08ab4d16f45b564401c17e84d4, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1435719951} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 0 + m_RayTracingMode: 2 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 0062779a7c303451ab69ea6fc7893dc8, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!64 &1435719954 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 6400002, guid: a3244c08ab4d16f45b564401c17e84d4, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1435719951} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 4 + m_Convex: 0 + m_CookingOptions: 30 + m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} +--- !u!33 &1435719955 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 3300002, guid: a3244c08ab4d16f45b564401c17e84d4, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1435719951} + m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1525858953 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 100000, guid: a3244c08ab4d16f45b564401c17e84d4, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1525858954} + - component: {fileID: 1525858957} + - component: {fileID: 1525858956} + - component: {fileID: 1525858955} + m_Layer: 0 + m_Name: CalibrationWallFrontRight + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 65 + m_IsActive: 1 +--- !u!4 &1525858954 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 400000, guid: a3244c08ab4d16f45b564401c17e84d4, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1525858953} + m_LocalRotation: {x: 0.70710695, y: 0.0000002682209, z: 0.00000021584746, w: -0.7071066} + m_LocalPosition: {x: 0, y: 2.500002, z: 2.5000014} + m_LocalScale: {x: 0.49999997, y: 1, z: 0.5} + m_Children: [] + m_Father: {fileID: 165230858} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &1525858955 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 2300000, guid: a3244c08ab4d16f45b564401c17e84d4, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1525858953} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 0 + m_RayTracingMode: 2 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 0062779a7c303451ab69ea6fc7893dc8, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!64 &1525858956 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 6400000, guid: a3244c08ab4d16f45b564401c17e84d4, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1525858953} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 4 + m_Convex: 0 + m_CookingOptions: 30 + m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} +--- !u!33 &1525858957 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 3300000, guid: a3244c08ab4d16f45b564401c17e84d4, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1525858953} + m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1605869162 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1605869163} + - component: {fileID: 1605869165} + - component: {fileID: 1605869164} + m_Layer: 5 + m_Name: Panel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1605869163 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1605869162} + 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_Children: + - {fileID: 613470777} + m_Father: {fileID: 1819248545} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 0.1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 1} +--- !u!114 &1605869164 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1605869162} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 0.641} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1605869165 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1605869162} + m_CullTransparentMesh: 0 +--- !u!1 &1694850531 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 100004, guid: a3244c08ab4d16f45b564401c17e84d4, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1694850532} + m_Layer: 0 + m_Name: StaticGeometry + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 4294967295 + m_IsActive: 1 +--- !u!4 &1694850532 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 400004, guid: a3244c08ab4d16f45b564401c17e84d4, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1694850531} + 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_Children: + - {fileID: 1179472413} + - {fileID: 165230858} + - {fileID: 567592205} + m_Father: {fileID: 0} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1819248541 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1819248545} + - component: {fileID: 1819248544} + - component: {fileID: 1819248543} + - component: {fileID: 1819248542} + m_Layer: 5 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1819248542 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1819248541} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &1819248543 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1819248541} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 1 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 800, y: 600} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 +--- !u!223 &1819248544 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1819248541} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_AdditionalShaderChannelsFlag: 0 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!224 &1819248545 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1819248541} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 1605869163} + m_Father: {fileID: 0} + m_RootOrder: 9 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!1 &2118005892 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2118005894} + - component: {fileID: 2118005893} + m_Layer: 0 + m_Name: HitFx Script + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &2118005893 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2118005892} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b2533fb71c5d747c58192bcd7d6cd276, type: 3} + m_Name: + m_EditorClassIdentifier: + hitSound: {fileID: 8300000, guid: 9c2f7decce97e409a8ecfc1181535dc2, type: 3} +--- !u!4 &2118005894 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2118005892} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -4.729038, y: -3.3103254, z: -4.729038} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} diff --git a/Assets/External/HighlightPlus/Demo/Demo3_HitFXExample.unity.meta b/Assets/External/HighlightPlus/Demo/Demo3_HitFXExample.unity.meta new file mode 100644 index 000000000..37d1f5e34 --- /dev/null +++ b/Assets/External/HighlightPlus/Demo/Demo3_HitFXExample.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: a9ed051e57e7249a89531758bd685c7f +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/HighlightPlus/Demo/Demo3_HitFXExample/LightingData.asset b/Assets/External/HighlightPlus/Demo/Demo3_HitFXExample/LightingData.asset new file mode 100644 index 000000000..3291e98a9 --- /dev/null +++ b/Assets/External/HighlightPlus/Demo/Demo3_HitFXExample/LightingData.asset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e9446101e337929e59a865068f6bad1c1c2da487162241a49b9054cf30db9b25 +size 416028 diff --git a/Assets/External/HighlightPlus/Demo/Demo3_HitFXExample/LightingData.asset.meta b/Assets/External/HighlightPlus/Demo/Demo3_HitFXExample/LightingData.asset.meta new file mode 100644 index 000000000..ca58411cd --- /dev/null +++ b/Assets/External/HighlightPlus/Demo/Demo3_HitFXExample/LightingData.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8cfab0568fa054c19a099900753f1006 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 112000000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/HighlightPlus/Demo/Demo3_HitFXExample/ReflectionProbe-0.exr b/Assets/External/HighlightPlus/Demo/Demo3_HitFXExample/ReflectionProbe-0.exr new file mode 100644 index 000000000..aee57f336 --- /dev/null +++ b/Assets/External/HighlightPlus/Demo/Demo3_HitFXExample/ReflectionProbe-0.exr @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f7a99da2e7b7186c4a607900c926e3e3a2f1b336cfbed29b4662e210842de586 +size 166081 diff --git a/Assets/External/HighlightPlus/Demo/Demo3_HitFXExample/ReflectionProbe-0.exr.meta b/Assets/External/HighlightPlus/Demo/Demo3_HitFXExample/ReflectionProbe-0.exr.meta new file mode 100644 index 000000000..ec7ab2556 --- /dev/null +++ b/Assets/External/HighlightPlus/Demo/Demo3_HitFXExample/ReflectionProbe-0.exr.meta @@ -0,0 +1,117 @@ +fileFormatVersion: 2 +guid: 0801fcfb33084482992fa71ea4c7d68e +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 1 + seamlessCubemap: 1 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 2 + aniso: 0 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 2 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 4 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 100 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/HighlightPlus/Demo/Materials.meta b/Assets/External/HighlightPlus/Demo/Materials.meta new file mode 100644 index 000000000..e3f2752b2 --- /dev/null +++ b/Assets/External/HighlightPlus/Demo/Materials.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: d4f7bf313cad54255a94a5340731a311 +folderAsset: yes +timeCreated: 1542877572 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/HighlightPlus/Demo/Materials/Floor.mat b/Assets/External/HighlightPlus/Demo/Materials/Floor.mat new file mode 100644 index 000000000..f6eee8048 --- /dev/null +++ b/Assets/External/HighlightPlus/Demo/Materials/Floor.mat @@ -0,0 +1,150 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-8558442800701317947 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 9 +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Floor + m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: + - _NORMALMAP + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: 2000 + stringTagMap: + RenderType: Opaque + disabledShaderPasses: + - MOTIONVECTORS + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 2800000, guid: 13ea04b5d27644ccba761e09947624da, type: 3} + m_Scale: {x: 2, y: 2} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 2800000, guid: d398536e88a354ed3b3825173a7e092a, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 10, y: 10} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 2, y: 2} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: 13ea04b5d27644ccba761e09947624da, type: 3} + m_Scale: {x: 2, y: 2} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _Occlusion: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 2800000, guid: 943181a31ab5a411496dc4b0d6a41630, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _AddPrecomputedVelocity: 0 + - _AlphaClip: 0 + - _AlphaTestRef: 0.5 + - _AlphaToMask: 0 + - _Blend: 0 + - _BlendModePreserveSpecular: 1 + - _BumpScale: 1 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 + - _Cull: 2 + - _Cutoff: 0.5 + - _DetailAlbedoMapScale: 1 + - _DetailNormalMapScale: 0.02 + - _DstBlend: 0 + - _DstBlendAlpha: 0 + - _EmissionScaleUI: 1 + - _EnvironmentReflections: 1 + - _GlossMapScale: 0.538 + - _Glossiness: 0.34 + - _GlossyReflections: 1 + - _Lightmapping: 1 + - _Metallic: 0.1 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.0104 + - _QueueOffset: 0 + - _ReceiveShadows: 1 + - _Smoothness: 0.34 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _SrcBlendAlpha: 1 + - _Surface: 0 + - _UVSec: 0 + - _WorkflowMode: 1 + - _XRMotionVectorsPass: 1 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 1, g: 1, b: 1, a: 1} + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 0.99999994} + - _EmissionColorUI: {r: 0, g: 0, b: 0, a: 1} + - _EmissionColorWithMapUI: {r: 1, g: 1, b: 1, a: 1} + - _SpecColor: {r: 1, g: 1, b: 1, a: 1} + - _SpecularColor: {r: 0.11764706, g: 0.11764706, b: 0.11764706, a: 1} + m_BuildTextureStacks: [] + m_AllowLocking: 1 diff --git a/Assets/External/HighlightPlus/Demo/Materials/Floor.mat.meta b/Assets/External/HighlightPlus/Demo/Materials/Floor.mat.meta new file mode 100644 index 000000000..9218940cf --- /dev/null +++ b/Assets/External/HighlightPlus/Demo/Materials/Floor.mat.meta @@ -0,0 +1,5 @@ +fileFormatVersion: 2 +guid: d681c1d72c3c16149abd2f0f25ca628c +NativeFormatImporter: + userData: + assetBundleName: diff --git a/Assets/External/HighlightPlus/Demo/Materials/Gold.mat b/Assets/External/HighlightPlus/Demo/Materials/Gold.mat new file mode 100644 index 000000000..0257907f1 --- /dev/null +++ b/Assets/External/HighlightPlus/Demo/Materials/Gold.mat @@ -0,0 +1,149 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-5610605729892836785 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 9 +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Gold + m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: 2000 + stringTagMap: + RenderType: Opaque + disabledShaderPasses: + - MOTIONVECTORS + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _Occlusion: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _AddPrecomputedVelocity: 0 + - _AlphaClip: 0 + - _AlphaTestRef: 0.5 + - _AlphaToMask: 0 + - _Blend: 0 + - _BlendModePreserveSpecular: 1 + - _BumpScale: 1 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 + - _Cull: 2 + - _Cutoff: 0.5 + - _DetailAlbedoMapScale: 1 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _DstBlendAlpha: 0 + - _EmissionScaleUI: 0 + - _EnvironmentReflections: 1 + - _GlossMapScale: 1 + - _Glossiness: 0.9 + - _GlossyReflections: 1 + - _Lightmapping: 1 + - _Metallic: 1 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _QueueOffset: 0 + - _ReceiveShadows: 1 + - _Smoothness: 0.9 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _SrcBlendAlpha: 1 + - _Surface: 0 + - _UVSec: 0 + - _WorkflowMode: 1 + - _XRMotionVectorsPass: 1 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 0.96078426, g: 0.8392157, b: 0.47450978, a: 1} + - _Color: {r: 0.96078426, g: 0.8392157, b: 0.47450978, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 0} + - _EmissionColorUI: {r: 0, g: 0, b: 0, a: 1} + - _EmissionColorWithMapUI: {r: 1, g: 1, b: 1, a: 1} + - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} + - _SpecularColor: {r: 0.8088235, g: 0.6295969, b: 0.3033088, a: 1} + m_BuildTextureStacks: [] + m_AllowLocking: 1 diff --git a/Assets/External/HighlightPlus/Demo/Materials/Gold.mat.meta b/Assets/External/HighlightPlus/Demo/Materials/Gold.mat.meta new file mode 100644 index 000000000..dd5d3820e --- /dev/null +++ b/Assets/External/HighlightPlus/Demo/Materials/Gold.mat.meta @@ -0,0 +1,5 @@ +fileFormatVersion: 2 +guid: 5b12cf4be3e7c5149a5f24108ee6a551 +NativeFormatImporter: + userData: + assetBundleName: diff --git a/Assets/External/HighlightPlus/Demo/Materials/PlasticGlossy.mat b/Assets/External/HighlightPlus/Demo/Materials/PlasticGlossy.mat new file mode 100644 index 000000000..3142245be --- /dev/null +++ b/Assets/External/HighlightPlus/Demo/Materials/PlasticGlossy.mat @@ -0,0 +1,149 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-2992342339722848979 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 9 +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: PlasticGlossy + m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: 2000 + stringTagMap: + RenderType: Opaque + disabledShaderPasses: + - MOTIONVECTORS + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _Occlusion: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _AddPrecomputedVelocity: 0 + - _AlphaClip: 0 + - _AlphaTestRef: 0.5 + - _AlphaToMask: 0 + - _Blend: 0 + - _BlendModePreserveSpecular: 1 + - _BumpScale: 1 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 + - _Cull: 2 + - _Cutoff: 0.5 + - _DetailAlbedoMapScale: 1 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _DstBlendAlpha: 0 + - _EmissionScaleUI: 0 + - _EnvironmentReflections: 1 + - _GlossMapScale: 1 + - _Glossiness: 0.8 + - _GlossyReflections: 1 + - _Lightmapping: 1 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _QueueOffset: 0 + - _ReceiveShadows: 1 + - _Smoothness: 0.8 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _SrcBlendAlpha: 1 + - _Surface: 0 + - _UVSec: 0 + - _WorkflowMode: 1 + - _XRMotionVectorsPass: 1 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 0, g: 0.78942597, b: 0.79607844, a: 1} + - _Color: {r: 0, g: 0.78942597, b: 0.79607844, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 0} + - _EmissionColorUI: {r: 0, g: 0, b: 0, a: 1} + - _EmissionColorWithMapUI: {r: 1, g: 1, b: 1, a: 1} + - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} + - _SpecularColor: {r: 0.2, g: 0.2, b: 0.2, a: 1} + m_BuildTextureStacks: [] + m_AllowLocking: 1 diff --git a/Assets/External/HighlightPlus/Demo/Materials/PlasticGlossy.mat.meta b/Assets/External/HighlightPlus/Demo/Materials/PlasticGlossy.mat.meta new file mode 100644 index 000000000..e0d7375d2 --- /dev/null +++ b/Assets/External/HighlightPlus/Demo/Materials/PlasticGlossy.mat.meta @@ -0,0 +1,5 @@ +fileFormatVersion: 2 +guid: 958abb01761e1dc4ebf9ffdf8252d20e +NativeFormatImporter: + userData: + assetBundleName: diff --git a/Assets/External/HighlightPlus/Demo/Materials/Silk.mat b/Assets/External/HighlightPlus/Demo/Materials/Silk.mat new file mode 100644 index 000000000..3f60f6efe --- /dev/null +++ b/Assets/External/HighlightPlus/Demo/Materials/Silk.mat @@ -0,0 +1,149 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Silk + m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: 2000 + stringTagMap: + RenderType: Opaque + disabledShaderPasses: + - MOTIONVECTORS + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _Occlusion: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _AddPrecomputedVelocity: 0 + - _AlphaClip: 0 + - _AlphaTestRef: 0.5 + - _AlphaToMask: 0 + - _Blend: 0 + - _BlendModePreserveSpecular: 1 + - _BumpScale: 1 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 + - _Cull: 2 + - _Cutoff: 0.5 + - _DetailAlbedoMapScale: 1 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _DstBlendAlpha: 0 + - _EmissionScaleUI: 0 + - _EnvironmentReflections: 1 + - _GlossMapScale: 1 + - _Glossiness: 0.6 + - _GlossyReflections: 1 + - _Lightmapping: 1 + - _Metallic: 0.75 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _QueueOffset: 0 + - _ReceiveShadows: 1 + - _Smoothness: 0.6 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _SrcBlendAlpha: 1 + - _Surface: 0 + - _UVSec: 0 + - _WorkflowMode: 1 + - _XRMotionVectorsPass: 1 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 0.49411762, g: 0.145098, b: 0.16470584, a: 1} + - _Color: {r: 0.49411762, g: 0.14509797, b: 0.16470581, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 0} + - _EmissionColorUI: {r: 0, g: 0, b: 0, a: 1} + - _EmissionColorWithMapUI: {r: 1, g: 1, b: 1, a: 1} + - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} + - _SpecularColor: {r: 0.74264705, g: 0.20750435, b: 0.216731, a: 1} + m_BuildTextureStacks: [] + m_AllowLocking: 1 +--- !u!114 &7254247028269435741 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 9 diff --git a/Assets/External/HighlightPlus/Demo/Materials/Silk.mat.meta b/Assets/External/HighlightPlus/Demo/Materials/Silk.mat.meta new file mode 100644 index 000000000..6bc0ff463 --- /dev/null +++ b/Assets/External/HighlightPlus/Demo/Materials/Silk.mat.meta @@ -0,0 +1,5 @@ +fileFormatVersion: 2 +guid: 3134ae80e55101b468fe9ea362327f28 +NativeFormatImporter: + userData: + assetBundleName: diff --git a/Assets/External/HighlightPlus/Demo/Materials/Wall.mat b/Assets/External/HighlightPlus/Demo/Materials/Wall.mat new file mode 100644 index 000000000..aceccbc7b --- /dev/null +++ b/Assets/External/HighlightPlus/Demo/Materials/Wall.mat @@ -0,0 +1,152 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-6803998695329737601 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 9 +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Wall + m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: + - _NORMALMAP + - _OCCLUSIONMAP + - _PARALLAXMAP + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: 2000 + stringTagMap: + RenderType: Opaque + disabledShaderPasses: + - MOTIONVECTORS + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 2800000, guid: dc645ec4f4eba40dd8f0e8b0c21b99b0, type: 3} + m_Scale: {x: 3, y: 3} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 2800000, guid: ebcd1fde239ed44bc808f7c571d8a6a9, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 10, y: 10} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 3, y: 3} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: dc645ec4f4eba40dd8f0e8b0c21b99b0, type: 3} + m_Scale: {x: 3, y: 3} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _Occlusion: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 2800000, guid: 2fb008ff4214b4130a4f33cb385b6fa6, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 2800000, guid: 4c5aaebe522004ddfbf0da83b147e635, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecGlossMap: + m_Texture: {fileID: 2800000, guid: a1d43acc22aa4427f89ca56382ce5272, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _AddPrecomputedVelocity: 0 + - _AlphaClip: 0 + - _AlphaTestRef: 0.5 + - _AlphaToMask: 0 + - _Blend: 0 + - _BlendModePreserveSpecular: 1 + - _BumpScale: 1 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 + - _Cull: 2 + - _Cutoff: 0.5 + - _DetailAlbedoMapScale: 1 + - _DetailNormalMapScale: 0.02 + - _DstBlend: 0 + - _DstBlendAlpha: 0 + - _EmissionScaleUI: 1 + - _EnvironmentReflections: 1 + - _GlossMapScale: 0.325 + - _Glossiness: 0.311 + - _GlossyReflections: 1 + - _Lightmapping: 1 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.0203 + - _QueueOffset: 0 + - _ReceiveShadows: 1 + - _Smoothness: 0.311 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _SrcBlendAlpha: 1 + - _Surface: 0 + - _UVSec: 0 + - _WorkflowMode: 1 + - _XRMotionVectorsPass: 1 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 1, g: 1, b: 1, a: 1} + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 0.99999994} + - _EmissionColorUI: {r: 0, g: 0, b: 0, a: 1} + - _EmissionColorWithMapUI: {r: 1, g: 1, b: 1, a: 1} + - _SpecColor: {r: 1, g: 1, b: 1, a: 1} + - _SpecularColor: {r: 0.11764706, g: 0.11764706, b: 0.11764706, a: 1} + m_BuildTextureStacks: [] + m_AllowLocking: 1 diff --git a/Assets/External/HighlightPlus/Demo/Materials/Wall.mat.meta b/Assets/External/HighlightPlus/Demo/Materials/Wall.mat.meta new file mode 100644 index 000000000..4eee5dfc2 --- /dev/null +++ b/Assets/External/HighlightPlus/Demo/Materials/Wall.mat.meta @@ -0,0 +1,5 @@ +fileFormatVersion: 2 +guid: 0062779a7c303451ab69ea6fc7893dc8 +NativeFormatImporter: + userData: + assetBundleName: diff --git a/Assets/External/HighlightPlus/Demo/Profiles.meta b/Assets/External/HighlightPlus/Demo/Profiles.meta new file mode 100644 index 000000000..bbe2259a9 --- /dev/null +++ b/Assets/External/HighlightPlus/Demo/Profiles.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 57d6d25f642564dc6a34dfaebd77480c +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/HighlightPlus/Demo/Profiles/Selected.asset b/Assets/External/HighlightPlus/Demo/Profiles/Selected.asset new file mode 100644 index 000000000..74a2f93bf --- /dev/null +++ b/Assets/External/HighlightPlus/Demo/Profiles/Selected.asset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c7ab8cc38c147a4b1b948a4da248ead9c6f29cdb32f2d3d9cc08b9cf6f04ba80 +size 2282 diff --git a/Assets/External/HighlightPlus/Demo/Profiles/Selected.asset.meta b/Assets/External/HighlightPlus/Demo/Profiles/Selected.asset.meta new file mode 100644 index 000000000..01010cdb1 --- /dev/null +++ b/Assets/External/HighlightPlus/Demo/Profiles/Selected.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e6e74f38237364260b68bef0cd1b8795 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/HighlightPlus/Demo/Profiles/SelectedAndHighlighted.asset b/Assets/External/HighlightPlus/Demo/Profiles/SelectedAndHighlighted.asset new file mode 100644 index 000000000..ad4daaa5f --- /dev/null +++ b/Assets/External/HighlightPlus/Demo/Profiles/SelectedAndHighlighted.asset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:998362e80389bf951f9c9eebbfc28e7f095a5c7e3e06f990e13427fca8215319 +size 2298 diff --git a/Assets/External/HighlightPlus/Demo/Profiles/SelectedAndHighlighted.asset.meta b/Assets/External/HighlightPlus/Demo/Profiles/SelectedAndHighlighted.asset.meta new file mode 100644 index 000000000..8235df4e7 --- /dev/null +++ b/Assets/External/HighlightPlus/Demo/Profiles/SelectedAndHighlighted.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 77128a10e40704023952e72c2046e685 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/HighlightPlus/Demo/Profiles/UniversalRenderPipelineGlobalSettings.asset b/Assets/External/HighlightPlus/Demo/Profiles/UniversalRenderPipelineGlobalSettings.asset new file mode 100644 index 000000000..04f89c3d8 --- /dev/null +++ b/Assets/External/HighlightPlus/Demo/Profiles/UniversalRenderPipelineGlobalSettings.asset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c1a6495398d12a382182677dd9d5a72ff963e66cd8b17fe3987f3f0e4b7d0eab +size 842 diff --git a/Assets/External/HighlightPlus/Demo/Profiles/UniversalRenderPipelineGlobalSettings.asset.meta b/Assets/External/HighlightPlus/Demo/Profiles/UniversalRenderPipelineGlobalSettings.asset.meta new file mode 100644 index 000000000..cd59a7f62 --- /dev/null +++ b/Assets/External/HighlightPlus/Demo/Profiles/UniversalRenderPipelineGlobalSettings.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 69dff4121b7484885be70422e6f3db1c +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/HighlightPlus/Demo/Scripts.meta b/Assets/External/HighlightPlus/Demo/Scripts.meta new file mode 100644 index 000000000..914c5e0f8 --- /dev/null +++ b/Assets/External/HighlightPlus/Demo/Scripts.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 0748038d48d9c48fc9f35f5d32dc985a +folderAsset: yes +timeCreated: 1544692068 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/HighlightPlus/Demo/Scripts/HitFxDemo.cs b/Assets/External/HighlightPlus/Demo/Scripts/HitFxDemo.cs new file mode 100644 index 000000000..b042385ef --- /dev/null +++ b/Assets/External/HighlightPlus/Demo/Scripts/HitFxDemo.cs @@ -0,0 +1,24 @@ +using UnityEngine; + +namespace HighlightPlus.Demos { + + public class HitFxDemo : MonoBehaviour { + + public AudioClip hitSound; + + void Update() { + + if (!InputProxy.GetMouseButtonDown(0)) return; + + Ray ray = Camera.main.ScreenPointToRay(InputProxy.mousePosition); + if (Physics.Raycast(ray, out RaycastHit hitInfo)) { + HighlightEffect effect = hitInfo.collider.GetComponent(); + if (effect == null) return; + AudioSource.PlayClipAtPoint(hitSound, hitInfo.point); + effect.HitFX(hitInfo.point); + } + + } + } + +} \ No newline at end of file diff --git a/Assets/External/HighlightPlus/Demo/Scripts/HitFxDemo.cs.meta b/Assets/External/HighlightPlus/Demo/Scripts/HitFxDemo.cs.meta new file mode 100644 index 000000000..5915f95d5 --- /dev/null +++ b/Assets/External/HighlightPlus/Demo/Scripts/HitFxDemo.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b2533fb71c5d747c58192bcd7d6cd276 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/HighlightPlus/Demo/Scripts/ManualSelectionDemo.cs b/Assets/External/HighlightPlus/Demo/Scripts/ManualSelectionDemo.cs new file mode 100644 index 000000000..4ef44f4a2 --- /dev/null +++ b/Assets/External/HighlightPlus/Demo/Scripts/ManualSelectionDemo.cs @@ -0,0 +1,28 @@ +using UnityEngine; +using HighlightPlus; + +namespace HighlightPlus.Demos { + + public class ManualSelectionDemo : MonoBehaviour { + + HighlightManager hm; + + public Transform objectToSelect; + + void Start() { + hm = Misc.FindObjectOfType(); + } + + void Update() { + if (Input.GetKeyDown(KeyCode.Alpha1)) { + hm.SelectObject(objectToSelect); + } + if (Input.GetKeyDown(KeyCode.Alpha2)) { + hm.ToggleObject(objectToSelect); + } + if (Input.GetKeyDown(KeyCode.Alpha3)) { + hm.UnselectObject(objectToSelect); + } + } + } +} diff --git a/Assets/External/HighlightPlus/Demo/Scripts/ManualSelectionDemo.cs.meta b/Assets/External/HighlightPlus/Demo/Scripts/ManualSelectionDemo.cs.meta new file mode 100644 index 000000000..37019e988 --- /dev/null +++ b/Assets/External/HighlightPlus/Demo/Scripts/ManualSelectionDemo.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9dfa112658ab74560a6251002174910b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/HighlightPlus/Demo/Scripts/SphereHighlightEventExample.cs b/Assets/External/HighlightPlus/Demo/Scripts/SphereHighlightEventExample.cs new file mode 100644 index 000000000..09300bdae --- /dev/null +++ b/Assets/External/HighlightPlus/Demo/Scripts/SphereHighlightEventExample.cs @@ -0,0 +1,40 @@ +using UnityEngine; +using HighlightPlus; + +namespace HighlightPlus.Demos { + + public class SphereHighlightEventExample : MonoBehaviour { + + HighlightEffect effect; + + void Start() { + effect = GetComponent (); + effect.OnObjectHighlightStart += ValidateHighlightObject; + } + + + bool ValidateHighlightObject(GameObject obj) { + // You can return false to cancel highlight on this object + return true; + } + + void HighlightStart () { + Debug.Log ("Gold sphere highlighted!"); + } + + void HighlightEnd () { + Debug.Log ("Gold sphere not highlighted!"); + } + + void Update() { + if (InputProxy.GetKeyDown ("space")) { + effect.HitFX (Color.white, 0.2f); + } + if (InputProxy.GetKeyDown("c")) { + effect.SetGlowColor(new Color(Random.value, Random.value, Random.value)); + } + + } + } + +} \ No newline at end of file diff --git a/Assets/External/HighlightPlus/Demo/Scripts/SphereHighlightEventExample.cs.meta b/Assets/External/HighlightPlus/Demo/Scripts/SphereHighlightEventExample.cs.meta new file mode 100644 index 000000000..1e37e8145 --- /dev/null +++ b/Assets/External/HighlightPlus/Demo/Scripts/SphereHighlightEventExample.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 36aa3934b8f65413188fabe723ded4da +timeCreated: 1544692056 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/HighlightPlus/Demo/Scripts/SphereSelectionEventsExample.cs b/Assets/External/HighlightPlus/Demo/Scripts/SphereSelectionEventsExample.cs new file mode 100644 index 000000000..76d0dd563 --- /dev/null +++ b/Assets/External/HighlightPlus/Demo/Scripts/SphereSelectionEventsExample.cs @@ -0,0 +1,26 @@ +using UnityEngine; +using HighlightPlus; + +namespace HighlightPlus.Demos { + + public class SphereSelectionEventsExample : MonoBehaviour { + + void Start() { + HighlightManager.instance.OnObjectSelected += OnObjectSelected; + HighlightManager.instance.OnObjectUnSelected += OnObjectUnSelected; + } + + bool OnObjectSelected(GameObject go) { + Debug.Log(go.name + " selected!"); + return true; + } + + bool OnObjectUnSelected(GameObject go) { + Debug.Log(go.name + " un-selected!"); + return true; + } + + + } + +} \ No newline at end of file diff --git a/Assets/External/HighlightPlus/Demo/Scripts/SphereSelectionEventsExample.cs.meta b/Assets/External/HighlightPlus/Demo/Scripts/SphereSelectionEventsExample.cs.meta new file mode 100644 index 000000000..e0e58b25f --- /dev/null +++ b/Assets/External/HighlightPlus/Demo/Scripts/SphereSelectionEventsExample.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: dbe1fcf5ef14345779fec3adb4479bc3 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/HighlightPlus/Demo/Sounds.meta b/Assets/External/HighlightPlus/Demo/Sounds.meta new file mode 100644 index 000000000..bca913cb5 --- /dev/null +++ b/Assets/External/HighlightPlus/Demo/Sounds.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 94906fdd445a54f2badd67d0d36a3d55 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/HighlightPlus/Demo/Sounds/metalHit.wav b/Assets/External/HighlightPlus/Demo/Sounds/metalHit.wav new file mode 100644 index 000000000..bf25959cf --- /dev/null +++ b/Assets/External/HighlightPlus/Demo/Sounds/metalHit.wav @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:560e60d8cbe474e5d5f1bc3ddd092879f1c1ec7d77f8bb4090a200f9943aecc2 +size 52260 diff --git a/Assets/External/HighlightPlus/Demo/Sounds/metalHit.wav.meta b/Assets/External/HighlightPlus/Demo/Sounds/metalHit.wav.meta new file mode 100644 index 000000000..a5b51f8f3 --- /dev/null +++ b/Assets/External/HighlightPlus/Demo/Sounds/metalHit.wav.meta @@ -0,0 +1,22 @@ +fileFormatVersion: 2 +guid: 9c2f7decce97e409a8ecfc1181535dc2 +AudioImporter: + externalObjects: {} + serializedVersion: 6 + defaultSettings: + loadType: 0 + sampleRateSetting: 0 + sampleRateOverride: 44100 + compressionFormat: 1 + quality: 1 + conversionMode: 0 + platformSettingOverrides: {} + forceToMono: 0 + normalize: 1 + preloadAudioData: 1 + loadInBackground: 0 + ambisonic: 0 + 3D: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/HighlightPlus/Demo/Textures.meta b/Assets/External/HighlightPlus/Demo/Textures.meta new file mode 100644 index 000000000..9442ca0c1 --- /dev/null +++ b/Assets/External/HighlightPlus/Demo/Textures.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 13783dcd57d4d4977b6fa46c1be6a21d +folderAsset: yes +timeCreated: 1542901861 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/HighlightPlus/Demo/Textures/floor_tiles_06_diff_1k.png b/Assets/External/HighlightPlus/Demo/Textures/floor_tiles_06_diff_1k.png new file mode 100644 index 000000000..0389f07a0 --- /dev/null +++ b/Assets/External/HighlightPlus/Demo/Textures/floor_tiles_06_diff_1k.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8837017e1bb1ede8aba5b3db83adcf96d7f73c2094ed2e31528f2aa4f1e12a28 +size 1535416 diff --git a/Assets/External/HighlightPlus/Demo/Textures/floor_tiles_06_diff_1k.png.meta b/Assets/External/HighlightPlus/Demo/Textures/floor_tiles_06_diff_1k.png.meta new file mode 100644 index 000000000..74e9e4544 --- /dev/null +++ b/Assets/External/HighlightPlus/Demo/Textures/floor_tiles_06_diff_1k.png.meta @@ -0,0 +1,68 @@ +fileFormatVersion: 2 +guid: 13ea04b5d27644ccba761e09947624da +timeCreated: 1542918613 +licenseType: Pro +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/HighlightPlus/Demo/Textures/floor_tiles_06_nor_1k.png b/Assets/External/HighlightPlus/Demo/Textures/floor_tiles_06_nor_1k.png new file mode 100644 index 000000000..3e9867346 --- /dev/null +++ b/Assets/External/HighlightPlus/Demo/Textures/floor_tiles_06_nor_1k.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7dde684d946e389da2afa5a92acba6ad4a303598b5773d26041448d1adf16532 +size 1081629 diff --git a/Assets/External/HighlightPlus/Demo/Textures/floor_tiles_06_nor_1k.png.meta b/Assets/External/HighlightPlus/Demo/Textures/floor_tiles_06_nor_1k.png.meta new file mode 100644 index 000000000..6ec877c1a --- /dev/null +++ b/Assets/External/HighlightPlus/Demo/Textures/floor_tiles_06_nor_1k.png.meta @@ -0,0 +1,68 @@ +fileFormatVersion: 2 +guid: d398536e88a354ed3b3825173a7e092a +timeCreated: 1542918925 +licenseType: Pro +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 0 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 1 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/HighlightPlus/Demo/Textures/overlaySampleTex.png b/Assets/External/HighlightPlus/Demo/Textures/overlaySampleTex.png new file mode 100644 index 000000000..c0a1bdd9f --- /dev/null +++ b/Assets/External/HighlightPlus/Demo/Textures/overlaySampleTex.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f7c0a871c9db8aba3947821a2988ddf3c4c793473f59cab9d3bd1601a1147ecf +size 60538 diff --git a/Assets/External/HighlightPlus/Demo/Textures/overlaySampleTex.png.meta b/Assets/External/HighlightPlus/Demo/Textures/overlaySampleTex.png.meta new file mode 100644 index 000000000..59a80b29c --- /dev/null +++ b/Assets/External/HighlightPlus/Demo/Textures/overlaySampleTex.png.meta @@ -0,0 +1,92 @@ +fileFormatVersion: 2 +guid: aeb7aff1c8c1241ee8bfdfc05e9a9e92 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: -1 + wrapV: -1 + wrapW: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + applyGammaDecoding: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/HighlightPlus/Demo/Textures/red_brick_plaster_patch_02_AO_1k.png b/Assets/External/HighlightPlus/Demo/Textures/red_brick_plaster_patch_02_AO_1k.png new file mode 100644 index 000000000..e27e8cd8d --- /dev/null +++ b/Assets/External/HighlightPlus/Demo/Textures/red_brick_plaster_patch_02_AO_1k.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:19d41e2d58e216a3e75a05051f9b847264022875c3b649772ffb906672d58482 +size 747498 diff --git a/Assets/External/HighlightPlus/Demo/Textures/red_brick_plaster_patch_02_AO_1k.png.meta b/Assets/External/HighlightPlus/Demo/Textures/red_brick_plaster_patch_02_AO_1k.png.meta new file mode 100644 index 000000000..d6db09d28 --- /dev/null +++ b/Assets/External/HighlightPlus/Demo/Textures/red_brick_plaster_patch_02_AO_1k.png.meta @@ -0,0 +1,68 @@ +fileFormatVersion: 2 +guid: 2fb008ff4214b4130a4f33cb385b6fa6 +timeCreated: 1542918613 +licenseType: Pro +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/HighlightPlus/Demo/Textures/red_brick_plaster_patch_02_Nor_1k.png b/Assets/External/HighlightPlus/Demo/Textures/red_brick_plaster_patch_02_Nor_1k.png new file mode 100644 index 000000000..2c50ba490 --- /dev/null +++ b/Assets/External/HighlightPlus/Demo/Textures/red_brick_plaster_patch_02_Nor_1k.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f05fc9b0167a37c1d759614b1493f5de4a5be907ee199491251175fa5b9e5c62 +size 1924950 diff --git a/Assets/External/HighlightPlus/Demo/Textures/red_brick_plaster_patch_02_Nor_1k.png.meta b/Assets/External/HighlightPlus/Demo/Textures/red_brick_plaster_patch_02_Nor_1k.png.meta new file mode 100644 index 000000000..9988515f4 --- /dev/null +++ b/Assets/External/HighlightPlus/Demo/Textures/red_brick_plaster_patch_02_Nor_1k.png.meta @@ -0,0 +1,68 @@ +fileFormatVersion: 2 +guid: ebcd1fde239ed44bc808f7c571d8a6a9 +timeCreated: 1542918741 +licenseType: Pro +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 0 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 1 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/HighlightPlus/Demo/Textures/red_brick_plaster_patch_02_bump_1k.png b/Assets/External/HighlightPlus/Demo/Textures/red_brick_plaster_patch_02_bump_1k.png new file mode 100644 index 000000000..a73c46ef3 --- /dev/null +++ b/Assets/External/HighlightPlus/Demo/Textures/red_brick_plaster_patch_02_bump_1k.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b72297c98f42d64a1ae047a17c837756d7d568254339136a7b42d4dccae16c45 +size 1013163 diff --git a/Assets/External/HighlightPlus/Demo/Textures/red_brick_plaster_patch_02_bump_1k.png.meta b/Assets/External/HighlightPlus/Demo/Textures/red_brick_plaster_patch_02_bump_1k.png.meta new file mode 100644 index 000000000..ebd4111ec --- /dev/null +++ b/Assets/External/HighlightPlus/Demo/Textures/red_brick_plaster_patch_02_bump_1k.png.meta @@ -0,0 +1,68 @@ +fileFormatVersion: 2 +guid: 4c5aaebe522004ddfbf0da83b147e635 +timeCreated: 1542918717 +licenseType: Pro +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 0 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 1 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/HighlightPlus/Demo/Textures/red_brick_plaster_patch_02_diff_1k.png b/Assets/External/HighlightPlus/Demo/Textures/red_brick_plaster_patch_02_diff_1k.png new file mode 100644 index 000000000..6a62431b7 --- /dev/null +++ b/Assets/External/HighlightPlus/Demo/Textures/red_brick_plaster_patch_02_diff_1k.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9f8a8ab1eeb6fc5ff392905646802d933b9a5cc7d4f80d88c95a1ddf5ee71e40 +size 2273043 diff --git a/Assets/External/HighlightPlus/Demo/Textures/red_brick_plaster_patch_02_diff_1k.png.meta b/Assets/External/HighlightPlus/Demo/Textures/red_brick_plaster_patch_02_diff_1k.png.meta new file mode 100644 index 000000000..025f6edbd --- /dev/null +++ b/Assets/External/HighlightPlus/Demo/Textures/red_brick_plaster_patch_02_diff_1k.png.meta @@ -0,0 +1,68 @@ +fileFormatVersion: 2 +guid: dc645ec4f4eba40dd8f0e8b0c21b99b0 +timeCreated: 1542918615 +licenseType: Pro +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/HighlightPlus/Demo/URP settings.meta b/Assets/External/HighlightPlus/Demo/URP settings.meta new file mode 100644 index 000000000..94662b28c --- /dev/null +++ b/Assets/External/HighlightPlus/Demo/URP settings.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6ec7787befe3645f7a6f10c3762dc3df +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/HighlightPlus/Demo/URP settings/HighlightPlusForwardRenderer.asset b/Assets/External/HighlightPlus/Demo/URP settings/HighlightPlusForwardRenderer.asset new file mode 100644 index 000000000..35a3e0aff --- /dev/null +++ b/Assets/External/HighlightPlus/Demo/URP settings/HighlightPlusForwardRenderer.asset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7362d1d18932fa5246a792e8a50ba32ee05704ba67a3ea23e1285e0411015339 +size 2858 diff --git a/Assets/External/HighlightPlus/Demo/URP settings/HighlightPlusForwardRenderer.asset.meta b/Assets/External/HighlightPlus/Demo/URP settings/HighlightPlusForwardRenderer.asset.meta new file mode 100644 index 000000000..69856d5fd --- /dev/null +++ b/Assets/External/HighlightPlus/Demo/URP settings/HighlightPlusForwardRenderer.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 47db18f3169384f6b87445e6447e189e +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/HighlightPlus/Demo/URP settings/UniversalRenderPipelineAsset.asset b/Assets/External/HighlightPlus/Demo/URP settings/UniversalRenderPipelineAsset.asset new file mode 100644 index 000000000..bbf672d1f --- /dev/null +++ b/Assets/External/HighlightPlus/Demo/URP settings/UniversalRenderPipelineAsset.asset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ef47905b8f79d07d2a46d236c711af80548b8694a9e234e43377c910d2e595db +size 4404 diff --git a/Assets/External/HighlightPlus/Demo/URP settings/UniversalRenderPipelineAsset.asset.meta b/Assets/External/HighlightPlus/Demo/URP settings/UniversalRenderPipelineAsset.asset.meta new file mode 100644 index 000000000..a3eec97c3 --- /dev/null +++ b/Assets/External/HighlightPlus/Demo/URP settings/UniversalRenderPipelineAsset.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7cb1de89cd1dc44c5be43a3f6664fb90 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/HighlightPlus/Documentation.meta b/Assets/External/HighlightPlus/Documentation.meta new file mode 100644 index 000000000..640bc9b1f --- /dev/null +++ b/Assets/External/HighlightPlus/Documentation.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d6b6ed63a44dd4e0b9e9de96d34d9930 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/HighlightPlus/Documentation/Documentation Online.url b/Assets/External/HighlightPlus/Documentation/Documentation Online.url new file mode 100644 index 000000000..e6b8bab6a --- /dev/null +++ b/Assets/External/HighlightPlus/Documentation/Documentation Online.url @@ -0,0 +1,2 @@ +[InternetShortcut] +URL=https://kronnect.com/guides/highlight-plus-introduction/ \ No newline at end of file diff --git a/Assets/External/HighlightPlus/Documentation/Documentation Online.url.meta b/Assets/External/HighlightPlus/Documentation/Documentation Online.url.meta new file mode 100644 index 000000000..5ab1ff6f1 --- /dev/null +++ b/Assets/External/HighlightPlus/Documentation/Documentation Online.url.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 05f4a9095f69c4ec6bc8fb97dcdbacfb +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/HighlightPlus/Documentation/Documentation PDF.url b/Assets/External/HighlightPlus/Documentation/Documentation PDF.url new file mode 100644 index 000000000..12209c0d5 --- /dev/null +++ b/Assets/External/HighlightPlus/Documentation/Documentation PDF.url @@ -0,0 +1,2 @@ +[InternetShortcut] +URL=https://www.dropbox.com/s/4nx9pv977wvvrv8/Documentation.pdf?dl=0 \ No newline at end of file diff --git a/Assets/External/HighlightPlus/Documentation/Documentation PDF.url.meta b/Assets/External/HighlightPlus/Documentation/Documentation PDF.url.meta new file mode 100644 index 000000000..9dced4a53 --- /dev/null +++ b/Assets/External/HighlightPlus/Documentation/Documentation PDF.url.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 6e3af944b32d74aaa9bd0bb1850bed61 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/HighlightPlus/Documentation/Kronnect Assets.pdf b/Assets/External/HighlightPlus/Documentation/Kronnect Assets.pdf new file mode 100644 index 0000000000000000000000000000000000000000..3d1fda1b222447cb369ced2c5ce46a87eb1b663f GIT binary patch literal 991708 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

xQd;1sdBYC!#M$b6IuyR(q{TlaR|_WS8`7T- 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

j(enGV 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ΜLP!8r# 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 }oJ1iR9 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

    tl2`eWhKuGiMReuMY%h)hr45y#p`QL9>5J1 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 occluders = new List(); + + void OnEnable () { + expandGeneralSettings = EditorPrefs.GetBool("HPGeneralSettings", true); + expandHighlightOptions = EditorPrefs.GetBool("HPHighlightOptions", true); + + profile = serializedObject.FindProperty("profile"); + profileSync = serializedObject.FindProperty("profileSync"); + camerasLayerMask = serializedObject.FindProperty("camerasLayerMask"); + ignoreObjectVisibility = serializedObject.FindProperty("ignoreObjectVisibility"); + reflectionProbes = serializedObject.FindProperty("reflectionProbes"); + optimizeSkinnedMesh = serializedObject.FindProperty("optimizeSkinnedMesh"); + sortingPriority = serializedObject.FindProperty("sortingPriority"); + normalsOption = serializedObject.FindProperty("normalsOption"); + GPUInstancing = serializedObject.FindProperty("GPUInstancing"); + ignore = serializedObject.FindProperty("ignore"); + effectGroup = serializedObject.FindProperty("effectGroup"); + effectGroupLayer = serializedObject.FindProperty("effectGroupLayer"); + effectNameFilter = serializedObject.FindProperty("effectNameFilter"); + effectNameUseRegEx = serializedObject.FindProperty("effectNameUseRegEx"); + combineMeshes = serializedObject.FindProperty("combineMeshes"); + alphaCutOff = serializedObject.FindProperty("alphaCutOff"); + cullBackFaces = serializedObject.FindProperty("cullBackFaces"); + padding = serializedObject.FindProperty("padding"); + highlighted = serializedObject.FindProperty("_highlighted"); + fadeInDuration = serializedObject.FindProperty("fadeInDuration"); + fadeOutDuration = serializedObject.FindProperty("fadeOutDuration"); + flipY = serializedObject.FindProperty("flipY"); + constantWidth = serializedObject.FindProperty("constantWidth"); + extraCoveragePixels = serializedObject.FindProperty("extraCoveragePixels"); + minimumWidth = serializedObject.FindProperty("minimumWidth"); + subMeshMask = serializedObject.FindProperty("subMeshMask"); + overlay = serializedObject.FindProperty("overlay"); + overlayMode = serializedObject.FindProperty("overlayMode"); + overlayColor = serializedObject.FindProperty("overlayColor"); + overlayAnimationSpeed = serializedObject.FindProperty("overlayAnimationSpeed"); + overlayMinIntensity = serializedObject.FindProperty("overlayMinIntensity"); + overlayBlending = serializedObject.FindProperty("overlayBlending"); + overlayTexture = serializedObject.FindProperty("overlayTexture"); + overlayTextureUVSpace = serializedObject.FindProperty("overlayTextureUVSpace"); + overlayTextureScale = serializedObject.FindProperty("overlayTextureScale"); + overlayTextureScrolling = serializedObject.FindProperty("overlayTextureScrolling"); + overlayVisibility = serializedObject.FindProperty("overlayVisibility"); + outline = serializedObject.FindProperty("outline"); + outlineColor = serializedObject.FindProperty("outlineColor"); + outlineColorStyle = serializedObject.FindProperty("outlineColorStyle"); + outlineGradient = serializedObject.FindProperty("outlineGradient"); + outlineGradientInLocalSpace = serializedObject.FindProperty("outlineGradientInLocalSpace"); + outlineWidth = serializedObject.FindProperty("outlineWidth"); + outlineBlurPasses = serializedObject.FindProperty("outlineBlurPasses"); + outlineQuality = serializedObject.FindProperty("outlineQuality"); + outlineEdgeMode = serializedObject.FindProperty("outlineEdgeMode"); + outlineEdgeThreshold = serializedObject.FindProperty("outlineEdgeThreshold"); + outlineSharpness = serializedObject.FindProperty("outlineSharpness"); + outlineDownsampling = serializedObject.FindProperty("outlineDownsampling"); + outlineVisibility = serializedObject.FindProperty("outlineVisibility"); + outlineBlitDebug = serializedObject.FindProperty("outlineBlitDebug"); + outlineIndependent = serializedObject.FindProperty("outlineIndependent"); + outlineContourStyle = serializedObject.FindProperty("outlineContourStyle"); + outlineMaskMode = serializedObject.FindProperty("outlineMaskMode"); + glow = serializedObject.FindProperty("glow"); + glowWidth = serializedObject.FindProperty("glowWidth"); + glowQuality = serializedObject.FindProperty("glowQuality"); + glowBlurMethod = serializedObject.FindProperty("glowBlurMethod"); + glowHQColor = serializedObject.FindProperty("glowHQColor"); + glowAnimationSpeed = serializedObject.FindProperty("glowAnimationSpeed"); + glowBlendPasses = serializedObject.FindProperty("glowBlendPasses"); + glowDithering = serializedObject.FindProperty("glowDithering"); + glowDitheringStyle = serializedObject.FindProperty("glowDitheringStyle"); + glowMagicNumber1 = serializedObject.FindProperty("glowMagicNumber1"); + glowMagicNumber2 = serializedObject.FindProperty("glowMagicNumber2"); + glowAnimationSpeed = serializedObject.FindProperty("glowAnimationSpeed"); + glowPasses = serializedObject.FindProperty("glowPasses"); + glowVisibility = serializedObject.FindProperty("glowVisibility"); + glowBlendMode = serializedObject.FindProperty("glowBlendMode"); + glowBlitDebug = serializedObject.FindProperty("glowBlitDebug"); + glowMaskMode = serializedObject.FindProperty("glowMaskMode"); + glowDownsampling = serializedObject.FindProperty("glowDownsampling"); + innerGlow = serializedObject.FindProperty("innerGlow"); + innerGlowColor = serializedObject.FindProperty("innerGlowColor"); + innerGlowWidth = serializedObject.FindProperty("innerGlowWidth"); + innerGlowBlendMode = serializedObject.FindProperty("innerGlowBlendMode"); + innerGlowVisibility = serializedObject.FindProperty("innerGlowVisibility"); + seeThrough = serializedObject.FindProperty("seeThrough"); + seeThroughOccluderMask = serializedObject.FindProperty("seeThroughOccluderMask"); + seeThroughOccluderMaskAccurate = serializedObject.FindProperty("seeThroughOccluderMaskAccurate"); + seeThroughOccluderThreshold = serializedObject.FindProperty("seeThroughOccluderThreshold"); + seeThroughOccluderCheckInterval = serializedObject.FindProperty("seeThroughOccluderCheckInterval"); + seeThroughOccluderCheckIndividualObjects = serializedObject.FindProperty("seeThroughOccluderCheckIndividualObjects"); + seeThroughDepthOffset = serializedObject.FindProperty("seeThroughDepthOffset"); + seeThroughMaxDepth = serializedObject.FindProperty("seeThroughMaxDepth"); + seeThroughIntensity = serializedObject.FindProperty("seeThroughIntensity"); + seeThroughTintAlpha = serializedObject.FindProperty("seeThroughTintAlpha"); + seeThroughTintColor = serializedObject.FindProperty("seeThroughTintColor"); + seeThroughNoise = serializedObject.FindProperty("seeThroughNoise"); + seeThroughBorder = serializedObject.FindProperty("seeThroughBorder"); + seeThroughBorderWidth = serializedObject.FindProperty("seeThroughBorderWidth"); + seeThroughBorderColor = serializedObject.FindProperty("seeThroughBorderColor"); + seeThroughOrdered = serializedObject.FindProperty("seeThroughOrdered"); + seeThroughBorderOnly = serializedObject.FindProperty("seeThroughBorderOnly"); + seeThroughTexture = serializedObject.FindProperty("seeThroughTexture"); + seeThroughTextureScale = serializedObject.FindProperty("seeThroughTextureScale"); + seeThroughTextureUVSpace = serializedObject.FindProperty("seeThroughTextureUVSpace"); + seeThroughChildrenSortingMode = serializedObject.FindProperty("seeThroughChildrenSortingMode"); + targetFX = serializedObject.FindProperty("targetFX"); + targetFXTexture = serializedObject.FindProperty("targetFXTexture"); + targetFXRotationSpeed = serializedObject.FindProperty("targetFXRotationSpeed"); + targetFXInitialScale = serializedObject.FindProperty("targetFXInitialScale"); + targetFXEndScale = serializedObject.FindProperty("targetFXEndScale"); + targetFXScaleToRenderBounds = serializedObject.FindProperty("targetFXScaleToRenderBounds"); + targetFXUseEnclosingBounds = serializedObject.FindProperty("targetFXUseEnclosingBounds"); + targetFXOffset = serializedObject.FindProperty("targetFXOffset"); + targetFXAlignToGround = serializedObject.FindProperty("targetFXAlignToGround"); + targetFXFadePower = serializedObject.FindProperty("targetFXFadePower"); + targetFXGroundMaxDistance = serializedObject.FindProperty("targetFXGroundMaxDistance"); + targetFXGroundLayerMask = serializedObject.FindProperty("targetFXGroundLayerMask"); + targetFXColor = serializedObject.FindProperty("targetFXColor"); + targetFXCenter = serializedObject.FindProperty("targetFXCenter"); + targetFXTransitionDuration = serializedObject.FindProperty("targetFXTransitionDuration"); + targetFXStayDuration = serializedObject.FindProperty("targetFXStayDuration"); + targetFXVisibility = serializedObject.FindProperty("targetFXVisibility"); + + iconFX = serializedObject.FindProperty("iconFX"); + iconFXCenter = serializedObject.FindProperty("iconFXCenter"); + iconFXMesh = serializedObject.FindProperty("iconFXMesh"); + iconFXLightColor = serializedObject.FindProperty("iconFXLightColor"); + iconFXDarkColor = serializedObject.FindProperty("iconFXDarkColor"); + iconFXRotationSpeed = serializedObject.FindProperty("iconFXRotationSpeed"); + iconFXAnimationOption = serializedObject.FindProperty("iconFXAnimationOption"); + iconFXAnimationAmount = serializedObject.FindProperty("iconFXAnimationAmount"); + iconFXAnimationSpeed = serializedObject.FindProperty("iconFXAnimationSpeed"); + iconFXScale = serializedObject.FindProperty("iconFXScale"); + iconFXScaleToRenderBounds = serializedObject.FindProperty("iconFXScaleToRenderBounds"); + iconFXOffset = serializedObject.FindProperty("iconFXOffset"); + iconFXTransitionDuration = serializedObject.FindProperty("iconFXTransitionDuration"); + iconFXStayDuration = serializedObject.FindProperty("iconFXStayDuration"); + + hitFxInitialIntensity = serializedObject.FindProperty("hitFxInitialIntensity"); + hitFxMode = serializedObject.FindProperty("hitFxMode"); + hitFxFadeOutDuration = serializedObject.FindProperty("hitFxFadeOutDuration"); + hitFxColor = serializedObject.FindProperty("hitFxColor"); + hitFxRadius = serializedObject.FindProperty("hitFxRadius"); + cameraDistanceFade = serializedObject.FindProperty("cameraDistanceFade"); + cameraDistanceFadeNear = serializedObject.FindProperty("cameraDistanceFadeNear"); + cameraDistanceFadeFar = serializedObject.FindProperty("cameraDistanceFadeFar"); + + thisEffect = (HighlightEffect)target; + thisEffect.Refresh(); + } + + + private void OnDisable () { + EditorPrefs.SetBool(HP_GENERAL_SETTINGS, expandGeneralSettings); + EditorPrefs.SetBool(HP_HIGHLIGHT_OPTIONS, expandHighlightOptions); + } + + + public override void OnInspectorGUI () { + + forceRefresh = false; + EditorGUILayout.Separator(); + + // URP setup helpers + pipe = GraphicsSettings.currentRenderPipeline as UniversalRenderPipelineAsset; + if (pipe == null) { + EditorGUILayout.HelpBox("You must assign the Universal Rendering Pipeline asset in Project Settings / Graphics. Then, add the Highlight Plus Scriptable Render Feature to the list of Renderer Features of the Forward Renderer.", MessageType.Error); + if (GUILayout.Button("Watch Setup Video Tutorial")) { + Application.OpenURL("https://youtu.be/wXNS3gaBxHE"); + } + return; + } + + if (!HighlightPlusRenderPassFeature.installed) { + EditorGUILayout.HelpBox("Highlight Plus Render Feature must be added to the list of features of the Forward Renderer in the Universal Rendering Pipeline asset.", MessageType.Warning); + if (GUILayout.Button("Watch Setup Video Tutorial")) { + Application.OpenURL("https://youtu.be/wXNS3gaBxHE"); + } + if (GUILayout.Button("Go to Universal Rendering Pipeline Asset")) { + Selection.activeObject = pipe; + } + EditorGUILayout.Separator(); + } + + bool isManager = IsDefaultEffectUsedByManager(); + serializedObject.Update(); + + bool isMeshObject = !thisEffect.spriteMode; + + if (foldoutBold == null) { + foldoutBold = new GUIStyle(EditorStyles.foldout); + foldoutBold.fontStyle = FontStyle.Bold; + } + + EditorGUILayout.BeginHorizontal(); + HighlightProfile prevProfile = (HighlightProfile)profile.objectReferenceValue; + EditorGUILayout.PropertyField(profile, new GUIContent("Profile", "Create or load stored presets.")); + if (profile.objectReferenceValue != null) { + + if (prevProfile != profile.objectReferenceValue) { + profileChanged = true; + } + + EditorGUILayout.EndHorizontal(); + EditorGUILayout.BeginHorizontal(); + GUILayout.Label("", GUILayout.Width(EditorGUIUtility.labelWidth)); + if (GUILayout.Button(new GUIContent("Create", "Creates a new profile which is a copy of the current settings."), GUILayout.Width(60))) { + CreateProfile(); + profileChanged = false; + enableProfileApply = false; + GUIUtility.ExitGUI(); + return; + } + if (GUILayout.Button(new GUIContent("Load", "Updates settings with the profile configuration."), GUILayout.Width(60))) { + profileChanged = true; + } + GUI.enabled = enableProfileApply; + if (GUILayout.Button(new GUIContent("Save", "Updates profile configuration with changes in this inspector."), GUILayout.Width(60))) { + enableProfileApply = false; + profileChanged = false; + thisEffect.profile.Save(thisEffect); + EditorUtility.SetDirty(thisEffect.profile); + GUIUtility.ExitGUI(); + return; + } + GUI.enabled = true; + if (GUILayout.Button(new GUIContent("Locate", "Finds the profile in the project"), GUILayout.Width(60))) { + if (thisEffect.profile != null) { + Selection.activeObject = thisEffect.profile; + EditorGUIUtility.PingObject(thisEffect.profile); + } + } + EditorGUILayout.EndHorizontal(); + EditorGUILayout.PropertyField(profileSync, new GUIContent("Sync With Profile", "If disabled, profile settings will only be loaded when clicking 'Load' which allows you to customize settings after loading a profile and keep those changes.")); + EditorGUILayout.BeginHorizontal(); + } + else { + if (GUILayout.Button(new GUIContent("Create", "Creates a new profile which is a copy of the current settings."), GUILayout.Width(60))) { + CreateProfile(); + GUIUtility.ExitGUI(); + return; + } + } + EditorGUILayout.EndHorizontal(); + + + if (isManager) { + EditorGUILayout.HelpBox("These are default settings for highlighted objects. If the highlighted object already has a Highlight Effect component, those properties will be used.", MessageType.Info); + } + + expandGeneralSettings = EditorGUILayout.Foldout(expandGeneralSettings, "General Settings", true, foldoutBold); + if (expandGeneralSettings) { + DrawLayerMaskField(camerasLayerMask); + EditorGUILayout.PropertyField(ignoreObjectVisibility); + if (thisEffect.staticChildren) { + EditorGUILayout.HelpBox("This GameObject or one of its children is marked as static. If highlight is not visible, add a MeshCollider to them (the MeshCollider can be disabled).", MessageType.Warning); + } + + EditorGUILayout.PropertyField(reflectionProbes); + + if (isMeshObject) { + EditorGUILayout.PropertyField(normalsOption); + } + EditorGUILayout.PropertyField(optimizeSkinnedMesh); + if (isMeshObject || optimizeSkinnedMesh.boolValue) { + EditorGUILayout.PropertyField(GPUInstancing); + } + EditorGUILayout.PropertyField(sortingPriority); + EditorGUILayout.Separator(); + } + + if (!isManager) { + EditorGUILayout.LabelField("State", EditorStyles.boldLabel); + if (isManager) { + EditorGUILayout.LabelField(new GUIContent("Highlighted", "Highlight state (controlled by Highlight Manager)."), new GUIContent(thisEffect.highlighted.ToString())); + } + else { + EditorGUILayout.PropertyField(highlighted); + } + EditorGUILayout.LabelField(new GUIContent("Selected", "Selection state (used by Highlight Trigger or Manager) when using multi-selection option."), new GUIContent(thisEffect.isSelected.ToString())); + EditorGUILayout.Separator(); + } + + EditorGUILayout.BeginHorizontal(); + expandHighlightOptions = EditorGUILayout.Foldout(expandHighlightOptions, "Highlight Options", true, foldoutBold); + if (!isMeshObject) { + GUILayout.Label(new GUIContent("SPRITE MODE", "Highlight Effect over sprites. Some effects are not available in sprite mode"), EditorStyles.centeredGreyMiniLabel); + } + if (GUILayout.Button("Help", GUILayout.Width(50))) { + EditorUtility.DisplayDialog("Quick Help", "Move the mouse over a setting for a short description.\n\nVisit kronnect.com's forum for support, questions and more cool assets.\n\nIf you like Highlight Plus please rate it or leave a review on the Asset Store! Thanks.", "Ok"); + } + EditorGUILayout.EndHorizontal(); + if (expandHighlightOptions) { + EditorGUI.BeginChangeCheck(); + if (!isManager) { + EditorGUILayout.PropertyField(ignore, new GUIContent("Ignore", "This object won't be highlighted.")); + } + if (!ignore.boolValue) { + EditorGUILayout.PropertyField(effectGroup, new GUIContent("Include", "Additional objects to highlight. Pro tip: when highlighting multiple objects at the same time include them in the same layer or under the same parent.")); + if (effectGroup.intValue == (int)TargetOptions.LayerInScene || effectGroup.intValue == (int)TargetOptions.LayerInChildren) { + EditorGUI.indentLevel++; + DrawLayerMaskField(effectGroupLayer, "Layer"); + EditorGUI.indentLevel--; + } + if (effectGroup.intValue != (int)TargetOptions.OnlyThisObject && effectGroup.intValue != (int)TargetOptions.Scripting) { + EditorGUI.indentLevel++; + EditorGUILayout.PropertyField(effectNameFilter, new GUIContent("Object Name Filter")); + if (effectNameUseRegEx.boolValue && !string.IsNullOrEmpty(thisEffect.lastRegExError)) { + EditorGUILayout.HelpBox(thisEffect.lastRegExError, MessageType.Error); + } + EditorGUILayout.BeginHorizontal(); + EditorGUILayout.PropertyField(effectNameUseRegEx, new GUIContent("Use Regular Expressions", "If enabled, the Object Name Filter is a regular expression.")); + if (effectNameUseRegEx.boolValue) { + if (GUILayout.Button("Help", GUILayout.Width(50))) { + if (EditorUtility.DisplayDialog("Regular Expressions", "Check the online Microsoft documentation for regular expressions syntax. You can also use ChatGPT to obtain regular expressions patterns. Some examples:\n^[^A].* will match any name not starting with an A\n.*[^\\d]$ matches any name not ending in a number.", "Online Reference", "Close")) { + Application.OpenURL("https://learn.microsoft.com/en-us/dotnet/standard/base-types/regular-expression-language-quick-reference"); + } + } + } + EditorGUILayout.EndHorizontal(); + if (isMeshObject) { + EditorGUILayout.BeginHorizontal(); + EditorGUILayout.PropertyField(combineMeshes); + if (combineMeshes.boolValue) { + if (GUILayout.Button("Refresh", GUILayout.Width(70))) { + thisEffect.Refresh(true); + } + } + EditorGUILayout.EndHorizontal(); + if (combineMeshes.boolValue) { + string warning = thisEffect.ValidateCombineMeshes(); + if (!string.IsNullOrEmpty(warning)) { + EditorGUILayout.HelpBox(warning, MessageType.Warning); + } + } + } + EditorGUI.indentLevel--; + } + EditorGUILayout.PropertyField(alphaCutOff, new GUIContent("Alpha Cut Off", "Only for semi-transparent objects. Leave this to zero for normal opaque objects.")); + if (isMeshObject) { + EditorGUILayout.PropertyField(cullBackFaces); + } + EditorGUILayout.PropertyField(padding); + EditorGUILayout.PropertyField(fadeInDuration); + EditorGUILayout.PropertyField(fadeOutDuration); + EditorGUILayout.PropertyField(cameraDistanceFade); + if (cameraDistanceFade.boolValue) { + EditorGUI.indentLevel++; + EditorGUILayout.PropertyField(cameraDistanceFadeNear, new GUIContent("Near Distance")); + EditorGUILayout.PropertyField(cameraDistanceFadeFar, new GUIContent("Far Distance")); + EditorGUI.indentLevel--; + } + if ((outlineQuality.intValue == (int)QualityLevel.Highest && outline.floatValue > 0) || (glowQuality.intValue == (int)QualityLevel.Highest && glow.floatValue > 0)) { + GUI.enabled = true; + } + else { + GUI.enabled = false; + } + EditorGUILayout.PropertyField(flipY, new GUIContent("Flip Y Fix", "Flips outline/glow effect to fix bug introduced in Unity 2019.1.0 when VR is enabled.")); + GUI.enabled = true; + if (glowQuality.intValue != (int)QualityLevel.Highest || outlineQuality.intValue != (int)QualityLevel.Highest) { + EditorGUILayout.PropertyField(constantWidth, new GUIContent("Constant Width", "Compensates outline/glow width with depth increase.")); + if (!constantWidth.boolValue) { + EditorGUI.indentLevel++; + EditorGUILayout.PropertyField(minimumWidth); + EditorGUI.indentLevel--; + } + } + if (isMeshObject) { + EditorGUILayout.PropertyField(subMeshMask); + EditorGUILayout.PropertyField(outlineIndependent, new GUIContent("Independent", "Do not combine outline or glow with other highlighted objects.")); + } + } + } + + if (!ignore.boolValue) { + EditorGUILayout.Separator(); + EditorGUILayout.LabelField("Effects", EditorStyles.boldLabel); + + EditorGUILayout.BeginVertical(GUI.skin.box); + DrawSectionField(outline, "Outline", outline.floatValue > 0); + if (outline.floatValue > 0) { + EditorGUI.indentLevel++; + if (isMeshObject) { + EditorGUILayout.BeginHorizontal(); + QualityPropertyField(outlineQuality); + if (outlineQuality.intValue == (int)QualityLevel.Highest) { + GUILayout.Label("(Screen-Space Effect)"); + } + else { + GUILayout.Label("(Mesh-based Effect)"); + } + EditorGUILayout.EndHorizontal(); + } + CheckVRSupport(outlineQuality.intValue); + if (outlineQuality.intValue == (int)QualityLevel.Highest) { + EditorGUILayout.PropertyField(outlineEdgeMode, new GUIContent("Edges")); + if (outlineEdgeMode.intValue == (int)OutlineEdgeMode.Any) { + EditorGUILayout.PropertyField(outlineEdgeThreshold, new GUIContent("Edge Detection Threshold")); + } + EditorGUILayout.PropertyField(outlineContourStyle, new GUIContent("Contour Style")); + EditorGUILayout.PropertyField(outlineWidth, new GUIContent("Width")); + EditorGUILayout.PropertyField(outlineColor, new GUIContent("Color")); + EditorGUILayout.PropertyField(outlineBlurPasses, new GUIContent("Blur Passes")); + EditorGUILayout.PropertyField(outlineSharpness, new GUIContent("Sharpness")); + } + else { + EditorGUILayout.PropertyField(outlineWidth, new GUIContent("Width")); + EditorGUILayout.PropertyField(outlineColorStyle, new GUIContent("Color Style")); + switch ((ColorStyle)outlineColorStyle.intValue) { + case ColorStyle.SingleColor: + EditorGUILayout.PropertyField(outlineColor, new GUIContent("Color")); + break; + case ColorStyle.Gradient: + EditorGUI.indentLevel++; + EditorGUILayout.PropertyField(outlineGradient, new GUIContent("Gradient")); + EditorGUILayout.PropertyField(outlineGradientInLocalSpace, new GUIContent("In Local Space")); + EditorGUI.indentLevel--; + break; + } + } + if (outlineQuality.intValue == (int)QualityLevel.Highest && outlineEdgeMode.intValue != (int)OutlineEdgeMode.Any) { + CheckDepthTextureSupport("Highest Quality"); + EditorGUILayout.PropertyField(outlineDownsampling, new GUIContent("Downsampling")); + } + + if (outlineQuality.intValue == (int)QualityLevel.Highest && (glow.floatValue > 0 && glowQuality.intValue == (int)QualityLevel.Highest)) { + outlineVisibility.intValue = glowVisibility.intValue; + } + EditorGUILayout.PropertyField(outlineVisibility, new GUIContent("Visibility")); + if (outlineQuality.intValue == (int)QualityLevel.Highest) { + EditorGUILayout.PropertyField(outlineBlitDebug, new GUIContent("Debug View", "Shows the blitting rectangle on the screen.")); + if (!Application.isPlaying && outlineBlitDebug.boolValue && (!HighlightPlusRenderPassFeature.showingInEditMode || !highlighted.boolValue)) { + EditorGUILayout.HelpBox("Enable \"Preview In Editor\" in the Highlight Render Feature and \"Highlighted\" to display the outline Debug View.", MessageType.Warning); + } + EditorGUILayout.PropertyField(extraCoveragePixels); + } + EditorGUILayout.PropertyField(outlineMaskMode, new GUIContent("Mask Mode")); + EditorGUI.indentLevel--; + } + EditorGUILayout.EndVertical(); + + EditorGUILayout.BeginVertical(GUI.skin.box); + DrawSectionField(glow, "Outer Glow", glow.floatValue > 0); + if (glow.floatValue > 0) { + EditorGUI.indentLevel++; + if (isMeshObject) { + EditorGUILayout.BeginHorizontal(); + QualityPropertyField(glowQuality); + if (glowQuality.intValue == (int)QualityLevel.Highest) { + GUILayout.Label("(Screen-Space Effect)"); + } + else { + GUILayout.Label("(Mesh-based Effect)"); + } + EditorGUILayout.EndHorizontal(); + } + CheckVRSupport(glowQuality.intValue); + if (glowQuality.intValue == (int)QualityLevel.Highest) { + CheckDepthTextureSupport("Highest Quality"); + EditorGUILayout.PropertyField(outlineContourStyle, new GUIContent("Contour Style")); + EditorGUILayout.PropertyField(glowWidth, new GUIContent("Width")); + EditorGUILayout.PropertyField(glowHQColor, new GUIContent("Color")); + EditorGUILayout.PropertyField(glowBlurMethod, new GUIContent("Blur Method", "Gaussian: better quality. Kawase: faster.")); + EditorGUILayout.PropertyField(glowDownsampling, new GUIContent("Downsampling")); + } + else { + EditorGUILayout.PropertyField(glowWidth, new GUIContent("Width")); + } + EditorGUILayout.PropertyField(glowMaskMode, new GUIContent("Mask Mode")); + if (glowQuality.intValue == (int)QualityLevel.Highest) { + EditorGUILayout.PropertyField(glowVisibility, new GUIContent("Visibility")); + EditorGUILayout.PropertyField(glowBlendMode, new GUIContent("Blend Mode")); + } + else { + EditorGUILayout.PropertyField(glowVisibility, new GUIContent("Visibility")); + EditorGUILayout.PropertyField(glowDithering, new GUIContent("Dithering")); + if (glowDithering.floatValue > 0) { + EditorGUI.indentLevel++; + EditorGUILayout.PropertyField(glowDitheringStyle, new GUIContent("Style")); + if (glowDitheringStyle.intValue == (int)GlowDitheringStyle.Pattern) { + EditorGUILayout.PropertyField(glowMagicNumber1, new GUIContent("Magic Number 1")); + EditorGUILayout.PropertyField(glowMagicNumber2, new GUIContent("Magic Number 2")); + } + EditorGUI.indentLevel--; + } + EditorGUILayout.PropertyField(glowBlendPasses, new GUIContent("Blend Passes")); + if (!glowBlendPasses.boolValue) { + if (thisEffect.glowPasses != null) { + for (int k = 0; k < thisEffect.glowPasses.Length - 1; k++) { + if (thisEffect.glowPasses[k].offset > thisEffect.glowPasses[k + 1].offset) { + EditorGUILayout.HelpBox("Glow pass " + k + " has a greater offset than the next one. Reduce it to ensure the next glow pass is visible.", MessageType.Warning); + } + } + } + } + EditorGUILayout.PropertyField(glowPasses, true); + } + EditorGUILayout.PropertyField(glowAnimationSpeed, new GUIContent("Animation Speed")); + if (glowQuality.intValue == (int)QualityLevel.Highest) { + EditorGUILayout.PropertyField(glowBlitDebug, new GUIContent("Debug View", "Shows the blitting rectangle on the screen.")); + if (!Application.isPlaying && glowBlitDebug.boolValue && (!HighlightPlusRenderPassFeature.showingInEditMode || !highlighted.boolValue)) { + EditorGUILayout.HelpBox("Enable \"Preview In Editor\" in the Highlight Render Feature and \"Highlighted\" to display the glow Debug View.", MessageType.Warning); + } + } + EditorGUI.indentLevel--; + } + EditorGUILayout.EndVertical(); + + if (isMeshObject) { + EditorGUILayout.BeginVertical(GUI.skin.box); + DrawSectionField(innerGlow, "Inner Glow", innerGlow.floatValue > 0); + if (innerGlow.floatValue > 0) { + EditorGUI.indentLevel++; + EditorGUILayout.PropertyField(innerGlowColor, new GUIContent("Color")); + EditorGUILayout.PropertyField(innerGlowWidth, new GUIContent("Width")); + EditorGUILayout.PropertyField(innerGlowBlendMode, new GUIContent("Blend Mode")); + EditorGUILayout.PropertyField(innerGlowVisibility, new GUIContent("Visibility")); + EditorGUI.indentLevel--; + } + EditorGUILayout.EndVertical(); + } + + EditorGUILayout.BeginVertical(GUI.skin.box); + DrawSectionField(overlay, "Overlay", overlay.floatValue > 0); + if (overlay.floatValue > 0) { + EditorGUI.indentLevel++; + EditorGUILayout.PropertyField(overlayMode, new GUIContent("Mode")); + EditorGUILayout.PropertyField(overlayColor, new GUIContent("Color")); + EditorGUILayout.PropertyField(overlayTexture, new GUIContent("Texture")); + if (overlayTexture.objectReferenceValue != null) { + EditorGUILayout.PropertyField(overlayTextureUVSpace, new GUIContent("UV Space")); + EditorGUILayout.PropertyField(overlayTextureScale, new GUIContent("Texture Scale")); + if ((TextureUVSpace)overlayTextureUVSpace.intValue != TextureUVSpace.Triplanar) { + EditorGUILayout.PropertyField(overlayTextureScrolling, new GUIContent("Texture Scrolling")); + } + } + EditorGUILayout.PropertyField(overlayBlending, new GUIContent("Blending")); + EditorGUILayout.PropertyField(overlayMinIntensity, new GUIContent("Min Intensity")); + EditorGUILayout.PropertyField(overlayAnimationSpeed, new GUIContent("Animation Speed")); + EditorGUILayout.PropertyField(overlayVisibility, new GUIContent("Visibility")); + EditorGUI.indentLevel--; + } + EditorGUILayout.EndVertical(); + + EditorGUILayout.BeginVertical(GUI.skin.box); + DrawSectionField(targetFX, "Target", targetFX.boolValue); + if (targetFX.boolValue) { + EditorGUI.indentLevel++; + EditorGUILayout.PropertyField(targetFXTexture, new GUIContent("Texture", "The texture that contains the shape to be drawn over the highlighted object.")); + EditorGUILayout.PropertyField(targetFXColor, new GUIContent("Color")); + EditorGUILayout.PropertyField(targetFXUseEnclosingBounds, new GUIContent("Use Enclosing Bounds")); + if (!targetFXUseEnclosingBounds.boolValue) { + EditorGUILayout.PropertyField(targetFXCenter, new GUIContent("Center", "Optionally assign a transform. Target will follow transform. If the object is skinned, you can also assign a bone to reflect currenct animation position.")); + } + EditorGUILayout.PropertyField(targetFXOffset, new GUIContent("Offset")); + EditorGUILayout.PropertyField(targetFXRotationSpeed, new GUIContent("Rotation Speed")); + EditorGUILayout.PropertyField(targetFXInitialScale, new GUIContent("Initial Scale")); + EditorGUILayout.PropertyField(targetFXEndScale, new GUIContent("End Scale")); + EditorGUILayout.PropertyField(targetFXScaleToRenderBounds, new GUIContent("Scale To Object Bounds")); + EditorGUILayout.PropertyField(targetFXAlignToGround, new GUIContent("Align To Ground")); + if (targetFXAlignToGround.boolValue) { + CheckDepthTextureSupport("Align To Ground option"); + EditorGUI.indentLevel++; + if (thisEffect.includedObjectsCount > 1 && targetFXCenter.objectReferenceValue == null && effectGroup.intValue != (int)TargetOptions.OnlyThisObject) { + EditorGUILayout.HelpBox("It's recommended to specify in the 'Center' property above, the specific object used to position the target fx image (will be rendered under that object on the ground).", MessageType.Info); + } + EditorGUILayout.PropertyField(targetFXGroundMaxDistance, new GUIContent("Ground Max Distance")); + DrawLayerMaskField(targetFXGroundLayerMask, "Ground Layer Mask"); + if ((targetFXGroundLayerMask.intValue & (1 << thisEffect.gameObject.layer)) != 0) { + EditorGUILayout.HelpBox("Ground Layer Mask should not include this object layer.", MessageType.Warning); + } + else { + if (thisEffect.alignToGroundTried && !thisEffect.alignToGroundHitGood) { + EditorGUILayout.HelpBox("The Target Fx image is not being aligned because the ground was not found. Make sure it has a collider and verify the ground layer mask.", MessageType.Warning); + } + } + EditorGUILayout.PropertyField(targetFXFadePower, new GUIContent("Fade Power")); + EditorGUI.indentLevel--; + } + EditorGUILayout.PropertyField(targetFXTransitionDuration, new GUIContent("Transition Duration")); + EditorGUILayout.PropertyField(targetFXStayDuration, new GUIContent("Stay Duration")); + EditorGUILayout.PropertyField(targetFXVisibility, new GUIContent("Visibility")); + EditorGUI.indentLevel--; + } + EditorGUILayout.EndVertical(); + } + + EditorGUILayout.BeginVertical(GUI.skin.box); + DrawSectionField(iconFX, "Icon", iconFX.boolValue); + if (iconFX.boolValue) { + EditorGUI.indentLevel++; + EditorGUILayout.PropertyField(iconFXMesh, new GUIContent("Mesh")); + EditorGUILayout.PropertyField(iconFXLightColor, new GUIContent("Light Color")); + EditorGUILayout.PropertyField(iconFXDarkColor, new GUIContent("Dark Color")); + EditorGUILayout.PropertyField(iconFXCenter, new GUIContent("Center", "Optionally assign a transform. Icon will follow transform. If the object is skinned, you can also assign a bone to reflect currenct animation position.")); + EditorGUILayout.PropertyField(iconFXOffset, new GUIContent("Offset")); + EditorGUILayout.PropertyField(iconFXRotationSpeed, new GUIContent("Rotation Speed")); + EditorGUILayout.PropertyField(iconFXAnimationOption, new GUIContent("Animation")); + if (iconFXAnimationOption.intValue != 0) { + EditorGUI.indentLevel++; + EditorGUILayout.PropertyField(iconFXAnimationAmount, new GUIContent("Amount")); + EditorGUILayout.PropertyField(iconFXAnimationSpeed, new GUIContent("Speed")); + EditorGUI.indentLevel--; + } + EditorGUILayout.PropertyField(iconFXScale, new GUIContent("Scale")); + EditorGUILayout.PropertyField(iconFXScaleToRenderBounds, new GUIContent("Scale To Object Bounds")); + EditorGUILayout.PropertyField(iconFXTransitionDuration, new GUIContent("Transition Duration")); + EditorGUILayout.PropertyField(iconFXStayDuration, new GUIContent("Stay Duration")); + EditorGUI.indentLevel--; + } + EditorGUILayout.EndVertical(); + + if (isMeshObject) { + + EditorGUILayout.BeginVertical(GUI.skin.box); + EditorGUILayout.PropertyField(seeThrough); + if (seeThrough.intValue != (int)SeeThroughMode.Never) { + if (isManager && seeThrough.intValue == (int)SeeThroughMode.AlwaysWhenOccluded) { + EditorGUILayout.HelpBox("This option is not valid in Manager.\nTo make an object always visible add a Highlight Effect component to the gameobject and enable this option on the component.", MessageType.Error); + } + EditorGUI.indentLevel++; + EditorGUILayout.PropertyField(seeThroughOccluderMask, new GUIContent("Occluder Layer")); + if (seeThroughOccluderMask.intValue > 0) { + EditorGUI.indentLevel++; + EditorGUILayout.PropertyField(seeThroughOccluderMaskAccurate, new GUIContent("Accurate")); + EditorGUILayout.PropertyField(seeThroughOccluderThreshold, new GUIContent("Radius Threshold", "Multiplier to the object bounds. Making the bounds smaller prevents false occlusion tests.")); + EditorGUILayout.PropertyField(seeThroughOccluderCheckInterval, new GUIContent("Check Interval", "Interval in seconds between occlusion tests.")); + EditorGUILayout.PropertyField(seeThroughOccluderCheckIndividualObjects, new GUIContent("Check Individual Objects")); + if (!showCurrentOccluders && Camera.main != null) { + GUI.enabled = Application.isPlaying; + EditorGUILayout.BeginHorizontal(); + GUILayout.Label("", GUILayout.Width(30)); + if (GUILayout.Button(" Show Current Occluders (only during Play Mode) ")) { + showCurrentOccluders = true; + } + GUILayout.FlexibleSpace(); + EditorGUILayout.EndHorizontal(); + GUI.enabled = true; + } + if (showCurrentOccluders) { + thisEffect.GetOccluders(Camera.main, occluders); + int count = occluders != null ? occluders.Count : 0; + if (count == 0) { + EditorGUILayout.LabelField("No occluders found (using main camera)"); + } + else { + EditorGUILayout.LabelField("Occluders found (using main camera):"); + for (int k = 0; k < count; k++) { + if (occluders[k] == null) continue; + EditorGUILayout.BeginHorizontal(); + EditorGUILayout.LabelField(occluders[k].name); + if (GUILayout.Button("Select")) { + Selection.activeGameObject = occluders[k].gameObject; + GUIUtility.ExitGUI(); + } + EditorGUILayout.EndHorizontal(); + } + } + } + EditorGUI.indentLevel--; + } + EditorGUILayout.PropertyField(seeThroughDepthOffset, new GUIContent("Depth Offset" + ((seeThroughDepthOffset.floatValue > 0) ? " •" : ""))); + EditorGUILayout.PropertyField(seeThroughMaxDepth, new GUIContent("Max Depth" + ((seeThroughMaxDepth.floatValue > 0) ? " •" : ""))); + if (seeThroughDepthOffset.floatValue > 0 || seeThroughMaxDepth.floatValue > 0) { + CheckDepthTextureSupport("See-Through Depth Options"); + } + EditorGUILayout.PropertyField(seeThroughIntensity, new GUIContent("Intensity")); + EditorGUILayout.PropertyField(seeThroughTintColor, new GUIContent("Color")); + EditorGUILayout.PropertyField(seeThroughTintAlpha, new GUIContent("Color Blend")); + EditorGUILayout.PropertyField(seeThroughNoise, new GUIContent("Noise")); + EditorGUILayout.PropertyField(seeThroughTexture, new GUIContent("Texture")); + if (seeThroughTexture.objectReferenceValue != null) { + EditorGUI.indentLevel++; + EditorGUILayout.PropertyField(seeThroughTextureUVSpace, new GUIContent("UV Space")); + EditorGUILayout.PropertyField(seeThroughTextureScale, new GUIContent("Texture Scale")); + EditorGUI.indentLevel--; + } + EditorGUILayout.PropertyField(seeThroughBorder, new GUIContent("Border When Hidden" + ((seeThroughBorder.floatValue > 0) ? " •" : ""))); + if (seeThroughBorder.floatValue > 0) { + EditorGUI.indentLevel++; + EditorGUILayout.PropertyField(seeThroughBorderWidth, new GUIContent("Width")); + EditorGUILayout.PropertyField(seeThroughBorderColor, new GUIContent("Color")); + EditorGUILayout.PropertyField(seeThroughBorderOnly, new GUIContent("Border Only")); + EditorGUI.indentLevel--; + } + EditorGUILayout.PropertyField(seeThroughChildrenSortingMode, new GUIContent("Children Sorting Mode")); + EditorGUILayout.PropertyField(seeThroughOrdered, new GUIContent("Ordered")); + + EditorGUI.indentLevel--; + } + EditorGUILayout.EndVertical(); + } + + EditorGUILayout.BeginVertical(GUI.skin.box); + DrawSectionField(hitFxInitialIntensity, "Hit FX", hitFxInitialIntensity.floatValue > 0); + if (hitFxInitialIntensity.floatValue > 0) { + EditorGUI.indentLevel++; + EditorGUILayout.PropertyField(hitFxMode, new GUIContent("Mode")); + EditorGUILayout.PropertyField(hitFxFadeOutDuration, new GUIContent("Fade Out Duration")); + EditorGUILayout.PropertyField(hitFxColor, new GUIContent("Color")); + if ((HitFxMode)hitFxMode.intValue == HitFxMode.LocalHit) { + EditorGUILayout.PropertyField(hitFxRadius, new GUIContent("Radius")); + } + + + if (!Application.isPlaying) { + EditorGUILayout.HelpBox("Enter Play Mode to test this feature. In your code, call effect.HitFX() method to execute this hit effect.", MessageType.Info); + } + else { + EditorGUI.indentLevel++; + if (GUILayout.Button("Execute Hit")) { + thisEffect.HitFX(); + } + EditorGUI.indentLevel--; + } + EditorGUI.indentLevel--; + } + EditorGUILayout.EndVertical(); + + if (serializedObject.ApplyModifiedProperties() || forceRefresh || profileChanged || "UndoRedoPerformed".Equals(Event.current.commandName)) { + if (thisEffect.profile != null) { + if (profileChanged) { + thisEffect.profile.Load(thisEffect); + EditorUtility.SetDirty(target); + profileChanged = false; + enableProfileApply = false; + } + else { + enableProfileApply = true; + } + } + + foreach (HighlightEffect effect in targets) { + effect.Refresh(); + effect.ResetHighlightStartTime(); + } + } + } + + void DrawLayerMaskField (SerializedProperty layerMaskProperty, string label = null) { + GUIContent propertyLabel = new GUIContent(layerMaskProperty.displayName, layerMaskProperty.tooltip); + if (!string.IsNullOrEmpty(label)) { + propertyLabel.text = label; + } + + EditorGUI.BeginChangeCheck(); + + // Convierte el valor del LayerMask en un entero + int oldLayerMaskValue = layerMaskProperty.intValue; + + // Obtén los nombres de las capas y transforma el valor del LayerMask + string[] layerNames = GetLayerNames(); + int newLayerMaskValue = EditorGUILayout.MaskField(propertyLabel, UnityEditorInternal.InternalEditorUtility.LayerMaskToConcatenatedLayersMask(oldLayerMaskValue), layerNames); + + if (EditorGUI.EndChangeCheck()) { + // Aplica el nuevo valor de LayerMask tras la conversión adecuada + layerMaskProperty.intValue = UnityEditorInternal.InternalEditorUtility.ConcatenatedLayersMaskToLayerMask(newLayerMaskValue); + forceRefresh = true; + } + } + + string[] GetLayerNames () { + List layerNames = new List(); + for (int i = 0; i < 32; i++) { + string layerName = LayerMask.LayerToName(i); + if (!string.IsNullOrEmpty(layerName)) { + layerNames.Add(layerName); + } + } + return layerNames.ToArray(); + } + + + void DrawSectionField (SerializedProperty property, string label, bool active) { + EditorGUILayout.PropertyField(property, new GUIContent(active ? label + " •" : label)); + } + + void CheckVRSupport (int qualityLevel) { + if (qualityLevel == (int)QualityLevel.Highest && PlayerSettings.virtualRealitySupported) { + if (PlayerSettings.stereoRenderingPath != StereoRenderingPath.MultiPass) { + EditorGUILayout.HelpBox("Highest Quality only supports VR Multi-Pass as CommandBuffers do not support this VR mode yet. Either switch to 'High Quality' or change VR Stereo mode to Multi-Pass.", MessageType.Error); + } + } + } + + void CheckDepthTextureSupport (string feature) { +#if !UNITY_2021_2_OR_NEWER + if (pipe == null) return; + if (!pipe.supportsCameraDepthTexture && !thisEffect.spriteMode) { + EditorGUILayout.HelpBox(feature + " requires Depth Texture support and currently it's not enabled in the Rendering Pipeline asset.", MessageType.Error); + if (pipe != null && GUILayout.Button("Go to Universal Rendering Pipeline Asset")) { + Selection.activeObject = pipe; + } + EditorGUILayout.Separator(); + } +#endif + } + + static readonly int[] qualityValues = { 0, 3, 1, 2 }; + static readonly GUIContent[] qualityTexts = { new GUIContent("Fastest"), new GUIContent("Medium"), new GUIContent("High"), new GUIContent("Highest") }; + + public static void QualityPropertyField (SerializedProperty prop) { + prop.intValue = EditorGUILayout.IntPopup(new GUIContent("Quality", "Default and High use a mesh displacement technique. Highest quality can provide best look and also performance depending on the complexity of mesh."), prop.intValue, qualityTexts, qualityValues); + } + + bool IsDefaultEffectUsedByManager () { + MonoBehaviour[] components = thisEffect.GetComponents(); + if (components != null) { + for (int k = 0; k < components.Length; k++) { + if (components[k] == null || !components[k].enabled) + continue; + string name = components[k].GetType().Name; + if ("HighlightManager".Equals(name)) return true; + } + } + return false; + } + + #region Profile handling + + void CreateProfile () { + + HighlightProfile newProfile = CreateInstance(); + newProfile.Save(thisEffect); + + AssetDatabase.CreateAsset(newProfile, "Assets/Highlight Plus Profile.asset"); + AssetDatabase.SaveAssets(); + + EditorUtility.FocusProjectWindow(); + Selection.activeObject = newProfile; + + thisEffect.profile = newProfile; + } + + + #endregion + +#pragma warning restore 0618 + + } + +} \ No newline at end of file diff --git a/Assets/External/HighlightPlus/Editor/HighlightEffectEditor.cs.meta b/Assets/External/HighlightPlus/Editor/HighlightEffectEditor.cs.meta new file mode 100644 index 000000000..4c1a7dc6e --- /dev/null +++ b/Assets/External/HighlightPlus/Editor/HighlightEffectEditor.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: be287539f47634552a716f0705710448 +timeCreated: 1542886545 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/HighlightPlus/Editor/HighlightManagerEditor.cs b/Assets/External/HighlightPlus/Editor/HighlightManagerEditor.cs new file mode 100644 index 000000000..f94667a10 --- /dev/null +++ b/Assets/External/HighlightPlus/Editor/HighlightManagerEditor.cs @@ -0,0 +1,71 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEditor; +using UnityEngine; + +namespace HighlightPlus { + [CustomEditor(typeof(HighlightManager))] + public class HighlightManagerEditor : UnityEditor.Editor { + + SerializedProperty highlightOnHover, layerMask, raycastCamera, raycastSource, minDistance, maxDistance, respectUI; + SerializedProperty selectOnClick, selectedProfile, selectedAndHighlightedProfile, singleSelection, toggleOnClick, keepSelection; + + void OnEnable() { + highlightOnHover = serializedObject.FindProperty("_highlightOnHover"); + layerMask = serializedObject.FindProperty("layerMask"); + raycastCamera = serializedObject.FindProperty("raycastCamera"); + raycastSource = serializedObject.FindProperty("raycastSource"); + minDistance = serializedObject.FindProperty("minDistance"); + maxDistance = serializedObject.FindProperty("maxDistance"); + respectUI = serializedObject.FindProperty("respectUI"); + selectOnClick = serializedObject.FindProperty("selectOnClick"); + selectedProfile = serializedObject.FindProperty("selectedProfile"); + selectedAndHighlightedProfile = serializedObject.FindProperty("selectedAndHighlightedProfile"); + singleSelection = serializedObject.FindProperty("singleSelection"); + toggleOnClick = serializedObject.FindProperty("toggle"); + keepSelection = serializedObject.FindProperty("keepSelection"); + } + + public override void OnInspectorGUI() { + EditorGUILayout.Separator(); + EditorGUILayout.HelpBox("Only objects with a collider can be highlighted automatically.", MessageType.Info); + + serializedObject.Update(); + + EditorGUILayout.PropertyField(layerMask); + EditorGUILayout.PropertyField(raycastCamera); + EditorGUILayout.PropertyField(raycastSource); + EditorGUILayout.PropertyField(minDistance); + EditorGUILayout.PropertyField(maxDistance); + EditorGUILayout.PropertyField(respectUI); + EditorGUILayout.PropertyField(highlightOnHover); + EditorGUILayout.PropertyField(selectOnClick); + if (selectOnClick.boolValue) { + EditorGUI.indentLevel++; + EditorGUILayout.PropertyField(selectedProfile); + EditorGUILayout.PropertyField(selectedAndHighlightedProfile); + EditorGUILayout.PropertyField(singleSelection); + EditorGUILayout.PropertyField(toggleOnClick); + EditorGUILayout.PropertyField(keepSelection); + EditorGUI.indentLevel--; + } + + serializedObject.ApplyModifiedProperties(); + } + + + [MenuItem("GameObject/Effects/Highlight Plus/Create Highlight Manager", false, 10)] + static void CreateManager (MenuCommand menuCommand) { + HighlightManager manager = Misc.FindObjectOfType (); + if (manager == null) { + GameObject managerGO = new GameObject ("HighlightPlusManager"); + manager = managerGO.AddComponent (); + // Register root object for undo. + Undo.RegisterCreatedObjectUndo (manager, "Create Highlight Plus Manager"); + } + Selection.activeObject = manager; + } + + } + +} diff --git a/Assets/External/HighlightPlus/Editor/HighlightManagerEditor.cs.meta b/Assets/External/HighlightPlus/Editor/HighlightManagerEditor.cs.meta new file mode 100644 index 000000000..7edb76b6b --- /dev/null +++ b/Assets/External/HighlightPlus/Editor/HighlightManagerEditor.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: ace58d1d278d649c98e5a2b5a066b3cd +timeCreated: 1548711355 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/HighlightPlus/Editor/HighlightProfileEditor.cs b/Assets/External/HighlightPlus/Editor/HighlightProfileEditor.cs new file mode 100644 index 000000000..cc237a905 --- /dev/null +++ b/Assets/External/HighlightPlus/Editor/HighlightProfileEditor.cs @@ -0,0 +1,448 @@ +using UnityEditor; +using UnityEngine; + +namespace HighlightPlus { + + [CustomEditor(typeof(HighlightProfile))] + [CanEditMultipleObjects] + public class HighlightProfileEditor : UnityEditor.Editor { + + SerializedProperty effectGroup, effectGroupLayer, effectNameFilter, effectNameUseRegEx, combineMeshes, alphaCutOff, cullBackFaces, padding; + SerializedProperty overlay, overlayMode, overlayColor, overlayAnimationSpeed, overlayMinIntensity, overlayTexture, overlayTextureScale, overlayTextureScrolling, overlayTextureUVSpace, overlayBlending, overlayVisibility; + SerializedProperty fadeInDuration, fadeOutDuration, constantWidth, normalsOption, minimumWidth, extraCoveragePixels; + SerializedProperty outline, outlineColor, outlineColorStyle, outlineGradient, outlineGradientInLocalSpace, outlineWidth, outlineBlurPasses, outlineQuality, outlineEdgeMode, outlineEdgeThreshold, outlineSharpness; + SerializedProperty outlineDownsampling, outlineVisibility, outlineIndependent, outlineContourStyle, outlineMaskMode; + SerializedProperty glow, glowWidth, glowQuality, glowBlurMethod, glowDownsampling, glowHQColor, glowDithering, glowDitheringStyle, glowMagicNumber1, glowMagicNumber2, glowAnimationSpeed; + SerializedProperty glowBlendPasses, glowVisibility, glowBlendMode, glowPasses, glowMaskMode; + SerializedProperty innerGlow, innerGlowWidth, innerGlowColor, innerGlowBlendMode, innerGlowVisibility; + SerializedProperty targetFX, targetFXTexture, targetFXColor, targetFXRotationSpeed, targetFXInitialScale, targetFXEndScale, targetFXScaleToRenderBounds, targetFXUseEnclosingBounds, targetFXOffset; + SerializedProperty targetFXAlignToGround, targetFXFadePower, targetFXGroundMaxDistance, targetFXGroundLayerMask, targetFXTransitionDuration, targetFXStayDuration, targetFXVisibility; + SerializedProperty iconFX, iconFXMesh, iconFXLightColor, iconFXDarkColor, iconFXRotationSpeed, iconFXAnimationOption, iconFXAnimationAmount, iconFXAnimationSpeed, iconFXScale, iconFXScaleToRenderBounds, iconFXOffset, iconFXTransitionDuration, iconFXStayDuration; + SerializedProperty seeThrough, seeThroughOccluderMask, seeThroughOccluderMaskAccurate, seeThroughOccluderThreshold, seeThroughOccluderCheckInterval, seeThroughOccluderCheckIndividualObjects, seeThroughDepthOffset, seeThroughMaxDepth; + SerializedProperty seeThroughIntensity, seeThroughTintAlpha, seeThroughTintColor, seeThroughNoise, seeThroughBorder, seeThroughBorderWidth, seeThroughBorderColor, seeThroughOrdered, seeThroughBorderOnly, seeThroughTexture, seeThroughTextureUVSpace, seeThroughTextureScale, seeThroughChildrenSortingMode; + SerializedProperty hitFxInitialIntensity, hitFxMode, hitFxFadeOutDuration, hitFxColor, hitFxRadius; + SerializedProperty cameraDistanceFade, cameraDistanceFadeNear, cameraDistanceFadeFar; + + void OnEnable () { + effectGroup = serializedObject.FindProperty("effectGroup"); + effectGroupLayer = serializedObject.FindProperty("effectGroupLayer"); + effectNameFilter = serializedObject.FindProperty("effectNameFilter"); + effectNameUseRegEx = serializedObject.FindProperty("effectNameUseRegEx"); + combineMeshes = serializedObject.FindProperty("combineMeshes"); + alphaCutOff = serializedObject.FindProperty("alphaCutOff"); + cullBackFaces = serializedObject.FindProperty("cullBackFaces"); + padding = serializedObject.FindProperty("padding"); + normalsOption = serializedObject.FindProperty("normalsOption"); + fadeInDuration = serializedObject.FindProperty("fadeInDuration"); + fadeOutDuration = serializedObject.FindProperty("fadeOutDuration"); + constantWidth = serializedObject.FindProperty("constantWidth"); + extraCoveragePixels = serializedObject.FindProperty("extraCoveragePixels"); + minimumWidth = serializedObject.FindProperty("minimumWidth"); + overlay = serializedObject.FindProperty("overlay"); + overlayMode = serializedObject.FindProperty("overlayMode"); + overlayColor = serializedObject.FindProperty("overlayColor"); + overlayAnimationSpeed = serializedObject.FindProperty("overlayAnimationSpeed"); + overlayMinIntensity = serializedObject.FindProperty("overlayMinIntensity"); + overlayBlending = serializedObject.FindProperty("overlayBlending"); + overlayVisibility = serializedObject.FindProperty("overlayVisibility"); + overlayTexture = serializedObject.FindProperty("overlayTexture"); + overlayTextureUVSpace = serializedObject.FindProperty("overlayTextureUVSpace"); + overlayTextureScale = serializedObject.FindProperty("overlayTextureScale"); + overlayTextureScrolling = serializedObject.FindProperty("overlayTextureScrolling"); + outline = serializedObject.FindProperty("outline"); + outlineColor = serializedObject.FindProperty("outlineColor"); + outlineColorStyle = serializedObject.FindProperty("outlineColorStyle"); + outlineGradient = serializedObject.FindProperty("outlineGradient"); + outlineGradientInLocalSpace = serializedObject.FindProperty("outlineGradientInLocalSpace"); + outlineWidth = serializedObject.FindProperty("outlineWidth"); + outlineBlurPasses = serializedObject.FindProperty("outlineBlurPasses"); + outlineQuality = serializedObject.FindProperty("outlineQuality"); + outlineEdgeMode = serializedObject.FindProperty("outlineEdgeMode"); + outlineEdgeThreshold = serializedObject.FindProperty("outlineEdgeThreshold"); + outlineSharpness = serializedObject.FindProperty("outlineSharpness"); + outlineDownsampling = serializedObject.FindProperty("outlineDownsampling"); + outlineVisibility = serializedObject.FindProperty("outlineVisibility"); + outlineIndependent = serializedObject.FindProperty("outlineIndependent"); + outlineContourStyle = serializedObject.FindProperty("outlineContourStyle"); + outlineMaskMode = serializedObject.FindProperty("outlineMaskMode"); + glow = serializedObject.FindProperty("glow"); + glowWidth = serializedObject.FindProperty("glowWidth"); + glowQuality = serializedObject.FindProperty("glowQuality"); + glowBlurMethod = serializedObject.FindProperty("glowBlurMethod"); + glowDownsampling = serializedObject.FindProperty("glowDownsampling"); + glowHQColor = serializedObject.FindProperty("glowHQColor"); + glowAnimationSpeed = serializedObject.FindProperty("glowAnimationSpeed"); + glowDithering = serializedObject.FindProperty("glowDithering"); + glowDitheringStyle = serializedObject.FindProperty("glowDitheringStyle"); + glowMagicNumber1 = serializedObject.FindProperty("glowMagicNumber1"); + glowMagicNumber2 = serializedObject.FindProperty("glowMagicNumber2"); + glowAnimationSpeed = serializedObject.FindProperty("glowAnimationSpeed"); + glowBlendPasses = serializedObject.FindProperty("glowBlendPasses"); + glowVisibility = serializedObject.FindProperty("glowVisibility"); + glowBlendMode = serializedObject.FindProperty("glowBlendMode"); + glowPasses = serializedObject.FindProperty("glowPasses"); + glowMaskMode = serializedObject.FindProperty("glowMaskMode"); + innerGlow = serializedObject.FindProperty("innerGlow"); + innerGlowColor = serializedObject.FindProperty("innerGlowColor"); + innerGlowWidth = serializedObject.FindProperty("innerGlowWidth"); + innerGlowBlendMode = serializedObject.FindProperty("innerGlowBlendMode"); + innerGlowVisibility = serializedObject.FindProperty("innerGlowVisibility"); + targetFX = serializedObject.FindProperty("targetFX"); + targetFXTexture = serializedObject.FindProperty("targetFXTexture"); + targetFXRotationSpeed = serializedObject.FindProperty("targetFXRotationSpeed"); + targetFXInitialScale = serializedObject.FindProperty("targetFXInitialScale"); + targetFXEndScale = serializedObject.FindProperty("targetFXEndScale"); + targetFXScaleToRenderBounds = serializedObject.FindProperty("targetFXScaleToRenderBounds"); + targetFXUseEnclosingBounds = serializedObject.FindProperty("targetFXUseEnclosingBounds"); + targetFXOffset = serializedObject.FindProperty("targetFXOffset"); + targetFXAlignToGround = serializedObject.FindProperty("targetFXAlignToGround"); + targetFXGroundMaxDistance = serializedObject.FindProperty("targetFXGroundMaxDistance"); + targetFXGroundLayerMask = serializedObject.FindProperty("targetFXGroundLayerMask"); + targetFXFadePower = serializedObject.FindProperty("targetFXFadePower"); + targetFXColor = serializedObject.FindProperty("targetFXColor"); + targetFXTransitionDuration = serializedObject.FindProperty("targetFXTransitionDuration"); + targetFXStayDuration = serializedObject.FindProperty("targetFXStayDuration"); + targetFXVisibility = serializedObject.FindProperty("targetFXVisibility"); + + iconFX = serializedObject.FindProperty("iconFX"); + iconFXMesh = serializedObject.FindProperty("iconFXMesh"); + iconFXLightColor = serializedObject.FindProperty("iconFXLightColor"); + iconFXDarkColor = serializedObject.FindProperty("iconFXDarkColor"); + iconFXRotationSpeed = serializedObject.FindProperty("iconFXRotationSpeed"); + iconFXAnimationOption = serializedObject.FindProperty("iconFXAnimationOption"); + iconFXAnimationAmount = serializedObject.FindProperty("iconFXAnimationAmount"); + iconFXAnimationSpeed = serializedObject.FindProperty("iconFXAnimationSpeed"); + iconFXScale = serializedObject.FindProperty("iconFXScale"); + iconFXScaleToRenderBounds = serializedObject.FindProperty("iconFXScaleToRenderBounds"); + iconFXOffset = serializedObject.FindProperty("iconFXOffset"); + iconFXTransitionDuration = serializedObject.FindProperty("iconFXTransitionDuration"); + iconFXStayDuration = serializedObject.FindProperty("iconFXStayDuration"); + + seeThrough = serializedObject.FindProperty("seeThrough"); + seeThroughOccluderMask = serializedObject.FindProperty("seeThroughOccluderMask"); + seeThroughOccluderMaskAccurate = serializedObject.FindProperty("seeThroughOccluderMaskAccurate"); + seeThroughOccluderThreshold = serializedObject.FindProperty("seeThroughOccluderThreshold"); + seeThroughOccluderCheckInterval = serializedObject.FindProperty("seeThroughOccluderCheckInterval"); + seeThroughOccluderCheckIndividualObjects = serializedObject.FindProperty("seeThroughOccluderCheckIndividualObjects"); + seeThroughDepthOffset = serializedObject.FindProperty("seeThroughDepthOffset"); + seeThroughMaxDepth = serializedObject.FindProperty("seeThroughMaxDepth"); + seeThroughIntensity = serializedObject.FindProperty("seeThroughIntensity"); + seeThroughTintAlpha = serializedObject.FindProperty("seeThroughTintAlpha"); + seeThroughTintColor = serializedObject.FindProperty("seeThroughTintColor"); + seeThroughNoise = serializedObject.FindProperty("seeThroughNoise"); + seeThroughBorder = serializedObject.FindProperty("seeThroughBorder"); + seeThroughBorderWidth = serializedObject.FindProperty("seeThroughBorderWidth"); + seeThroughBorderColor = serializedObject.FindProperty("seeThroughBorderColor"); + seeThroughBorderOnly = serializedObject.FindProperty("seeThroughBorderOnly"); + seeThroughOrdered = serializedObject.FindProperty("seeThroughOrdered"); + seeThroughTexture = serializedObject.FindProperty("seeThroughTexture"); + seeThroughTextureScale = serializedObject.FindProperty("seeThroughTextureScale"); + seeThroughTextureUVSpace = serializedObject.FindProperty("seeThroughTextureUVSpace"); + seeThroughChildrenSortingMode = serializedObject.FindProperty("seeThroughChildrenSortingMode"); + hitFxInitialIntensity = serializedObject.FindProperty("hitFxInitialIntensity"); + hitFxMode = serializedObject.FindProperty("hitFxMode"); + hitFxFadeOutDuration = serializedObject.FindProperty("hitFxFadeOutDuration"); + hitFxColor = serializedObject.FindProperty("hitFxColor"); + hitFxRadius = serializedObject.FindProperty("hitFxRadius"); + cameraDistanceFade = serializedObject.FindProperty("cameraDistanceFade"); + cameraDistanceFadeNear = serializedObject.FindProperty("cameraDistanceFadeNear"); + cameraDistanceFadeFar = serializedObject.FindProperty("cameraDistanceFadeFar"); + } + + public override void OnInspectorGUI () { + + serializedObject.Update(); + + EditorGUILayout.Separator(); + EditorGUILayout.LabelField("Highlight Options", EditorStyles.boldLabel); + EditorGUILayout.PropertyField(effectGroup, new GUIContent("Include")); + if (effectGroup.intValue == (int)TargetOptions.LayerInScene || effectGroup.intValue == (int)TargetOptions.LayerInChildren) { + EditorGUI.indentLevel++; + EditorGUILayout.PropertyField(effectGroupLayer, new GUIContent("Layer")); + EditorGUI.indentLevel--; + } + if (effectGroup.intValue != (int)TargetOptions.OnlyThisObject && effectGroup.intValue != (int)TargetOptions.Scripting) { + EditorGUI.indentLevel++; + EditorGUILayout.PropertyField(effectNameFilter, new GUIContent("Object Name Filter")); + EditorGUILayout.PropertyField(effectNameUseRegEx, new GUIContent("Use Regular Expressions")); + EditorGUILayout.PropertyField(combineMeshes); + EditorGUI.indentLevel--; + } + EditorGUILayout.PropertyField(alphaCutOff); + EditorGUILayout.PropertyField(cullBackFaces); + EditorGUILayout.PropertyField(padding); + EditorGUILayout.PropertyField(normalsOption); + EditorGUILayout.PropertyField(fadeInDuration); + EditorGUILayout.PropertyField(fadeOutDuration); + EditorGUILayout.PropertyField(cameraDistanceFade); + if (cameraDistanceFade.boolValue) { + EditorGUI.indentLevel++; + EditorGUILayout.PropertyField(cameraDistanceFadeNear, new GUIContent("Near Distance")); + EditorGUILayout.PropertyField(cameraDistanceFadeFar, new GUIContent("Far Distance")); + EditorGUI.indentLevel--; + } + EditorGUILayout.PropertyField(constantWidth); + if (!constantWidth.boolValue) { + EditorGUI.indentLevel++; + EditorGUILayout.PropertyField(minimumWidth); + EditorGUI.indentLevel--; + } + EditorGUILayout.PropertyField(outlineIndependent, new GUIContent("Independent", "Do not combine outline with other highlighted objects.")); + + EditorGUILayout.Separator(); + EditorGUILayout.LabelField("Effects", EditorStyles.boldLabel); + + EditorGUILayout.BeginVertical(GUI.skin.box); + DrawSectionField(outline, "Outline", outline.floatValue > 0); + if (outline.floatValue > 0) { + EditorGUI.indentLevel++; + HighlightEffectEditor.QualityPropertyField(outlineQuality); + if (outlineQuality.intValue == (int)QualityLevel.Highest) { + EditorGUILayout.PropertyField(outlineEdgeMode, new GUIContent("Edges")); + if (outlineEdgeMode.intValue == (int)OutlineEdgeMode.Any) { + EditorGUILayout.PropertyField(outlineEdgeThreshold, new GUIContent("Edge Detection Threshold")); + } + EditorGUILayout.PropertyField(outlineContourStyle, new GUIContent("Contour Style")); + EditorGUILayout.PropertyField(outlineWidth, new GUIContent("Width")); + EditorGUILayout.PropertyField(outlineColor, new GUIContent("Color")); + EditorGUILayout.PropertyField(outlineBlurPasses, new GUIContent("Blur Passes")); + EditorGUILayout.PropertyField(outlineSharpness, new GUIContent("Sharpness")); + } + else { + EditorGUILayout.PropertyField(outlineWidth, new GUIContent("Width")); + EditorGUILayout.PropertyField(outlineColorStyle, new GUIContent("Color Style")); + switch ((ColorStyle)outlineColorStyle.intValue) { + case ColorStyle.SingleColor: + EditorGUILayout.PropertyField(outlineColor, new GUIContent("Color")); + break; + case ColorStyle.Gradient: + EditorGUI.indentLevel++; + EditorGUILayout.PropertyField(outlineGradient, new GUIContent("Gradient")); + EditorGUILayout.PropertyField(outlineGradientInLocalSpace, new GUIContent("In Local Space")); + EditorGUI.indentLevel--; + break; + } + } + if (outlineQuality.intValue == (int)QualityLevel.Highest && outlineEdgeMode.intValue != (int)OutlineEdgeMode.Any) { + EditorGUILayout.PropertyField(outlineDownsampling, new GUIContent("Downsampling")); + } + if (outlineQuality.intValue == (int)QualityLevel.Highest && glowQuality.intValue == (int)QualityLevel.Highest) { + EditorGUILayout.PropertyField(glowVisibility, new GUIContent("Visibility")); + } + else { + EditorGUILayout.PropertyField(outlineVisibility, new GUIContent("Visibility")); + } + EditorGUILayout.PropertyField(outlineMaskMode, new GUIContent("Mask Mode")); + if (outlineQuality.intValue == (int)QualityLevel.Highest) { + EditorGUILayout.PropertyField(extraCoveragePixels); + } + EditorGUI.indentLevel--; + } + EditorGUILayout.EndVertical(); + + EditorGUILayout.BeginVertical(GUI.skin.box); + DrawSectionField(glow, "Outer Glow", glow.floatValue > 0); + if (glow.floatValue > 0) { + EditorGUI.indentLevel++; + HighlightEffectEditor.QualityPropertyField(glowQuality); + if (glowQuality.intValue == (int)QualityLevel.Highest) { + EditorGUILayout.PropertyField(outlineContourStyle, new GUIContent("Contour Style")); + EditorGUILayout.PropertyField(glowWidth, new GUIContent("Width")); + EditorGUILayout.PropertyField(glowHQColor, new GUIContent("Color")); + EditorGUILayout.PropertyField(glowBlurMethod, new GUIContent("Blur Method", "Gaussian: better quality. Kawase: faster.")); + EditorGUILayout.PropertyField(glowDownsampling, new GUIContent("Downsampling")); + } + else { + EditorGUILayout.PropertyField(glowWidth, new GUIContent("Width")); + } + EditorGUILayout.PropertyField(glowAnimationSpeed, new GUIContent("Animation Speed")); + EditorGUILayout.PropertyField(glowVisibility, new GUIContent("Visibility")); + EditorGUILayout.PropertyField(glowMaskMode, new GUIContent("Mask Mode")); + EditorGUILayout.PropertyField(glowBlendMode, new GUIContent("Blend Mode")); + if (glowQuality.intValue != (int)QualityLevel.Highest) { + EditorGUILayout.PropertyField(glowDithering, new GUIContent("Dithering")); + if (glowDithering.floatValue > 0) { + EditorGUI.indentLevel++; + EditorGUILayout.PropertyField(glowDitheringStyle, new GUIContent("Style")); + if (glowDitheringStyle.intValue == (int)GlowDitheringStyle.Pattern) { + EditorGUILayout.PropertyField(glowMagicNumber1, new GUIContent("Magic Number 1")); + EditorGUILayout.PropertyField(glowMagicNumber2, new GUIContent("Magic Number 2")); + } + EditorGUI.indentLevel--; + } + EditorGUILayout.PropertyField(glowBlendPasses, new GUIContent("Blend Passes")); + EditorGUILayout.PropertyField(glowPasses, true); + } else { + EditorGUILayout.PropertyField(extraCoveragePixels); + } + EditorGUI.indentLevel--; + } + EditorGUILayout.EndVertical(); + + EditorGUILayout.BeginVertical(GUI.skin.box); + DrawSectionField(innerGlow, "Inner Glow", innerGlow.floatValue > 0); + if (innerGlow.floatValue > 0) { + EditorGUI.indentLevel++; + EditorGUILayout.PropertyField(innerGlowColor, new GUIContent("Color")); + EditorGUILayout.PropertyField(innerGlowWidth, new GUIContent("Width")); + EditorGUILayout.PropertyField(innerGlowBlendMode, new GUIContent("Blend Mode")); + EditorGUILayout.PropertyField(innerGlowVisibility, new GUIContent("Visibility")); + EditorGUI.indentLevel--; + } + EditorGUILayout.EndVertical(); + + EditorGUILayout.BeginVertical(GUI.skin.box); + DrawSectionField(overlay, "Overlay", overlay.floatValue > 0); + if (overlay.floatValue > 0) { + EditorGUI.indentLevel++; + EditorGUILayout.PropertyField(overlayMode, new GUIContent("Mode")); + EditorGUILayout.PropertyField(overlayColor, new GUIContent("Color")); + EditorGUILayout.PropertyField(overlayTexture, new GUIContent("Texture")); + if (overlayTexture.objectReferenceValue != null) { + EditorGUI.indentLevel++; + EditorGUILayout.PropertyField(overlayTextureUVSpace, new GUIContent("UV Space")); + EditorGUILayout.PropertyField(overlayTextureScale, new GUIContent("Texture Scale")); + if ((TextureUVSpace)overlayTextureUVSpace.intValue != TextureUVSpace.Triplanar) { + EditorGUILayout.PropertyField(overlayTextureScrolling, new GUIContent("Texture Scrolling")); + } + EditorGUI.indentLevel--; + } + EditorGUILayout.PropertyField(overlayBlending, new GUIContent("Blending")); + EditorGUILayout.PropertyField(overlayMinIntensity, new GUIContent("Min Intensity")); + EditorGUILayout.PropertyField(overlayAnimationSpeed, new GUIContent("Animation Speed")); + EditorGUILayout.PropertyField(overlayVisibility, new GUIContent("Visibility")); + EditorGUI.indentLevel--; + } + EditorGUILayout.EndVertical(); + + EditorGUILayout.BeginVertical(GUI.skin.box); + DrawSectionField(targetFX, "Target", targetFX.boolValue); + if (targetFX.boolValue) { + EditorGUI.indentLevel++; + EditorGUILayout.PropertyField(targetFXTexture, new GUIContent("Texture")); + EditorGUILayout.PropertyField(targetFXColor, new GUIContent("Color")); + EditorGUILayout.PropertyField(targetFXUseEnclosingBounds, new GUIContent("Use Enclosing Bounds")); + EditorGUILayout.PropertyField(targetFXOffset, new GUIContent("Offset")); + EditorGUILayout.PropertyField(targetFXRotationSpeed, new GUIContent("Rotation Speed")); + EditorGUILayout.PropertyField(targetFXInitialScale, new GUIContent("Initial Scale")); + EditorGUILayout.PropertyField(targetFXEndScale, new GUIContent("End Scale")); + EditorGUILayout.PropertyField(targetFXScaleToRenderBounds, new GUIContent("Scale To Object Bounds")); + EditorGUILayout.PropertyField(targetFXAlignToGround, new GUIContent("Align To Ground")); + if (targetFXAlignToGround.boolValue) { + EditorGUI.indentLevel++; + EditorGUILayout.PropertyField(targetFXGroundMaxDistance, new GUIContent("Ground Max Distance")); + EditorGUILayout.PropertyField(targetFXGroundLayerMask, new GUIContent("Ground Layer Mask")); + EditorGUILayout.PropertyField(targetFXFadePower, new GUIContent("Fade Power")); + EditorGUI.indentLevel--; + } + EditorGUILayout.PropertyField(targetFXTransitionDuration, new GUIContent("Transition Duration")); + EditorGUILayout.PropertyField(targetFXStayDuration, new GUIContent("Stay Duration")); + EditorGUILayout.PropertyField(targetFXVisibility, new GUIContent("Visibility")); + EditorGUI.indentLevel--; + } + EditorGUILayout.EndVertical(); + + EditorGUILayout.BeginVertical(GUI.skin.box); + DrawSectionField(iconFX, "Icon", iconFX.boolValue); + if (iconFX.boolValue) { + EditorGUI.indentLevel++; + EditorGUILayout.PropertyField(iconFXMesh, new GUIContent("Mesh")); + EditorGUILayout.PropertyField(iconFXLightColor, new GUIContent("Light Color")); + EditorGUILayout.PropertyField(iconFXDarkColor, new GUIContent("Dark Color")); + EditorGUILayout.PropertyField(iconFXOffset, new GUIContent("Offset")); + EditorGUILayout.PropertyField(iconFXRotationSpeed, new GUIContent("Rotation Speed")); + EditorGUILayout.PropertyField(iconFXAnimationOption, new GUIContent("Animation")); + if (iconFXAnimationOption.intValue != 0) { + EditorGUI.indentLevel++; + EditorGUILayout.PropertyField(iconFXAnimationAmount, new GUIContent("Amount")); + EditorGUILayout.PropertyField(iconFXAnimationSpeed, new GUIContent("Speed")); + EditorGUI.indentLevel--; + } + EditorGUILayout.PropertyField(iconFXScale, new GUIContent("Scale")); + EditorGUILayout.PropertyField(iconFXScaleToRenderBounds, new GUIContent("Scale To Object Bounds")); + EditorGUILayout.PropertyField(iconFXTransitionDuration, new GUIContent("Transition Duration")); + EditorGUILayout.PropertyField(iconFXStayDuration, new GUIContent("Stay Duration")); + EditorGUI.indentLevel--; + } + EditorGUILayout.EndVertical(); + + EditorGUILayout.BeginVertical(GUI.skin.box); + EditorGUILayout.PropertyField(seeThrough); + if (seeThrough.intValue != (int)SeeThroughMode.Never) { + EditorGUI.indentLevel++; + EditorGUILayout.PropertyField(seeThroughOccluderMask, new GUIContent("Occluder Layer")); + if (seeThroughOccluderMask.intValue > 0) { + EditorGUI.indentLevel++; + EditorGUILayout.PropertyField(seeThroughOccluderMaskAccurate, new GUIContent("Accurate")); + EditorGUILayout.PropertyField(seeThroughOccluderThreshold, new GUIContent("Radius Threshold", "Multiplier to the object bounds. Making the bounds smaller prevents false occlusion tests.")); + EditorGUILayout.PropertyField(seeThroughOccluderCheckInterval, new GUIContent("Check Interval", "Interval in seconds between occlusion tests.")); + EditorGUILayout.PropertyField(seeThroughOccluderCheckIndividualObjects, new GUIContent("Check Individual Objects", "Interval in seconds between occlusion tests.")); + EditorGUI.indentLevel--; + } + EditorGUILayout.PropertyField(seeThroughDepthOffset, new GUIContent("Depth Offset" + ((seeThroughDepthOffset.floatValue > 0) ? " •" : ""))); + EditorGUILayout.PropertyField(seeThroughMaxDepth, new GUIContent("Max Depth" + ((seeThroughMaxDepth.floatValue > 0) ? " •" : ""))); + EditorGUILayout.PropertyField(seeThroughIntensity, new GUIContent("Intensity")); + EditorGUILayout.PropertyField(seeThroughTintColor, new GUIContent("Color")); + EditorGUILayout.PropertyField(seeThroughTintAlpha, new GUIContent("Color Blend")); + EditorGUILayout.PropertyField(seeThroughNoise, new GUIContent("Noise")); + EditorGUILayout.PropertyField(seeThroughTexture, new GUIContent("Texture")); + if (seeThroughTexture.objectReferenceValue != null) { + EditorGUILayout.PropertyField(seeThroughTextureUVSpace, new GUIContent("UV Space")); + EditorGUILayout.PropertyField(seeThroughTextureScale, new GUIContent("Texture Scale")); + } + EditorGUILayout.PropertyField(seeThroughBorder, new GUIContent("Border When Hidden")); + if (seeThroughBorder.floatValue > 0) { + EditorGUI.indentLevel++; + EditorGUILayout.PropertyField(seeThroughBorderWidth, new GUIContent("Width")); + EditorGUILayout.PropertyField(seeThroughBorderColor, new GUIContent("Color")); + EditorGUILayout.PropertyField(seeThroughBorderOnly, new GUIContent("Border Only")); + EditorGUI.indentLevel--; + } + EditorGUILayout.PropertyField(seeThroughChildrenSortingMode, new GUIContent("Children Sorting Mode")); + EditorGUILayout.PropertyField(seeThroughOrdered, new GUIContent("Ordered")); + + EditorGUI.indentLevel--; + } + EditorGUILayout.EndVertical(); + + EditorGUILayout.BeginVertical(GUI.skin.box); + DrawSectionField(hitFxInitialIntensity, "Hit FX", hitFxInitialIntensity.floatValue > 0); + if (hitFxInitialIntensity.floatValue > 0) { + EditorGUI.indentLevel++; + EditorGUILayout.PropertyField(hitFxInitialIntensity, new GUIContent("Initial Intensity")); + EditorGUILayout.PropertyField(hitFxMode, new GUIContent("Mode")); + EditorGUILayout.PropertyField(hitFxFadeOutDuration, new GUIContent("Fade Out Duration")); + EditorGUILayout.PropertyField(hitFxColor, new GUIContent("Color")); + if ((HitFxMode)hitFxMode.intValue == HitFxMode.LocalHit) { + EditorGUILayout.PropertyField(hitFxRadius, new GUIContent("Radius")); + } + EditorGUI.indentLevel--; + } + EditorGUILayout.EndVertical(); + + if (serializedObject.ApplyModifiedProperties() || (Event.current.type == EventType.ValidateCommand && + Event.current.commandName == "UndoRedoPerformed")) { + + // Triggers profile reload on all Highlight Effect scripts + HighlightEffect[] effects = Misc.FindObjectsOfType(); + for (int t = 0; t < targets.Length; t++) { + HighlightProfile profile = (HighlightProfile)targets[t]; + for (int k = 0; k < effects.Length; k++) { + if (effects[k] != null && effects[k].profile == profile && effects[k].profileSync) { + profile.Load(effects[k]); + effects[k].Refresh(); + } + } + } + EditorUtility.SetDirty(target); + } + + } + + void DrawSectionField (SerializedProperty property, string label, bool active) { + EditorGUILayout.PropertyField(property, new GUIContent(active ? label + " •" : label)); + } + + } + +} \ No newline at end of file diff --git a/Assets/External/HighlightPlus/Editor/HighlightProfileEditor.cs.meta b/Assets/External/HighlightPlus/Editor/HighlightProfileEditor.cs.meta new file mode 100644 index 000000000..dfa2e441c --- /dev/null +++ b/Assets/External/HighlightPlus/Editor/HighlightProfileEditor.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: b3b0e551d6f4f4f3987e8e5be2e89285 +timeCreated: 1542886545 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/HighlightPlus/Editor/HighlightSeeThroughOccluderEditor.cs b/Assets/External/HighlightPlus/Editor/HighlightSeeThroughOccluderEditor.cs new file mode 100644 index 000000000..93776a98f --- /dev/null +++ b/Assets/External/HighlightPlus/Editor/HighlightSeeThroughOccluderEditor.cs @@ -0,0 +1,32 @@ +using UnityEditor; + +namespace HighlightPlus { + + [CustomEditor(typeof(HighlightSeeThroughOccluder))] + public class HighlightSeeThroughOccluderEditor : UnityEditor.Editor { + + SerializedProperty mode, detectionMethod; + + void OnEnable() { + mode = serializedObject.FindProperty("mode"); + detectionMethod = serializedObject.FindProperty("detectionMethod"); + } + + public override void OnInspectorGUI() { + + serializedObject.Update(); + + EditorGUILayout.PropertyField(mode); + if (mode.intValue == (int)OccluderMode.BlocksSeeThrough) { + EditorGUILayout.HelpBox("This object will occlude any see-through effect.", MessageType.Info); + EditorGUILayout.PropertyField(detectionMethod); + } else { + EditorGUILayout.HelpBox("This object will trigger see-through effect. Use only on objects that do not write to depth buffer normally, like sprites or transparent objects.", MessageType.Info); + } + + serializedObject.ApplyModifiedProperties(); + + } + } + +} diff --git a/Assets/External/HighlightPlus/Editor/HighlightSeeThroughOccluderEditor.cs.meta b/Assets/External/HighlightPlus/Editor/HighlightSeeThroughOccluderEditor.cs.meta new file mode 100644 index 000000000..0edc1b044 --- /dev/null +++ b/Assets/External/HighlightPlus/Editor/HighlightSeeThroughOccluderEditor.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 11e725ecbe4d74569b232e1a0d57efba +timeCreated: 1548711355 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/HighlightPlus/Editor/HighlightTriggerEditor.cs b/Assets/External/HighlightPlus/Editor/HighlightTriggerEditor.cs new file mode 100644 index 000000000..1bdd10895 --- /dev/null +++ b/Assets/External/HighlightPlus/Editor/HighlightTriggerEditor.cs @@ -0,0 +1,105 @@ +using UnityEditor; +using UnityEngine; + +namespace HighlightPlus { + [CustomEditor(typeof(HighlightTrigger))] + public class HighlightTriggerEditor : UnityEditor.Editor { + + SerializedProperty highlightOnHover, triggerMode, raycastCamera, raycastSource, raycastLayerMask; + SerializedProperty minDistance, maxDistance, respectUI, volumeLayerMask; + SerializedProperty selectOnClick, selectedProfile, selectedAndHighlightedProfile, singleSelection, toggleOnClick, keepSelection; + HighlightTrigger trigger; + + void OnEnable() { + highlightOnHover = serializedObject.FindProperty("highlightOnHover"); + triggerMode = serializedObject.FindProperty("triggerMode"); + raycastCamera = serializedObject.FindProperty("raycastCamera"); + raycastSource = serializedObject.FindProperty("raycastSource"); + raycastLayerMask = serializedObject.FindProperty("raycastLayerMask"); + minDistance = serializedObject.FindProperty("minDistance"); + maxDistance = serializedObject.FindProperty("maxDistance"); + respectUI = serializedObject.FindProperty("respectUI"); + volumeLayerMask = serializedObject.FindProperty("volumeLayerMask"); + selectOnClick = serializedObject.FindProperty("selectOnClick"); + selectedProfile = serializedObject.FindProperty("selectedProfile"); + selectedAndHighlightedProfile = serializedObject.FindProperty("selectedAndHighlightedProfile"); + singleSelection = serializedObject.FindProperty("singleSelection"); + toggleOnClick = serializedObject.FindProperty("toggle"); + keepSelection = serializedObject.FindProperty("keepSelection"); + trigger = (HighlightTrigger)target; + trigger.Init(); + } + + public override void OnInspectorGUI() { + + serializedObject.Update (); + + if (trigger.triggerMode == TriggerMode.RaycastOnThisObjectAndChildren) { + if (!trigger.hasColliders && !trigger.hasColliders2D) { + EditorGUILayout.HelpBox ("No collider found on this object or any of its children. Add colliders to allow automatic highlighting.", MessageType.Warning); + } + } else { +#if ENABLE_INPUT_SYSTEM + if (trigger.triggerMode == TriggerMode.ColliderEventsOnlyOnThisObject) { + EditorGUILayout.HelpBox("This trigger mode is not compatible with the new input system.", MessageType.Error); + } +#endif + if (trigger.GetComponent() == null && trigger.GetComponent() == null) { + EditorGUILayout.HelpBox ("No collider found on this object. Add a collider to allow automatic highlighting.", MessageType.Error); + } + } + + EditorGUILayout.PropertyField(triggerMode); + switch (trigger.triggerMode) { + case TriggerMode.RaycastOnThisObjectAndChildren: + EditorGUI.indentLevel++; + EditorGUILayout.PropertyField(raycastCamera); + EditorGUILayout.PropertyField(raycastSource); + EditorGUILayout.PropertyField(raycastLayerMask); + EditorGUILayout.PropertyField(minDistance); + EditorGUILayout.PropertyField(maxDistance); + EditorGUI.indentLevel--; + break; + case TriggerMode.Volume: + EditorGUI.indentLevel++; + EditorGUILayout.PropertyField(volumeLayerMask); + EditorGUI.indentLevel--; + break; + } + + if (trigger.triggerMode != TriggerMode.Volume) { + EditorGUILayout.PropertyField(respectUI); + } + EditorGUILayout.PropertyField(highlightOnHover); + EditorGUILayout.PropertyField(selectOnClick); + if (selectOnClick.boolValue) { + EditorGUI.indentLevel++; + EditorGUILayout.PropertyField(selectedProfile); + EditorGUILayout.PropertyField(selectedAndHighlightedProfile); + EditorGUILayout.PropertyField(singleSelection); + EditorGUILayout.PropertyField(toggleOnClick); + if (trigger.triggerMode == TriggerMode.RaycastOnThisObjectAndChildren) { + EditorGUI.BeginChangeCheck(); + EditorGUILayout.PropertyField(keepSelection); + if (EditorGUI.EndChangeCheck()) { + // Update all triggers + HighlightTrigger[] triggers = Misc.FindObjectsOfType(); + foreach(HighlightTrigger t in triggers) { + if (t.keepSelection != keepSelection.boolValue) { + t.keepSelection = keepSelection.boolValue; + EditorUtility.SetDirty(t); + } + } + } + } + EditorGUI.indentLevel--; + } + + if (serializedObject.ApplyModifiedProperties()) { + trigger.Init(); + } + } + + } + +} diff --git a/Assets/External/HighlightPlus/Editor/HighlightTriggerEditor.cs.meta b/Assets/External/HighlightPlus/Editor/HighlightTriggerEditor.cs.meta new file mode 100644 index 000000000..fa1a7143e --- /dev/null +++ b/Assets/External/HighlightPlus/Editor/HighlightTriggerEditor.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: eaf7f56fbcfa343efb5081d4309cb76b +timeCreated: 1548711355 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/HighlightPlus/Editor/TransparentWithDepth.cs b/Assets/External/HighlightPlus/Editor/TransparentWithDepth.cs new file mode 100644 index 000000000..49a566a9c --- /dev/null +++ b/Assets/External/HighlightPlus/Editor/TransparentWithDepth.cs @@ -0,0 +1,92 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.Rendering; +using UnityEditor; + +namespace HighlightPlus { + + public class TransparentWithDepth { + + static Material bmDepthOnly; + + + [MenuItem ("GameObject/Effects/Highlight Plus/Add Depth To Transparent Object", false, 100)] + static void AddDepthOption () { + Renderer renderer = GetRenderer (); + if (renderer == null) + return; + + if (!EditorUtility.DisplayDialog ("Add Depth To Transparent Object", "This option will force the transparent object to write to the depth buffer by adding a new special material to the renderer (existing materials are preserved) so it can occlude and allow See-Through effect.\nOnly use on transparent objects.\n\nProceed?", "Yes", "No")) { + return; + } + + Material[] materials = renderer.sharedMaterials; + for (int k = 0; k < materials.Length; k++) { + if (materials [k] == bmDepthOnly) { + EditorUtility.DisplayDialog ("Depth Support", "Already set! Nothing to do.", "Ok"); + return; + } + } + if (materials == null) { + renderer.sharedMaterial = bmDepthOnly; + } else { + List newMaterials = new List (materials); + newMaterials.Insert (0, bmDepthOnly); + renderer.sharedMaterials = newMaterials.ToArray (); + } + } + + [MenuItem ("GameObject/Effects/Highlight Plus/Remove Depth Compatibility", false, 101)] + static void RemoveDepthOption () { + + Renderer renderer = GetRenderer (); + if (renderer == null) + return; + + Material[] materials = renderer.sharedMaterials; + for (int k = 0; k < materials.Length; k++) { + if (materials [k] == bmDepthOnly) { + List newMaterials = new List (renderer.sharedMaterials); + newMaterials.RemoveAt (k); + renderer.sharedMaterials = newMaterials.ToArray (); + return; + } + } + + for (int k = 0; k < materials.Length; k++) { + if (materials [k] == bmDepthOnly) { + EditorUtility.DisplayDialog ("Depth Support", "This object was not previously modified! Nothing to do.", "Ok"); + return; + } + } + + } + + + static Renderer GetRenderer () { + + if (Selection.activeGameObject == null) { + EditorUtility.DisplayDialog ("Depth Support", "This option can only be used on GameObjects.", "Ok"); + return null; + } + Renderer renderer = Selection.activeGameObject.GetComponent (); + if (renderer == null) { + EditorUtility.DisplayDialog ("Depth Support", "This option can only be used on GameObjects with a Renderer component attached.", "Ok"); + return null; + } + + if (bmDepthOnly == null) { + bmDepthOnly = Resources.Load ("HighlightPlus/HighlightPlusDepthWrite"); + if (bmDepthOnly == null) { + EditorUtility.DisplayDialog ("Depth Support", "HighlightPlusDepthWrite material not found!", "Ok"); + return null; + } + } + + return renderer; + } + + + } +} \ No newline at end of file diff --git a/Assets/External/HighlightPlus/Editor/TransparentWithDepth.cs.meta b/Assets/External/HighlightPlus/Editor/TransparentWithDepth.cs.meta new file mode 100644 index 000000000..7221edbd0 --- /dev/null +++ b/Assets/External/HighlightPlus/Editor/TransparentWithDepth.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: be6e3be6d17ed49a3bd16d816815d6fd +timeCreated: 1515683694 +licenseType: Store +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/HighlightPlus/README.txt b/Assets/External/HighlightPlus/README.txt new file mode 100644 index 000000000..c536d91cc --- /dev/null +++ b/Assets/External/HighlightPlus/README.txt @@ -0,0 +1,454 @@ +************************************** +* HIGHLIGHT PLUS * +* Created by Ramiro Oliva (Kronnect) * +* README FILE * +************************************** + + +Notice about Universal Rendering Pipeline +----------------------------------------- +This package is designed for URP. +It requires Unity 2021.3 or later +To install the plugin correctly: + +1) Make sure you have Universal Rendering Pipeline asset installed (from Package Manager). +2) Go to Project Settings / Graphics. +3) Double click the Universal Rendering Pipeline asset. +4) Double click the Forward Renderer asset. +5) Click "+" to add the Highlight Plus Renderer Feature to the list of the Forward Renderer Features. + +Note: URP assets can be assigned to Settings / Graphics and also Settings / Quality. Check both sections! + +You can also find a HighlightPlusForwardRenderer asset in the Highlight Plus / Pipelines / URP folder. +Make sure the Highlight Plus Scriptable Renderer Feature is listed in the Renderer Features of the Forward Renderer in the pipeline asset. + +Video instructions: https://youtu.be/d4onpE5RDNs + + +Quick help: how to use this asset? +---------------------------------- + +1) Highlighting specific objects: add HighlightEffect.cs script to any GameObject. Customize the appearance options. + In the Highlight Effect inspector, you can specify which objects, in addition to this one, are also affected by the effect: + a) Only this object + b) This object and its children + c) All objects from the root to the children + d) All objects belonging to a layer + +2) Control highlight effect when mouse is over: + Add HighlightTrigger.cs script to the GameObject. It will activate highlight on the gameobject when mouse pass over it. + +3) Highlighting any object in the scene: + Select top menu GameObject -> Effects -> Highlight Plus -> Create Manager. + Customize appearance and behaviour of Highlight Manager. Those settings are default settings for all objects. If you want different settings for certain objects just add another HighlightEffect script to each different object. The manager will use those settings. + +4) Make transparent shaders compatible with See-Through effect: + If you want the See-Through effect be seen through other transparent objects, they need to be modified so they write to depth buffer (by default transparent objects do not write to z-buffer). + To do so, select top menu GameObject -> Effects -> Highlight Plus -> Add Depth To Transparent Object. + +5) Static batching: + Objects marked as "static" need a MeshCollider in order to be highlighted. This is because Unity combines the meshes of static objects so it's not possible to highlight individual objects if their meshes are combined. + To allow highlighting static objects make sure they have a MeshCollider attached (the MeshCollider can be disabled). + + + + +Help & Support Forum +-------------------- + +Check the Documentation folder for detailed instructions: + +Have any question or issue? +* Support-Web: https://kronnect.com/support +* Support-Discord: https://discord.gg/EH2GMaM +* Email: contact@kronnect.com +* Twitter: @Kronnect + +If you like Highlight Plus, please rate it on the Asset Store. It encourages us to keep improving it! Thanks! + + + + +Future updates +-------------- + +All our assets follow an incremental development process by which a few beta releases are published on our support forum (kronnect.com). +We encourage you to signup and engage our forum. The forum is the primary support and feature discussions medium. + +Of course, all updates of Highlight Plus will be eventually available on the Asset Store. + + + +More Cool Assets! +----------------- +Check out our other assets here: +https://assetstore.unity.com/publishers/15018 + + + +Version history +--------------- + +Version 22.1 +- Added "Target" option under Include +- Added "Extra Coverage Pixels" to avoid cuts when using cloth or vertex shaders that transform vertices positions + +Version 22.0.8 +- [Fix] Fixed see-through not rendering properly on flipped sprites + +Version 22.0 +- Added "Highlight Effect Blocker" component. You can use it to cancel background outline/glow/overlay when a sprite or transparent object is highlighted. + +Version 21.1 +- Performance optimizations when using independent option +- QoL improvements: additional warnings in inspector + +Version 21.0 +- New effect: icon +- Improved "Combine Meshes" option which now supports meshes with 32 bit index format + +Version 20.1.2 +- Changes to improve compatibility with custom assembly definitions (requires removal and reimport of the plugin) + +Version 20.1.1 +- [Fix] VR fixes + +Version 20.1 +- Added "Padding" option: creates an empty space between the mesh and the objects +- Added "Sorting Priority" option to Highlight Effect inspector. Useful to ensure certain effects render on top of others. +- Added "Minimum Width" option when constant width is disabled (affects outline/glow widths) +- OnObjectHighlightStart event no longer checks only once on a specific object +- API: added OnObjectHighlightStay to HighlightManager/HighlightTrigger event which can be used to cancel the highlight on the current object + +Version 20.0.2 +- See-through: improved Editor debug of occluders in non-accurate/collider based mode + +Version 20.0.1 +- [Fix] Fixed GPU instancing on skinned mesh renderers + +Version 20.0 +- Added support for Unity 2023.3 RenderGraph +- Option to use RegEx for the Include Object Name Filter +- To avoid requiring the New Input System package, the "Old" input system is now used if "Both" option is enabled in Project Settings +- [Fix] Fixes for fast domain reload +- [Fix] Fixed: calling SelectObject while fading out from a previous UnSelectObject would fail + +Version 12.1 +- Added dithering style option to outer glow effect +- Added "use enclosing bounds" option to Target FX effect +- See-through border is now combined with multiple children + +Version 12.0 +- Upgraded to Unity 2021.3.16 +- Outline: added "Sharpness" property to control the bluriness of outline in Highest Quality mode +- API: added HighlightEffect.lastHighlighted and HighlightEffect.lastSelected static fields +- [Fix] API: fixes an issue with Unselect method of Highlight Plus manager + +Version 11.3 +- Overlay effect: added Texture Scrolling option for non-triplanar uv space mode. +- API: added "OnHighlightStateChange" event. This event triggers as soon as the highlight state changes, regardless of any fade in/out effect + +Version 11.2 +- Change: removed "Glow Ignore Mask" and replaced by "Mask Mode" +- Added "Mask Mode" to Outline section +- API: added HighlightEffect.useUnscaledTime option +- [Fix] Fixed fade out option issue with see-through effect + +Version 11.1 +- See-through: added "Children Sorting Mode" option +- [Fix] Fixed outline clipping issue in VR when near to camera + +Version 11.0.2 +- Added support for split screen cameras + +Version 11.0 +- Added "Show In Preview Camera" option to Highlight Plus render feature +- Preview in Editor option has moved to the Highlight Plus render feature +- Outline improvements in highest quality mode +- Added Glow Blur Method option: Gaussian (higher quality, default) or Kawase (faster) +- Option to optimize skinned mesh data when using outline/outer glow with mesh-based rendering. Reduces draw calls significantly. + +Version 10.2.2 +- [Fix] Occluder system now ignores particle renderers +- [Fix] Fixed rendering sorting issue when several highlighted objects share same position + +Version 10.2 +- Added "Contour Style" option: 1) around visible parts, or 2) around object shape + +Version 10.1 +- Two outline edge modes are now available when Outline Quality is set to High, allowing to render interior edges +- Added "Inner Glow Blend Mode" option + +Version 10.0 +- Added support for sprites. Compatible effects: outline, glow, overlay, target and hit fx. +- Added "Overlay Visibility" option +- Fixes + +Version 9.6 +- Added new "UV Space" options to Overlay effect (now: triplanar, object space or screen space) +- Added mask texture and "UV Space" options to See-Through effect +- Camera Distance Fade now also affects the see-through effect + +Version 9.5 +- Outline: added Color Style property and new Gradient option +- Internal buffer for highest quality outline/glow format changed to R8 format to reduce memory and improve performance on mobile +- API: Refresh(discardCachedMeshes): added discardCachedMeshes optional parameter to force refresh of cached meshes (useful for combined meshes that have changed) + +Version 9.4 +- Highlight See Through Occluder: added mode for triggering the see-through offect on sprites and transparent objects +- Performance optimizations when using a high number of Highlight Effect components in the scene +- [Fix] Fixed shader compatibility issue on PS4 + +Version 9.3 +- Overlay: added "Mode" option (only when highlighted or always) +- Nested highlight effects are now included unless the 'Ignore' option is selected +- Cached meshes are now reconstructed when calling the Refresh() method + +Version 9.2 +- Improved shared mesh cache handling +- Improved see-through camera-layer based detection + +Version 9.1.2 +- [Fix] Fixed outline/glow distortion due to floating point math issues at distant positions from origin +- [Fix] Fixed VR issue in Unity 2022.1 with Single Pass Instanced + +Version 9.1.1 +- [Fix] Fixed potential issue with Unity 2021.2 related to depthCameraAttachment handling + +Version 9.1 +- Added support for Unity 2022 +- Added Layer Mask option to Highlight Trigger +- Added "Keep Selection" option in Highlight Manager and Highlight Trigger +- [Fix] Fixed a potential issue that could exceed the maximum 64k vertices when combining meshes + +Version 9.0 +- Added "Camera Distance Fade" option +- Improved see-through accurate method which now takes into account multi-part meshes from compound parents +- [Fix] Fixed glow/outline aspect ratio in Single Pass Instanced VR mode + +Version 8.5 +- Improved outline effect when combining "Independent" option with many elements in "Children" selection +- Improved see-through border only effect + +Version 8.4.1 +- [Fix] Fixed unnecessary memory allocation in the render feature + +Version 8.4 +- Added "Border Only" option to See-Through effect +- Adding a Highlight Effect component to a parent no longer deactivates highlighted children + +Version 8.3 +- Upgraded to Unity 2020.3.16 as minimum + +Version 8.2 +- Added "Ignore Mask" option to glow. Can be used to render the glow effect alone +- [Fix] Fixed issue with new input system and highlight manager/trigger if no Event System is present in the scene +- [Fix] Fixed glow passes UI overlap in Unity 2021.3.3 due to reorderable array bug + +Version 8.1 +- Selection state is now visible in inspector (used only by trigger and manager components) +- [Fix] Fixed outer glow not showing in higher quality with visibility set to normal and orthographic camera +- [Fix] Fixed mobile input using the new input system +- [Fix] Fixed outline settings mismatch when using a combination of Highlight Trigger and Manager + +Version 8.0 +- Added SelectObject / ToggleObject / UnselectObject methods to Highlight Manager +- Added ability to apply custom sorting to effects (check documentation: Custom sorting section) +- Independent option is now moved to Highlight Options section and affects both outline and glow +- Added "Clear Stencil" option to Highlight Plus Render Feature (useful to solve compatibility with other assets that use stencil buffers) + +Version 7.9.2 +- [Fix] Fixed an issue in Unity 2021.2 when using MSAA and High Quality outline/glow + +Version 7.9.1 +- Default values for all effects are now 0 (disabled) except outline so desired effects must be enabled. This option allows you to ensure no extra/undesired effects are activated by mistake +- Redesigned Highlight Plus Profile editor interface +- Removed dependency of HighlightManager + +Version 7.8 +- Added outer glow blend mode option +- API: added OnObjectHighlightStart/End events to HighlightTrigger (check documentation for differences with similar events on Highlight Effect main script) +- [Fix] API: Fixed specific issues with SetTarget method when used on shader graph based materials that don't use standard texture names + +Version 7.7.2 +- [Fix] Fixed fade in/out issue when disabling/enabling objects + +Version 7.7 +- Added support for the new Input System +- [Fix] Fixes to the align to ground option of target fx effect + +Version 7.6.2 +- [Fix] VR: fixed target effect "Align to Ground" issue with Single Pass Instanced + +Version 7.6.1 +- [Fix] Fixed overlay animation speed issue + +Version 7.6 +- Added "Target FX Align to Ground" option +- Added isSeeThroughOccluded(camera). Is true when any see-through occluder using raycast mode is blocking the see-through effect +- All shader keywords are now of local type reducing global keyword usage +- Fixes and improvements to see-through when combined with outline/outer glow + +Version 7.5.2 +- [Fix] See-through is now visible when using glow/outline/inner glow with Always Visible option + +Version 7.5.1 +- [Fix] Fixed regression bug with Outline in High Quality mode + +Version 7.5 +- Added new HitFX style: "Local Hit" +- Added new demo scene showcasing the HitFx variations +- Added "Overlay Texture" option +- Added "Min Distance" option to Highlight Manager and Highlight Trigger +- Added support for "Domain Reload" disabled option +- API: added OnObjectHighlightStart, OnObjectHighlightEnd events to HighlightManager +- [Fix] Fixed inner glow and overlay issue when MaterialPropertyBlock is used on the character material + +Version 7.1 +- Added "Respect UI" to Highlight Manager and Trigger which blocks interaction if pointer is over an UI element + +Version 7.0.2 +- Memory optimizations + +Version 7.0 +- Added support for Single Pass Instanced +- Internal improvements and fixes + +Version 6.9 +- Added "Ordered" option to see-through +- Removed "Non Overlap" option from see-through as now it pervents overdraw by default + +Version 6.8 +- Improvements to see-through rendering order +- [Fix] Fixed properties not being reflected in scene immediately when invoking Undo + +Version 6.7 +- Added "SeeThrough Max Depth" option. Limits the visibility of the see-through effect to certain distance from the occluders +- Added "SeeThrough Check Individual Objects" option. If enabled, occlusion test is performed for each individual child of the object, instead of using combined bounds + +Version 6.6 +- Added "SeeThrough Depth Offset" option. This option allows you to control the minimum distance from the occluder to the object before showing the see-through effect +- Added "SeeThrough Non Overlap" option. Enable it only if the see-through effect produces flickering due to overlapping geometry in the hidden object +- [Fix] Fixed properties not being reflected in scene immediately when invoking Undo + +Version 6.5.2 +- Added inspector tooltips and improved documentation + +Version 6.5.1 +- Calling ProfileLoad() method will now assign that profile to the highlight effect component in addition to loading its values +- Prevents _Time overflow which can cause glitching on some Android devices + +Version 6.5 +- Name filter now is ignored when effect group is set to Only This Object +- New shader "HighlightPlus/Geometry/UIMask" to cancel highlight effects when rendering through a UI Canvas (see documentation) + +Version 6.4 +- Added "Cameras Layer Mask" to specify which cameras can render the effects +- Hit FX color in Highlight Profile now exposes HDR color options + +Version 6.3.1 +- Added "Single Selection" option to Highlight Manager/Trigger +- Added "Toggle" option to Highlight Manager/Trigger +- Selection is cleared now when clicking anywhere in the scene (requires Highlight Manager) +- API: added SetGlowColor +- Improved Highlight Manager inspector + +Version 6.2 +- Added TargetFX Scale To Object Bounds (defaults to false) +- Added support for HDR color to Hit FX color field +- Option to list occluders in the inspector when See Through Occluder Mask "Accurate" option is enabled + +Version 6.1 +- Added more accurate occluder layer system ("Accurate" option) +- Added default hit fx settings to inspector & profile +- Added hit fx modes (overlay or inner glow) + +Version 6.0 +- Added Selection feature +- Inspector: sections can be now collapsed to reduce screen space +- API: added OnObjectSelected / OnObjectUnSelected events + +Version 5.5 4/Apr/2021 +- [Fix] Fixed glow overlay when MSAA is disabled on Windows + +Version 5.4 5/Feb/2021 +- Added Visibility option to targete effect +- Stencil mask is no longer computed when only overlay or inner glow is used improving performance + +Version 5.3.4 22/01/2021 +- Optimizations to material setters +- [Fix] Fixed outline color issue with quality level set to medium + +Version 5.3.3 +- Effects now reflect object transform changes when combines meshes option is enabled + +Version 5.3 +- Added "Combine Meshes" option to profile +- Optimizations and fixes + +Version 5.2 +- Added "Object Name Filter" option to profile + +Version 5.1 +- Added "Border When Hidden" effect (outline when see-through triggers) + +Version 5.0.1 +- Added support for Unity 2020.2 beta + +Version 5.0 +- API: added "TargetFX" method to programmatically start the target effect +- Added support for double-sided shader effects + +Version 4.9 +- Added "Medium" quality level + +Version 4.8.2 +- [Fix] Fixed issue with outline set to fastest and glow using highest in latest URP version + +Version 4.8.1 +- [Fix] Fixed issue with outline/glow when overlay cameras are present on the stack + +Version 4.8 +- Added "Outer Glow Blend Passes" option +- [Fix] Fixed outline & glow issue with alpha cutout when using non-highest quality mode + +Version 4.7 +- Added "Normals Option" with Smooth, Preserve and Reorient variants to improve results +- Target effect now only renders once per gameobject if a specific target transform is specified +- API: added OnTargetAnimates. Allows you to override center, rotation and scale of target effect on a per-frame basis. + +Version 4.6 +- Added "SubMesh Mask" which allows to exclude certain submeshes +- [Fix] Fixed shader compilation issue with Single Pass Instanced mode enabled + +Version 4.4 +- Exposed "Smooth Normals" option in inspector. + +Version 4.3.2 +- Added HitFX effect +- Improvements to SeeThrough Occluder when Detection Mode is set to RayCast + +Version 4.3.1 +- [Fix] Fixed issue with Highlight Effect Occluder script + +Version 4.3 +- Added GPU instancing support for outline / outer glow effects + +Version 4.2.2 +- [Fix] Fixed effect being rendered when object is outside of frustum camera + +Version 4.2.1 +- Profile: added "Constant Width" property +- Enabled HDR color picker to Color properties +- [Fix] Fixed missing outline with flat surfaces like quads under certain angles + +Version 4.2 +- Glow/Outline downsampling option added to profiles +- [Fix] Removed VR API usage console warning + +Version 4.1 +- Added Outline Independent option +- [Fix] Fixed error when highlight script is added to an empty gameobject + +Version 4.0 +- Support for URP Scriptable Rendering Feature diff --git a/Assets/External/HighlightPlus/README.txt.meta b/Assets/External/HighlightPlus/README.txt.meta new file mode 100644 index 000000000..a386b105a --- /dev/null +++ b/Assets/External/HighlightPlus/README.txt.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 53265a9967ed548efaf71f5807638781 +timeCreated: 1542901568 +licenseType: Store +TextScriptImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/HighlightPlus/Runtime.meta b/Assets/External/HighlightPlus/Runtime.meta new file mode 100644 index 000000000..c95baa044 --- /dev/null +++ b/Assets/External/HighlightPlus/Runtime.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a233cc5176ac642f89469b5d4c676c89 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/HighlightPlus/Runtime/Resources.meta b/Assets/External/HighlightPlus/Runtime/Resources.meta new file mode 100644 index 000000000..7a6440c1c --- /dev/null +++ b/Assets/External/HighlightPlus/Runtime/Resources.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 3a476022645d74299b862c36d0daa1df +folderAsset: yes +timeCreated: 1542876301 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus.meta b/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus.meta new file mode 100644 index 000000000..85f2d99df --- /dev/null +++ b/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 6bd97436761b94109a0785ed6823647c +folderAsset: yes +timeCreated: 1542893576 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/CustomVertexTransform.cginc b/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/CustomVertexTransform.cginc new file mode 100644 index 000000000..60241d24a --- /dev/null +++ b/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/CustomVertexTransform.cginc @@ -0,0 +1,10 @@ +#ifndef CUSTOM_VERTEX_TRANSFORM_INCLUDED +#define CUSTOM_VERTEX_TRANSFORM_INCLUDED + +float4 ComputeVertexPosition(float4 vertex) { + // Add here any custom vertex transform + float4 pos = UnityObjectToClipPos(vertex); + return pos; +} + +#endif diff --git a/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/CustomVertexTransform.cginc.meta b/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/CustomVertexTransform.cginc.meta new file mode 100644 index 000000000..00350b8c9 --- /dev/null +++ b/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/CustomVertexTransform.cginc.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 26b31a85c4f4c4b11850968651dddfeb +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightAddDepth.shader b/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightAddDepth.shader new file mode 100644 index 000000000..de2579cfe --- /dev/null +++ b/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightAddDepth.shader @@ -0,0 +1,51 @@ +Shader "HighlightPlus/Geometry/JustDepth" +{ + Properties + { + } + SubShader + { + Tags { "RenderType"="Opaque" } + ColorMask 0 + Name "Write Depth" + + Pass + { + CGPROGRAM + #pragma vertex vert + #pragma fragment frag + + #include "UnityCG.cginc" + #include "CustomVertexTransform.cginc" + + struct appdata + { + float4 vertex : POSITION; + UNITY_VERTEX_INPUT_INSTANCE_ID + }; + + struct v2f + { + float4 pos : SV_POSITION; + UNITY_VERTEX_OUTPUT_STEREO + }; + + + v2f vert (appdata v) + { + v2f o; + UNITY_SETUP_INSTANCE_ID(v); + UNITY_INITIALIZE_OUTPUT(v2f, o); + UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o); + o.pos = ComputeVertexPosition(v.vertex); + return o; + } + + fixed4 frag (v2f i) : SV_Target + { + return 0; + } + ENDCG + } + } +} diff --git a/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightAddDepth.shader.meta b/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightAddDepth.shader.meta new file mode 100644 index 000000000..1857474e6 --- /dev/null +++ b/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightAddDepth.shader.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 058a572e30b2d446bade2dda32bcef0f +timeCreated: 1515682635 +licenseType: Store +ShaderImporter: + externalObjects: {} + defaultTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightBlockerOutlineAndGlow.mat b/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightBlockerOutlineAndGlow.mat new file mode 100644 index 000000000..d024ee31a --- /dev/null +++ b/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightBlockerOutlineAndGlow.mat @@ -0,0 +1,99 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-2752029129534311206 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 1 +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: HighlightBlockerOutlineAndGlow + m_Shader: {fileID: 4800000, guid: 3e461a1484e2948598abca48b53d8b58, type: 3} + m_ValidKeywords: [] + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _AlphaClip: 0 + - _Blend: 0 + - _BumpScale: 1 + - _ColorMask: 15 + - _Cull: 2 + - _CutOff: 0.5 + - _Cutoff: 0.5 + - _DstBlend: 0 + - _EnvironmentReflections: 1 + - _GlossMapScale: 0 + - _Glossiness: 0 + - _GlossyReflections: 0 + - _Metallic: 0 + - _OcclusionStrength: 1 + - _QueueOffset: 0 + - _ReceiveShadows: 1 + - _Smoothness: 0.5 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _Stencil: 2 + - _StencilComp: 2 + - _StencilOp: 0 + - _StencilReadMask: 2 + - _StencilWriteMask: 2 + - _Surface: 0 + - _WorkflowMode: 1 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + - _Color: {r: 0.5, g: 0.5, b: 0.5, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _SpecColor: {r: 0.2, g: 0.2, b: 0.2, a: 1} + m_BuildTextureStacks: [] diff --git a/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightBlockerOutlineAndGlow.mat.meta b/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightBlockerOutlineAndGlow.mat.meta new file mode 100644 index 000000000..d56481ee7 --- /dev/null +++ b/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightBlockerOutlineAndGlow.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d753c051e36754eef85b1868da81e4c7 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightBlockerOverlay.mat b/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightBlockerOverlay.mat new file mode 100644 index 000000000..01a5ea8fa --- /dev/null +++ b/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightBlockerOverlay.mat @@ -0,0 +1,99 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-2752029129534311206 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 1 +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: HighlightBlockerOverlay + m_Shader: {fileID: 4800000, guid: 3e461a1484e2948598abca48b53d8b58, type: 3} + m_ValidKeywords: [] + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _AlphaClip: 0 + - _Blend: 0 + - _BumpScale: 1 + - _ColorMask: 15 + - _Cull: 2 + - _CutOff: 0.5 + - _Cutoff: 0.5 + - _DstBlend: 0 + - _EnvironmentReflections: 1 + - _GlossMapScale: 0 + - _Glossiness: 0 + - _GlossyReflections: 0 + - _Metallic: 0 + - _OcclusionStrength: 1 + - _QueueOffset: 0 + - _ReceiveShadows: 1 + - _Smoothness: 0.5 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _Stencil: 4 + - _StencilComp: 2 + - _StencilOp: 0 + - _StencilReadMask: 4 + - _StencilWriteMask: 4 + - _Surface: 0 + - _WorkflowMode: 1 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + - _Color: {r: 0.5, g: 0.5, b: 0.5, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _SpecColor: {r: 0.2, g: 0.2, b: 0.2, a: 1} + m_BuildTextureStacks: [] diff --git a/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightBlockerOverlay.mat.meta b/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightBlockerOverlay.mat.meta new file mode 100644 index 000000000..cbb82a170 --- /dev/null +++ b/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightBlockerOverlay.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 9f2b7b7a5532e473e9bbba32efa31c4e +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightBlurGlow.shader b/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightBlurGlow.shader new file mode 100644 index 000000000..318c7b29d --- /dev/null +++ b/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightBlurGlow.shader @@ -0,0 +1,182 @@ +Shader "HighlightPlus/Geometry/BlurGlow" { +Properties { + _Color ("Color", Color) = (1,1,0) // not used; dummy property to avoid inspector warning "material has no _Color property" + _BlurScale("Blur Scale", Float) = 2.0 + _Speed("Speed", Float) = 1 +} + SubShader + { + ZTest Always + ZWrite Off + Cull Off + CGINCLUDE + + #include "UnityCG.cginc" + + UNITY_DECLARE_SCREENSPACE_TEXTURE(_MainTex); + float4 _MainTex_TexelSize; + float4 _MainTex_ST; + float _BlurScale, _Speed; + float _ResampleScale; + + struct appdata { + float4 vertex : POSITION; + float2 texcoord : TEXCOORD0; + UNITY_VERTEX_INPUT_INSTANCE_ID + }; + + struct v2fCross { + float4 pos : SV_POSITION; + float2 uv: TEXCOORD0; + float2 uv1: TEXCOORD1; + float2 uv2: TEXCOORD2; + float2 uv3: TEXCOORD3; + float2 uv4: TEXCOORD4; + UNITY_VERTEX_INPUT_INSTANCE_ID + UNITY_VERTEX_OUTPUT_STEREO + }; + + v2fCross vertCross(appdata v) { + v2fCross o; + UNITY_SETUP_INSTANCE_ID(v); + UNITY_TRANSFER_INSTANCE_ID(v, o); + UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o); + + o.pos = v.vertex; + o.pos.y *= _ProjectionParams.x; + + o.uv = v.texcoord; + float3 offsets = _MainTex_TexelSize.xyx * float3(1, 1, -1); + + o.uv1 = v.texcoord - offsets.xy; + o.uv2 = v.texcoord - offsets.zy; + o.uv3 = v.texcoord + offsets.zy; + o.uv4 = v.texcoord + offsets.xy; + return o; + } + + v2fCross vertCrossKawase(appdata v) { + v2fCross o; + UNITY_SETUP_INSTANCE_ID(v); + UNITY_TRANSFER_INSTANCE_ID(v, o); + UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o); + + o.pos = v.vertex; + o.pos.y *= _ProjectionParams.x; + + o.uv = v.texcoord + _MainTex_TexelSize.xy * 0.5; + float animatedWidth = _BlurScale * _ResampleScale * (0.75 + 0.25 * sin(_Time.w * _Speed)); + float3 offsets = _MainTex_TexelSize.xyx * float3(1, 1, -1) * animatedWidth; + + o.uv1 = v.texcoord - offsets.xy; + o.uv2 = v.texcoord - offsets.zy; + o.uv3 = v.texcoord + offsets.zy; + o.uv4 = v.texcoord + offsets.xy; + return o; + } + + + v2fCross vertBlurH(appdata v) { + v2fCross o; + UNITY_SETUP_INSTANCE_ID(v); + UNITY_TRANSFER_INSTANCE_ID(v, o); + UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o); + + o.pos = v.vertex; + o.pos.y *= _ProjectionParams.x; + + float animatedWidth = _BlurScale * (1.0 + 0.25 * sin(_Time.w * _Speed)); + o.uv = v.texcoord; + float2 inc = float2(_MainTex_TexelSize.x * 1.3846153846 * animatedWidth, 0); + o.uv1 = v.texcoord - inc; + o.uv2 = v.texcoord + inc; + float2 inc2 = float2(_MainTex_TexelSize.x * 3.2307692308 * animatedWidth, 0); + o.uv3 = v.texcoord - inc2; + o.uv4 = v.texcoord + inc2; + return o; + } + + v2fCross vertBlurV(appdata v) { + v2fCross o; + UNITY_SETUP_INSTANCE_ID(v); + UNITY_TRANSFER_INSTANCE_ID(v, o); + UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o); + + o.pos = v.vertex; + o.pos.y *= _ProjectionParams.x; + + float animatedWidth = _BlurScale * (1.0 + 0.25 * sin(_Time.w * _Speed)); + o.uv = v.texcoord; + float2 inc = float2(0, _MainTex_TexelSize.y * 1.3846153846 * animatedWidth); + o.uv1 = v.texcoord - inc; + o.uv2 = v.texcoord + inc; + float2 inc2 = float2(0, _MainTex_TexelSize.y * 3.2307692308 * animatedWidth); + o.uv3 = v.texcoord - inc2; + o.uv4 = v.texcoord + inc2; + return o; + } + + float4 fragBlur (v2fCross i): SV_Target { + UNITY_SETUP_INSTANCE_ID(i); + UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(i); + float4 pixel = UNITY_SAMPLE_SCREENSPACE_TEXTURE(_MainTex, i.uv) * 0.2270270270 + + (UNITY_SAMPLE_SCREENSPACE_TEXTURE(_MainTex, i.uv1) + UNITY_SAMPLE_SCREENSPACE_TEXTURE(_MainTex, i.uv2)) * 0.3162162162 + + (UNITY_SAMPLE_SCREENSPACE_TEXTURE(_MainTex, i.uv3) + UNITY_SAMPLE_SCREENSPACE_TEXTURE(_MainTex, i.uv4)) * 0.0702702703; + return pixel; + } + + float4 fragResample(v2fCross i) : SV_Target { + UNITY_SETUP_INSTANCE_ID(i); + UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(i); + float4 c1 = UNITY_SAMPLE_SCREENSPACE_TEXTURE(_MainTex, i.uv1); + float4 c2 = UNITY_SAMPLE_SCREENSPACE_TEXTURE(_MainTex, i.uv2); + float4 c3 = UNITY_SAMPLE_SCREENSPACE_TEXTURE(_MainTex, i.uv3); + float4 c4 = UNITY_SAMPLE_SCREENSPACE_TEXTURE(_MainTex, i.uv4); + return (c1+c2+c3+c4) * 0.25; + } + + + ENDCG + + Pass { + Name "Gaussian Blur Horizontal" + CGPROGRAM + #pragma vertex vertBlurH + #pragma fragment fragBlur + #pragma fragmentoption ARB_precision_hint_fastest + #pragma target 3.0 + ENDCG + } + + Pass { + Name "Gaussian Blur Vertical" + CGPROGRAM + #pragma vertex vertBlurV + #pragma fragment fragBlur + #pragma fragmentoption ARB_precision_hint_fastest + #pragma target 3.0 + ENDCG + } + + Pass { + Name "Copy Resample" + CGPROGRAM + #pragma vertex vertCross + #pragma fragment fragResample + #pragma fragmentoption ARB_precision_hint_fastest + #pragma target 3.0 + ENDCG + } + + Pass { + Name "Fast Blur" + CGPROGRAM + #pragma vertex vertCrossKawase + #pragma fragment fragResample + #pragma fragmentoption ARB_precision_hint_fastest + #pragma target 3.0 + ENDCG + } + + } +} \ No newline at end of file diff --git a/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightBlurGlow.shader.meta b/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightBlurGlow.shader.meta new file mode 100644 index 000000000..32335c20e --- /dev/null +++ b/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightBlurGlow.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 84c84ee93ec484bdda371ffbdebfcc7c +timeCreated: 1556874239 +licenseType: Store +ShaderImporter: + defaultTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightBlurOutline.shader b/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightBlurOutline.shader new file mode 100644 index 000000000..48ec0b832 --- /dev/null +++ b/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightBlurOutline.shader @@ -0,0 +1,168 @@ +Shader "HighlightPlus/Geometry/BlurOutline" { +Properties { + _Color ("Color", Color) = (1,1,0) // not used; dummy property to avoid inspector warning "material has no _Color property" + _BlurScale("Blur Scale", Float) = 2.0 + _BlurScaleFirstHoriz("Blur Scale First Horiz", Float) = 4 +} + SubShader + { + ZTest Always + ZWrite Off + Cull Off + CGINCLUDE + + #include "UnityCG.cginc" + + UNITY_DECLARE_SCREENSPACE_TEXTURE(_MainTex); + float4 _MainTex_TexelSize; + float4 _MainTex_ST; + float _BlurScale; + float _BlurScaleFirstHoriz; + + struct appdata { + float4 vertex : POSITION; + float2 texcoord : TEXCOORD0; + UNITY_VERTEX_INPUT_INSTANCE_ID + }; + + struct v2fCross { + float4 pos : SV_POSITION; + float2 uv: TEXCOORD0; + float2 uv1: TEXCOORD1; + float2 uv2: TEXCOORD2; + float2 uv3: TEXCOORD3; + float2 uv4: TEXCOORD4; + UNITY_VERTEX_INPUT_INSTANCE_ID + UNITY_VERTEX_OUTPUT_STEREO + }; + + v2fCross vertCross(appdata v) { + v2fCross o; + UNITY_SETUP_INSTANCE_ID(v); + UNITY_TRANSFER_INSTANCE_ID(v, o); + UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o); + + o.pos = v.vertex; + o.pos.y *= _ProjectionParams.x; + + o.uv = v.texcoord; + float3 offsets = _MainTex_TexelSize.xyx * float3(1, 1, -1); + o.uv1 = v.texcoord - offsets.xy; + o.uv2 = v.texcoord - offsets.zy; + o.uv3 = v.texcoord + offsets.zy; + o.uv4 = v.texcoord + offsets.xy; + return o; + } + + + v2fCross vertBlur(appdata v, float multiplier) { + v2fCross o; + UNITY_SETUP_INSTANCE_ID(v); + UNITY_TRANSFER_INSTANCE_ID(v, o); + UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o); + + o.pos = v.vertex; + o.pos.y *= _ProjectionParams.x; + o.uv = v.texcoord; + + float2 inc = float2(_MainTex_TexelSize.x * 1.3846153846 * multiplier, 0); + o.uv1 = v.texcoord - inc; + o.uv2 = v.texcoord + inc; + float2 inc2 = float2(_MainTex_TexelSize.x * 3.2307692308 * multiplier, 0); + o.uv3 = v.texcoord - inc2; + o.uv4 = v.texcoord + inc2; + return o; + } + + v2fCross vertBlurH(appdata v) { + return vertBlur(v, _BlurScale); + } + + v2fCross vertBlurH2(appdata v) { + return vertBlur(v, _BlurScaleFirstHoriz); + } + + + v2fCross vertBlurV(appdata v) { + v2fCross o; + UNITY_SETUP_INSTANCE_ID(v); + UNITY_TRANSFER_INSTANCE_ID(v, o); + UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o); + + o.pos = v.vertex; + o.pos.y *= _ProjectionParams.x; + + o.uv = v.texcoord; + float2 inc = float2(0, _MainTex_TexelSize.y * 1.3846153846 * _BlurScale); + o.uv1 = v.texcoord - inc; + o.uv2 = v.texcoord + inc; + float2 inc2 = float2(0, _MainTex_TexelSize.y * 3.2307692308 * _BlurScale); + o.uv3 = v.texcoord - inc2; + o.uv4 = v.texcoord + inc2; + return o; + } + + float4 fragBlur (v2fCross i): SV_Target { + UNITY_SETUP_INSTANCE_ID(i); + UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(i); + float4 pixel = UNITY_SAMPLE_SCREENSPACE_TEXTURE(_MainTex, i.uv) * 0.2270270270 + + (UNITY_SAMPLE_SCREENSPACE_TEXTURE(_MainTex, i.uv1) + UNITY_SAMPLE_SCREENSPACE_TEXTURE(_MainTex, i.uv2)) * 0.3162162162 + + (UNITY_SAMPLE_SCREENSPACE_TEXTURE(_MainTex, i.uv3) + UNITY_SAMPLE_SCREENSPACE_TEXTURE(_MainTex, i.uv4)) * 0.0702702703; + return pixel; + } + + float4 fragResample(v2fCross i) : SV_Target { + UNITY_SETUP_INSTANCE_ID(i); + UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(i); + float4 c1 = UNITY_SAMPLE_SCREENSPACE_TEXTURE(_MainTex, i.uv1); + float4 c2 = UNITY_SAMPLE_SCREENSPACE_TEXTURE(_MainTex, i.uv2); + float4 c3 = UNITY_SAMPLE_SCREENSPACE_TEXTURE(_MainTex, i.uv3); + float4 c4 = UNITY_SAMPLE_SCREENSPACE_TEXTURE(_MainTex, i.uv4); + return (c1+c2+c3+c4) * 0.25; + } + + + ENDCG + + Pass { + Name "Blur Horizontal" + CGPROGRAM + #pragma vertex vertBlurH + #pragma fragment fragBlur + #pragma fragmentoption ARB_precision_hint_fastest + #pragma target 3.0 + ENDCG + } + + Pass { + Name "Blur Vertical" + CGPROGRAM + #pragma vertex vertBlurV + #pragma fragment fragBlur + #pragma fragmentoption ARB_precision_hint_fastest + #pragma target 3.0 + ENDCG + } + + Pass { + Name "Resample" + CGPROGRAM + #pragma vertex vertCross + #pragma fragment fragResample + #pragma fragmentoption ARB_precision_hint_fastest + #pragma target 3.0 + ENDCG + } + + Pass { + Name "Blur Horizontalx2" + CGPROGRAM + #pragma vertex vertBlurH2 + #pragma fragment fragBlur + #pragma fragmentoption ARB_precision_hint_fastest + #pragma target 3.0 + ENDCG + } + + } +} \ No newline at end of file diff --git a/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightBlurOutline.shader.meta b/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightBlurOutline.shader.meta new file mode 100644 index 000000000..31a942bff --- /dev/null +++ b/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightBlurOutline.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 74f3491dcf1224f0c91238381c035439 +timeCreated: 1556874239 +licenseType: Store +ShaderImporter: + defaultTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightClearStencil.shader b/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightClearStencil.shader new file mode 100755 index 000000000..b8c0c99b0 --- /dev/null +++ b/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightClearStencil.shader @@ -0,0 +1,95 @@ +Shader "HighlightPlus/ClearStencil" +{ + Properties + { + } + SubShader + { + Stencil { + Ref 2 + Comp Always + Pass zero + } + ZTest Always + ZWrite Off + Cull Off + ColorMask 0 + + Pass // clear stencil full screen + { + CGPROGRAM + #pragma vertex vert + #pragma fragment frag + + #include "UnityCG.cginc" + + struct appdata + { + float4 vertex : POSITION; + UNITY_VERTEX_INPUT_INSTANCE_ID + }; + + struct v2f + { + float4 pos : SV_POSITION; + UNITY_VERTEX_OUTPUT_STEREO + }; + + + v2f vert (appdata v) + { + v2f o; + UNITY_SETUP_INSTANCE_ID(v); + UNITY_INITIALIZE_OUTPUT(v2f, o); + UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o); + o.pos = float4(v.vertex.xy, 0, 0.5); + return o; + } + + fixed4 frag (v2f i) : SV_Target + { + return 0; + } + ENDCG + } + + Pass // clear stencil object-space + { + CGPROGRAM + #pragma vertex vert + #pragma fragment frag + + #include "UnityCG.cginc" + #include "CustomVertexTransform.cginc" + + struct appdata + { + float4 vertex : POSITION; + UNITY_VERTEX_INPUT_INSTANCE_ID + }; + + struct v2f + { + float4 pos : SV_POSITION; + UNITY_VERTEX_OUTPUT_STEREO + }; + + + v2f vert (appdata v) + { + v2f o; + UNITY_SETUP_INSTANCE_ID(v); + UNITY_INITIALIZE_OUTPUT(v2f, o); + UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o); + o.pos = ComputeVertexPosition(v.vertex); + return o; + } + + fixed4 frag (v2f i) : SV_Target + { + return 0; + } + ENDCG + } + } +} diff --git a/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightClearStencil.shader.meta b/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightClearStencil.shader.meta new file mode 100644 index 000000000..39152518a --- /dev/null +++ b/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightClearStencil.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 844773224daae4c31a9160897f833c5b +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightComposeGlow.shader b/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightComposeGlow.shader new file mode 100644 index 000000000..4d2f0fd14 --- /dev/null +++ b/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightComposeGlow.shader @@ -0,0 +1,168 @@ +Shader "HighlightPlus/Geometry/ComposeGlow" { +Properties { + _MainTex ("Texture", Any) = "black" {} + _Color ("Color", Color) = (1,1,1) + [HideInInspector] _Cull ("Cull Mode", Int) = 2 + [HideInInspector] _ZTest ("ZTest Mode", Int) = 0 + [HideInInspector] _Flip("Flip", Vector) = (0, 1, 0) + [HideInInspector] _BlendSrc("Blend Src", Int) = 1 + [HideInInspector] _BlendDst("Blend Dst", Int) = 1 + _Debug("Debug Color", Color) = (0,0,0,0) + [HideInInspector] _GlowStencilComp ("Stencil Comp", Int) = 6 +} + SubShader + { + Tags { "Queue"="Transparent+102" "RenderType"="Transparent" "DisableBatching" = "True" } + Blend [_BlendSrc] [_BlendDst] + + // Compose effect on camera target + Pass + { + ZWrite Off + ZTest Always // [_ZTest] + Cull Off //[_Cull] + Stencil { + Ref 2 + Comp [_GlowStencilComp] + Pass keep + ReadMask 2 + WriteMask 2 + } + + CGPROGRAM + #pragma vertex vert + #pragma fragment frag + #pragma multi_compile_local _ HP_MASK_CUTOUT + + #include "UnityCG.cginc" + + UNITY_DECLARE_SCREENSPACE_TEXTURE(_HPComposeGlowFinal); + UNITY_DECLARE_SCREENSPACE_TEXTURE(_HPSourceRT); + float4 _HPSourceRT_TexelSize; + + fixed4 _Color; + float3 _Flip; + fixed4 _Debug; + + struct appdata + { + float4 vertex : POSITION; + UNITY_VERTEX_INPUT_INSTANCE_ID + }; + + struct v2f + { + float4 pos: SV_POSITION; + float4 scrPos: TEXCOORD0; + UNITY_VERTEX_INPUT_INSTANCE_ID + UNITY_VERTEX_OUTPUT_STEREO + }; + + v2f vert (appdata v) + { + v2f o; + UNITY_SETUP_INSTANCE_ID(v); + UNITY_INITIALIZE_OUTPUT(v2f, o); + UNITY_TRANSFER_INSTANCE_ID(v, o); + UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o); + o.pos = UnityObjectToClipPos(v.vertex); + o.scrPos = ComputeScreenPos(o.pos); + o.scrPos.y = o.scrPos.w * _Flip.x + o.scrPos.y * _Flip.y; + return o; + } + + fixed4 frag (v2f i) : SV_Target + { + UNITY_SETUP_INSTANCE_ID(i); + UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(i); + + float2 uv = i.scrPos.xy/i.scrPos.w; + fixed glow = UNITY_SAMPLE_SCREENSPACE_TEXTURE(_HPComposeGlowFinal, uv).r; + + #if HP_MASK_CUTOUT + fixed maskN = UNITY_SAMPLE_SCREENSPACE_TEXTURE(_HPSourceRT, uv + float2(0, 1) * _HPSourceRT_TexelSize.xy).r; + fixed maskS = UNITY_SAMPLE_SCREENSPACE_TEXTURE(_HPSourceRT, uv + float2(0, -1) * _HPSourceRT_TexelSize.xy).r; + fixed maskW = UNITY_SAMPLE_SCREENSPACE_TEXTURE(_HPSourceRT, uv + float2(-1, 0) * _HPSourceRT_TexelSize.xy).r; + fixed maskE = UNITY_SAMPLE_SCREENSPACE_TEXTURE(_HPSourceRT, uv + float2(1, 0) * _HPSourceRT_TexelSize.xy).r; + glow *= maskN == 0 || maskS == 0 || maskW == 0 || maskE == 0; + #endif + + fixed4 color = _Color; + color *= glow; + + + color += _Debug; + color.a = saturate(color.a); + return color; + } + ENDCG + } + + // Compose effect on camera target (full-screen blit) + Pass + { + ZWrite Off + ZTest Always //[_ZTest] + Cull Off //[_Cull] + + Stencil { + Ref 2 + Comp NotEqual + Pass keep + ReadMask 2 + WriteMask 2 + } + + CGPROGRAM + #pragma vertex vert + #pragma fragment frag + + #include "UnityCG.cginc" + + UNITY_DECLARE_SCREENSPACE_TEXTURE(_MainTex); + float4 _MainTex_ST; + fixed4 _Color; + float3 _Flip; + + struct appdata + { + float4 vertex : POSITION; + float2 uv : TEXCOORD0; + UNITY_VERTEX_INPUT_INSTANCE_ID + }; + + struct v2f + { + float4 pos: SV_POSITION; + float2 uv : TEXCOORD0; + UNITY_VERTEX_INPUT_INSTANCE_ID + UNITY_VERTEX_OUTPUT_STEREO + }; + + v2f vert(appdata v) + { + v2f o; + UNITY_SETUP_INSTANCE_ID(v); + UNITY_INITIALIZE_OUTPUT(v2f, o); + UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o); + o.pos = UnityObjectToClipPos(v.vertex); + o.uv = UnityStereoScreenSpaceUVAdjust(v.uv, _MainTex_ST); + o.uv.y = _Flip.x + o.uv.y * _Flip.y; + return o; + } + + fixed4 frag(v2f i) : SV_Target + { + UNITY_SETUP_INSTANCE_ID(i); + UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(i); + fixed4 glow = UNITY_SAMPLE_SCREENSPACE_TEXTURE(_MainTex, i.uv); + fixed4 color = _Color; + color *= glow.r; + color.a = saturate(color.a); + return color; + } + ENDCG + } + + } +} \ No newline at end of file diff --git a/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightComposeGlow.shader.meta b/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightComposeGlow.shader.meta new file mode 100644 index 000000000..186a4c954 --- /dev/null +++ b/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightComposeGlow.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 975a91ee935da4d9c8a3e807fecd8047 +timeCreated: 1544699251 +licenseType: Store +ShaderImporter: + defaultTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightComposeOutline.shader b/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightComposeOutline.shader new file mode 100644 index 000000000..93a136eb7 --- /dev/null +++ b/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightComposeOutline.shader @@ -0,0 +1,181 @@ +Shader "HighlightPlus/Geometry/ComposeOutline" { +Properties { + _MainTex ("Texture", Any) = "black" {} + _Color("Color", Color) = (1,1,1) + _Cull("Cull Mode", Int) = 2 + _ZTest("ZTest Mode", Int) = 0 + _Flip("Flip", Vector) = (0, 1, 0) + _Debug("Debug Color", Color) = (0,0,0,0) + _OutlineStencilComp("Stencil Comp", Int) = 6 + _OutlineSharpness("Outline Sharpness", Float) = 1.0 +} +SubShader + { + Tags { "Queue" = "Transparent+120" "RenderType" = "Transparent" "DisableBatching" = "True" } + Blend SrcAlpha OneMinusSrcAlpha + + // Compose effect on camera target (optimal quad blit) + Pass + { + ZWrite Off + ZTest Always // [_ZTest] + Cull Off // [_Cull] + Stencil { + Ref 2 + Comp [_OutlineStencilComp] + Pass keep + ReadMask 2 + WriteMask 2 + } + + CGPROGRAM + #pragma vertex vert + #pragma fragment frag + #pragma multi_compile_local _ HP_ALL_EDGES + #pragma multi_compile_local _ HP_MASK_CUTOUT + + #include "UnityCG.cginc" + + UNITY_DECLARE_SCREENSPACE_TEXTURE(_HPComposeOutlineFinal); + UNITY_DECLARE_SCREENSPACE_TEXTURE(_HPSourceRT); + float4 _HPSourceRT_TexelSize; + + fixed4 _Color; + float3 _Flip; + fixed4 _Debug; + fixed _OutlineSharpness; + #if HP_ALL_EDGES + #define OUTLINE_SOURCE outline.g + #else + #define OUTLINE_SOURCE outline.r + #endif + + struct appdata + { + float4 vertex : POSITION; + UNITY_VERTEX_INPUT_INSTANCE_ID + }; + + struct v2f + { + float4 pos: SV_POSITION; + float4 scrPos: TEXCOORD0; + UNITY_VERTEX_INPUT_INSTANCE_ID + UNITY_VERTEX_OUTPUT_STEREO + }; + + v2f vert (appdata v) + { + v2f o; + UNITY_SETUP_INSTANCE_ID(v); + UNITY_INITIALIZE_OUTPUT(v2f, o); + UNITY_TRANSFER_INSTANCE_ID(v, o); + UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o); + o.pos = UnityObjectToClipPos(v.vertex); + o.scrPos = ComputeScreenPos(o.pos); + o.scrPos.y = o.scrPos.w * _Flip.x + o.scrPos.y * _Flip.y; + return o; + } + + fixed4 frag (v2f i) : SV_Target + { + UNITY_SETUP_INSTANCE_ID(i); + UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(i); + float2 uv = i.scrPos.xy/i.scrPos.w; + fixed4 outline = UNITY_SAMPLE_SCREENSPACE_TEXTURE(_HPComposeOutlineFinal, uv); + fixed4 color = _Color; + color.a *= OUTLINE_SOURCE; + + #if HP_MASK_CUTOUT + fixed4 maskN = UNITY_SAMPLE_SCREENSPACE_TEXTURE(_HPSourceRT, uv + float2(0, 1) * _HPSourceRT_TexelSize.xy); + fixed4 maskS = UNITY_SAMPLE_SCREENSPACE_TEXTURE(_HPSourceRT, uv + float2(0, -1) * _HPSourceRT_TexelSize.xy); + fixed4 maskW = UNITY_SAMPLE_SCREENSPACE_TEXTURE(_HPSourceRT, uv + float2(-1, 0) * _HPSourceRT_TexelSize.xy); + fixed4 maskE = UNITY_SAMPLE_SCREENSPACE_TEXTURE(_HPSourceRT, uv + float2(1, 0) * _HPSourceRT_TexelSize.xy); + color.a *= all(maskN.rgb==0) || all(maskS.rgb == 0) || all(maskW.rgb == 0) || all(maskE.rgb == 0); + #endif + + color += _Debug; + color.a = saturate(color.a); + color.a = pow(color.a, _OutlineSharpness); + + return color; + } + ENDCG + } + + // Compose effect on camera target (full-screen blit) + Pass + { + ZWrite Off + ZTest Always //[_ZTest] + Cull Off // [_Cull] + Stencil { + Ref 2 + Comp [_OutlineStencilComp] + Pass keep + ReadMask 2 + WriteMask 2 + } + + CGPROGRAM + #pragma vertex vert + #pragma fragment frag + #pragma multi_compile_local _ HP_ALL_EDGES + + #include "UnityCG.cginc" + + UNITY_DECLARE_SCREENSPACE_TEXTURE(_MainTex); + float4 _MainTex_ST; + fixed4 _Color; + float3 _Flip; + fixed _OutlineSharpness; + #if HP_ALL_EDGES + #define OUTLINE_SOURCE outline.g + #else + #define OUTLINE_SOURCE outline.r + #endif + + struct appdata + { + float4 vertex : POSITION; + float2 uv : TEXCOORD0; + UNITY_VERTEX_INPUT_INSTANCE_ID + }; + + struct v2f + { + float4 pos: SV_POSITION; + float2 uv : TEXCOORD0; + UNITY_VERTEX_INPUT_INSTANCE_ID + UNITY_VERTEX_OUTPUT_STEREO + }; + + v2f vert(appdata v) + { + v2f o; + UNITY_SETUP_INSTANCE_ID(v); + UNITY_INITIALIZE_OUTPUT(v2f, o); + UNITY_TRANSFER_INSTANCE_ID(v, o); + UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o); + o.pos = UnityObjectToClipPos(v.vertex); + o.uv = UnityStereoScreenSpaceUVAdjust(v.uv, _MainTex_ST); + o.uv.y = _Flip.x + o.uv.y * _Flip.y; + return o; + } + + fixed4 frag(v2f i) : SV_Target + { + UNITY_SETUP_INSTANCE_ID(i); + UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(i); + fixed4 outline = UNITY_SAMPLE_SCREENSPACE_TEXTURE(_MainTex, i.uv); + fixed4 color = _Color; + color.a *= OUTLINE_SOURCE; + color = saturate(color); + color.a = pow(color.a, _OutlineSharpness); + return color; + } + ENDCG + } + + } +} \ No newline at end of file diff --git a/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightComposeOutline.shader.meta b/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightComposeOutline.shader.meta new file mode 100644 index 000000000..ced1aa18d --- /dev/null +++ b/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightComposeOutline.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 0a6de74b6cfa9440182f8f56e4a0e4f1 +timeCreated: 1544699251 +licenseType: Store +ShaderImporter: + defaultTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightGlow.mat b/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightGlow.mat new file mode 100644 index 000000000..484639dc2 --- /dev/null +++ b/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightGlow.mat @@ -0,0 +1,105 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: HighlightGlow + m_Shader: {fileID: 4800000, guid: 049d9e75e07674a78a703cf1203c07dd, type: 3} + m_ValidKeywords: [] + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 1 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _NoiseTex: + m_Texture: {fileID: 2800000, guid: 12319e92c3b5b45d193b1fe41ed05a1f, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _AlphaClip: 0 + - _Blend: 0 + - _BumpScale: 1 + - _ConstantWidth: 1 + - _Cull: 2 + - _CutOff: 0.5 + - _Cutoff: 0.5 + - _DstBlend: 0 + - _EnvironmentReflections: 1 + - _GlossMapScale: 0 + - _Glossiness: 0 + - _GlossyReflections: 0 + - _GlowStencilComp: 6 + - _GlowStencilOp: 0 + - _GlowZTest: 4 + - _Metallic: 0 + - _OcclusionStrength: 1 + - _QueueOffset: 0 + - _ReceiveShadows: 1 + - _Smoothness: 0.5 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _Surface: 0 + - _WorkflowMode: 1 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + - _Color: {r: 0.5, g: 0.5, b: 0.5, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _Glow: {r: 1, g: 0.025, b: 0.75, a: 0.5} + - _Glow2: {r: 0.01, g: 1, b: 0.5, a: 0} + - _GlowColor: {r: 1, g: 1, b: 1, a: 1} + - _GlowDirection: {r: 1, g: 1, b: 0, a: 1} + - _SpecColor: {r: 0.2, g: 0.2, b: 0.2, a: 1} + m_BuildTextureStacks: [] +--- !u!114 &8957597210722627563 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 1 diff --git a/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightGlow.mat.meta b/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightGlow.mat.meta new file mode 100644 index 000000000..43f7b20e5 --- /dev/null +++ b/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightGlow.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 41672e7b4c6544aedbffb9e271c7ef7c +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightGlow.shader b/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightGlow.shader new file mode 100644 index 000000000..5d0bda31b --- /dev/null +++ b/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightGlow.shader @@ -0,0 +1,134 @@ +Shader "HighlightPlus/Geometry/Glow" { +Properties { + _MainTex ("Texture", Any) = "white" {} + _Glow2 ("Glow2", Vector) = (0.01, 1, 0.5, 0) + _Color ("Color", Color) = (1,1,1) // not used; dummy property to avoid inspector warning "material has no _Color property" + _Cull ("Cull Mode", Int) = 2 + _ConstantWidth ("Constant Width", Float) = 1 + _MinimumWidth ("Minimum Width", Float) = 0 + _GlowZTest ("ZTest", Int) = 4 + _GlowStencilOp ("Stencil Operation", Int) = 0 + _CutOff("CutOff", Float ) = 0.5 + _GlowStencilComp ("Stencil Comp", Int) = 6 + _NoiseTex("Noise Tex", 2D) = "white" {} +} + SubShader + { + Tags { "Queue"="Transparent+102" "RenderType"="Transparent" "DisableBatching"="True" } + + // Glow passes + Pass + { + Stencil { + Ref 2 + Comp [_GlowStencilComp] + Pass [_GlowStencilOp] + ReadMask 2 + WriteMask 2 + } + Blend SrcAlpha OneMinusSrcAlpha + ZWrite Off + Cull [_Cull] + ZTest [_GlowZTest] + + CGPROGRAM + #pragma vertex vert + #pragma fragment frag + #pragma multi_compile_instancing + #pragma multi_compile_local _ HP_ALPHACLIP + #pragma multi_compile_local _ HP_DITHER_BLUENOISE + #include "UnityCG.cginc" + #include "CustomVertexTransform.cginc" + + struct appdata + { + float4 vertex : POSITION; + float3 normal : NORMAL; + float2 uv : TEXCOORD0; + UNITY_VERTEX_INPUT_INSTANCE_ID + }; + + struct v2f + { + float4 pos : SV_POSITION; + fixed4 color : COLOR; + float2 uv : TEXCOORD0; + UNITY_VERTEX_INPUT_INSTANCE_ID + UNITY_VERTEX_OUTPUT_STEREO + }; + + //float4 _Glow; // x = intensity, y = width, z = magic number 1, w = magic number 2 + float3 _Glow2; // x = outline width, y = glow speed, z = dither intensity + float _ConstantWidth, _MinimumWidth; + fixed _CutOff; + sampler2D _MainTex; + float4 _MainTex_ST; + float4 _MainTex_TexelSize; + sampler2D _NoiseTex; + float4 _NoiseTex_TexelSize; + + UNITY_INSTANCING_BUFFER_START(Props) + UNITY_DEFINE_INSTANCED_PROP(float4, _GlowColor) + UNITY_DEFINE_INSTANCED_PROP(float4, _Glow) + UNITY_DEFINE_INSTANCED_PROP(float4, _GlowDirection) + UNITY_INSTANCING_BUFFER_END(Props) + + + v2f vert (appdata v) + { + v2f o; + UNITY_SETUP_INSTANCE_ID(v); + UNITY_TRANSFER_INSTANCE_ID(v, o); + UNITY_INITIALIZE_OUTPUT(v2f, o); + UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o); + float4 pos = ComputeVertexPosition(v.vertex); + float3 norm = mul ((float3x3)UNITY_MATRIX_IT_MV, v.normal); + float2 offset = any(norm.xy)!=0 ? TransformViewToProjection(normalize(norm.xy)) : 0.0.xx; + float2 glowDirection = UNITY_ACCESS_INSTANCED_PROP(Props, _GlowDirection); + #if defined(UNITY_STEREO_INSTANCING_ENABLED) || defined(UNITY_STEREO_MULTIVIEW_ENABLED) || defined(SINGLE_PASS_STEREO) + glowDirection.x *= 2.0; + #endif + offset += glowDirection; + float z = lerp(UNITY_Z_0_FAR_FROM_CLIPSPACE(pos.z), 2.0, UNITY_MATRIX_P[3][3]); + float minWidth = lerp(2, z, _MinimumWidth); + z = lerp(minWidth, z, _ConstantWidth); + float outlineWidth = _Glow2.x; + float4 glow = UNITY_ACCESS_INSTANCED_PROP(Props, _Glow); + float animatedWidth = glow.y * (1.0 + 0.25 * sin(_Time.w * _Glow2.y)); + offset *= z * (outlineWidth + animatedWidth); + pos.xy += offset; + o.pos = pos; + o.color = UNITY_ACCESS_INSTANCED_PROP(Props, _GlowColor); + o.color.a = glow.x; + o.uv = TRANSFORM_TEX (v.uv, _MainTex); + return o; + } + + fixed4 frag (v2f i) : SV_Target + { + UNITY_SETUP_INSTANCE_ID(i); + #if HP_ALPHACLIP + fixed4 col = tex2D(_MainTex, i.uv); + clip(col.a - _CutOff); + #endif + + fixed4 color = i.color; + float4 glow = UNITY_ACCESS_INSTANCED_PROP(Props, _Glow); + + #if HP_DITHER_BLUENOISE + float2 noiseUV = i.pos.xy * _NoiseTex_TexelSize.xy; + fixed dither = tex2D(_NoiseTex, noiseUV).r; + color.a *= saturate( 1.0 - _Glow2.z * dither); + #else + float2 screenPos = floor( i.pos.xy * glow.z ) * glow.w; + fixed dither = frac(screenPos.x + screenPos.y); + color.a *= saturate(1.0 - _Glow2.z + dither); + #endif + + return color; + } + ENDCG + } + + } +} \ No newline at end of file diff --git a/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightGlow.shader.meta b/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightGlow.shader.meta new file mode 100644 index 000000000..f4794319a --- /dev/null +++ b/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightGlow.shader.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 049d9e75e07674a78a703cf1203c07dd +ShaderImporter: + externalObjects: {} + defaultTextures: + - _MainTex: {instanceID: 0} + - _NoiseTex: {fileID: 2800000, guid: 12319e92c3b5b45d193b1fe41ed05a1f, type: 3} + nonModifiableTextures: [] + preprocessorOverride: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightIconFX.shader b/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightIconFX.shader new file mode 100644 index 000000000..50e59bf8d --- /dev/null +++ b/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightIconFX.shader @@ -0,0 +1,69 @@ +Shader "HighlightPlus/Geometry/IconFX" +{ + Properties + { + _MainTex ("Texture", 2D) = "white" {} + _Color ("Color", Color) = (1,1,1,1) + _DarkColor ("Dark Color", Color) = (0.5, 0.5, 0.5,1) + } + + SubShader + { + Tags { "RenderType"="Transparent" "Queue"="Transparent" } + LOD 200 + + Pass + { + ZWrite Off + Blend SrcAlpha OneMinusSrcAlpha + + CGPROGRAM + #pragma vertex vert + #pragma fragment frag + #include "UnityCG.cginc" + + half4 _Color, _DarkColor; + + struct appdata + { + float4 vertex : POSITION; + float3 normal : NORMAL; + float4 color : COLOR; + float2 uv : TEXCOORD0; + }; + + struct v2f + { + float4 pos : SV_POSITION; + float3 normal : TEXCOORD1; + float4 color : COLOR; + float2 uv : TEXCOORD0; + }; + + v2f vert (appdata v) + { + v2f o; + o.pos = UnityObjectToClipPos(v.vertex); + o.normal = UnityObjectToWorldNormal(v.normal); + o.color = v.color; + o.uv = v.uv; + return o; + } + + fixed4 frag (v2f i) : SV_Target + { + fixed4 finalColor = i.color; + + // Basic Lambertian reflection (diffuse lighting) + float3 lightDir = normalize(_WorldSpaceLightPos0.xyz); + float lambert = max(dot(i.normal, lightDir), 0); + + // Apply lighting to final color + finalColor = lerp(_DarkColor, _Color, lambert); + + return finalColor; + } + ENDCG + } + } +} \ No newline at end of file diff --git a/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightIconFX.shader.meta b/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightIconFX.shader.meta new file mode 100644 index 000000000..11d9a2ecc --- /dev/null +++ b/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightIconFX.shader.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 102d0b94573b248649f49d8cf8cc8fa1 +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + preprocessorOverride: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightInnerGlow.shader b/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightInnerGlow.shader new file mode 100644 index 000000000..f5a306f94 --- /dev/null +++ b/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightInnerGlow.shader @@ -0,0 +1,98 @@ +Shader "HighlightPlus/Geometry/InnerGlow" { +Properties { + _MainTex ("Texture", Any) = "white" {} + _Color ("Color", Color) = (1,1,1) // not used; dummy property to avoid inspector warning "material has no _Color property" + _InnerGlowColor ("Inner Glow Color", Color) = (1,1,1,1) + _InnerGlowWidth ("Width", Float) = 1.0 + _CutOff("CutOff", Float ) = 0.5 + _Cull ("Cull Mode", Int) = 2 + _InnerGlowZTest ("ZTest", Int) = 4 + _InnerGlowBlendMode("Blend Mode", Int) = 1 +} + SubShader + { + Tags { "Queue"="Transparent+122" "RenderType"="Transparent" } + + // Inner Glow + Pass + { + Stencil { + Ref 4 + ReadMask 4 + Comp NotEqual + Pass keep + } + Blend SrcAlpha [_InnerGlowBlendMode] + ZWrite Off + ZTest [_InnerGlowZTest] + Cull [_Cull] + + CGPROGRAM + #pragma vertex vert + #pragma fragment frag + #pragma multi_compile_local _ HP_ALPHACLIP + + #include "UnityCG.cginc" + #include "CustomVertexTransform.cginc" + + struct appdata + { + float4 vertex : POSITION; + float2 uv : TEXCOORD0; + float3 normal : NORMAL; + UNITY_VERTEX_INPUT_INSTANCE_ID + }; + + struct v2f + { + float4 pos : SV_POSITION; + float2 uv : TEXCOORD0; + float3 wpos : TEXCOORD1; + float3 normal : NORMAL; + UNITY_VERTEX_OUTPUT_STEREO + }; + + sampler2D _MainTex; + float4 _MainTex_ST; + fixed _CutOff; + fixed4 _InnerGlowColor; + fixed _InnerGlowWidth; + + + v2f vert (appdata v) + { + v2f o; + UNITY_SETUP_INSTANCE_ID(v); + UNITY_INITIALIZE_OUTPUT(v2f, o); + UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o); + o.pos = ComputeVertexPosition(v.vertex); + o.wpos = mul(unity_ObjectToWorld, v.vertex).xyz; + o.normal = UnityObjectToWorldNormal(v.normal); + o.uv = TRANSFORM_TEX (v.uv, _MainTex); + + #if UNITY_REVERSED_Z + o.pos.z += 0.0001; + #else + o.pos.z -= 0.0001; + #endif + + return o; + } + + fixed4 frag (v2f i) : SV_Target + { + #if HP_ALPHACLIP + fixed4 color = tex2D(_MainTex, i.uv); + clip(color.a - _CutOff); + #endif + + float3 viewDir = normalize(i.wpos - _WorldSpaceCameraPos.xyz); + fixed dx = saturate(_InnerGlowWidth - abs(dot(viewDir, normalize(i.normal)))) / _InnerGlowWidth; + fixed4 col = _InnerGlowColor * dx; + return col; + } + ENDCG + } + + } +} \ No newline at end of file diff --git a/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightInnerGlow.shader.meta b/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightInnerGlow.shader.meta new file mode 100644 index 000000000..d52a3f3f5 --- /dev/null +++ b/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightInnerGlow.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: e5a069457bd344391acd5af227c0ce11 +timeCreated: 1544699250 +licenseType: Store +ShaderImporter: + defaultTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightMask.shader b/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightMask.shader new file mode 100644 index 000000000..303591cdb --- /dev/null +++ b/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightMask.shader @@ -0,0 +1,117 @@ +Shader "HighlightPlus/Geometry/Mask" { +Properties { + _MainTex ("Texture", Any) = "white" {} + _Color ("Color", Color) = (1,1,1) // not used; dummy property to avoid inspector warning "material has no _Color property" + _CutOff("CutOff", Float ) = 0.5 + _Cull ("Cull Mode", Int) = 2 + _ZTest("ZTest", Int) = 4 + _Padding("Padding", Float) = 0 +} + SubShader + { + Tags { "Queue"="Transparent+100" "RenderType"="Transparent" "DisableBatching"="True" } + CGINCLUDE + #include "UnityCG.cginc" + #include "CustomVertexTransform.cginc" + + sampler2D _MainTex; + float4 _MainTex_ST; + float4 _MainTex_TexelSize; + float _Padding; + fixed _CutOff; + + struct appdata + { + float4 vertex : POSITION; + float2 uv : TEXCOORD0; + UNITY_VERTEX_INPUT_INSTANCE_ID + }; + + struct v2f + { + float4 pos: SV_POSITION; + float2 uv : TEXCOORD0; + UNITY_VERTEX_OUTPUT_STEREO + }; + + + v2f vert (appdata v) + { + v2f o; + UNITY_SETUP_INSTANCE_ID(v); + UNITY_INITIALIZE_OUTPUT(v2f, o); + UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o); + v.vertex.xyz *= 1 + _Padding; + o.pos = ComputeVertexPosition(v.vertex); + o.uv = TRANSFORM_TEX (v.uv, _MainTex); + + #if UNITY_REVERSED_Z + o.pos.z += 0.0001; + #else + o.pos.z -= 0.0001; + #endif + + return o; + } + + fixed4 frag (v2f i) : SV_Target + { + #if HP_ALPHACLIP + fixed4 col = tex2D(_MainTex, i.uv); + clip(col.a - _CutOff); + #endif + return 0; + } + + ENDCG + + + // Create mask + Pass + { + Name "Mask" + Stencil { + Ref 2 + Comp always + Pass replace + WriteMask 2 + ReadMask 2 + } + ColorMask 0 + ZWrite Off + Cull [_Cull] // default Cull Back improves glow in high quality) + ZTest [_ZTest] + + CGPROGRAM + #pragma vertex vert + #pragma fragment frag + #pragma multi_compile_local _ HP_ALPHACLIP + ENDCG + } + + + // Create mask for see-through (the only difference is the ZTest) + Pass + { + Name "See-through Mask" + Stencil { + Ref 2 + Comp always + Pass replace + WriteMask 2 + ReadMask 2 + } + ColorMask 0 + ZWrite Off + Cull [_Cull] // default Cull Back improves glow in high quality) + ZTest LEqual + + CGPROGRAM + #pragma vertex vert + #pragma fragment frag + #pragma multi_compile_local _ HP_ALPHACLIP + ENDCG + } + + } +} \ No newline at end of file diff --git a/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightMask.shader.meta b/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightMask.shader.meta new file mode 100644 index 000000000..54d55089c --- /dev/null +++ b/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightMask.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: e694fa934b6db4a00b8d4b9887115332 +timeCreated: 1544699251 +licenseType: Store +ShaderImporter: + defaultTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightOccluder.shader b/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightOccluder.shader new file mode 100644 index 000000000..6afbd182c --- /dev/null +++ b/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightOccluder.shader @@ -0,0 +1,59 @@ +Shader "HighlightPlus/Geometry/SeeThroughOccluder" { +Properties { + _MainTex ("Texture", Any) = "white" {} + _Color ("Color", Color) = (1,1,1) // not used; dummy property to avoid inspector warning "material has no _Color property" +} + SubShader + { + Tags { "Queue"="Transparent+100" "RenderType"="Transparent" } + + // Create mask + Pass + { + Stencil { + Ref 3 + WriteMask 3 + Comp always + Pass replace + } + ColorMask 0 + ZWrite Off + Offset -1, -1 + + CGPROGRAM + #pragma vertex vert + #pragma fragment frag + + #include "UnityCG.cginc" + + struct appdata + { + float4 vertex : POSITION; + UNITY_VERTEX_INPUT_INSTANCE_ID + }; + + struct v2f + { + float4 pos : SV_POSITION; + UNITY_VERTEX_OUTPUT_STEREO + }; + + v2f vert (appdata v) + { + v2f o; + UNITY_SETUP_INSTANCE_ID(v); + UNITY_INITIALIZE_OUTPUT(v2f, o); + UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o); + o.pos = UnityObjectToClipPos(v.vertex); + return o; + } + + fixed4 frag (v2f i) : SV_Target + { + return 0; + } + ENDCG + } + + } +} \ No newline at end of file diff --git a/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightOccluder.shader.meta b/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightOccluder.shader.meta new file mode 100644 index 000000000..b5eca912c --- /dev/null +++ b/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightOccluder.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 229baf997355a43cda580dd4cf86b71e +timeCreated: 1544699251 +licenseType: Store +ShaderImporter: + defaultTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightOutline.mat b/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightOutline.mat new file mode 100644 index 000000000..701eed81b --- /dev/null +++ b/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightOutline.mat @@ -0,0 +1,94 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-6555637095062934885 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 1 +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: HighlightOutline + m_Shader: {fileID: 4800000, guid: cbbf740e9c8644e8492d08b1a3fd0203, type: 3} + m_ShaderKeywords: + m_LightmapFlags: 4 + m_EnableInstancingVariants: 1 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _AlphaClip: 0 + - _Blend: 0 + - _BumpScale: 1 + - _ConstantWidth: 1 + - _Cull: 2 + - _Cutoff: 0.5 + - _DstBlend: 0 + - _EnvironmentReflections: 1 + - _GlossMapScale: 0 + - _Glossiness: 0 + - _GlossyReflections: 0 + - _Metallic: 0 + - _OcclusionStrength: 1 + - _OutlineWidth: 0.01 + - _OutlineZTest: 4 + - _QueueOffset: 0 + - _ReceiveShadows: 1 + - _Smoothness: 0.5 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _Surface: 0 + - _WorkflowMode: 1 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + - _Color: {r: 0.5, g: 0.5, b: 0.5, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _OutlineColor: {r: 0, g: 0, b: 0, a: 1} + - _OutlineDirection: {r: 0, g: 0, b: 0, a: 1} + - _SpecColor: {r: 0.2, g: 0.2, b: 0.2, a: 1} diff --git a/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightOutline.mat.meta b/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightOutline.mat.meta new file mode 100644 index 000000000..2b0dc0b0c --- /dev/null +++ b/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightOutline.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 580895c3d590f4760ba7d0ee2a5dc624 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightOutline.shader b/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightOutline.shader new file mode 100644 index 000000000..99217d75b --- /dev/null +++ b/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightOutline.shader @@ -0,0 +1,193 @@ +Shader "HighlightPlus/Geometry/Outline" { +Properties { + _MainTex ("Texture", Any) = "white" {} + _OutlineWidth ("Outline Offset", Float) = 0.01 + _OutlineGradientTex("Outline Gradient Tex", 2D) = "white" {} + _Color ("Color", Color) = (1,1,1) // not used; dummy property to avoid inspector warning "material has no _Color property" + _Cull ("Cull Mode", Int) = 2 + _ConstantWidth ("Constant Width", Float) = 1 + _MinimumWidth("Minimum Width", Float) = 0 + _OutlineZTest("ZTest", Int) = 4 + _CutOff("CutOff", Float ) = 0.5 + _OutlineStencilComp ("Stencil Comp", Int) = 6 +} + SubShader + { + Tags { "Queue"="Transparent+120" "RenderType"="Transparent" "DisableBatching"="True" } + + Pass + { + Name "Outline" + Stencil { + Ref 2 + Comp [_OutlineStencilComp] + Pass replace + ReadMask 2 + WriteMask 2 + } + + Blend SrcAlpha OneMinusSrcAlpha + ZWrite Off + Cull [_Cull] + ZTest [_OutlineZTest] + + CGPROGRAM + #pragma vertex vert + #pragma fragment frag + #pragma multi_compile_instancing + #pragma multi_compile_local _ HP_ALPHACLIP + #pragma multi_compile_local _ HP_OUTLINE_GRADIENT_WS HP_OUTLINE_GRADIENT_LS + #include "UnityCG.cginc" + #include "CustomVertexTransform.cginc" + + struct appdata + { + float4 vertex : POSITION; + float3 normal : NORMAL; + float2 uv : TEXCOORD0; + UNITY_VERTEX_INPUT_INSTANCE_ID + }; + + struct v2f + { + float4 pos : SV_POSITION; + float2 uv : TEXCOORD0; + fixed yt : TEXCOORD1; + UNITY_VERTEX_OUTPUT_STEREO + }; + + fixed4 _OutlineColor; + sampler2D _OutlineGradientTex; + + float _OutlineWidth; + float _ConstantWidth, _MinimumWidth; + fixed _CutOff; + sampler2D _MainTex; + float4 _MainTex_ST; + float4 _MainTex_TexelSize; + + fixed2 _OutlineVertexData; + + UNITY_INSTANCING_BUFFER_START(Props) + UNITY_DEFINE_INSTANCED_PROP(float4, _OutlineDirection) + UNITY_INSTANCING_BUFFER_END(Props) + + + v2f vert (appdata v) + { + v2f o; + UNITY_SETUP_INSTANCE_ID(v); + UNITY_INITIALIZE_OUTPUT(v2f, o); + UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o); + + #if HP_OUTLINE_GRADIENT_WS + float posy = mul(unity_ObjectToWorld, v.vertex).y; + o.yt = saturate( (posy - _OutlineVertexData.x) / _OutlineVertexData.y); + #else + o.yt = saturate( (v.vertex.y - _OutlineVertexData.x) / _OutlineVertexData.y); + #endif + o.pos = ComputeVertexPosition(v.vertex); + float3 norm = mul ((float3x3)UNITY_MATRIX_IT_MV, v.normal); + float2 offset = any(norm.xy)!=0 ? TransformViewToProjection(normalize(norm.xy)) : 0.0.xx; + float z = lerp(UNITY_Z_0_FAR_FROM_CLIPSPACE(o.pos.z), 2.0, UNITY_MATRIX_P[3][3]); + float minWidth = lerp(2, z, _MinimumWidth); + z = lerp(minWidth, z, _ConstantWidth); + + float4 outlineDirection = UNITY_ACCESS_INSTANCED_PROP(Props, _OutlineDirection); + #if defined(UNITY_STEREO_INSTANCING_ENABLED) || defined(UNITY_STEREO_MULTIVIEW_ENABLED) || defined(SINGLE_PASS_STEREO) + outlineDirection.x *= 2.0; + #endif + o.pos.xy += offset * z * _OutlineWidth + outlineDirection.xy * z; + o.uv = TRANSFORM_TEX (v.uv, _MainTex); + return o; + } + + fixed4 frag (v2f i) : SV_Target + { + #if HP_ALPHACLIP + fixed4 col = tex2D(_MainTex, i.uv); + clip(col.a - _CutOff); + #endif + #if HP_OUTLINE_GRADIENT_WS || HP_OUTLINE_GRADIENT_LS + half4 color = tex2D(_OutlineGradientTex, float2(i.yt, 0)); + color.a *= _OutlineColor.a; + #else + half4 color = _OutlineColor; + #endif + return color; + } + ENDCG + } + + Pass + { + Name "Outline Clear Stencil" + Stencil { + Ref 2 + Comp Always + Pass zero + } + + ColorMask 0 + ZWrite Off + Cull [_Cull] + ZTest [_OutlineZTest] + + CGPROGRAM + #pragma vertex vert + #pragma fragment frag + #pragma multi_compile_instancing + #include "UnityCG.cginc" + #include "CustomVertexTransform.cginc" + + struct appdata + { + float4 vertex : POSITION; + float3 normal : NORMAL; + UNITY_VERTEX_INPUT_INSTANCE_ID + }; + + struct v2f + { + float4 pos : SV_POSITION; + UNITY_VERTEX_OUTPUT_STEREO + }; + + fixed4 _OutlineColor; + float _OutlineWidth; + float _ConstantWidth; + + UNITY_INSTANCING_BUFFER_START(Props) + UNITY_DEFINE_INSTANCED_PROP(float4, _OutlineDirection) + UNITY_INSTANCING_BUFFER_END(Props) + + v2f vert (appdata v) + { + v2f o; + UNITY_SETUP_INSTANCE_ID(v); + UNITY_INITIALIZE_OUTPUT(v2f, o); + UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o); + o.pos = ComputeVertexPosition(v.vertex); + float3 norm = mul ((float3x3)UNITY_MATRIX_IT_MV, v.normal); + float2 offset = any(norm.xy)!=0 ? TransformViewToProjection(normalize(norm.xy)) : 0.0.xx; + float z = lerp(UNITY_Z_0_FAR_FROM_CLIPSPACE(o.pos.z), 2.0, UNITY_MATRIX_P[3][3]); + z = _ConstantWidth * (z - 2.0) + 2.0; + float4 outlineDirection = UNITY_ACCESS_INSTANCED_PROP(Props, _OutlineDirection); + #if defined(UNITY_STEREO_INSTANCING_ENABLED) || defined(UNITY_STEREO_MULTIVIEW_ENABLED) || defined(SINGLE_PASS_STEREO) + outlineDirection.x *= 2.0; + #endif + + o.pos.xy += offset * z * _OutlineWidth + outlineDirection.xy * z; + return o; + } + + fixed4 frag (v2f i) : SV_Target + { + return 0; + } + ENDCG + } + + + } +} \ No newline at end of file diff --git a/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightOutline.shader.meta b/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightOutline.shader.meta new file mode 100644 index 000000000..14bfdeb4b --- /dev/null +++ b/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightOutline.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: cbbf740e9c8644e8492d08b1a3fd0203 +timeCreated: 1544699250 +licenseType: Store +ShaderImporter: + defaultTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightOverlay.shader b/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightOverlay.shader new file mode 100644 index 000000000..4538ea99c --- /dev/null +++ b/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightOverlay.shader @@ -0,0 +1,144 @@ +Shader "HighlightPlus/Geometry/Overlay" { +Properties { + _MainTex ("Texture", Any) = "white" {} + _Color ("Color", Color) = (1,1,1) // not used; dummy property to avoid inspector warning "material has no _Color property" + _OverlayColor ("Overlay Color", Color) = (1,1,1,1) + _OverlayBackColor ("Overlay Back Color", Color) = (1,1,1,1) + _OverlayData("Overlay Data", Vector) = (1,0.5,1,1) + _OverlayHitPosData("Overlay Hit Pos Data", Vector) = (0,0,0,0) + _OverlayHitStartTime("Overlay Hit Start Time", Float) = 0 + _OverlayTexture("Overlay Texture", 2D) = "white" {} + _CutOff("CutOff", Float ) = 0.5 + _Cull ("Cull Mode", Int) = 2 + _OverlayZTest("ZTest", Int) = 4 +} + SubShader + { + Tags { "Queue"="Transparent+121" "RenderType"="Transparent" "DisableBatching"="True" } + + // Overlay + Pass + { + Name "Overlay" + Stencil { + Ref 4 + ReadMask 4 + Comp NotEqual + Pass keep + } + Blend SrcAlpha OneMinusSrcAlpha + ZWrite Off + Cull [_Cull] + Offset -1, -1 // avoid issues on Quest 2 standalone when using with other render features (ie. Liquid Volume Pro 2 irregular topology) + ZTest [_OverlayZTest] + + CGPROGRAM + #pragma vertex vert + #pragma fragment frag + #pragma multi_compile_local _ HP_ALPHACLIP + #pragma multi_compile_local _ HP_TEXTURE_TRIPLANAR HP_TEXTURE_SCREENSPACE HP_TEXTURE_OBJECTSPACE + + #include "UnityCG.cginc" + #include "CustomVertexTransform.cginc" + + struct appdata + { + float4 vertex : POSITION; + float2 uv : TEXCOORD0; + float3 norm : NORMAL; + UNITY_VERTEX_INPUT_INSTANCE_ID + }; + + struct v2f + { + float4 pos : SV_POSITION; + float2 uv : TEXCOORD0; + float3 wpos : TEXCOORD1; + #if HP_TEXTURE_TRIPLANAR + float3 wnorm : TEXCOORD2; + #endif + #if HP_TEXTURE_SCREENSPACE + float4 scrPos : TEXCOORD3; + #endif + UNITY_VERTEX_OUTPUT_STEREO + }; + + fixed4 _OverlayColor; + sampler2D _MainTex; + float4 _MainTex_ST; + fixed4 _OverlayBackColor; + fixed4 _OverlayData; // x = speed, y = MinIntensity, z = blend, w = texture scale + float4 _OverlayHitPosData; + float _OverlayHitStartTime; + fixed _CutOff; + sampler2D _OverlayTexture; + float2 _OverlayTextureScrolling; + + v2f vert (appdata v) + { + v2f o; + UNITY_SETUP_INSTANCE_ID(v); + UNITY_INITIALIZE_OUTPUT(v2f, o); + UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o); + o.pos = ComputeVertexPosition(v.vertex); + #if HP_TEXTURE_SCREENSPACE + o.scrPos = ComputeScreenPos(o.pos); + o.scrPos.x *= _ScreenParams.x / _ScreenParams.y; + #endif + o.wpos = mul(unity_ObjectToWorld, v.vertex).xyz; + #if HP_TEXTURE_TRIPLANAR + o.wnorm = UnityObjectToWorldNormal(v.norm); + #endif + o.uv = TRANSFORM_TEX (v.uv, _MainTex); + return o; + } + + fixed4 frag (v2f i) : SV_Target + { + fixed4 color = tex2D(_MainTex, i.uv); + #if HP_ALPHACLIP + clip(color.a - _CutOff); + #endif + float time = _Time.y % 1000; + fixed t = _OverlayData.y + (1.0 - _OverlayData.y) * 2.0 * abs(0.5 - frac(time * _OverlayData.x)); + fixed4 col = lerp(_OverlayColor, color * _OverlayBackColor * _OverlayColor, _OverlayData.z); + col.a *= t; + + if (_OverlayHitPosData.w>0) { + float elapsed = _Time.y - _OverlayHitStartTime; + float hitDist = distance(i.wpos, _OverlayHitPosData.xyz); + float atten = saturate( min(elapsed, _OverlayHitPosData.w) / hitDist ); + col.a *= atten; + } + + #if HP_TEXTURE_TRIPLANAR + half3 triblend = saturate(pow(i.wnorm, 4)); + triblend /= max(dot(triblend, half3(1,1,1)), 0.0001); + + // triplanar uvs + float3 tpos = i.wpos * _OverlayData.w; + float2 uvX = tpos.zy; + float2 uvY = tpos.xz; + float2 uvZ = tpos.xy; + + // albedo textures + fixed4 colX = tex2D(_OverlayTexture, uvX); + fixed4 colY = tex2D(_OverlayTexture, uvY); + fixed4 colZ = tex2D(_OverlayTexture, uvZ); + fixed4 tex = colX * triblend.x + colY * triblend.y + colZ * triblend.z; + col *= tex; + #elif HP_TEXTURE_SCREENSPACE + float2 uvOffset = _OverlayTextureScrolling * _Time.y; + col *= tex2D(_OverlayTexture, (i.scrPos.xy / i.scrPos.w) * _OverlayData.w + uvOffset); + #elif HP_TEXTURE_OBJECTSPACE + float2 uvOffset = _OverlayTextureScrolling * _Time.y; + col *= tex2D(_OverlayTexture, i.uv * _OverlayData.w + uvOffset); + #endif + + return col; + } + ENDCG + } + + } +} \ No newline at end of file diff --git a/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightOverlay.shader.meta b/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightOverlay.shader.meta new file mode 100644 index 000000000..80f163688 --- /dev/null +++ b/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightOverlay.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: d17a98d19ada34bb7b4f86130e590159 +timeCreated: 1544699250 +licenseType: Store +ShaderImporter: + defaultTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightPlusDepthWrite.mat b/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightPlusDepthWrite.mat new file mode 100644 index 000000000..a13e48833 --- /dev/null +++ b/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightPlusDepthWrite.mat @@ -0,0 +1,76 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: HighlightPlusDepthWrite + m_Shader: {fileID: 4800000, guid: 058a572e30b2d446bade2dda32bcef0f, type: 3} + m_ShaderKeywords: + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _BumpScale: 1 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossyReflections: 1 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _UVSec: 0 + - _ZWrite: 1 + m_Colors: + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} diff --git a/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightPlusDepthWrite.mat.meta b/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightPlusDepthWrite.mat.meta new file mode 100644 index 000000000..7ce4eb288 --- /dev/null +++ b/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightPlusDepthWrite.mat.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 825cb444e111842cf97788cbb7583edd +timeCreated: 1546857910 +licenseType: Store +NativeFormatImporter: + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightSeeThrough.shader b/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightSeeThrough.shader new file mode 100644 index 000000000..1ac4edbe3 --- /dev/null +++ b/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightSeeThrough.shader @@ -0,0 +1,170 @@ +Shader "HighlightPlus/Geometry/SeeThrough" { +Properties { + _MainTex ("Texture", Any) = "white" {} + _SeeThrough ("See Through", Range(0,1)) = 0.8 + _SeeThroughTintColor ("See Through Tint Color", Color) = (1,0,0,0.8) + _SeeThroughNoise("Noise", Float) = 1 + _Color ("Color", Color) = (1,1,1) // not used; dummy property to avoid inspector warning "material has no _Color property" + _CutOff("CutOff", Float ) = 0.5 + _SeeThroughStencilRef ("Stencil Ref", Int) = 2 + _SeeThroughStencilComp ("Stencil Comp", Int) = 5 + _SeeThroughStencilPassOp ("Stencil Pass Operation", Int) = 0 + _SeeThroughDepthOffset ("Depth Offset", Float) = 0 + _SeeThroughMaxDepth("Max Depth", Float) = 0 + _SeeThroughTexture("Mask Texture", 2D) = "white" {} + _SeeThroughTextureScale("Mask Texture Scale", Float) = 1.0 + _Cull ("Cull Mode", Int) = 2 +} + SubShader + { + Tags { "Queue"="Transparent+201" "RenderType"="Transparent" "DisableBatching"="True" } + + // See through effect + Pass + { + Name "See-through" + Stencil { + ReadMask 3 + WriteMask 3 + Ref [_SeeThroughStencilRef] + Comp [_SeeThroughStencilComp] + Pass [_SeeThroughStencilPassOp] + Fail [_SeeThroughStencilPassOp] + } + ZTest Greater + ZWrite Off + Blend SrcAlpha OneMinusSrcAlpha + Cull [_Cull] // default Cull Back improves glow in high quality) + + CGPROGRAM + #pragma vertex vert + #pragma fragment frag + #pragma multi_compile_local _ HP_ALPHACLIP + #pragma multi_compile_local _ HP_DEPTH_OFFSET + #pragma multi_compile_local _ HP_SEETHROUGH_ONLY_BORDER + #pragma multi_compile_local _ HP_TEXTURE_TRIPLANAR HP_TEXTURE_SCREENSPACE HP_TEXTURE_OBJECTSPACE + + #include "UnityCG.cginc" + #include "CustomVertexTransform.cginc" + + struct appdata + { + float4 vertex : POSITION; + float3 norm : NORMAL; + float2 uv : TEXCOORD0; + UNITY_VERTEX_INPUT_INSTANCE_ID + }; + + struct v2f + { + float4 pos: SV_POSITION; + float2 uv : TEXCOORD0; + #if HP_DEPTH_OFFSET || HP_TEXTURE_SCREENSPACE + float4 scrPos : TEXCOORD1; + #endif + #if HP_DEPTH_OFFSET + float depth : TEXCOORD2; + #endif + float3 wpos : TEXCOORD3; + #if HP_TEXTURE_TRIPLANAR + float3 wnorm : TEXCOORD4; + #endif + UNITY_VERTEX_OUTPUT_STEREO + }; + + sampler2D _MainTex; + float4 _MainTex_ST; + fixed _SeeThrough; + fixed4 _SeeThroughTintColor; + fixed _CutOff; + fixed _SeeThroughNoise; + float _SeeThroughDepthOffset; + float _SeeThroughMaxDepth; + fixed _HP_Fade; + sampler2D _SeeThroughTexture; + fixed _SeeThroughTextureScale; + UNITY_DECLARE_DEPTH_TEXTURE(_CameraDepthTexture); + + v2f vert (appdata v) + { + v2f o; + UNITY_SETUP_INSTANCE_ID(v); + UNITY_INITIALIZE_OUTPUT(v2f, o); + UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o); + o.pos = ComputeVertexPosition(v.vertex); + #if HP_DEPTH_OFFSET || HP_TEXTURE_SCREENSPACE + o.scrPos = ComputeScreenPos(o.pos); + #endif + #if HP_DEPTH_OFFSET + COMPUTE_EYEDEPTH(o.depth); + #endif + o.wpos = mul(unity_ObjectToWorld, v.vertex).xyz; + #if HP_TEXTURE_TRIPLANAR + o.wnorm = UnityObjectToWorldNormal(v.norm); + #endif + o.uv = TRANSFORM_TEX(v.uv, _MainTex); + return o; + } + + float GetEyeDepth(float rawDepth) { + float persp = LinearEyeDepth(rawDepth); + float ortho = (_ProjectionParams.z-_ProjectionParams.y)*(1-rawDepth)+_ProjectionParams.y; + return lerp(persp,ortho,unity_OrthoParams.w); + } + + fixed4 frag (v2f i) : SV_Target + { + #if HP_SEETHROUGH_ONLY_BORDER + return 0; + #else + + #if HP_DEPTH_OFFSET + float sceneZ = SAMPLE_DEPTH_TEXTURE(_CameraDepthTexture, i.scrPos.xy / i.scrPos.w); + float sceneDepth = GetEyeDepth(sceneZ); + if (i.depth - sceneDepth - _SeeThroughDepthOffset < 0 || i.depth - sceneDepth > _SeeThroughMaxDepth) discard; + #endif + fixed4 col = tex2D(_MainTex, i.uv); + #if HP_ALPHACLIP + clip(col.a - _CutOff); + #endif + col.rgb = lerp(col.rgb, _SeeThroughTintColor.rgb, _SeeThroughTintColor.a); + float scry = i.pos.y; + float time = _Time.w % 1.0; + col.rgb += _SeeThroughNoise *(frac( scry * time ) * 0.1); + col.a = _SeeThrough; + col.a = lerp(col.a, col.a * ( (scry % 2) - 1.0 ), _SeeThroughNoise); + col.a *= _HP_Fade; + + #if HP_TEXTURE_TRIPLANAR + half3 triblend = saturate(pow(i.wnorm, 4)); + triblend /= max(dot(triblend, half3(1,1,1)), 0.0001); + + // triplanar uvs + float3 tpos = i.wpos * _SeeThroughTextureScale; + float2 uvX = tpos.zy; + float2 uvY = tpos.xz; + float2 uvZ = tpos.xy; + + // albedo textures + fixed4 colX = tex2D(_SeeThroughTexture, uvX); + fixed4 colY = tex2D(_SeeThroughTexture, uvY); + fixed4 colZ = tex2D(_SeeThroughTexture, uvZ); + fixed4 tex = colX * triblend.x + colY * triblend.y + colZ * triblend.z; + col *= tex; + #elif HP_TEXTURE_SCREENSPACE + float2 uv = (i.scrPos.xy / i.scrPos.w); + uv.x *= _ScreenParams.x / _ScreenParams.y; + col *= tex2D(_SeeThroughTexture, uv * _SeeThroughTextureScale); + #elif HP_TEXTURE_OBJECTSPACE + col *= tex2D(_SeeThroughTexture, i.uv * _SeeThroughTextureScale); + #endif + + return col; + + #endif // HP_ONLY_BORDER + } + ENDCG + } + + } +} \ No newline at end of file diff --git a/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightSeeThrough.shader.meta b/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightSeeThrough.shader.meta new file mode 100644 index 000000000..8312b80fb --- /dev/null +++ b/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightSeeThrough.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 47198bbf0b2a44882aceef6af17a467d +timeCreated: 1544699250 +licenseType: Store +ShaderImporter: + defaultTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightSeeThroughBorder.shader b/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightSeeThroughBorder.shader new file mode 100644 index 000000000..003ebb9bb --- /dev/null +++ b/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightSeeThroughBorder.shader @@ -0,0 +1,124 @@ +Shader "HighlightPlus/Geometry/SeeThroughBorder" { +Properties { + _MainTex ("Texture", Any) = "white" {} + _SeeThroughBorderColor ("Outline Color", Color) = (0,0,0,1) + _Color ("Color", Color) = (1,1,1) // not used; dummy property to avoid inspector warning "material has no _Color property" + _CutOff("CutOff", Float ) = 0.5 + _SeeThroughBorderWidth ("Outline Offset", Float) = 0.01 + _SeeThroughBorderConstantWidth ("Constant Width", Float) = 1 + _SeeThroughStencilRef ("Stencil Ref", Int) = 2 + _SeeThroughStencilComp ("Stencil Comp", Int) = 5 + _SeeThroughDepthOffset ("Depth Offset", Float) = 0 + _SeeThroughMaxDepth("Max Depth", Float) = 0 + _SeeThroughStencilPassOp ("Stencil Pass Operation", Int) = 0 + _Cull ("Cull Mode", Int) = 2 +} + SubShader + { + Tags { "Queue"="Transparent+201" "RenderType"="Transparent" "DisableBatching"="True" } + + // See through effect + Pass + { + Name "See-through border" + Stencil { + ReadMask 3 + WriteMask 3 + Ref [_SeeThroughStencilRef] + Comp [_SeeThroughStencilComp] + Pass [_SeeThroughStencilPassOp] + Fail [_SeeThroughStencilPassOp] + } + ZTest Greater + ZWrite Off + Blend SrcAlpha OneMinusSrcAlpha + Cull [_Cull] // default Cull Back improves glow in high quality) + + CGPROGRAM + #pragma vertex vert + #pragma fragment frag + #pragma multi_compile_local _ HP_ALPHACLIP + #pragma multi_compile_local _ HP_DEPTH_OFFSET + + #include "UnityCG.cginc" + #include "CustomVertexTransform.cginc" + + struct appdata + { + float4 vertex : POSITION; + float2 uv : TEXCOORD0; + float3 normal : NORMAL; + UNITY_VERTEX_INPUT_INSTANCE_ID + }; + + struct v2f + { + float4 pos: SV_POSITION; + float2 uv : TEXCOORD0; + #if HP_DEPTH_OFFSET + float4 scrPos : TEXCOORD1; + float depth : TEXCOORD2; + #endif + UNITY_VERTEX_OUTPUT_STEREO + }; + + sampler2D _MainTex; + float4 _MainTex_ST; + fixed4 _SeeThroughBorderColor; + fixed _CutOff; + float _SeeThroughDepthOffset; + float _SeeThroughMaxDepth; + float _SeeThroughBorderWidth; + float _SeeThroughBorderConstantWidth; + fixed _HP_Fade; + + UNITY_DECLARE_DEPTH_TEXTURE(_CameraDepthTexture); + + v2f vert (appdata v) + { + v2f o; + UNITY_SETUP_INSTANCE_ID(v); + UNITY_INITIALIZE_OUTPUT(v2f, o); + UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o); + o.pos = ComputeVertexPosition(v.vertex); + #if HP_DEPTH_OFFSET + o.scrPos = ComputeScreenPos(o.pos); + COMPUTE_EYEDEPTH(o.depth); + #endif + + float3 norm = mul ((float3x3)UNITY_MATRIX_IT_MV, v.normal); + float2 offset = any(norm.xy)!=0 ? TransformViewToProjection(normalize(norm.xy)) : 0.0.xx; + float z = lerp(UNITY_Z_0_FAR_FROM_CLIPSPACE(o.pos.z), 2.0, UNITY_MATRIX_P[3][3]); + z = _SeeThroughBorderConstantWidth * (z - 2.0) + 2.0; + o.pos.xy += offset * z * _SeeThroughBorderWidth; + + o.uv = TRANSFORM_TEX(v.uv, _MainTex); + return o; + } + + float GetEyeDepth(float rawDepth) { + float persp = LinearEyeDepth(rawDepth); + float ortho = (_ProjectionParams.z-_ProjectionParams.y)*(1-rawDepth)+_ProjectionParams.y; + return lerp(persp,ortho,unity_OrthoParams.w); + } + + fixed4 frag (v2f i) : SV_Target + { + #if HP_DEPTH_OFFSET + float sceneZ = SAMPLE_DEPTH_TEXTURE(_CameraDepthTexture, i.scrPos.xy / i.scrPos.w); + float sceneDepth = GetEyeDepth(sceneZ); + if (i.depth - sceneDepth - _SeeThroughDepthOffset < 0 || i.depth - sceneDepth > _SeeThroughMaxDepth) discard; + #endif + #if HP_ALPHACLIP + fixed4 col = tex2D(_MainTex, i.uv); + clip(col.a - _CutOff); + #endif + fixed4 res = _SeeThroughBorderColor; + res.a *= _HP_Fade; + return res; + } + ENDCG + } + + } +} \ No newline at end of file diff --git a/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightSeeThroughBorder.shader.meta b/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightSeeThroughBorder.shader.meta new file mode 100644 index 000000000..202bec656 --- /dev/null +++ b/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightSeeThroughBorder.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: fe0a98aa774224cf1bc4a800a586a33a +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightSeeThroughMask.shader b/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightSeeThroughMask.shader new file mode 100644 index 000000000..8e417bf46 --- /dev/null +++ b/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightSeeThroughMask.shader @@ -0,0 +1,62 @@ +Shader "HighlightPlus/Geometry/SeeThroughMask" { +Properties { + _MainTex ("Texture", Any) = "white" {} + _Color ("Color", Color) = (1,1,1) // not used; dummy property to avoid inspector warning "material has no _Color property" +} + SubShader + { + Tags { "Queue"="Transparent+201" "RenderType"="Transparent" "DisableBatching"="True" } + + // See through effect + Pass + { + Name "See-through mask" + Stencil { + WriteMask 3 + Ref 1 + Comp always + Pass replace + } + + ZTest Always + ZWrite On + ColorMask 0 + + CGPROGRAM + #pragma vertex vert + #pragma fragment frag + + #include "UnityCG.cginc" + #include "CustomVertexTransform.cginc" + + struct appdata + { + float4 vertex : POSITION; + UNITY_VERTEX_INPUT_INSTANCE_ID + }; + + struct v2f + { + float4 pos: SV_POSITION; + UNITY_VERTEX_OUTPUT_STEREO + }; + + v2f vert (appdata v) + { + v2f o; + UNITY_SETUP_INSTANCE_ID(v); + UNITY_INITIALIZE_OUTPUT(v2f, o); + UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o); + o.pos = ComputeVertexPosition(v.vertex); + return o; + } + + fixed4 frag (v2f i) : SV_Target + { + return 0; + } + ENDCG + } + + } +} \ No newline at end of file diff --git a/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightSeeThroughMask.shader.meta b/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightSeeThroughMask.shader.meta new file mode 100644 index 000000000..da76823f7 --- /dev/null +++ b/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightSeeThroughMask.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 457d76fdfc7c4472faeb0297c0edab29 +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightSolidColor.shader b/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightSolidColor.shader new file mode 100644 index 000000000..8efa079b7 --- /dev/null +++ b/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightSolidColor.shader @@ -0,0 +1,142 @@ +Shader "HighlightPlus/Geometry/SolidColor" { +Properties { + _MainTex ("Texture", Any) = "white" {} + _Color ("Color", Color) = (1,1,1) // not used; dummy property to avoid inspector warning "material has no _Color property" + _CutOff("CutOff", Float ) = 0.5 + _Cull ("Cull Mode", Int) = 2 + _ZTest("ZTest", Int) = 4 + _EdgeThreshold("Edge Threshold", Float) = 0.995 + _Padding("Padding", Float) = 0 +} + SubShader + { + Tags { "Queue"="Transparent+100" "RenderType"="Transparent" "DisableBatching" = "True" } + + // Compose effect on camera target + Pass + { + Name "Solid Color" + ZWrite Off + Cull [_Cull] + ZTest Always + Stencil { + Ref 2 + Comp NotEqual + Pass replace + } + CGPROGRAM + #pragma vertex vert + #pragma fragment frag + #pragma multi_compile_local _ HP_ALPHACLIP + #pragma multi_compile_local _ HP_DEPTHCLIP HP_DEPTHCLIP_INV + #pragma multi_compile_local _ HP_ALL_EDGES + + #include "UnityCG.cginc" + #include "CustomVertexTransform.cginc" + + sampler2D _MainTex; + #if HP_DEPTHCLIP || HP_DEPTHCLIP_INV || HP_ALL_EDGES + UNITY_DECLARE_DEPTH_TEXTURE(_CameraDepthTexture); + float4 _CameraDepthTexture_TexelSize;; + float _EdgeThreshold; + #endif + + float4 _MainTex_ST; + float _Padding; + fixed _CutOff; + fixed4 _Color; + + struct appdata + { + float4 vertex : POSITION; + float2 uv : TEXCOORD0; + UNITY_VERTEX_INPUT_INSTANCE_ID + }; + + struct v2f + { + float4 pos : SV_POSITION; + float2 uv : TEXCOORD0; + float4 scrPos : TEXCOORD1; + #if HP_DEPTHCLIP || HP_DEPTHCLIP_INV + float depth : TEXCOORD2; + #endif + UNITY_VERTEX_INPUT_INSTANCE_ID + UNITY_VERTEX_OUTPUT_STEREO + }; + + v2f vert (appdata v) + { + v2f o; + UNITY_SETUP_INSTANCE_ID(v); + UNITY_INITIALIZE_OUTPUT(v2f, o); + UNITY_TRANSFER_INSTANCE_ID(v, o); + UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o); + v.vertex.xyz *= 1.0 + _Padding; + o.pos = ComputeVertexPosition(v.vertex); + o.uv = TRANSFORM_TEX (v.uv, _MainTex); + o.scrPos = ComputeScreenPos(o.pos); + #if HP_DEPTHCLIP || HP_DEPTHCLIP_INV + COMPUTE_EYEDEPTH(o.depth); + #endif + return o; + } + +#if HP_ALL_EDGES + float3 GetNormal(float depth, float depth1, float depth2, float2 offset1, float2 offset2) { + float3 p1 = float3(offset1, depth1 - depth); + float3 p2 = float3(offset2, depth2 - depth); + float3 normal = cross(p1, p2); + return normalize(normal); + } + + fixed ComputeDepthOutline(float2 uv) { + float3 uvInc = float3(_CameraDepthTexture_TexelSize.x, _CameraDepthTexture_TexelSize.y, 0); + float depthS = Linear01Depth(SAMPLE_DEPTH_TEXTURE(_CameraDepthTexture, uv - uvInc.zy)); + float depthW = Linear01Depth(SAMPLE_DEPTH_TEXTURE(_CameraDepthTexture, uv - uvInc.xz)); + float depthE = Linear01Depth(SAMPLE_DEPTH_TEXTURE(_CameraDepthTexture, uv + uvInc.xz)); + float depthN = Linear01Depth(SAMPLE_DEPTH_TEXTURE(_CameraDepthTexture, uv + uvInc.zy)); + float depth = Linear01Depth(SAMPLE_DEPTH_TEXTURE(_CameraDepthTexture, uv)); + float3 normalNW = GetNormal(depth, depthN, depthW, uvInc.zy, float2(-uvInc.x, 0)); + float3 normalSE = GetNormal(depth, depthS, depthE, float2(0, -uvInc.y), uvInc.xz); + float dnorm = dot(normalNW, normalSE); + fixed outline = (fixed)(dnorm < _EdgeThreshold); + return outline; + } +#endif + + fixed4 frag (v2f i) : SV_Target + { + UNITY_SETUP_INSTANCE_ID(i); + UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(i); + + #if HP_ALPHACLIP + fixed4 col = tex2D(_MainTex, i.uv); + clip(col.a - _CutOff); + #endif + float2 uv = UnityStereoTransformScreenSpaceTex(i.scrPos.xy / i.scrPos.w); + #if HP_DEPTHCLIP || HP_DEPTHCLIP_INV + float depthRaw = SAMPLE_DEPTH_TEXTURE(_CameraDepthTexture, uv); + float depthPersp = LinearEyeDepth(depthRaw); + #if defined(UNITY_REVERSED_Z) + depthRaw = 1.0 - depthRaw; + #endif + float depthOrtho = lerp(_ProjectionParams.y, _ProjectionParams.z, depthRaw); + float vz = unity_OrthoParams.w ? depthOrtho : depthPersp; + #if HP_DEPTHCLIP_INV + clip( i.depth * 0.999 - vz); + #else + clip( vz - i.depth * 0.999); + #endif + #endif + #if HP_ALL_EDGES + return fixed4(1.0, ComputeDepthOutline(uv), 1.0, 1.0); + #else + return fixed4(1.0, 1.0, 1.0, 1.0); + #endif + } + ENDCG + } + + } +} \ No newline at end of file diff --git a/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightSolidColor.shader.meta b/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightSolidColor.shader.meta new file mode 100644 index 000000000..37f54c59c --- /dev/null +++ b/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightSolidColor.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 77643996218224478a471439e0ea5fb4 +timeCreated: 1544699251 +licenseType: Store +ShaderImporter: + defaultTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightTarget.shader b/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightTarget.shader new file mode 100644 index 000000000..e4aed23f4 --- /dev/null +++ b/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightTarget.shader @@ -0,0 +1,168 @@ +Shader "HighlightPlus/Geometry/Target" { +Properties { + _MainTex ("Texture", 2D) = "white" {} + _Color ("Color", Color) = (1,1,1,1) + _ZTest ("ZTest", Int) = 0 + } + + SubShader + { + Tags { "RenderType" = "Transparent" "Queue" = "Transparent-1" "DisableBatching" = "True" } + + // Target FX decal + Pass + { + Stencil { + Ref 2 + Comp NotEqual + ReadMask 2 + } + Blend SrcAlpha OneMinusSrcAlpha + ZWrite Off + ZTest [_ZTest] + Cull Off + + HLSLPROGRAM + + #pragma vertex vert + #pragma fragment frag + + #pragma target 3.0 + + #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl" + #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/DeclareDepthTexture.hlsl" + + struct appdata + { + float3 positionOS : POSITION; + UNITY_VERTEX_INPUT_INSTANCE_ID + }; + + struct v2f + { + float4 positionCS : SV_POSITION; + float4 screenPos : TEXCOORD0; + float4 rayVS : TEXCOORD1; + float3 camPosVS : TEXCOORD2; + UNITY_VERTEX_INPUT_INSTANCE_ID + UNITY_VERTEX_OUTPUT_STEREO + }; + + sampler2D _MainTex; + CBUFFER_START(UnityPerMaterial) + float4 _MainTex_ST; + half4 _Color; + float4 _TargetFXRenderData; + CBUFFER_END + + #define GROUND_NORMAL _TargetFXRenderData.xyz + #define FADE_POWER _TargetFXRenderData.w + + + v2f vert(appdata input) + { + v2f o; + UNITY_SETUP_INSTANCE_ID(input); + UNITY_TRANSFER_INSTANCE_ID(input, o); + UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o); + + VertexPositionInputs vertexPositionInput = GetVertexPositionInputs(input.positionOS); + o.positionCS = vertexPositionInput.positionCS; + o.screenPos = ComputeScreenPos(o.positionCS); + + float3 viewRay = vertexPositionInput.positionVS; + o.rayVS.w = viewRay.z; + float4x4 viewToObject = mul(UNITY_MATRIX_I_M, UNITY_MATRIX_I_V); + o.rayVS.xyz = mul((float3x3)viewToObject, -viewRay); + o.camPosVS = mul(viewToObject, float4(0,0,0,1)).xyz; + return o; + } + + half4 frag(v2f i) : SV_Target + { + UNITY_SETUP_INSTANCE_ID(i); + UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(i); + + float depth = SampleSceneDepth(i.screenPos.xy / i.screenPos.w); + float3 decalPos; + if(unity_OrthoParams.w) { + #if defined(UNITY_REVERSED_Z) + depth = 1.0 - depth; + #endif + float sceneDepthVS = lerp(_ProjectionParams.y, _ProjectionParams.z, depth); + float2 rayVSEnd = float2(unity_OrthoParams.xy * (i.screenPos.xy - 0.5) * 2.0); + float4 posVS = float4(rayVSEnd, -sceneDepthVS, 1); + float3 wpos = mul(UNITY_MATRIX_I_V, posVS).xyz; + decalPos = mul(GetWorldToObjectMatrix(), float4(wpos, 1)).xyz; + } else { + float depthEye = LinearEyeDepth(depth, _ZBufferParams); + decalPos = i.camPosVS + (i.rayVS.xyz / i.rayVS.w) * depthEye; + } + clip(0.5 - abs(decalPos)); + + // check normal + float3 normal = normalize(cross(ddx(decalPos), -ddy(decalPos))); + float slope = dot(normal, GROUND_NORMAL); + clip(slope - 0.01); + + float2 uv = decalPos.xz + 0.5; + half4 col = tex2D(_MainTex, uv); + col *= _Color; + + // atten with elevation + col.a /= 1.0 + pow(1.0 + max(0, decalPos.y - 0.1), FADE_POWER); + + return col; + } + ENDHLSL + } + + Pass + { + Blend SrcAlpha OneMinusSrcAlpha + ZWrite Off + ZTest [_ZTest] + Cull Off + CGPROGRAM + #pragma vertex vert + #pragma fragment frag + + #include "UnityCG.cginc" + + struct appdata + { + float4 vertex : POSITION; + float2 uv : TEXCOORD0; + UNITY_VERTEX_INPUT_INSTANCE_ID + }; + + struct v2f + { + float4 pos : SV_POSITION; + float2 uv : TEXCOORD0; + UNITY_VERTEX_OUTPUT_STEREO + }; + + sampler2D _MainTex; + fixed4 _Color; + + v2f vert (appdata v) + { + v2f o; + UNITY_SETUP_INSTANCE_ID(v); + UNITY_INITIALIZE_OUTPUT(v2f, o); + UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o); + o.pos = UnityObjectToClipPos(v.vertex); + o.uv = v.uv; + return o; + } + + fixed4 frag (v2f i) : SV_Target + { + return tex2D(_MainTex, i.uv) * _Color; + } + ENDCG + } + + } +} \ No newline at end of file diff --git a/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightTarget.shader.meta b/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightTarget.shader.meta new file mode 100644 index 000000000..d768e87d4 --- /dev/null +++ b/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightTarget.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 54328cae8f89d442da972097ce4f23d9 +timeCreated: 1544699250 +licenseType: Store +ShaderImporter: + defaultTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightUIMask.mat b/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightUIMask.mat new file mode 100644 index 000000000..31020b1e4 --- /dev/null +++ b/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightUIMask.mat @@ -0,0 +1,99 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-2752029129534311206 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 1 +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: HighlightUIMask + m_Shader: {fileID: 4800000, guid: 3e461a1484e2948598abca48b53d8b58, type: 3} + m_ValidKeywords: [] + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _AlphaClip: 0 + - _Blend: 0 + - _BumpScale: 1 + - _ColorMask: 15 + - _Cull: 2 + - _CutOff: 0.5 + - _Cutoff: 0.5 + - _DstBlend: 0 + - _EnvironmentReflections: 1 + - _GlossMapScale: 0 + - _Glossiness: 0 + - _GlossyReflections: 0 + - _Metallic: 0 + - _OcclusionStrength: 1 + - _QueueOffset: 0 + - _ReceiveShadows: 1 + - _Smoothness: 0.5 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _Stencil: 6 + - _StencilComp: 8 + - _StencilOp: 0 + - _StencilReadMask: 6 + - _StencilWriteMask: 6 + - _Surface: 0 + - _WorkflowMode: 1 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + - _Color: {r: 0.5, g: 0.5, b: 0.5, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _SpecColor: {r: 0.2, g: 0.2, b: 0.2, a: 1} + m_BuildTextureStacks: [] diff --git a/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightUIMask.mat.meta b/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightUIMask.mat.meta new file mode 100644 index 000000000..e4c879a5b --- /dev/null +++ b/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightUIMask.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 779128a8e84b44d4db81443c424af511 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightUIMask.shader b/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightUIMask.shader new file mode 100644 index 000000000..3f00bc443 --- /dev/null +++ b/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightUIMask.shader @@ -0,0 +1,74 @@ +Shader "HighlightPlus/UI/Mask" { +Properties { + _MainTex ("Texture", Any) = "white" {} + _Color ("Color", Color) = (1,1,1) // not used; dummy property to avoid inspector warning "material has no _Color property" + _CutOff("CutOff", Float ) = 0.5 + _Stencil("Stencil ID", Float) = 14 + _StencilWriteMask("Stencil Write Mask", Float) = 14 + _StencilReadMask("Stencil Read Mask", Float) = 14 +} + SubShader + { + Tags { "Queue"="Transparent" "RenderType"="Transparent" "IgnoreProjector" = "True" } + + // Create mask + Pass + { + Stencil { + Ref [_Stencil] + Comp always + Pass replace + ReadMask [_StencilReadMask] + WriteMask [_StencilWriteMask] + } + ColorMask 0 + ZWrite Off + Cull Off + + CGPROGRAM + #pragma vertex vert + #pragma fragment frag + #include "UnityCG.cginc" + #include "CustomVertexTransform.cginc" + + sampler2D _MainTex; + float4 _MainTex_ST; + float4 _MainTex_TexelSize; + fixed _CutOff; + + struct appdata + { + float4 vertex : POSITION; + float2 uv : TEXCOORD0; + UNITY_VERTEX_INPUT_INSTANCE_ID + }; + + struct v2f + { + float4 pos: SV_POSITION; + float2 uv : TEXCOORD0; + UNITY_VERTEX_OUTPUT_STEREO + }; + + v2f vert (appdata v) + { + v2f o; + UNITY_SETUP_INSTANCE_ID(v); + UNITY_INITIALIZE_OUTPUT(v2f, o); + UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o); + o.pos = ComputeVertexPosition(v.vertex); + o.uv = TRANSFORM_TEX (v.uv, _MainTex); + return o; + } + + fixed4 frag (v2f i) : SV_Target + { + fixed4 col = tex2D(_MainTex, i.uv); + clip(col.a - _CutOff); + return 0; + } + ENDCG + } + + } +} \ No newline at end of file diff --git a/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightUIMask.shader.meta b/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightUIMask.shader.meta new file mode 100644 index 000000000..693ec2ba2 --- /dev/null +++ b/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/HighlightUIMask.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 3e461a1484e2948598abca48b53d8b58 +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/IconMesh.fbx b/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/IconMesh.fbx new file mode 100644 index 000000000..2124ccc83 --- /dev/null +++ b/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/IconMesh.fbx @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ef8b93fa8cf47f06c7602117e254acc82e5f4df18ddcff71e2bde36d825e602c +size 12108 diff --git a/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/IconMesh.fbx.meta b/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/IconMesh.fbx.meta new file mode 100644 index 000000000..746504b9d --- /dev/null +++ b/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/IconMesh.fbx.meta @@ -0,0 +1,106 @@ +fileFormatVersion: 2 +guid: 0619ab933f4044ef7bca0b64517837b3 +ModelImporter: + serializedVersion: 21300 + internalIDToNameTable: [] + externalObjects: {} + materials: + materialImportMode: 0 + materialName: 0 + materialSearch: 1 + materialLocation: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + removeConstantScaleCurves: 1 + motionNodeName: + rigImportErrors: + rigImportWarnings: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + importAnimatedCustomProperties: 0 + importConstraints: 0 + animationCompression: 1 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + extraUserProperties: [] + clipAnimations: [] + isReadable: 0 + meshes: + lODScreenPercentages: [] + globalScale: 0.2 + meshCompression: 0 + addColliders: 0 + useSRGBMaterialColor: 1 + sortHierarchyByName: 1 + importVisibility: 0 + importBlendShapes: 1 + importCameras: 0 + importLights: 0 + nodeNameCollisionStrategy: 1 + fileIdsGeneration: 2 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + keepQuads: 0 + weldVertices: 1 + bakeAxisConversion: 0 + preserveHierarchy: 0 + skinWeightsMode: 0 + maxBonesPerVertex: 4 + minBoneWeight: 0.001 + optimizeBones: 1 + meshOptimizationFlags: -1 + indexFormat: 0 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVMarginMethod: 1 + secondaryUVMinLightmapResolution: 40 + secondaryUVMinObjectScale: 1 + secondaryUVPackMargin: 4 + useFileScale: 1 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 1 + tangentImportMode: 2 + normalCalculationMode: 4 + legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0 + blendShapeNormalImportMode: 1 + normalSmoothingSource: 3 + referencedClips: [] + importAnimation: 0 + humanDescription: + serializedVersion: 3 + human: [] + skeleton: [] + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + globalScale: 0.2 + rootMotionBoneName: + hasTranslationDoF: 0 + hasExtraRoot: 0 + skeletonHasParents: 1 + lastHumanDescriptionAvatarSource: {instanceID: 0} + autoGenerateAvatarMappingIfUnspecified: 1 + animationType: 0 + humanoidOversampling: 1 + avatarSetup: 0 + addHumanoidExtraRootOnlyWhenUsingAvatar: 1 + remapMaterialsIfMaterialImportModeIsNone: 0 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/blueNoiseVL.png b/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/blueNoiseVL.png new file mode 100755 index 000000000..52395fc0d --- /dev/null +++ b/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/blueNoiseVL.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:06b99ce3eb8d18f96ab88d2b519711dbd22d5e2532213c51ef9966cf15c69547 +size 1630 diff --git a/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/blueNoiseVL.png.meta b/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/blueNoiseVL.png.meta new file mode 100644 index 000000000..ecbca9259 --- /dev/null +++ b/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/blueNoiseVL.png.meta @@ -0,0 +1,135 @@ +fileFormatVersion: 2 +guid: 12319e92c3b5b45d193b1fe41ed05a1f +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 12 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 0 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMasterTextureLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 0 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 0 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + cookieLightType: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Server + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/target.png b/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/target.png new file mode 100644 index 000000000..901a1aa67 --- /dev/null +++ b/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/target.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3bb3cfa5c4f46a8d784c9cba9ff5498610075e0a81982296619bf7d14155ac0c +size 46937 diff --git a/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/target.png.meta b/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/target.png.meta new file mode 100644 index 000000000..77c6102b2 --- /dev/null +++ b/Assets/External/HighlightPlus/Runtime/Resources/HighlightPlus/target.png.meta @@ -0,0 +1,100 @@ +fileFormatVersion: 2 +guid: 1de3c566a6c8c405b9f6f453137273ec +timeCreated: 1555360741 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Standalone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: iPhone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Android + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: WebGL + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/HighlightPlus/Runtime/Scripts.meta b/Assets/External/HighlightPlus/Runtime/Scripts.meta new file mode 100644 index 000000000..1682aa499 --- /dev/null +++ b/Assets/External/HighlightPlus/Runtime/Scripts.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 89ce39cd6bb34454bbaf48f1d111f236 +folderAsset: yes +timeCreated: 1542876305 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/HighlightPlus/Runtime/Scripts/HighlightEffect.cs b/Assets/External/HighlightPlus/Runtime/Scripts/HighlightEffect.cs new file mode 100644 index 000000000..21e4b5398 --- /dev/null +++ b/Assets/External/HighlightPlus/Runtime/Scripts/HighlightEffect.cs @@ -0,0 +1,3382 @@ +///

    +/// Highlight Plus - (c) Kronnect Technologies SL +/// + +using System; +using System.Collections.Generic; +using System.Text.RegularExpressions; +using UnityEngine; +using UnityEngine.Rendering; + +namespace HighlightPlus { + + public delegate bool OnObjectHighlightEvent (GameObject obj); + public delegate bool OnObjectHighlightStateEvent (GameObject obj, bool state); + public delegate bool OnObjectSelectionEvent (GameObject obj); + public delegate bool OnRendererHighlightEvent (Renderer renderer); + + /// + /// Triggers when target effect animation occurs + /// + /// A value from 0 to 1 that represent the animation time from start to end, based on target duration and start time + public delegate void OnAnimateEvent (ref Vector3 center, ref Quaternion rotation, ref Vector3 scale, float t); + + public enum NormalsOption { + Smooth = 0, + PreserveOriginal = 1, + Reorient = 2 + } + + public enum SeeThroughMode { + WhenHighlighted = 0, + AlwaysWhenOccluded = 1, + Never = 2 + } + + public enum SeeThroughSortingMode { + Default = 0, + SortByMaterialsRenderQueue = 1, + SortByMaterialsRenderQueueInverted = 2 + } + + public enum OverlayMode { + WhenHighlighted = 0, + Always = 10 + } + + public enum TextureUVSpace { + Triplanar = 0, + ObjectSpace = 1, + ScreenSpace = 2 + } + + public enum QualityLevel { + Fastest = 0, + High = 1, + Highest = 2, + Medium = 3 + } + + public enum TargetOptions { + Children, + OnlyThisObject, + RootToChildren, + LayerInScene, + LayerInChildren, + Scripting + } + + public enum Visibility { + Normal, + AlwaysOnTop, + OnlyWhenOccluded + } + + public enum ColorStyle { + SingleColor, + Gradient + } + + public enum OutlineEdgeMode { + Exterior, + Any + } + + public enum ContourStyle { + AroundVisibleParts, + AroundObjectShape + } + + public enum GlowBlendMode { + Additive, + AlphaBlending + } + + public enum GlowDitheringStyle { + Pattern, + Noise + } + + public enum InnerGlowBlendMode { + Additive, + AlphaBlending + } + + public enum BlurMethod { + Gaussian, + Kawase + } + + + public enum IconAnimationOption { + None, + VerticalBounce = 10 + } + + + public enum MaskMode { + Stencil, + IgnoreMask, + StencilAndCutout + } + + public static class QualityLevelExtensions { + public static bool UsesMultipleOffsets (this QualityLevel qualityLevel) { + return qualityLevel == QualityLevel.Medium || qualityLevel == QualityLevel.High; + } + } + + [Serializable] + public struct GlowPassData { + public float offset; + public float alpha; + public Color color; + } + + [ExecuteAlways] + [HelpURL("https://kronnect.com/guides/highlight-plus-introduction/")] + public partial class HighlightEffect : MonoBehaviour { + + /// + /// Gets or sets the current profile. To load a profile and apply its settings at runtime, please use ProfileLoad() method. + /// + [Tooltip("The current profile (optional). A profile let you store Highlight Plus settings and apply those settings easily to many objects. You can also load a profile and apply its settings at runtime, using the ProfileLoad() method of the Highlight Effect component.")] + public HighlightProfile profile; + + /// + /// Sets if changes to the original profile should propagate to this effect. + /// + [Tooltip("If enabled, settings from the profile will be applied to this component automatically when game starts or when any profile setting is updated.")] + public bool profileSync; + + /// + /// Which cameras can render the effects + /// + [Tooltip("Which cameras can render the effect.")] + public LayerMask camerasLayerMask = -1; + + /// + /// Specifies which objects are affected by this effect. + /// + [Tooltip("Different options to specify which objects are affected by this Highlight Effect component.")] + public TargetOptions effectGroup = TargetOptions.Children; + + /// + /// The target object where the include option applies + /// + [Tooltip("The target object to highlight.")] + public Transform effectTarget; + + /// + /// The layer that contains the affected objects by this effect when effectGroup is set to LayerMask. + /// + [Tooltip("The layer that contains the affected objects by this effect when effectGroup is set to LayerMask.")] + public LayerMask effectGroupLayer = -1; + + /// + /// Optional object name filter + /// + [Tooltip("Only include objects whose names contains this text.")] + public string effectNameFilter; + + /// + /// Optional object name exclusion filter + /// + [Tooltip("Use RegEx to determine if an object name matches the effectNameFilter.")] + public bool effectNameUseRegEx; + + /// + /// Combine objects into a single mesh + /// + [Tooltip("Combine meshes of all objects in this group affected by Highlight Effect reducing draw calls.")] + public bool combineMeshes; + + /// + /// The alpha threshold for transparent cutout objects. Pixels with alpha below this value will be discarded. + /// + [Tooltip("The alpha threshold for transparent cutout objects. Pixels with alpha below this value will be discarded.")] + [Range(0, 1)] + public float alphaCutOff; + + /// + /// If back facing triangles are ignored. Backfaces triangles are not visible but you may set this property to false to force highlight effects to act on those triangles as well. + /// + [Tooltip("If back facing triangles are ignored.Backfaces triangles are not visible but you may set this property to false to force highlight effects to act on those triangles as well.")] + public bool cullBackFaces = true; + + [Tooltip("Adds a empty margin between the mesh and the effects")] + public float padding; + + /// + /// Show highlight effects even if the object is currently not visible. This option is useful if the affected objects are rendered using GPU instancing tools which render directly to the GPU without creating real game object geometry in CPU. + /// + [Tooltip("Show highlight effects even if the object is not visible. If this object or its children use GPU Instancing tools, the MeshRenderer can be disabled although the object is visible. In this case, this option is useful to enable highlighting.")] + public bool ignoreObjectVisibility; + + /// + /// Enable to support reflection probes + /// + [Tooltip("Support reflection probes. Enable only if you want the effects to be visible in reflections.")] + public bool reflectionProbes; + + /// + /// Enable to support reflection probes + /// + [Tooltip("Enables GPU instancing. Reduces draw calls in outline and outer glow effects on platforms that support GPU instancing. Should be enabled by default.")] + public bool GPUInstancing = true; + + [Tooltip("Custom sorting priority for the highlight effect (useful to control which effects render on top of others")] + public int sortingPriority; + + /// + /// Enable to support reflection probes + /// + [Tooltip("Bakes skinned mesh to leverage GPU instancing when using outline/outer glow with mesh-based rendering. Reduces draw calls significantly on skinned meshes.")] + public bool optimizeSkinnedMesh = true; + + /// + /// Enabled depth buffer flip in HQ + /// + [Tooltip("Enables depth buffer clipping. Only applies to outline or outer glow in High Quality mode.")] + public bool depthClip; + + [Tooltip("Fades out effects based on distance to camera")] + public bool cameraDistanceFade; + + [Tooltip("The closest distance particles can get to the camera before they fade from the camera’s view.")] + public float cameraDistanceFadeNear; + + [Tooltip("The farthest distance particles can get away from the camera before they fade from the camera’s view.")] + public float cameraDistanceFadeFar = 1000; + + [Tooltip("Normals handling option:\nPreserve original: use original mesh normals.\nSmooth: average normals to produce a smoother outline/glow mesh based effect.\nReorient: recomputes normals based on vertex direction to centroid.")] + public NormalsOption normalsOption; + + /// + /// Ignores highlight effects on this object. + /// + [Tooltip("Ignore highlighting on this object.")] + public bool ignore; + + [SerializeField] + bool _highlighted; + + public bool highlighted { get { return _highlighted; } set { SetHighlighted(value); } } + + public float fadeInDuration; + public float fadeOutDuration; + + public bool flipY; + + [Tooltip("Keeps the outline/glow size unaffected by object distance.")] + public bool constantWidth = true; + + [Tooltip("Increases the screen coverage for the outline/glow to avoid cuts when using cloth or vertex shader that transform mesh vertices")] + public int extraCoveragePixels; + + [Tooltip("Minimum width when the constant width option is not used")] + [Range(0, 1)] + public float minimumWidth; + + [Tooltip("Mask to include or exclude certain submeshes. By default, all submeshes are included.")] + public int subMeshMask = -1; + + [Range(0, 1)] + [Tooltip("Intensity of the overlay effect. A value of 0 disables the overlay completely.")] + public float overlay; + public OverlayMode overlayMode = OverlayMode.WhenHighlighted; + [ColorUsage(true, true)] public Color overlayColor = Color.yellow; + public float overlayAnimationSpeed = 1f; + [Range(0, 1)] + public float overlayMinIntensity = 0.5f; + [Range(0, 1)] + [Tooltip("Controls the blending or mix of the overlay color with the natural colors of the object.")] + public float overlayBlending = 1.0f; + [Tooltip("Optional overlay texture.")] + public Texture2D overlayTexture; + public TextureUVSpace overlayTextureUVSpace; + public float overlayTextureScale = 1f; + public Vector2 overlayTextureScrolling; + public Visibility overlayVisibility = Visibility.Normal; + + [Range(0, 1)] + [Tooltip("Intensity of the outline. A value of 0 disables the outline completely.")] + public float outline = 1f; + [ColorUsage(true, true)] public Color outlineColor = Color.black; + public ColorStyle outlineColorStyle = ColorStyle.SingleColor; + [GradientUsage(hdr: true, ColorSpace.Linear)] public Gradient outlineGradient; + public bool outlineGradientInLocalSpace; + public float outlineWidth = 0.45f; + [Range(1, 3)] + public int outlineBlurPasses = 2; + public QualityLevel outlineQuality = QualityLevel.Medium; + public OutlineEdgeMode outlineEdgeMode = OutlineEdgeMode.Exterior; + public float outlineEdgeThreshold = 0.995f; + public float outlineSharpness = 1f; + [Range(1, 8)] + [Tooltip("Reduces the quality of the outline but improves performance a bit.")] + public int outlineDownsampling = 1; + public Visibility outlineVisibility = Visibility.Normal; + public GlowBlendMode glowBlendMode = GlowBlendMode.Additive; + public bool outlineBlitDebug; + [Tooltip("If enabled, this object won't combine the outline with other objects.")] + public bool outlineIndependent; + public ContourStyle outlineContourStyle = ContourStyle.AroundVisibleParts; + [Tooltip("Select the mask mode used with this effect.")] + public MaskMode outlineMaskMode = MaskMode.Stencil; + + [Range(0, 5)] + [Tooltip("The intensity of the outer glow effect. A value of 0 disables the glow completely.")] + public float glow; + public float glowWidth = 0.4f; + public QualityLevel glowQuality = QualityLevel.Medium; + public BlurMethod glowBlurMethod = BlurMethod.Gaussian; + [Range(1, 8)] + [Tooltip("Reduces the quality of the glow but improves performance a bit.")] + public int glowDownsampling = 2; + [ColorUsage(true, true)] public Color glowHQColor = new Color(0.64f, 1f, 0f, 1f); + [Tooltip("When enabled, outer glow renders with dithering. When disabled, glow appears as a solid color.")] + [Range(0, 1)] + public float glowDithering = 1f; + public GlowDitheringStyle glowDitheringStyle = GlowDitheringStyle.Pattern; + [Tooltip("Seed for the dithering effect")] + public float glowMagicNumber1 = 0.75f; + [Tooltip("Another seed for the dithering effect that combines with first seed to create different patterns")] + public float glowMagicNumber2 = 0.5f; + public float glowAnimationSpeed = 1f; + public Visibility glowVisibility = Visibility.Normal; + public bool glowBlitDebug; + [Tooltip("Blends glow passes one after another. If this option is disabled, glow passes won't overlap (in this case, make sure the glow pass 1 has a smaller offset than pass 2, etc.)")] + public bool glowBlendPasses = true; +#if UNITY_2020_2_OR_NEWER + [NonReorderable] +#endif + public GlowPassData[] glowPasses; + [Tooltip("Select the mask mode used with this effect.")] + public MaskMode glowMaskMode = MaskMode.Stencil; + + [Range(0, 5f)] + [Tooltip("The intensity of the inner glow effect. A value of 0 disables the glow completely.")] + public float innerGlow; + [Range(0, 2)] + public float innerGlowWidth = 1f; + [ColorUsage(true, true)] public Color innerGlowColor = Color.white; + public InnerGlowBlendMode innerGlowBlendMode = InnerGlowBlendMode.Additive; + public Visibility innerGlowVisibility = Visibility.Normal; + + [Tooltip("Enables the targetFX effect. This effect draws an animated sprite over the object.")] + public bool targetFX; + public Texture2D targetFXTexture; + [ColorUsage(true, true)] public Color targetFXColor = Color.white; + public Transform targetFXCenter; + public float targetFXRotationSpeed = 50f; + public float targetFXInitialScale = 4f; + public float targetFXEndScale = 1.5f; + [Tooltip("Makes target scale relative to object renderer bounds")] + public bool targetFXScaleToRenderBounds = true; + [Tooltip("Enable to render a single target FX effect at the center of the enclosing bounds")] + public bool targetFXUseEnclosingBounds; + [Tooltip("Places target FX sprite at the bottom of the highlighted object.")] + public bool targetFXAlignToGround; + [Tooltip("Optional worlds space offset for the position of the targetFX effect")] + public Vector3 targetFXOffset; + [Tooltip("Fade out effect with altitude")] + public float targetFXFadePower = 32; + public float targetFXGroundMaxDistance = 10f; + public LayerMask targetFXGroundLayerMask = -1; + public float targetFXTransitionDuration = 0.5f; + [Tooltip("The duration of the effect. A value of 0 will keep the target sprite on screen while object is highlighted.")] + public float targetFXStayDuration = 1.5f; + public Visibility targetFXVisibility = Visibility.AlwaysOnTop; + + [Tooltip("Enables the iconFX effect. This effect draws an animated object over the object.")] + public bool iconFX; + public Mesh iconFXMesh; + [ColorUsage(true, true)] public Color iconFXLightColor = Color.white; + [ColorUsage(true, true)] public Color iconFXDarkColor = Color.gray; + public Transform iconFXCenter; + public float iconFXRotationSpeed = 50f; + public IconAnimationOption iconFXAnimationOption = IconAnimationOption.None; + public float iconFXAnimationAmount = 0.1f; + public float iconFXAnimationSpeed = 3f; + public float iconFXScale = 1f; + [Tooltip("Makes target scale relative to object renderer bounds.")] + public bool iconFXScaleToRenderBounds; + [Tooltip("Optional world space offset for the position of the iconFX effect")] + public Vector3 iconFXOffset = new Vector3(0, 1, 0); + public float iconFXTransitionDuration = 0.5f; + public float iconFXStayDuration = 1.5f; + + [Tooltip("See-through mode for this Highlight Effect component.")] + public SeeThroughMode seeThrough = SeeThroughMode.Never; + [Tooltip("This mask setting let you specify which objects will be considered as occluders and cause the see-through effect for this Highlight Effect component. For example, you assign your walls to a different layer and specify that layer here, so only walls and not other objects, like ground or ceiling, will trigger the see-through effect.")] + public LayerMask seeThroughOccluderMask = -1; + [Tooltip("A multiplier for the occluder volume size which can be used to reduce the actual size of occluders when Highlight Effect checks if they're occluding this object.")] + [Range(0.01f, 0.6f)] public float seeThroughOccluderThreshold = 0.3f; + [Tooltip("Uses stencil buffers to ensure pixel-accurate occlusion test. If this option is disabled, only physics raycasting is used to test for occlusion.")] + public bool seeThroughOccluderMaskAccurate; + [Tooltip("The interval of time between occlusion tests.")] + public float seeThroughOccluderCheckInterval = 1f; + [Tooltip("If enabled, occlusion test is performed for each children element. If disabled, the bounds of all children is combined and a single occlusion test is performed for the combined bounds.")] + public bool seeThroughOccluderCheckIndividualObjects; + [Tooltip("Shows the see-through effect only if the occluder if at this 'offset' distance from the object.")] + public float seeThroughDepthOffset; + [Tooltip("Hides the see-through effect if the occluder is further than this distance from the object (0 = infinite)")] + public float seeThroughMaxDepth; + [Range(0, 5f)] public float seeThroughIntensity = 0.8f; + [Range(0, 1)] public float seeThroughTintAlpha = 0.5f; + [ColorUsage(true, true)] public Color seeThroughTintColor = Color.red; + [Range(0, 1)] public float seeThroughNoise = 1f; + [Range(0, 1)] public float seeThroughBorder; + public Color seeThroughBorderColor = Color.black; + [Tooltip("Only display the border instead of the full see-through effect.")] + public bool seeThroughBorderOnly; + public float seeThroughBorderWidth = 0.45f; + [Tooltip("This option clears the stencil buffer after rendering the see-through effect which results in correct rendering order and supports other stencil-based effects that render afterwards.")] + public bool seeThroughOrdered; + [Tooltip("Optional see-through mask effect texture.")] + public Texture2D seeThroughTexture; + public TextureUVSpace seeThroughTextureUVSpace; + public float seeThroughTextureScale = 1f; + [Tooltip("The order by which children objects are rendered by the see-through effect")] + public SeeThroughSortingMode seeThroughChildrenSortingMode = SeeThroughSortingMode.Default; + + public event OnObjectSelectionEvent OnObjectSelected; + public event OnObjectSelectionEvent OnObjectUnSelected; + public event OnObjectHighlightEvent OnObjectHighlightStart; + public event OnObjectHighlightEvent OnObjectHighlightEnd; + public event OnObjectHighlightStateEvent OnObjectHighlightStateChange; + public event OnRendererHighlightEvent OnRendererHighlightStart; + public event OnAnimateEvent OnTargetAnimates; + public event OnAnimateEvent OnIconAnimates; + + struct ModelMaterials { + public bool render; // if this object can render this frame + public Transform transform; + public bool renderWasVisibleDuringSetup; + public Mesh mesh, originalMesh, bakedSkinnedMesh; + public Renderer renderer; + public bool isSkinnedMesh; + public NormalsOption normalsOption; + public Material[] fxMatMask, fxMatOutline, fxMatGlow, fxMatSolidColor, fxMatSeeThroughInner, fxMatSeeThroughBorder, fxMatOverlay, fxMatInnerGlow; + public Matrix4x4 renderingMatrix; + public bool isCombined; + public bool preserveOriginalMesh { get { return !isCombined && normalsOption == NormalsOption.PreserveOriginal; } } + + public void Init () { + render = false; + transform = null; + mesh = originalMesh = null; + if (bakedSkinnedMesh != null) DestroyImmediate(bakedSkinnedMesh); + renderer = null; + isSkinnedMesh = false; + normalsOption = NormalsOption.Smooth; + isCombined = false; + } + } + + public enum FadingState { + FadingOut = -1, + NoFading = 0, + FadingIn = 1 + } + + [SerializeField, HideInInspector] + ModelMaterials[] rms; + [SerializeField, HideInInspector] + int rmsCount; + + /// + /// Number of objects affected by this highlight effect script + /// + public int includedObjectsCount => rmsCount; + + [NonSerialized] + public bool alignToGroundTried, alignToGroundHitGood; + +#if UNITY_EDITOR + /// + /// True if there's some static children + /// + [NonSerialized] + public bool staticChildren; +#endif + + /// + /// Returns true if the renderer for this gameobject is visible by any camera + /// + [NonSerialized] + public bool isVisible; + + [NonSerialized] + public Transform target; + + public Transform currentTarget => effectTarget != null ? effectTarget : transform; + + /// + /// Time in which the highlight started + /// + [NonSerialized] + public float highlightStartTime; + + /// + /// Time in which the target fx started + /// + [NonSerialized] + public float targetFXStartTime; + + /// + /// Time in which the icon fx started + /// + [NonSerialized] + public float iconFXStartTime; + + bool _isSelected; + /// + /// True if this object is selected (if selectOnClick is used) + /// + public bool isSelected { + get { return _isSelected; } + set { + if (_isSelected != value) { + if (value) { + if (OnObjectSelected != null) OnObjectSelected(gameObject); + } + else { + if (OnObjectUnSelected != null) OnObjectUnSelected(gameObject); + } + _isSelected = value; + if (_isSelected) lastSelected = this; + } + } + } + + /// + /// If a sprite is used with this script, spriteMode = true. Certain mesh-only options will be disabled. + /// + [NonSerialized] + public bool spriteMode; + + [NonSerialized] + public HighlightProfile previousSettings; + + public void RestorePreviousHighlightEffectSettings () { + if (previousSettings != null) { + previousSettings.Load(this); + } + } + + const float TAU = 0.70711f; + + // Reference materials. These are instanced per object (rms). + static Material fxMatMask, fxMatSolidColor, fxMatSeeThrough, fxMatSeeThroughBorder, fxMatOverlay, fxMatClearStencil; + static Material fxMatSeeThroughMask; + + // Per-object materials + Material fxMatGlowTemplate, fxMatInnerGlow, fxMatOutlineTemplate, fxMatTarget; + Material fxMatComposeGlow, fxMatComposeOutline, fxMatBlurGlow, fxMatBlurOutline; + Material fxMatIcon; + + static Vector4[] offsets; + + float fadeStartTime; + [NonSerialized] + public FadingState fading = FadingState.NoFading; + CommandBuffer cbHighlight; + bool cbHighlightEmpty; + int[] mipGlowBuffers, mipOutlineBuffers; + static Mesh quadMesh, cubeMesh; + int sourceRT; + Matrix4x4 quadGlowMatrix, quadOutlineMatrix; + Vector4[] corners; + RenderTextureDescriptor sourceDesc; + Color debugColor, blackColor; + Visibility lastOutlineVisibility; + bool requireUpdateMaterial; + + [NonSerialized] + public static List effects = new List(); + + public static bool customSorting; + [NonSerialized] + public float sortingOffset; // used to avoid two objects with same distance to camera during sorting + + bool useSmoothGlow, useSmoothOutline, useSmoothBlend; + bool useGPUInstancing; + bool usesReversedZBuffer; + bool usesSeeThrough; + + class PerCameraOcclusionData { + public float checkLastTime = -10000; + public int occlusionRenderFrame; + public bool lastOcclusionTestResult; + public readonly List cachedOccluders = new List(); + public Collider cachedOccluderCollider; + } + readonly Dictionary perCameraOcclusionData = new Dictionary(); + MaterialPropertyBlock glowPropertyBlock, outlinePropertyBlock; + static readonly List matDataDirection = new List(); + static readonly List matDataGlow = new List(); + static readonly List matDataColor = new List(); + static Matrix4x4[] matrices; + + int outlineOffsetsMin, outlineOffsetsMax; + int glowOffsetsMin, glowOffsetsMax; + static CombineInstance[] combineInstances; + bool maskRequired; + + Texture2D outlineGradientTex; + Color[] outlineGradientColors; + + bool shouldBakeSkinnedMesh; + + /// + /// Returns a reference to the last highlighted object + /// + public static HighlightEffect lastHighlighted; + + /// + /// Returns a reference to the last selected object (when selection is managed by Highlight Manager or Trigger) + /// + public static HighlightEffect lastSelected; + + [NonSerialized] + public string lastRegExError; + + bool isInitialized; + + [RuntimeInitializeOnLoadMethod] + static void DomainReloadDisabledSupport () { + lastHighlighted = lastSelected = null; + effects.RemoveAll(i => i == null); + } + + void OnEnable () { + InitIfNeeded(); + } + + void InitIfNeeded () { + if (rms == null || !isInitialized || fxMatOutlineTemplate == null) { + Init(); + } + HighlightPlusRenderPassFeature.sortFrameCount = 0; + if (!effects.Contains(this)) { + effects.Add(this); + } + UpdateVisibilityState(); + } + + void Init () { + lastOutlineVisibility = outlineVisibility; + debugColor = new Color(1f, 0f, 0f, 0.5f); + blackColor = new Color(0, 0, 0, 0); + if (offsets == null || offsets.Length != 8) { + offsets = new Vector4[] { + new Vector4(0,1), + new Vector4(1,0), + new Vector4(0,-1), + new Vector4(-1,0), + new Vector4 (-TAU, TAU), + new Vector4 (TAU, TAU), + new Vector4 (TAU, -TAU), + new Vector4 (-TAU, -TAU) + }; + } + if (corners == null || corners.Length != 8) { + corners = new Vector4[8]; + } + InitCommandBuffer(); + if (quadMesh == null) { + BuildQuad(); + } + if (cubeMesh == null) { + BuildCube(); + } + if (target == null) { + target = currentTarget; + } + if (glowPasses == null || glowPasses.Length == 0) { + glowPasses = new GlowPassData[4]; + glowPasses[0] = new GlowPassData() { offset = 4, alpha = 0.1f, color = new Color(0.64f, 1f, 0f, 1f) }; + glowPasses[1] = new GlowPassData() { offset = 3, alpha = 0.2f, color = new Color(0.64f, 1f, 0f, 1f) }; + glowPasses[2] = new GlowPassData() { offset = 2, alpha = 0.3f, color = new Color(0.64f, 1f, 0f, 1f) }; + glowPasses[3] = new GlowPassData() { offset = 1, alpha = 0.4f, color = new Color(0.64f, 1f, 0f, 1f) }; + } + sourceRT = Shader.PropertyToID("_HPSourceRT"); + useGPUInstancing = GPUInstancing && SystemInfo.supportsInstancing; + usesReversedZBuffer = SystemInfo.usesReversedZBuffer; + + if (useGPUInstancing) { + if (glowPropertyBlock == null) { + glowPropertyBlock = new MaterialPropertyBlock(); + } + if (outlinePropertyBlock == null) { + outlinePropertyBlock = new MaterialPropertyBlock(); + } + } + + InitTemplateMaterials(); + + if (profileSync && profile != null) { + profile.Load(this); + } + + isInitialized = true; + } + + private void Start () { + SetupMaterial(); + } + + public void OnDidApplyAnimationProperties () { // support for animating property based fields + UpdateMaterialProperties(); + } + + void OnDisable () { + UpdateMaterialProperties(); + RemoveEffect(); + } + + void Reset () { + SetupMaterial(); + } + + void DestroyMaterial (Material mat) { + if (mat != null) DestroyImmediate(mat); + } + + void DestroyMaterialArray (Material[] mm) { + if (mm == null) return; + for (int k = 0; k < mm.Length; k++) { + DestroyMaterial(mm[k]); + } + } + + void RemoveEffect () { + if (effects != null) { + effects.Remove(this); + } + } + + void OnDestroy () { + RemoveEffect(); + if (rms != null) { + for (int k = 0; k < rms.Length; k++) { + DestroyMaterialArray(rms[k].fxMatMask); + DestroyMaterialArray(rms[k].fxMatOutline); + DestroyMaterialArray(rms[k].fxMatGlow); + DestroyMaterialArray(rms[k].fxMatSolidColor); + DestroyMaterialArray(rms[k].fxMatSeeThroughInner); + DestroyMaterialArray(rms[k].fxMatSeeThroughBorder); + DestroyMaterialArray(rms[k].fxMatOverlay); + DestroyMaterialArray(rms[k].fxMatInnerGlow); + } + } + + DestroyMaterial(fxMatGlowTemplate); + DestroyMaterial(fxMatInnerGlow); + DestroyMaterial(fxMatOutlineTemplate); + DestroyMaterial(fxMatTarget); + DestroyMaterial(fxMatComposeGlow); + DestroyMaterial(fxMatComposeOutline); + DestroyMaterial(fxMatBlurGlow); + DestroyMaterial(fxMatBlurOutline); + DestroyMaterial(fxMatIcon); + + if (combinedMeshes.ContainsKey(combinedMeshesHashId)) { + combinedMeshes.Remove(combinedMeshesHashId); + } + + foreach (Mesh instancedMesh in instancedMeshes) { + if (instancedMesh == null) continue; + int usageCount; + if (sharedMeshUsage.TryGetValue(instancedMesh, out usageCount)) { + if (usageCount <= 1) { + sharedMeshUsage.Remove(instancedMesh); + DestroyImmediate(instancedMesh); + } + else { + sharedMeshUsage[instancedMesh] = usageCount - 1; + } + } + } + } + + private void OnBecameVisible () { + isVisible = true; + } + + private void OnBecameInvisible () { + if (rms == null || rms.Length != 1 || rms[0].transform != transform) { + // if effect group doesn't include exactly one object and this object is this same gameobject + // ignore this optimization + isVisible = true; + } + else { + isVisible = false; + } + } + + /// + /// Loads a profile into this effect + /// + public void ProfileLoad (HighlightProfile profile) { + if (profile != null) { + this.profile = profile; + profile.Load(this); + } + } + + /// + /// Reloads currently assigned profile + /// + public void ProfileReload () { + if (profile != null) { + profile.Load(this); + } + } + + + /// + /// Save current settings into given profile + /// + public void ProfileSaveChanges (HighlightProfile profile) { + if (profile != null) { + profile.Save(this); + } + } + + /// + /// Save current settings into current profile + /// + public void ProfileSaveChanges () { + if (profile != null) { + profile.Save(this); + } + } + + + public void Refresh (bool discardCachedMeshes = false) { + if (discardCachedMeshes) { + RefreshCachedMeshes(); + } + InitIfNeeded(); + if (enabled) { + SetupMaterial(); + } + } + + public void ResetHighlightStartTime () { + highlightStartTime = targetFXStartTime = iconFXStartTime = GetTime(); + } + + + RenderTargetIdentifier colorAttachmentBuffer, depthAttachmentBuffer; + + public void SetCommandBuffer (CommandBuffer cmd) { + cbHighlight = cmd; + cbHighlightEmpty = false; + } + + public CommandBuffer BuildCommandBuffer (Camera cam, RenderTargetIdentifier colorAttachmentBuffer, RenderTargetIdentifier depthAttachmentBuffer, bool clearStencil, ref RenderTextureDescriptor sourceDesc) { + this.colorAttachmentBuffer = colorAttachmentBuffer; + this.depthAttachmentBuffer = depthAttachmentBuffer; + this.sourceDesc = sourceDesc; + BuildCommandBuffer(cam, clearStencil); + return cbHighlightEmpty ? null : cbHighlight; + } + + void BuildCommandBuffer (Camera cam, bool clearStencil) { + + if (colorAttachmentBuffer == 0) { + colorAttachmentBuffer = BuiltinRenderTextureType.CameraTarget; + } + if (depthAttachmentBuffer == 0) { + depthAttachmentBuffer = BuiltinRenderTextureType.CameraTarget; + } + + InitCommandBuffer(); + + if (requireUpdateMaterial) { + requireUpdateMaterial = false; + UpdateMaterialProperties(); + } + + bool independentFullScreenNotExecuted = true; + if (clearStencil) { + ConfigureOutput(); + cbHighlight.DrawMesh(quadMesh, Matrix4x4.identity, fxMatClearStencil, 0, 0); + independentFullScreenNotExecuted = false; + } + + bool seeThroughReal = usesSeeThrough; + if (seeThroughReal) { + ConfigureOutput(); + seeThroughReal = RenderSeeThroughOccluders(cbHighlight, cam); + if (seeThroughReal && seeThroughOccluderMask != -1) { + if (seeThroughOccluderMaskAccurate) { + CheckOcclusionAccurate(cbHighlight, cam); + } + else { + seeThroughReal = CheckOcclusion(cam); + } + } + } + + bool showOverlay = hitActive || overlayMode == OverlayMode.Always; + if (!_highlighted && !seeThroughReal && !showOverlay) { + return; + } + + ConfigureOutput(); + + if (rms == null) { + SetupMaterial(); + if (rms == null) return; + } + + // Check camera culling mask + int cullingMask = cam.cullingMask; + + // Ensure renderers are valid and visible (in case LODgroup has changed active renderer) + if (!ignoreObjectVisibility) { + for (int k = 0; k < rmsCount; k++) { + if (rms[k].renderer != null && rms[k].renderer.isVisible != rms[k].renderWasVisibleDuringSetup) { + SetupMaterial(); + break; + } + } + } + + // Apply effect + float glowReal = _highlighted ? this.glow : 0; + if (fxMatMask == null) + return; + + float now = GetTime(); + + // Check smooth blend ztesting capability + Visibility smoothGlowVisibility = glowVisibility; + Visibility smoothOutlineVisibility = outlineVisibility; + + // First create masks + float aspect = cam.aspect; + bool somePartVisible = false; + + for (int k = 0; k < rmsCount; k++) { + rms[k].render = false; + + Transform t = rms[k].transform; + if (t == null) + continue; + + if (rms[k].isSkinnedMesh && shouldBakeSkinnedMesh) { + SkinnedMeshRenderer smr = (SkinnedMeshRenderer)rms[k].renderer; + if (rms[k].bakedSkinnedMesh == null) { + rms[k].bakedSkinnedMesh = new Mesh(); + } + smr.BakeMesh(rms[k].bakedSkinnedMesh, true); + rms[k].mesh = rms[k].bakedSkinnedMesh; + rms[k].normalsOption = NormalsOption.Smooth; + } + + Mesh mesh = rms[k].mesh; + if (mesh == null) + continue; + + if (!ignoreObjectVisibility) { + int layer = t.gameObject.layer; + if (((1 << layer) & cullingMask) == 0) + continue; + if (!rms[k].renderer.isVisible) + continue; + } + + rms[k].render = true; + somePartVisible = true; + + if (rms[k].isCombined) { + rms[k].renderingMatrix = t.localToWorldMatrix; + } + + if (outlineIndependent) { + if (useSmoothBlend) { + if (independentFullScreenNotExecuted) { + independentFullScreenNotExecuted = false; + cbHighlight.DrawMesh(quadMesh, Matrix4x4.identity, fxMatClearStencil, 0, 0); + } + } + else if (outline > 0 || glow > 0) { + bool allowGPUInstancing = useGPUInstancing && (shouldBakeSkinnedMesh || !rms[k].isSkinnedMesh); + + float width = outlineWidth; + if (glow > 0) { + width = Mathf.Max(width, glowWidth); + } + for (int l = 0; l < mesh.subMeshCount; l++) { + if (((1 << l) & subMeshMask) == 0) continue; + if (outlineQuality.UsesMultipleOffsets()) { + matDataDirection.Clear(); + for (int o = outlineOffsetsMin; o <= outlineOffsetsMax; o++) { + Vector4 direction = offsets[o] * (width / 100f); + direction.y *= aspect; + + if (allowGPUInstancing) { + matDataDirection.Add(direction); + } + else { + + cbHighlight.SetGlobalVector(ShaderParams.OutlineDirection, direction); + if (rms[k].isCombined) { + cbHighlight.DrawMesh(rms[k].mesh, rms[k].renderingMatrix, rms[k].fxMatOutline[l], l, 1); + } + else { + cbHighlight.DrawRenderer(rms[k].renderer, rms[k].fxMatOutline[l], l, 1); + } + + } + + } + + if (allowGPUInstancing) { + int instanceCount = matDataDirection.Count; + if (instanceCount > 0) { + outlinePropertyBlock.Clear(); + outlinePropertyBlock.SetVectorArray(ShaderParams.OutlineDirection, matDataDirection); + if (matrices == null || matrices.Length < instanceCount) { + matrices = new Matrix4x4[instanceCount]; + } + if (rms[k].isCombined) { + for (int m = 0; m < instanceCount; m++) { + matrices[m] = rms[k].renderingMatrix; + } + } + else { + Matrix4x4 objectToWorld = rms[k].transform.localToWorldMatrix; + for (int m = 0; m < instanceCount; m++) { + matrices[m] = objectToWorld; + } + } + cbHighlight.DrawMeshInstanced(mesh, l, rms[k].fxMatOutline[l], 1, matrices, instanceCount, outlinePropertyBlock); + } + } + + } + else { + cbHighlight.SetGlobalVector(ShaderParams.OutlineDirection, Vector4.zero); + if (rms[k].isCombined) { + cbHighlight.DrawMesh(rms[k].mesh, rms[k].renderingMatrix, rms[k].fxMatOutline[l], l, 1); + } + else { + cbHighlight.DrawRenderer(rms[k].renderer, rms[k].fxMatOutline[l], l, 1); + } + } + } + } + } + + } + + bool renderMaskOnTop = _highlighted && ((outline > 0 && smoothOutlineVisibility != Visibility.Normal) || (glow > 0 && smoothGlowVisibility != Visibility.Normal) || (innerGlow > 0 && innerGlowVisibility != Visibility.Normal)); + renderMaskOnTop = renderMaskOnTop | (useSmoothBlend && outlineContourStyle == ContourStyle.AroundObjectShape); + if (maskRequired) { + for (int k = 0; k < rmsCount; k++) { + if (rms[k].render) { + RenderMask(k, rms[k].mesh, renderMaskOnTop); + } + } + } + + // Compute tweening + float fadeGroup = 1f; + float fade = 1f; + if (fading != FadingState.NoFading) { + if (fading == FadingState.FadingIn) { + if (fadeInDuration > 0) { + fadeGroup = (now - fadeStartTime) / fadeInDuration; + if (fadeGroup > 1f) { + fadeGroup = 1f; + fading = FadingState.NoFading; + } + } + } + else if (fadeOutDuration > 0) { + fadeGroup = 1f - (now - fadeStartTime) / fadeOutDuration; + if (fadeGroup < 0f) { + fadeGroup = 0f; + fading = FadingState.NoFading; + _highlighted = false; + requireUpdateMaterial = true; + if (OnObjectHighlightEnd != null) { + OnObjectHighlightEnd(gameObject); + } + SendMessage("HighlightEnd", null, SendMessageOptions.DontRequireReceiver); + } + } + } + + if (glowQuality == QualityLevel.High) { + glowReal *= 0.25f; + } + else if (glowQuality == QualityLevel.Medium) { + glowReal *= 0.5f; + } + + bool targetEffectRendered = false; + bool iconEffectRendered = false; + bool usesSeeThroughBorder = (seeThroughBorder * seeThroughBorderWidth) > 0; + + Bounds enclosingBounds = new Bounds(); + if (useSmoothBlend || (targetFX && targetFXUseEnclosingBounds) || iconFX) { + + for (int k = 0; k < rmsCount; k++) { + if (!rms[k].render) + continue; + if (k == 0) { + enclosingBounds = rms[k].renderer.bounds; + } + else { + enclosingBounds.Encapsulate(rms[k].renderer.bounds); + } + } + + } + + // Add mesh effects + for (int k = 0; k < rmsCount; k++) { + if (!rms[k].render) + continue; + Mesh mesh = rms[k].mesh; + + fade = fadeGroup; + // Distance fade + if (cameraDistanceFade) { + fade *= ComputeCameraDistanceFade(rms[k].transform.position, cam.transform); + } + cbHighlight.SetGlobalFloat(ShaderParams.FadeFactor, fade); + + + if (_highlighted || showOverlay) { + // Hit FX + Color overlayColor = this.overlayColor; + float overlayMinIntensity = this.overlayMinIntensity; + float overlayBlending = this.overlayBlending; + + Color innerGlowColorA = this.innerGlowColor; + float innerGlow = this.innerGlow; + + if (hitActive) { + overlayColor.a = _highlighted ? overlay : 0; + innerGlowColorA.a = _highlighted ? innerGlow : 0; + float t = hitFadeOutDuration > 0 ? (now - hitStartTime) / hitFadeOutDuration : 1f; + if (t >= 1f) { + hitActive = false; + } + else { + if (hitFxMode == HitFxMode.InnerGlow) { + bool lerpToCurrentInnerGlow = _highlighted && innerGlow > 0; + innerGlowColorA = lerpToCurrentInnerGlow ? Color.Lerp(hitColor, innerGlowColor, t) : hitColor; + innerGlowColorA.a = lerpToCurrentInnerGlow ? Mathf.Lerp(1f - t, innerGlow, t) : 1f - t; + innerGlowColorA.a *= hitInitialIntensity; + } + else { + bool lerpToCurrentOverlay = _highlighted && overlay > 0; + overlayColor = lerpToCurrentOverlay ? Color.Lerp(hitColor, overlayColor, t) : hitColor; + overlayColor.a = lerpToCurrentOverlay ? Mathf.Lerp(1f - t, overlay, t) : 1f - t; + overlayColor.a *= hitInitialIntensity; + overlayMinIntensity = 1f; + overlayBlending = 0; + } + } + } + else { + overlayColor.a = overlay * fade; + innerGlowColorA.a = innerGlow * fade; + } + + for (int l = 0; l < mesh.subMeshCount; l++) { + if (((1 << l) & subMeshMask) == 0) continue; + + // Overlay + if (overlayColor.a > 0) { + Material fxMat = rms[k].fxMatOverlay[l]; + fxMat.SetColor(ShaderParams.OverlayColor, overlayColor); + fxMat.SetVector(ShaderParams.OverlayData, new Vector4(overlayAnimationSpeed, overlayMinIntensity, overlayBlending, overlayTextureScale)); + if (hitActive && hitFxMode == HitFxMode.LocalHit) { + fxMat.SetVector(ShaderParams.OverlayHitPosData, new Vector4(hitPosition.x, hitPosition.y, hitPosition.z, hitRadius)); + fxMat.SetFloat(ShaderParams.OverlayHitStartTime, hitStartTime); + } + else { + fxMat.SetVector(ShaderParams.OverlayHitPosData, Vector4.zero); + } + if (rms[k].isCombined) { + cbHighlight.DrawMesh(mesh, rms[k].renderingMatrix, rms[k].fxMatOverlay[l], l); + } + else { + cbHighlight.DrawRenderer(rms[k].renderer, rms[k].fxMatOverlay[l], l); + } + } + + + // Inner Glow + if (innerGlowColorA.a > 0) { + rms[k].fxMatInnerGlow[l].SetColor(ShaderParams.InnerGlowColor, innerGlowColorA); + if (rms[k].isCombined) { + cbHighlight.DrawMesh(rms[k].mesh, rms[k].renderingMatrix, rms[k].fxMatInnerGlow[l], l); + } + else { + cbHighlight.DrawRenderer(rms[k].renderer, rms[k].fxMatInnerGlow[l], l); + } + } + } + } + + if (!_highlighted) + continue; + + bool allowGPUInstancing = useGPUInstancing && (shouldBakeSkinnedMesh || !rms[k].isSkinnedMesh); + + for (int l = 0; l < mesh.subMeshCount; l++) { + if (((1 << l) & subMeshMask) == 0) continue; + + // Glow + if (glow > 0 && glowQuality != QualityLevel.Highest) { + matDataGlow.Clear(); + matDataColor.Clear(); + matDataDirection.Clear(); + for (int glowPass = 0; glowPass < glowPasses.Length; glowPass++) { + if (glowQuality.UsesMultipleOffsets()) { + for (int o = glowOffsetsMin; o <= glowOffsetsMax; o++) { + Vector4 direction = offsets[o]; + direction.y *= aspect; + Color dataColor = glowPasses[glowPass].color; + Vector4 dataGlow = new Vector4(fade * glowReal * glowPasses[glowPass].alpha, glowPasses[glowPass].offset * glowWidth / 100f, glowMagicNumber1, glowMagicNumber2); + if (allowGPUInstancing) { + matDataDirection.Add(direction); + matDataGlow.Add(dataGlow); + matDataColor.Add(new Vector4(dataColor.r, dataColor.g, dataColor.b, dataColor.a)); + } + else { + cbHighlight.SetGlobalVector(ShaderParams.GlowDirection, direction); + cbHighlight.SetGlobalColor(ShaderParams.GlowColor, dataColor); + cbHighlight.SetGlobalVector(ShaderParams.Glow, dataGlow); + if (rms[k].isCombined) { + cbHighlight.DrawMesh(mesh, rms[k].renderingMatrix, rms[k].fxMatGlow[l], l); + } + else { + cbHighlight.DrawRenderer(rms[k].renderer, rms[k].fxMatGlow[l], l); + } + } + } + } + else { + Vector4 dataGlow = new Vector4(fade * glowReal * glowPasses[glowPass].alpha, glowPasses[glowPass].offset * glowWidth / 100f, glowMagicNumber1, glowMagicNumber2); + Color dataColor = glowPasses[glowPass].color; + if (allowGPUInstancing) { + matDataDirection.Add(Vector4.zero); + matDataGlow.Add(dataGlow); + matDataColor.Add(new Vector4(dataColor.r, dataColor.g, dataColor.b, dataColor.a)); + } + else { + int matIndex = glowPass * 8; + cbHighlight.SetGlobalColor(ShaderParams.GlowColor, dataColor); + cbHighlight.SetGlobalVector(ShaderParams.Glow, dataGlow); + cbHighlight.SetGlobalVector(ShaderParams.GlowDirection, Vector4.zero); + if (rms[k].isCombined) { + cbHighlight.DrawMesh(mesh, rms[k].renderingMatrix, rms[k].fxMatGlow[l], l); + } + else { + cbHighlight.DrawRenderer(rms[k].renderer, rms[k].fxMatGlow[l], l); + } + } + } + } + if (allowGPUInstancing) { + int instanceCount = matDataDirection.Count; + if (instanceCount > 0) { + glowPropertyBlock.Clear(); + glowPropertyBlock.SetVectorArray(ShaderParams.GlowDirection, matDataDirection); + glowPropertyBlock.SetVectorArray(ShaderParams.GlowColor, matDataColor); + glowPropertyBlock.SetVectorArray(ShaderParams.Glow, matDataGlow); + if (matrices == null || matrices.Length < instanceCount) { + matrices = new Matrix4x4[instanceCount]; + } + if (rms[k].isCombined) { + for (int m = 0; m < instanceCount; m++) { + matrices[m] = rms[k].renderingMatrix; + } + } + else { + Matrix4x4 objectToWorld = rms[k].transform.localToWorldMatrix; + for (int m = 0; m < instanceCount; m++) { + matrices[m] = objectToWorld; + } + } + cbHighlight.DrawMeshInstanced(mesh, l, rms[k].fxMatGlow[l], 0, matrices, instanceCount, glowPropertyBlock); + } + } + } + + // Outline + if (outline > 0 && outlineQuality != QualityLevel.Highest) { + Color outlineColor = this.outlineColor; + if (outlineColorStyle == ColorStyle.Gradient) { + outlineColor.a *= outline * fade; + Bounds bounds = outlineGradientInLocalSpace ? mesh.bounds : rms[k].renderer.bounds; + cbHighlight.SetGlobalVector(ShaderParams.OutlineVertexData, new Vector4(bounds.min.y, bounds.size.y + 0.0001f, 0, 0)); + } + else { + outlineColor.a *= outline * fade; + cbHighlight.SetGlobalVector(ShaderParams.OutlineVertexData, new Vector4(-1e6f, 1f, 0, 0)); + } + cbHighlight.SetGlobalColor(ShaderParams.OutlineColor, outlineColor); + if (outlineQuality.UsesMultipleOffsets()) { + matDataDirection.Clear(); + for (int o = outlineOffsetsMin; o <= outlineOffsetsMax; o++) { + Vector4 direction = offsets[o] * (outlineWidth / 100f); + direction.y *= aspect; + if (allowGPUInstancing) { + matDataDirection.Add(direction); + } + else { + cbHighlight.SetGlobalVector(ShaderParams.OutlineDirection, direction); + if (rms[k].isCombined) { + cbHighlight.DrawMesh(mesh, rms[k].renderingMatrix, rms[k].fxMatOutline[l], l, 0); + } + else { + cbHighlight.DrawRenderer(rms[k].renderer, rms[k].fxMatOutline[l], l, 0); + } + } + } + if (allowGPUInstancing) { + int instanceCount = matDataDirection.Count; + if (instanceCount > 0) { + outlinePropertyBlock.Clear(); + outlinePropertyBlock.SetVectorArray(ShaderParams.OutlineDirection, matDataDirection); + if (matrices == null || matrices.Length < instanceCount) { + matrices = new Matrix4x4[instanceCount]; + } + if (rms[k].isCombined) { + for (int m = 0; m < instanceCount; m++) { + matrices[m] = rms[k].renderingMatrix; + } + } + else { + Matrix4x4 objectToWorld = rms[k].transform.localToWorldMatrix; + for (int m = 0; m < instanceCount; m++) { + matrices[m] = objectToWorld; + } + } + cbHighlight.DrawMeshInstanced(mesh, l, rms[k].fxMatOutline[l], 0, matrices, instanceCount, outlinePropertyBlock); + } + } + } + else { + cbHighlight.SetGlobalColor(ShaderParams.OutlineColor, outlineColor); + cbHighlight.SetGlobalVector(ShaderParams.OutlineDirection, Vector4.zero); + if (rms[k].isSkinnedMesh) { + cbHighlight.DrawRenderer(rms[k].renderer, rms[k].fxMatOutline[l], l, 0); + } + else { + // keep this because normals may be reoriented / smoothed + cbHighlight.DrawMesh(mesh, rms[k].transform.localToWorldMatrix, rms[k].fxMatOutline[l], l, 0); + } + } + } + + } + + // Target + if (targetFX) { + float fadeOut = 1f; + if (targetFXStayDuration > 0 && Application.isPlaying) { + fadeOut = (now - targetFXStartTime); + if (fadeOut >= targetFXStayDuration) { + fadeOut -= targetFXStayDuration; + fadeOut = 1f - fadeOut; + } + if (fadeOut > 1f) { + fadeOut = 1f; + } + } + bool usesTarget = targetFXCenter != null; + if (fadeOut > 0 && !(targetEffectRendered && (usesTarget || targetFXUseEnclosingBounds))) { + targetEffectRendered = true; + float scaleT = 1f; + float time; + float normalizedTime = 0; + if (Application.isPlaying) { + normalizedTime = (now - targetFXStartTime) / targetFXTransitionDuration; + if (normalizedTime > 1f) { + normalizedTime = 1f; + } + scaleT = Mathf.Sin(normalizedTime * Mathf.PI * 0.5f); + time = now; + } + else { + time = (float)DateTime.Now.Subtract(DateTime.Today).TotalSeconds; + } + Bounds bounds = targetFXUseEnclosingBounds ? enclosingBounds : rms[k].renderer.bounds; + if (!targetFXScaleToRenderBounds) { + bounds.size = Vector3.one; + } + Vector3 scale = bounds.size; + float minSize = scale.x; + if (scale.y < minSize) { + minSize = scale.y; + } + if (scale.z < minSize) { + minSize = scale.z; + } + scale.x = scale.y = scale.z = minSize; + scale = Vector3.Lerp(scale * targetFXInitialScale, scale * targetFXEndScale, scaleT); + Vector3 center = usesTarget ? targetFXCenter.position : bounds.center; + center += targetFXOffset; + Quaternion rotation; + if (targetFXAlignToGround) { + rotation = Quaternion.Euler(90, 0, 0); + center.y += 0.5f; // a bit of offset in case it's in contact with ground + alignToGroundTried = true; + alignToGroundHitGood = Physics.Raycast(center, Vector3.down, out RaycastHit groundHitInfo, targetFXGroundMaxDistance, targetFXGroundLayerMask); + if (alignToGroundHitGood) { + center = groundHitInfo.point; + center.y += 0.01f; + Vector4 renderData = groundHitInfo.normal; + renderData.w = targetFXFadePower; + fxMatTarget.SetVector(ShaderParams.TargetFXRenderData, renderData); + rotation = Quaternion.Euler(0, time * targetFXRotationSpeed, 0); + if (OnTargetAnimates != null) { + OnTargetAnimates(ref center, ref rotation, ref scale, normalizedTime); + } + Matrix4x4 m = Matrix4x4.TRS(center, rotation, scale); + Color color = targetFXColor; + color.a *= fade * fadeOut; + fxMatTarget.color = color; + cbHighlight.DrawMesh(cubeMesh, m, fxMatTarget, 0, 0); + } + } + else { + alignToGroundTried = false; + rotation = Quaternion.LookRotation(cam.transform.forward); + rotation *= Quaternion.Euler(0, 0, time * targetFXRotationSpeed); + if (OnTargetAnimates != null) { + OnTargetAnimates(ref center, ref rotation, ref scale, normalizedTime); + } + Matrix4x4 m = Matrix4x4.TRS(center, rotation, scale); + Color color = targetFXColor; + color.a *= fade * fadeOut; + fxMatTarget.color = color; + cbHighlight.DrawMesh(quadMesh, m, fxMatTarget, 0, 1); + } + } + } + + + // Icon + if (iconFX) { + float fadeOut = 1f; + if (iconFXStayDuration > 0 && Application.isPlaying) { + fadeOut = (now - iconFXStartTime); + if (fadeOut >= iconFXStayDuration) { + fadeOut -= iconFXStayDuration; + fadeOut = 1f - fadeOut; + } + if (fadeOut > 1f) { + fadeOut = 1f; + } + } + bool usesTarget = iconFXCenter != null; + if (fadeOut > 0 && !(iconEffectRendered && usesTarget)) { + iconEffectRendered = true; + float scaleT = 1f; + float time; + float normalizedTime = 0; + if (Application.isPlaying) { + time = now; + normalizedTime = (time - iconFXStartTime) / iconFXTransitionDuration; + if (normalizedTime > 1f) { + normalizedTime = 1f; + } + scaleT = Mathf.Sin(normalizedTime * Mathf.PI * 0.5f); + } + else { + time = (float)DateTime.Now.Subtract(DateTime.Today).TotalSeconds; + } + Bounds bounds = enclosingBounds; + if (!iconFXScaleToRenderBounds) { + bounds.size = Vector3.one; + } + Vector3 scale = bounds.size * iconFXScale; + Vector3 center = usesTarget ? iconFXCenter.position : bounds.center; + center += iconFXOffset; + switch (iconFXAnimationOption) { + case IconAnimationOption.VerticalBounce: + center.y += iconFXAnimationAmount * Mathf.Abs(Mathf.Sin((now - iconFXStartTime) * iconFXAnimationSpeed)); + break; + } + Quaternion rotation = Quaternion.Euler(0, time * iconFXRotationSpeed, 0); + if (OnIconAnimates != null) { + OnIconAnimates(ref center, ref rotation, ref scale, normalizedTime); + } + Matrix4x4 m = Matrix4x4.TRS(center, rotation, scale); + Color lightColor = iconFXLightColor; + lightColor.a *= fade * fadeOut; + Color darkColor = iconFXDarkColor; + darkColor.a *= fade * fadeOut; + Material mat = fxMatIcon; + mat.color = lightColor; + mat.SetColor(ShaderParams.IconFXDarkColor, darkColor); + cbHighlight.DrawMesh(iconFXMesh, m, mat); + } + } + + } + + + if (useSmoothBlend && _highlighted && somePartVisible) { + + // Prepare smooth outer glow / outline target + sourceDesc.colorFormat = useSmoothOutline && outlineEdgeMode == OutlineEdgeMode.Any ? RenderTextureFormat.ARGB32 : RenderTextureFormat.R8; + sourceDesc.msaaSamples = 1; + sourceDesc.useMipMap = false; + sourceDesc.depthBufferBits = 0; + + int smoothRTWidth = sourceDesc.width; + int smoothRTHeight = sourceDesc.height; + + cbHighlight.GetTemporaryRT(sourceRT, sourceDesc, FilterMode.Bilinear); + RenderTargetIdentifier sourceTarget = new RenderTargetIdentifier(sourceRT, 0, CubemapFace.Unknown, -1); + cbHighlight.SetRenderTarget(sourceTarget); + cbHighlight.ClearRenderTarget(false, true, new Color(0, 0, 0, 0)); + + for (int k = 0; k < rmsCount; k++) { + if (!rms[k].render) + continue; + + // Render object body for glow/outline highest quality + Mesh mesh = rms[k].mesh; + for (int l = 0; l < mesh.subMeshCount; l++) { + if (((1 << l) & subMeshMask) == 0) continue; + if (l < rms[k].fxMatSolidColor.Length) { + if (rms[k].isCombined) { + cbHighlight.DrawMesh(rms[k].mesh, rms[k].renderingMatrix, rms[k].fxMatSolidColor[l], l); + } + else { + cbHighlight.DrawRenderer(rms[k].renderer, rms[k].fxMatSolidColor[l], l); + } + } + } + } + + if (ComputeSmoothQuadMatrix(cam, enclosingBounds)) { + // Smooth Glow + if (useSmoothGlow) { + float intensity = glow * fade; + fxMatComposeGlow.color = new Color(glowHQColor.r * intensity, glowHQColor.g * intensity, glowHQColor.b * intensity, glowHQColor.a * intensity); + SmoothGlow(smoothRTWidth / glowDownsampling, smoothRTHeight / glowDownsampling); + } + + // Smooth Outline + if (useSmoothOutline) { + float intensity = outline * fade; + fxMatComposeOutline.color = new Color(outlineColor.r, outlineColor.g, outlineColor.b, outlineColor.a * intensity * 10f); + SmoothOutline(smoothRTWidth / outlineDownsampling, smoothRTHeight / outlineDownsampling); + } + + // Bit result + ComposeSmoothBlend(smoothGlowVisibility, smoothOutlineVisibility); + } + } + + // See-Through + if (seeThroughReal) { + if (renderMaskOnTop) { + for (int k = 0; k < rmsCount; k++) { + if (!rms[k].render) + continue; + Mesh mesh = rms[k].mesh; + RenderSeeThroughClearStencil(k, mesh); + } + for (int k = 0; k < rmsCount; k++) { + if (!rms[k].render) + continue; + Mesh mesh = rms[k].mesh; + RenderSeeThroughMask(k, mesh); + } + } + for (int k = 0; k < rmsCount; k++) { + if (!rms[k].render) + continue; + Mesh mesh = rms[k].mesh; + for (int l = 0; l < mesh.subMeshCount; l++) { + if (((1 << l) & subMeshMask) == 0) continue; + if (l < rms[k].fxMatSeeThroughInner.Length && rms[k].fxMatSeeThroughInner[l] != null) { + if (rms[k].isCombined) { + cbHighlight.DrawMesh(mesh, rms[k].renderingMatrix, rms[k].fxMatSeeThroughInner[l], l); + } + else { + cbHighlight.DrawRenderer(rms[k].renderer, rms[k].fxMatSeeThroughInner[l], l); + } + } + } + } + + if (usesSeeThroughBorder) { + for (int k = 0; k < rmsCount; k++) { + if (!rms[k].render) + continue; + Mesh mesh = rms[k].mesh; + for (int l = 0; l < mesh.subMeshCount; l++) { + if (((1 << l) & subMeshMask) == 0) continue; + if (rms[k].isCombined) { + cbHighlight.DrawMesh(mesh, rms[k].renderingMatrix, rms[k].fxMatSeeThroughBorder[l], l); + } + else { + cbHighlight.DrawRenderer(rms[k].renderer, rms[k].fxMatSeeThroughBorder[l], l); + } + } + } + } + + if (seeThroughOrdered) { // Ordered for see-through + for (int k = 0; k < rmsCount; k++) { + if (!rms[k].render) + continue; + Mesh mesh = rms[k].mesh; + for (int l = 0; l < mesh.subMeshCount; l++) { + if (((1 << l) & subMeshMask) == 0) continue; + if (rms[k].isCombined) { + cbHighlight.DrawMesh(mesh, rms[k].renderingMatrix, fxMatClearStencil, l, 1); + } + else { + cbHighlight.DrawRenderer(rms[k].renderer, fxMatClearStencil, l, 1); + } + } + } + } + } + + + } + + void RenderMask (int k, Mesh mesh, bool renderMaskOnTop) { + for (int l = 0; l < mesh.subMeshCount; l++) { + if (((1 << l) & subMeshMask) == 0) continue; + if (renderMaskOnTop) { + rms[k].fxMatMask[l].SetInt(ShaderParams.ZTest, (int)CompareFunction.Always); + } + else { + rms[k].fxMatMask[l].SetInt(ShaderParams.ZTest, (int)CompareFunction.LessEqual); + } + if (rms[k].isCombined) { + cbHighlight.DrawMesh(rms[k].mesh, rms[k].renderingMatrix, rms[k].fxMatMask[l], l, 0); + } + else { + cbHighlight.DrawRenderer(rms[k].renderer, rms[k].fxMatMask[l], l, 0); + } + } + } + + void RenderSeeThroughClearStencil (int k, Mesh mesh) { + if (rms[k].isCombined) { + for (int l = 0; l < mesh.subMeshCount; l++) { + if (((1 << l) & subMeshMask) == 0) continue; + cbHighlight.DrawMesh(mesh, rms[k].renderingMatrix, fxMatClearStencil, l, 1); + } + } + else { + for (int l = 0; l < mesh.subMeshCount; l++) { + if (((1 << l) & subMeshMask) == 0) continue; + cbHighlight.DrawRenderer(rms[k].renderer, fxMatClearStencil, l, 1); + } + } + } + + void RenderSeeThroughMask (int k, Mesh mesh) { + if (rms[k].isCombined) { + for (int l = 0; l < mesh.subMeshCount; l++) { + if (((1 << l) & subMeshMask) == 0) continue; + cbHighlight.DrawMesh(mesh, rms[k].renderingMatrix, rms[k].fxMatMask[l], l, 1); + } + } + else { + for (int l = 0; l < mesh.subMeshCount; l++) { + if (((1 << l) & subMeshMask) == 0) continue; + cbHighlight.DrawRenderer(rms[k].renderer, rms[k].fxMatMask[l], l, 1); + } + } + } + + + void WorldToViewportPoint (ref Matrix4x4 m, ref Vector4 p, bool perspectiveProjection, float zBufferParamsZ, float zBufferParamsW) { + p = m * p; + p.x = (p.x / p.w + 1f) * 0.5f; + p.y = (p.y / p.w + 1f) * 0.5f; + + if (perspectiveProjection) { + p.z /= p.w; + p.z = 1.0f / (zBufferParamsZ * p.z + zBufferParamsW); + } + else { + if (usesReversedZBuffer) { + p.z = 1f - p.z; + } + p.z = (zBufferParamsW - zBufferParamsZ) * p.z + zBufferParamsZ; + } + } + + + bool ComputeSmoothQuadMatrix (Camera cam, Bounds bounds) { + + // Compute bounds in screen space and enlarge for glow space + bool res; + if (VRCheck.isVrRunning) { + Vector3 shift = Vector3.zero; + res = ComputeSmoothQuadMatrixOriginShifted(cam, ref bounds, ref shift); + } + else { + + Vector3 shift = cam.transform.position; + cam.transform.position = Vector3.zero; + cam.ResetWorldToCameraMatrix(); + bounds.center -= shift; + res = ComputeSmoothQuadMatrixOriginShifted(cam, ref bounds, ref shift); + cam.transform.position = shift; + } + return res; + } + + bool ComputeSmoothQuadMatrixOriginShifted (Camera cam, ref Bounds bounds, ref Vector3 shift) { + // Compute bounds in screen space and enlarge for glow space + + Matrix4x4 mat = GL.GetGPUProjectionMatrix(cam.projectionMatrix, false) * cam.worldToCameraMatrix; + Vector3 min = bounds.min; + Vector3 max = bounds.max; + corners[0] = new Vector4(min.x, min.y, min.z, 1f); + corners[1] = new Vector4(min.x, min.y, max.z, 1f); + corners[2] = new Vector4(max.x, min.y, min.z, 1f); + corners[3] = new Vector4(max.x, min.y, max.z, 1f); + corners[4] = new Vector4(min.x, max.y, min.z, 1f); + corners[5] = new Vector4(min.x, max.y, max.z, 1f); + corners[6] = new Vector4(max.x, max.y, min.z, 1f); + corners[7] = new Vector4(max.x, max.y, max.z, 1f); + Vector3 scrMin = new Vector3(float.MaxValue, float.MaxValue, 0); + Vector3 scrMax = new Vector3(float.MinValue, float.MinValue, 0); + float distanceMin = float.MaxValue; + float distanceMax = float.MinValue; + float nearClipPlane = cam.nearClipPlane; + float farClipPlane = cam.farClipPlane; + + float x, y, z, w; + bool isPerspectiveCamera = !cam.orthographic; + if (isPerspectiveCamera) { + if (usesReversedZBuffer) { + x = -1f + farClipPlane / nearClipPlane; + y = 1f; + z = x / farClipPlane; + w = 1f / farClipPlane; + } + else { + x = 1f - farClipPlane / nearClipPlane; + y = farClipPlane / nearClipPlane; + z = x / farClipPlane; + w = y / farClipPlane; + } + } + else { + z = nearClipPlane; + w = farClipPlane; + } + + for (int k = 0; k < 8; k++) { + WorldToViewportPoint(ref mat, ref corners[k], isPerspectiveCamera, z, w); + if (corners[k].x < scrMin.x) { + scrMin.x = corners[k].x; + } + if (corners[k].y < scrMin.y) { + scrMin.y = corners[k].y; + } + if (corners[k].x > scrMax.x) { + scrMax.x = corners[k].x; + } + if (corners[k].y > scrMax.y) { + scrMax.y = corners[k].y; + } + if (corners[k].z < distanceMin) { + distanceMin = corners[k].z; + if (distanceMin < nearClipPlane) { + distanceMin = distanceMax = 0.01f + nearClipPlane; + scrMin.x = scrMin.y = 0; + scrMax.x = 1f; + scrMax.y = 1f; + break; + } + } + if (corners[k].z > distanceMax) { + distanceMax = corners[k].z; + } + } + if (scrMax.y == scrMin.y) + return false; + + int pixelWidth = cam.pixelWidth; + int pixelHeight = cam.pixelHeight; + Rect pixelRect = cam.pixelRect; + scrMin.x *= pixelWidth; + scrMax.x *= pixelWidth; + scrMin.y *= pixelHeight; + scrMax.y *= pixelHeight; + scrMin.x += pixelRect.xMin; + scrMax.x += pixelRect.xMin; + scrMin.y += pixelRect.yMin; + scrMax.y += pixelRect.yMin; + + if (spriteMode) { + scrMin.z = scrMax.z = (distanceMin + distanceMax) * 0.5f + nearClipPlane; + } + else { + scrMin.z = scrMax.z = VRCheck.isVrRunning ? distanceMin : 0.05f + nearClipPlane; // small shift to avoid origin far issues + } + + if (outline > 0) { + BuildMatrix(cam, scrMin, scrMax, (int)(10 + 20 * outlineWidth + 5 * outlineDownsampling), ref quadOutlineMatrix, ref shift); + } + if (glow > 0) { + BuildMatrix(cam, scrMin, scrMax, (int)(20 + 30 * glowWidth + 10 * glowDownsampling), ref quadGlowMatrix, ref shift); + } + return true; + } + + void BuildMatrix (Camera cam, Vector3 scrMin, Vector3 scrMax, int border, ref Matrix4x4 quadMatrix, ref Vector3 shift) { + + // Insert padding to make room for effects + border += extraCoveragePixels; + scrMin.x -= border; + scrMin.y -= border; + scrMax.x += border; + scrMax.y += border; + + // Back to world space + Vector3 third = new Vector3(scrMax.x, scrMin.y, scrMin.z); + scrMin = cam.ScreenToWorldPoint(scrMin); + scrMax = cam.ScreenToWorldPoint(scrMax); + third = cam.ScreenToWorldPoint(third); + + float width = Vector3.Distance(scrMin, third); + float height = Vector3.Distance(scrMax, third); + + quadMatrix = Matrix4x4.TRS((scrMin + scrMax) * 0.5f + shift, cam.transform.rotation, new Vector3(width, height, 1f)); + } + + void SmoothGlow (int rtWidth, int rtHeight) { + + Material matBlur = fxMatBlurGlow; + RenderTextureDescriptor glowDesc = sourceDesc; + glowDesc.depthBufferBits = 0; + + if (glowBlurMethod == BlurMethod.Gaussian) { + + const int blurPasses = 4; + + // Blur buffers + int bufferCount = blurPasses * 2; + if (mipGlowBuffers == null || mipGlowBuffers.Length != bufferCount) { + mipGlowBuffers = new int[bufferCount]; + for (int k = 0; k < bufferCount; k++) { + mipGlowBuffers[k] = Shader.PropertyToID("_HPSmoothGlowTemp" + k); + } + mipGlowBuffers[bufferCount - 2] = ShaderParams.GlowRT; + } + + for (int k = 0; k < bufferCount; k++) { + float reduction = k / 2 + 2; + int reducedWidth = (int)(rtWidth / reduction); + int reducedHeight = (int)(rtHeight / reduction); + if (reducedWidth <= 0) { + reducedWidth = 1; + } + if (reducedHeight <= 0) { + reducedHeight = 1; + } + glowDesc.width = reducedWidth; + glowDesc.height = reducedHeight; + cbHighlight.GetTemporaryRT(mipGlowBuffers[k], glowDesc, FilterMode.Bilinear); + } + + for (int k = 0; k < bufferCount - 1; k += 2) { + if (k == 0) { + RenderingUtils.FullScreenBlit(cbHighlight, sourceRT, mipGlowBuffers[k + 1], fxMatBlurGlow, 0); + } + else { + RenderingUtils.FullScreenBlit(cbHighlight, mipGlowBuffers[k], mipGlowBuffers[k + 1], fxMatBlurGlow, 0); + } + RenderingUtils.FullScreenBlit(cbHighlight, mipGlowBuffers[k + 1], mipGlowBuffers[k], fxMatBlurGlow, 1); + + if (k < bufferCount - 2) { + RenderingUtils.FullScreenBlit(cbHighlight, mipGlowBuffers[k], mipGlowBuffers[k + 2], fxMatBlurGlow, 2); + } + } + } + else { + const int blurPasses = 4; + + int bufferCount = blurPasses; + if (mipGlowBuffers == null || mipGlowBuffers.Length != bufferCount) { + mipGlowBuffers = new int[bufferCount]; + for (int k = 0; k < bufferCount - 1; k++) { + mipGlowBuffers[k] = Shader.PropertyToID("_HPSmoothGlowTemp" + k); + } + mipGlowBuffers[bufferCount - 1] = ShaderParams.GlowRT; + } + + for (int k = 0; k < bufferCount; k++) { + float reduction = k + 2; + int reducedWidth = (int)(rtWidth / reduction); + int reducedHeight = (int)(rtHeight / reduction); + if (reducedWidth <= 0) { + reducedWidth = 1; + } + if (reducedHeight <= 0) { + reducedHeight = 1; + } + glowDesc.width = reducedWidth; + glowDesc.height = reducedHeight; + cbHighlight.GetTemporaryRT(mipGlowBuffers[k], glowDesc, FilterMode.Bilinear); + } + RenderingUtils.FullScreenBlit(cbHighlight, sourceRT, mipGlowBuffers[0], matBlur, 3); + for (int k = 0; k < bufferCount - 1; k++) { + cbHighlight.SetGlobalFloat(ShaderParams.ResampleScale, k + 0.5f); + RenderingUtils.FullScreenBlit(cbHighlight, mipGlowBuffers[k], mipGlowBuffers[k + 1], matBlur, 3); + } + } + } + + void SmoothOutline (int rtWidth, int rtHeight) { + + // Blur buffers + int bufferCount = outlineBlurPasses * 2; + if (mipOutlineBuffers == null || mipOutlineBuffers.Length != bufferCount) { + mipOutlineBuffers = new int[bufferCount]; + for (int k = 0; k < bufferCount; k++) { + mipOutlineBuffers[k] = Shader.PropertyToID("_HPSmoothOutlineTemp" + k); + } + mipOutlineBuffers[bufferCount - 2] = ShaderParams.OutlineRT; + } + RenderTextureDescriptor outlineDesc = sourceDesc; + outlineDesc.depthBufferBits = 0; + + for (int k = 0; k < bufferCount; k++) { + float reduction = k / 2 + 2; + int reducedWidth = (int)(rtWidth / reduction); + int reducedHeight = (int)(rtHeight / reduction); + if (reducedWidth <= 0) { + reducedWidth = 1; + } + if (reducedHeight <= 0) { + reducedHeight = 1; + } + outlineDesc.width = reducedWidth; + outlineDesc.height = reducedHeight; + cbHighlight.GetTemporaryRT(mipOutlineBuffers[k], outlineDesc, FilterMode.Bilinear); + } + + for (int k = 0; k < bufferCount - 1; k += 2) { + if (k == 0) { + RenderingUtils.FullScreenBlit(cbHighlight, sourceRT, mipOutlineBuffers[k + 1], fxMatBlurOutline, 3); + } + else { + RenderingUtils.FullScreenBlit(cbHighlight, mipOutlineBuffers[k], mipOutlineBuffers[k + 1], fxMatBlurOutline, 0); + } + RenderingUtils.FullScreenBlit(cbHighlight, mipOutlineBuffers[k + 1], mipOutlineBuffers[k], fxMatBlurOutline, 1); + + if (k < bufferCount - 2) { + RenderingUtils.FullScreenBlit(cbHighlight, mipOutlineBuffers[k], mipOutlineBuffers[k + 2], fxMatBlurOutline, 2); + } + } + } + + + void ComposeSmoothBlend (Visibility smoothGlowVisibility, Visibility smoothOutlineVisibility) { + + // Render mask on target surface + var useDepthRenderBuffer = colorAttachmentBuffer != BuiltinRenderTextureType.CameraTarget && depthAttachmentBuffer == BuiltinRenderTextureType.CameraTarget; + cbHighlight.SetRenderTarget(colorAttachmentBuffer, useDepthRenderBuffer ? colorAttachmentBuffer : depthAttachmentBuffer); + // cbHighlight.SetRenderTarget(colorAttachmentBuffer, depthAttachmentBuffer); + + bool renderSmoothGlow = glow > 0 && glowWidth > 0 && glowQuality == QualityLevel.Highest; + if (renderSmoothGlow) { + fxMatComposeGlow.SetVector(ShaderParams.Flip, (VRCheck.isVrRunning && flipY) ? new Vector4(1, -1) : new Vector4(0, 1)); + fxMatComposeGlow.SetInt(ShaderParams.ZTest, GetZTestValue(smoothGlowVisibility)); + cbHighlight.DrawMesh(quadMesh, quadGlowMatrix, fxMatComposeGlow, 0, 0); + } + bool renderSmoothOutline = outline > 0 && outlineWidth > 0 && outlineQuality == QualityLevel.Highest; + if (renderSmoothOutline) { + fxMatComposeOutline.SetVector(ShaderParams.Flip, (VRCheck.isVrRunning && flipY) ? new Vector4(1, -1) : new Vector4(0, 1)); + fxMatComposeOutline.SetInt(ShaderParams.ZTest, GetZTestValue(smoothOutlineVisibility)); + cbHighlight.DrawMesh(quadMesh, quadOutlineMatrix, fxMatComposeOutline, 0, 0); + } + // Release render textures + if (renderSmoothGlow) { + for (int k = 0; k < mipGlowBuffers.Length; k++) { + cbHighlight.ReleaseTemporaryRT(mipGlowBuffers[k]); + } + } + if (renderSmoothOutline) { + for (int k = 0; k < mipOutlineBuffers.Length; k++) { + cbHighlight.ReleaseTemporaryRT(mipOutlineBuffers[k]); + } + } + + cbHighlight.ReleaseTemporaryRT(sourceRT); + } + + void InitMaterial (ref Material material, string shaderName) { + if (material != null) return; + Shader shaderFX = Shader.Find(shaderName); + if (shaderFX == null) { + Debug.LogError("Shader " + shaderName + " not found."); + return; + } + material = new Material(shaderFX); + } + + void Fork (Material mat, ref Material[] mats, Mesh mesh) { + if (mesh == null) + return; + int count = mesh.subMeshCount; + Fork(mat, ref mats, count); + } + + void Fork (Material material, ref Material[] array, int count) { + if (array == null || array.Length < count) { + DestroyMaterialArray(array); + array = new Material[count]; + } + for (int k = 0; k < count; k++) { + if (array[k] == null) { + array[k] = Instantiate(material); + } + } + } + + /// + /// Sets target for highlight effects + /// + public void SetTarget (Transform transform) { + if (transform == null) return; + InitIfNeeded(); + if (transform != target) { + if (_highlighted) { + ImmediateFadeOut(); + } + target = transform; + SetupMaterial(); + } + else { + UpdateVisibilityState(); + } + } + + + + /// + /// Sets target for highlight effects and also specify a list of renderers to be included as well + /// + public void SetTargets (Transform transform, Renderer[] renderers) { + if (transform == null) + return; + + InitIfNeeded(); + if (_highlighted) { + ImmediateFadeOut(); + } + + effectGroup = TargetOptions.Scripting; + target = transform; + SetupMaterial(renderers); + } + + + /// + /// Start or finish highlight on the object + /// + public void SetHighlighted (bool state) { + + if (state != _highlighted && OnObjectHighlightStateChange != null) { + if (!OnObjectHighlightStateChange(gameObject, state)) return; + } + + if (state) lastHighlighted = this; + + if (!Application.isPlaying) { + _highlighted = state; + return; + } + + float now = GetTime(); + + if (fading == FadingState.NoFading) { + fadeStartTime = now; + } + + if (state && !ignore) { + if (_highlighted && fading == FadingState.NoFading) { + return; + } + if (OnObjectHighlightStart != null) { + if (!OnObjectHighlightStart(gameObject)) { + return; + } + } + SendMessage("HighlightStart", null, SendMessageOptions.DontRequireReceiver); + highlightStartTime = targetFXStartTime = iconFXStartTime = now; + if (fadeInDuration > 0) { + if (fading == FadingState.FadingOut) { + float remaining = fadeOutDuration - (now - fadeStartTime); + fadeStartTime = now - remaining; + fadeStartTime = Mathf.Min(fadeStartTime, now); + } + fading = FadingState.FadingIn; + } + else { + fading = FadingState.NoFading; + } + _highlighted = true; + requireUpdateMaterial = true; + } + else if (_highlighted) { + if (fadeOutDuration > 0) { + if (fading == FadingState.FadingIn) { + float elapsed = now - fadeStartTime; + fadeStartTime = now + elapsed - fadeInDuration; + fadeStartTime = Mathf.Min(fadeStartTime, now); + } + fading = FadingState.FadingOut; // when fade out ends, highlighted will be set to false in OnRenderObject + } + else { + fading = FadingState.NoFading; + ImmediateFadeOut(); + requireUpdateMaterial = true; + } + } + } + + void ImmediateFadeOut () { + fading = FadingState.NoFading; + _highlighted = false; + if (OnObjectHighlightEnd != null) { + OnObjectHighlightEnd(gameObject); + } + SendMessage("HighlightEnd", null, SendMessageOptions.DontRequireReceiver); + } + + void SetupMaterial () { + +#if UNITY_EDITOR + staticChildren = false; +#endif + + if (target == null || fxMatMask == null) + return; + + Renderer[] rr = null; + switch (effectGroup) { + case TargetOptions.OnlyThisObject: + if (target.TryGetComponent(out Renderer renderer) && ValidRenderer(renderer)) { + rr = new Renderer[1]; + rr[0] = renderer; + } + break; + case TargetOptions.RootToChildren: + Transform root = target; + while (root.parent != null) { + root = root.parent; + } + rr = FindRenderersInChildren(root); + break; + case TargetOptions.LayerInScene: { + HighlightEffect eg = this; + if (target != transform) { + if (target.TryGetComponent(out HighlightEffect targetEffect)) { + eg = targetEffect; + } + } + rr = FindRenderersWithLayerInScene(eg.effectGroupLayer); + } + break; + case TargetOptions.LayerInChildren: { + HighlightEffect eg = this; + if (target != transform) { + if (target.TryGetComponent(out HighlightEffect targetEffect)) { + eg = targetEffect; + } + } + rr = FindRenderersWithLayerInChildren(eg.effectGroupLayer); + } + break; + case TargetOptions.Children: + rr = FindRenderersInChildren(target); + break; + case TargetOptions.Scripting: + UpdateMaterialProperties(); + return; + } + + SetupMaterial(rr); + } + + void SetupMaterial (Renderer[] rr) { + + if (rr == null) { + rr = new Renderer[0]; + } + if (rms == null || rms.Length < rr.Length) { + rms = new ModelMaterials[rr.Length]; + } + InitCommandBuffer(); + + spriteMode = false; + rmsCount = 0; + for (int k = 0; k < rr.Length; k++) { + rms[rmsCount].Init(); + Renderer renderer = rr[k]; + if (renderer == null) continue; + if (effectGroup != TargetOptions.OnlyThisObject && !string.IsNullOrEmpty(effectNameFilter)) { + if (effectNameUseRegEx) { + try { + lastRegExError = ""; + if (!Regex.IsMatch(renderer.name, effectNameFilter)) continue; + } + catch (Exception ex) { + lastRegExError = ex.Message; + continue; + } + } + else { + if (!renderer.name.Contains(effectNameFilter)) continue; + } + } + rms[rmsCount].renderer = renderer; + rms[rmsCount].renderWasVisibleDuringSetup = renderer.isVisible; + sortingOffset = renderer.gameObject.GetInstanceID() % 0.0001f; + + if (renderer.transform != target) { + if (renderer.TryGetComponent(out HighlightEffect otherEffect) && otherEffect.enabled && otherEffect.ignore) { + continue; // ignore this object + } + } + + if (OnRendererHighlightStart != null) { + if (!OnRendererHighlightStart(renderer)) { + rmsCount++; + continue; + } + } + + rms[rmsCount].isCombined = false; + bool isSkinnedMesh = renderer is SkinnedMeshRenderer; + rms[rmsCount].isSkinnedMesh = isSkinnedMesh; + bool isSpriteRenderer = renderer is SpriteRenderer; + rms[rmsCount].normalsOption = isSkinnedMesh ? NormalsOption.PreserveOriginal : normalsOption; + if (isSpriteRenderer) { + rms[rmsCount].mesh = quadMesh; + spriteMode = true; + } + else if (isSkinnedMesh) { + // ignore cloth skinned renderers + rms[rmsCount].mesh = ((SkinnedMeshRenderer)renderer).sharedMesh; + } + else if (Application.isPlaying && renderer.isPartOfStaticBatch) { + // static batched objects need to have a mesh collider in order to use its original mesh + if (renderer.TryGetComponent(out MeshCollider mc)) { + rms[rmsCount].mesh = mc.sharedMesh; + } + } + else { + if (renderer.TryGetComponent(out MeshFilter mf)) { + rms[rmsCount].mesh = mf.sharedMesh; + +#if UNITY_EDITOR + if (renderer.gameObject.isStatic && renderer.GetComponent() == null) { + staticChildren = true; + } +#endif + + } + } + + if (rms[rmsCount].mesh == null) { + continue; + } + + rms[rmsCount].transform = renderer.transform; + Fork(fxMatMask, ref rms[rmsCount].fxMatMask, rms[rmsCount].mesh); + Fork(fxMatOutlineTemplate, ref rms[rmsCount].fxMatOutline, rms[rmsCount].mesh); + Fork(fxMatGlowTemplate, ref rms[rmsCount].fxMatGlow, rms[rmsCount].mesh); + Fork(fxMatSeeThrough, ref rms[rmsCount].fxMatSeeThroughInner, rms[rmsCount].mesh); + Fork(fxMatSeeThroughBorder, ref rms[rmsCount].fxMatSeeThroughBorder, rms[rmsCount].mesh); + Fork(fxMatOverlay, ref rms[rmsCount].fxMatOverlay, rms[rmsCount].mesh); + Fork(fxMatInnerGlow, ref rms[rmsCount].fxMatInnerGlow, rms[rmsCount].mesh); + Fork(fxMatSolidColor, ref rms[rmsCount].fxMatSolidColor, rms[rmsCount].mesh); + rms[rmsCount].originalMesh = rms[rmsCount].mesh; + if (!rms[rmsCount].preserveOriginalMesh) { + if (innerGlow > 0 || (glow > 0 && glowQuality != QualityLevel.Highest) || (outline > 0 && outlineQuality != QualityLevel.Highest)) { + if (normalsOption == NormalsOption.Reorient) { + ReorientNormals(rmsCount); + } + else { + AverageNormals(rmsCount); + } + } + } + rmsCount++; + } + +#if UNITY_EDITOR + // Avoids command buffer issue when refreshing asset inside the Editor + if (!Application.isPlaying) { + mipGlowBuffers = null; + mipOutlineBuffers = null; + } +#endif + + if (spriteMode) { + outlineIndependent = false; + outlineQuality = QualityLevel.Highest; + glowQuality = QualityLevel.Highest; + innerGlow = 0; + cullBackFaces = false; + seeThrough = SeeThroughMode.Never; + if (alphaCutOff <= 0) { + alphaCutOff = 0.5f; + } + } + else { + if (combineMeshes) { + CombineMeshes(); + } + } + + UpdateMaterialProperties(); + } + + readonly List tempRR = new List(); + + bool ValidRenderer (Renderer r) { + return r is MeshRenderer || r is SpriteRenderer || r is SkinnedMeshRenderer; + } + + Renderer[] FindRenderersWithLayerInScene (LayerMask layer) { + Renderer[] rr = Misc.FindObjectsOfType(); + tempRR.Clear(); + for (var i = 0; i < rr.Length; i++) { + Renderer r = rr[i]; + if (((1 << r.gameObject.layer) & layer) != 0) { + if (ValidRenderer(r)) { + tempRR.Add(r); + } + } + } + return tempRR.ToArray(); + } + + Renderer[] FindRenderersWithLayerInChildren (LayerMask layer) { + Renderer[] rr = target.GetComponentsInChildren(); + tempRR.Clear(); + for (var i = 0; i < rr.Length; i++) { + Renderer r = rr[i]; + if (((1 << r.gameObject.layer) & layer) != 0) { + if (ValidRenderer(r)) { + tempRR.Add(r); + } + } + } + return tempRR.ToArray(); + } + + Renderer[] FindRenderersInChildren (Transform parent) { + tempRR.Clear(); + parent.GetComponentsInChildren(true, tempRR); + for (var i = 0; i < tempRR.Count; i++) { + Renderer r = tempRR[i]; + if (!ValidRenderer(r)) { + tempRR.RemoveAt(i); + i--; + } + } + return tempRR.ToArray(); + } + + void InitTemplateMaterials () { + InitMaterial(ref fxMatMask, "HighlightPlus/Geometry/Mask"); + InitMaterial(ref fxMatGlowTemplate, "HighlightPlus/Geometry/Glow"); + if (fxMatGlowTemplate != null) { + Texture2D noiseTex = Resources.Load("HighlightPlus/blueNoiseVL"); + fxMatGlowTemplate.SetTexture(ShaderParams.NoiseTex, noiseTex); + if (useGPUInstancing) { + fxMatGlowTemplate.enableInstancing = true; + } + } + InitMaterial(ref fxMatInnerGlow, "HighlightPlus/Geometry/InnerGlow"); + InitMaterial(ref fxMatOutlineTemplate, "HighlightPlus/Geometry/Outline"); + if (fxMatOutlineTemplate != null && useGPUInstancing) fxMatOutlineTemplate.enableInstancing = true; + InitMaterial(ref fxMatOverlay, "HighlightPlus/Geometry/Overlay"); + InitMaterial(ref fxMatSeeThrough, "HighlightPlus/Geometry/SeeThrough"); + InitMaterial(ref fxMatSeeThroughBorder, "HighlightPlus/Geometry/SeeThroughBorder"); + InitMaterial(ref fxMatSeeThroughMask, "HighlightPlus/Geometry/SeeThroughMask"); + InitMaterial(ref fxMatTarget, "HighlightPlus/Geometry/Target"); + InitMaterial(ref fxMatComposeGlow, "HighlightPlus/Geometry/ComposeGlow"); + InitMaterial(ref fxMatComposeOutline, "HighlightPlus/Geometry/ComposeOutline"); + InitMaterial(ref fxMatSolidColor, "HighlightPlus/Geometry/SolidColor"); + InitMaterial(ref fxMatBlurGlow, "HighlightPlus/Geometry/BlurGlow"); + InitMaterial(ref fxMatBlurOutline, "HighlightPlus/Geometry/BlurOutline"); + InitMaterial(ref fxMatClearStencil, "HighlightPlus/ClearStencil"); + } + + void InitCommandBuffer () { + if (cbHighlight == null) { + cbHighlight = new CommandBuffer(); + cbHighlight.name = "Highlight Plus for " + name; + } + cbHighlightEmpty = true; + } + + + void ConfigureOutput () { + if (!cbHighlightEmpty) return; + cbHighlightEmpty = false; + +#if UNITY_2022_1_OR_NEWER + // depth priming might have changed depth render target so we ensure it's set to normal + colorAttachmentBuffer = new RenderTargetIdentifier(colorAttachmentBuffer, 0, CubemapFace.Unknown, -1); + depthAttachmentBuffer = new RenderTargetIdentifier(depthAttachmentBuffer, 0, CubemapFace.Unknown, -1); +#if UNITY_2023_1_OR_NEWER // used as workaround for render graph - a bug sets depth load buffer action to don't care instead of load. This redundant setRenderTarget call fixes it + cbHighlight.SetRenderTarget(colorAttachmentBuffer, RenderBufferLoadAction.Load, RenderBufferStoreAction.Store, depthAttachmentBuffer, RenderBufferLoadAction.Load, RenderBufferStoreAction.Store); +#endif + cbHighlight.SetRenderTarget(colorAttachmentBuffer, depthAttachmentBuffer); +#elif UNITY_2021_2_OR_NEWER + var useDepthRenderBuffer = colorAttachmentBuffer != BuiltinRenderTextureType.CameraTarget && depthAttachmentBuffer == BuiltinRenderTextureType.CameraTarget; + cbHighlight.SetRenderTarget(colorAttachmentBuffer, useDepthRenderBuffer ? colorAttachmentBuffer : depthAttachmentBuffer); +#endif + } + + public void UpdateVisibilityState () { + // isVisible only accounts for cases where there's a single object managed by the highlight effect + // and that object can receive OnBecameVisible/OnBecameInvisible. Otherwise we can't use this optimization + if (rms == null || rms.Length != 1 || rms[0].transform != transform || rms[0].renderer == null) { + isVisible = true; + } + else if (rms[0].renderer != null) { + isVisible = rms[0].renderer.isVisible; + } + } + + public void UpdateMaterialProperties () { + + if (rms == null) + return; + + if (ignore) { + _highlighted = false; + } + + UpdateVisibilityState(); + + extraCoveragePixels = Mathf.Max(0, extraCoveragePixels); + maskRequired = (_highlighted && ((outline > 0 && outlineMaskMode != MaskMode.IgnoreMask) || (glow > 0 && glowMaskMode != MaskMode.IgnoreMask))) || seeThrough != SeeThroughMode.Never || (targetFX && targetFXAlignToGround); + usesSeeThrough = seeThroughIntensity > 0 && (seeThrough == SeeThroughMode.AlwaysWhenOccluded || (seeThrough == SeeThroughMode.WhenHighlighted && _highlighted)); + // Resort materials if needed + if (usesSeeThrough && seeThroughChildrenSortingMode != SeeThroughSortingMode.Default && rms.Length > 0) { + if (seeThroughChildrenSortingMode == SeeThroughSortingMode.SortByMaterialsRenderQueue) { + Array.Sort(rms, MaterialsRenderQueueComparer); + } + else { + Array.Sort(rms, MaterialsRenderQueueInvertedComparer); + } + } + + Color seeThroughTintColor = this.seeThroughTintColor; + seeThroughTintColor.a = this.seeThroughTintAlpha; + + if (lastOutlineVisibility != outlineVisibility) { + // change by scripting? + if (glowQuality == QualityLevel.Highest && outlineQuality == QualityLevel.Highest) { + glowVisibility = outlineVisibility; + } + lastOutlineVisibility = outlineVisibility; + } + if (outlineWidth < 0) { + outlineWidth = 0; + } + if (padding < 0) { + padding = 0; + } + if (outlineQuality == QualityLevel.Medium) { + outlineOffsetsMin = 4; outlineOffsetsMax = 7; + } + else if (outlineQuality == QualityLevel.High) { + outlineOffsetsMin = 0; outlineOffsetsMax = 7; + } + else { + outlineOffsetsMin = outlineOffsetsMax = 0; + } + if (glowWidth < 0) { + glowWidth = 0; + } + if (glowQuality == QualityLevel.Medium) { + glowOffsetsMin = 4; glowOffsetsMax = 7; + } + else if (glowQuality == QualityLevel.High) { + glowOffsetsMin = 0; glowOffsetsMax = 7; + } + else { + glowOffsetsMin = glowOffsetsMax = 0; + } + if (targetFXTransitionDuration <= 0) { + targetFXTransitionDuration = 0.0001f; + } + if (targetFXStayDuration <= 0) { + targetFXStayDuration = 0; + } + if (targetFXFadePower <= 0) { + targetFXFadePower = 0; + } + if (iconFXTransitionDuration <= 0) { + iconFXTransitionDuration = 0.0001f; + } + if (iconFXAnimationAmount < 0) { + iconFXAnimationAmount = 0; + } + if (iconFXAnimationSpeed < 0) { + iconFXAnimationSpeed = 0; + } + if (iconFXStayDuration < 0) { + iconFXStayDuration = 0; + } + if (iconFXScale < 0) { + iconFXScale = 0; + } + if (seeThroughDepthOffset < 0) { + seeThroughDepthOffset = 0; + } + if (seeThroughMaxDepth < 0) { + seeThroughMaxDepth = 0; + } + if (seeThroughBorderWidth < 0) { + seeThroughBorderWidth = 0; + } + if (outlineSharpness < 1f) { + outlineSharpness = 1f; + } + + shouldBakeSkinnedMesh = optimizeSkinnedMesh && ((outline > 0 && outlineQuality != QualityLevel.Highest) || (glow > 0 && glowQuality != QualityLevel.Highest)); + useSmoothGlow = glow > 0 && glowWidth > 0 && glowQuality == QualityLevel.Highest; + useSmoothOutline = outline > 0 && outlineWidth > 0 && outlineQuality == QualityLevel.Highest; + useSmoothBlend = useSmoothGlow || useSmoothOutline; + if (useSmoothBlend) { + if (useSmoothGlow && useSmoothOutline) { + outlineVisibility = glowVisibility; + } + outlineEdgeThreshold = Mathf.Clamp01(outlineEdgeThreshold); + } + if (useSmoothGlow) { + fxMatComposeGlow.SetInt(ShaderParams.Cull, cullBackFaces ? (int)CullMode.Back : (int)CullMode.Off); + if (glowBlendMode == GlowBlendMode.Additive) { + fxMatComposeGlow.SetInt(ShaderParams.BlendSrc, (int)BlendMode.One); + fxMatComposeGlow.SetInt(ShaderParams.BlendDst, (int)BlendMode.One); + } + else { + fxMatComposeGlow.SetInt(ShaderParams.BlendSrc, (int)BlendMode.SrcAlpha); + fxMatComposeGlow.SetInt(ShaderParams.BlendDst, (int)BlendMode.OneMinusSrcAlpha); + } + fxMatComposeGlow.SetColor(ShaderParams.Debug, glowBlitDebug ? debugColor : blackColor); + fxMatComposeGlow.SetInt(ShaderParams.GlowStencilComp, glowMaskMode != MaskMode.Stencil ? (int)CompareFunction.Always : (int)CompareFunction.NotEqual); + if (glowMaskMode == MaskMode.StencilAndCutout) { + fxMatComposeGlow.EnableKeyword(ShaderParams.SKW_MASK_CUTOUT); + } + else { + fxMatComposeGlow.DisableKeyword(ShaderParams.SKW_MASK_CUTOUT); + } + fxMatBlurGlow.SetFloat(ShaderParams.BlurScale, glowWidth / glowDownsampling); + fxMatBlurGlow.SetFloat(ShaderParams.Speed, glowAnimationSpeed); + } + + if (useSmoothOutline) { + fxMatComposeOutline.SetInt(ShaderParams.Cull, cullBackFaces ? (int)CullMode.Back : (int)CullMode.Off); + fxMatComposeOutline.SetColor(ShaderParams.Debug, outlineBlitDebug ? debugColor : blackColor); + fxMatComposeOutline.SetFloat(ShaderParams.OutlineSharpness, outlineSharpness); + if (outlineEdgeMode == OutlineEdgeMode.Exterior) { + fxMatComposeOutline.DisableKeyword(ShaderParams.SKW_ALL_EDGES); + } + else { + fxMatComposeOutline.EnableKeyword(ShaderParams.SKW_ALL_EDGES); + outlineDownsampling = 1; + } + if (outlineEdgeMode != OutlineEdgeMode.Exterior || outlineMaskMode == MaskMode.IgnoreMask) { + fxMatComposeOutline.SetInt(ShaderParams.OutlineStencilComp, (int)CompareFunction.Always); + } + else { + fxMatComposeOutline.SetInt(ShaderParams.OutlineStencilComp, (int)CompareFunction.NotEqual); + } + if (outlineMaskMode == MaskMode.StencilAndCutout) { + fxMatComposeOutline.EnableKeyword(ShaderParams.SKW_MASK_CUTOUT); + } + else { + fxMatComposeOutline.DisableKeyword(ShaderParams.SKW_MASK_CUTOUT); + } + float edgeWidth = outlineWidth; + if (outlineEdgeMode == OutlineEdgeMode.Any) edgeWidth = Mathf.Clamp(edgeWidth, outlineBlurPasses / 5f, outlineBlurPasses); + fxMatBlurOutline.SetFloat(ShaderParams.BlurScale, edgeWidth / outlineDownsampling); + fxMatBlurOutline.SetFloat(ShaderParams.BlurScaleFirstHoriz, edgeWidth * 2f); + } + if (outlineColorStyle == ColorStyle.Gradient && outlineGradient != null) { + const int OUTLINE_GRADIENT_TEX_SIZE = 32; + bool requiresUpdate = false; + if (outlineGradientTex == null) { + outlineGradientTex = new Texture2D(OUTLINE_GRADIENT_TEX_SIZE, 1, TextureFormat.RGBA32, mipChain: false, linear: true); + outlineGradientTex.wrapMode = TextureWrapMode.Clamp; + requiresUpdate = true; + } + if (outlineGradientColors == null || outlineGradientColors.Length != OUTLINE_GRADIENT_TEX_SIZE) { + outlineGradientColors = new Color[OUTLINE_GRADIENT_TEX_SIZE]; + requiresUpdate = true; + } + for (int k = 0; k < OUTLINE_GRADIENT_TEX_SIZE; k++) { + float t = (float)k / OUTLINE_GRADIENT_TEX_SIZE; + Color color = outlineGradient.Evaluate(t); + if (color != outlineGradientColors[k]) { + outlineGradientColors[k] = color; + requiresUpdate = true; + } + } + if (requiresUpdate) { + outlineGradientTex.SetPixels(outlineGradientColors); + outlineGradientTex.Apply(); + } + } + + // Setup materials + + // Target + if (targetFX) { + if (targetFXTexture == null) { + targetFXTexture = Resources.Load("HighlightPlus/target"); + } + fxMatTarget.mainTexture = targetFXTexture; + fxMatTarget.SetInt(ShaderParams.ZTest, GetZTestValue(targetFXVisibility)); + } + // Icon + if (iconFX) { + if (iconFXMesh == null) { + iconFXMesh = Resources.Load("HighlightPlus/IconMesh"); + } + if (fxMatIcon == null) { + fxMatIcon = new Material(Shader.Find("HighlightPlus/Geometry/IconFX")); + } + } + + // Per object + float scaledOutlineWidth = outlineQuality.UsesMultipleOffsets() ? 0f : outlineWidth / 100f; + + for (int k = 0; k < rmsCount; k++) { + if (rms[k].mesh != null) { + + Renderer renderer = rms[k].renderer; + if (renderer == null) + continue; + + renderer.GetSharedMaterials(rendererSharedMaterials); + + // Per submesh + for (int l = 0; l < rms[k].mesh.subMeshCount; l++) { + if (((1 << l) & subMeshMask) == 0) continue; + + Material mat = null; + if (l < rendererSharedMaterials.Count) { + mat = rendererSharedMaterials[l]; + } + if (mat == null) + continue; + + bool hasTexture = false; + Texture matTexture = null; + Vector2 matTextureOffset = Vector2.zero; + Vector2 matTextureScale = Vector2.one; + if (mat.HasProperty(ShaderParams.BaseMap)) { + matTexture = mat.GetTexture(ShaderParams.BaseMap); // we don't use mainTexture because ShaderGraph doesn't inform that generic property correctly + hasTexture = true; + if (mat.HasProperty(ShaderParams.BaseMapST)) { + // mat.mainTextureOffset will raise an error in builds - we need to manually get the scale/offset from the material by its property name + Vector4 baseMapST = mat.GetVector(ShaderParams.BaseMapST); + matTextureScale.x = baseMapST.x; + matTextureScale.y = baseMapST.y; + matTextureOffset.x = baseMapST.z; + matTextureOffset.y = baseMapST.w; + } + } + else if (mat.HasProperty(ShaderParams.MainTex)) { + matTexture = mat.GetTexture(ShaderParams.MainTex); + if (matTexture == null) { + matTexture = mat.mainTexture; + } + matTextureOffset = mat.mainTextureOffset; + matTextureScale = mat.mainTextureScale; + hasTexture = true; + } + + bool useAlphaTest = alphaCutOff > 0 && hasTexture; + + // Mask + if (rms[k].fxMatMask != null && rms[k].fxMatMask.Length > l) { + Material fxMat = rms[k].fxMatMask[l]; + if (fxMat != null) { + //if (hasTexture) { + fxMat.mainTexture = matTexture; + fxMat.mainTextureOffset = matTextureOffset; + fxMat.mainTextureScale = matTextureScale; + //} + if (useAlphaTest) { + fxMat.SetFloat(ShaderParams.CutOff, alphaCutOff); + fxMat.EnableKeyword(ShaderParams.SKW_ALPHACLIP); + } + else { + fxMat.DisableKeyword(ShaderParams.SKW_ALPHACLIP); + } + fxMat.SetInt(ShaderParams.Cull, cullBackFaces ? (int)CullMode.Back : (int)CullMode.Off); + fxMat.SetFloat(ShaderParams.Padding, padding); + } + } + + // Outline + if (rms[k].fxMatOutline != null && rms[k].fxMatOutline.Length > l) { + Material fxMat = rms[k].fxMatOutline[l]; + if (fxMat != null) { + fxMat.SetFloat(ShaderParams.OutlineWidth, scaledOutlineWidth); + fxMat.SetInt(ShaderParams.OutlineZTest, GetZTestValue(outlineVisibility)); + fxMat.SetInt(ShaderParams.Cull, cullBackFaces ? (int)CullMode.Back : (int)CullMode.Off); + fxMat.SetFloat(ShaderParams.ConstantWidth, constantWidth ? 1.0f : 0); + fxMat.SetFloat(ShaderParams.MinimumWidth, minimumWidth); + fxMat.SetInt(ShaderParams.OutlineStencilComp, outlineMaskMode == MaskMode.IgnoreMask ? (int)CompareFunction.Always : (int)CompareFunction.NotEqual); + if (useAlphaTest) { + fxMat.mainTexture = matTexture; + fxMat.mainTextureOffset = matTextureOffset; + fxMat.mainTextureScale = matTextureScale; + fxMat.SetFloat(ShaderParams.CutOff, alphaCutOff); + fxMat.EnableKeyword(ShaderParams.SKW_ALPHACLIP); + } + else { + fxMat.DisableKeyword(ShaderParams.SKW_ALPHACLIP); + } + fxMat.DisableKeyword(ShaderParams.SKW_OUTLINE_GRADIENT_LS); + fxMat.DisableKeyword(ShaderParams.SKW_OUTLINE_GRADIENT_WS); + if (outlineColorStyle == ColorStyle.Gradient) { + fxMat.SetTexture(ShaderParams.OutlineGradientTex, outlineGradientTex); + fxMat.EnableKeyword(outlineGradientInLocalSpace ? ShaderParams.SKW_OUTLINE_GRADIENT_LS : ShaderParams.SKW_OUTLINE_GRADIENT_WS); + } + } + } + + // Glow + if (rms[k].fxMatGlow != null && rms[k].fxMatGlow.Length > l) { + Material fxMat = rms[k].fxMatGlow[l]; + if (fxMat != null) { + fxMat.SetVector(ShaderParams.Glow2, new Vector4(outline > 0 ? outlineWidth / 100f : 0, glowAnimationSpeed, glowDithering)); + if (glowDitheringStyle == GlowDitheringStyle.Noise) { + fxMat.EnableKeyword(ShaderParams.SKW_DITHER_BLUENOISE); + } + else { + fxMat.DisableKeyword(ShaderParams.SKW_DITHER_BLUENOISE); + } + fxMat.SetInt(ShaderParams.GlowZTest, GetZTestValue(glowVisibility)); + fxMat.SetInt(ShaderParams.Cull, cullBackFaces ? (int)CullMode.Back : (int)CullMode.Off); + fxMat.SetFloat(ShaderParams.ConstantWidth, constantWidth ? 1.0f : 0); + fxMat.SetFloat(ShaderParams.MinimumWidth, minimumWidth); + fxMat.SetInt(ShaderParams.GlowStencilOp, glowBlendPasses ? (int)StencilOp.Keep : (int)StencilOp.Replace); + fxMat.SetInt(ShaderParams.GlowStencilComp, glowMaskMode == MaskMode.IgnoreMask ? (int)CompareFunction.Always : (int)CompareFunction.NotEqual); + + if (useAlphaTest) { + fxMat.mainTexture = matTexture; + fxMat.mainTextureOffset = matTextureOffset; + fxMat.mainTextureScale = matTextureScale; + fxMat.SetFloat(ShaderParams.CutOff, alphaCutOff); + fxMat.EnableKeyword(ShaderParams.SKW_ALPHACLIP); + } + else { + fxMat.DisableKeyword(ShaderParams.SKW_ALPHACLIP); + } + } + } + + // See-through + bool usesSeeThroughBorder = rms[k].fxMatSeeThroughBorder != null && rms[k].fxMatSeeThroughBorder.Length > l && (seeThroughBorder * seeThroughBorderWidth > 0); + if (rms[k].fxMatSeeThroughInner != null && rms[k].fxMatSeeThroughInner.Length > l) { + Material fxMat = rms[k].fxMatSeeThroughInner[l]; + if (fxMat != null) { + fxMat.SetFloat(ShaderParams.SeeThrough, seeThroughIntensity); + fxMat.SetFloat(ShaderParams.SeeThroughNoise, seeThroughNoise); + fxMat.SetColor(ShaderParams.SeeThroughTintColor, seeThroughTintColor); + fxMat.SetInt(ShaderParams.Cull, cullBackFaces ? (int)CullMode.Back : (int)CullMode.Off); + if (seeThroughOccluderMaskAccurate && seeThroughOccluderMask != -1) { + fxMat.SetInt(ShaderParams.SeeThroughStencilRef, 1); + fxMat.SetInt(ShaderParams.SeeThroughStencilComp, (int)CompareFunction.Equal); + fxMat.SetInt(ShaderParams.SeeThroughStencilPassOp, (int)StencilOp.Zero); + } + else { + fxMat.SetInt(ShaderParams.SeeThroughStencilRef, 2); + fxMat.SetInt(ShaderParams.SeeThroughStencilComp, (int)CompareFunction.Greater); + fxMat.SetInt(ShaderParams.SeeThroughStencilPassOp, (int)StencilOp.Replace); + } + //if (hasTexture) { + fxMat.mainTexture = matTexture; + fxMat.mainTextureOffset = matTextureOffset; + fxMat.mainTextureScale = matTextureScale; + //} + if (useAlphaTest) { + fxMat.SetFloat(ShaderParams.CutOff, alphaCutOff); + fxMat.EnableKeyword(ShaderParams.SKW_ALPHACLIP); + } + else { + fxMat.DisableKeyword(ShaderParams.SKW_ALPHACLIP); + } + if (seeThroughDepthOffset > 0 || seeThroughMaxDepth > 0) { + fxMat.SetFloat(ShaderParams.SeeThroughDepthOffset, seeThroughDepthOffset > 0 ? seeThroughDepthOffset : -1); + fxMat.SetFloat(ShaderParams.SeeThroughMaxDepth, seeThroughMaxDepth > 0 ? seeThroughMaxDepth : 999999); + fxMat.EnableKeyword(ShaderParams.SKW_DEPTH_OFFSET); + } + else { + fxMat.DisableKeyword(ShaderParams.SKW_DEPTH_OFFSET); + } + if (seeThroughBorderOnly) { + fxMat.EnableKeyword(ShaderParams.SKW_SEETHROUGH_ONLY_BORDER); + } + else { + fxMat.DisableKeyword(ShaderParams.SKW_SEETHROUGH_ONLY_BORDER); + } + + fxMat.DisableKeyword(ShaderParams.SKW_TEXTURE_TRIPLANAR); + fxMat.DisableKeyword(ShaderParams.SKW_TEXTURE_OBJECTSPACE); + fxMat.DisableKeyword(ShaderParams.SKW_TEXTURE_SCREENSPACE); + if (seeThroughTexture != null) { + fxMat.SetTexture(ShaderParams.SeeThroughTexture, seeThroughTexture); + fxMat.SetFloat(ShaderParams.SeeThroughTextureScale, seeThroughTextureScale); + switch (seeThroughTextureUVSpace) { + case TextureUVSpace.ScreenSpace: + fxMat.EnableKeyword(ShaderParams.SKW_TEXTURE_SCREENSPACE); + break; + case TextureUVSpace.ObjectSpace: + fxMat.EnableKeyword(ShaderParams.SKW_TEXTURE_OBJECTSPACE); + break; + default: + fxMat.EnableKeyword(ShaderParams.SKW_TEXTURE_TRIPLANAR); + break; + } + } + + } + } + + // See-through border + if (usesSeeThroughBorder) { + Material fxMat = rms[k].fxMatSeeThroughBorder[l]; + if (fxMat != null) { + fxMat.SetColor(ShaderParams.SeeThroughBorderColor, new Color(seeThroughBorderColor.r, seeThroughBorderColor.g, seeThroughBorderColor.b, seeThroughBorder)); + fxMat.SetFloat(ShaderParams.SeeThroughBorderWidth, (seeThroughBorder * seeThroughBorderWidth) > 0 ? seeThroughBorderWidth / 100f : 0); + fxMat.SetFloat(ShaderParams.SeeThroughBorderConstantWidth, constantWidth ? 1.0f : 0); + fxMat.SetInt(ShaderParams.Cull, cullBackFaces ? (int)CullMode.Back : (int)CullMode.Off); + if (seeThroughOccluderMaskAccurate && seeThroughOccluderMask != -1) { + fxMat.SetInt(ShaderParams.SeeThroughStencilRef, 1); + fxMat.SetInt(ShaderParams.SeeThroughStencilComp, (int)CompareFunction.Equal); + fxMat.SetInt(ShaderParams.SeeThroughStencilPassOp, (int)StencilOp.Zero); + } + else { + fxMat.SetInt(ShaderParams.SeeThroughStencilRef, 2); + fxMat.SetInt(ShaderParams.SeeThroughStencilComp, (int)CompareFunction.Greater); + fxMat.SetInt(ShaderParams.SeeThroughStencilPassOp, (int)StencilOp.Keep); + } + //if (hasTexture) { + fxMat.mainTexture = matTexture; + fxMat.mainTextureOffset = matTextureOffset; + fxMat.mainTextureScale = matTextureScale; + //} + if (useAlphaTest) { + fxMat.SetFloat(ShaderParams.CutOff, alphaCutOff); + fxMat.EnableKeyword(ShaderParams.SKW_ALPHACLIP); + } + else { + fxMat.DisableKeyword(ShaderParams.SKW_ALPHACLIP); + } + if (seeThroughDepthOffset > 0 || seeThroughMaxDepth > 0) { + fxMat.SetFloat(ShaderParams.SeeThroughDepthOffset, seeThroughDepthOffset > 0 ? seeThroughDepthOffset : -1); + fxMat.SetFloat(ShaderParams.SeeThroughMaxDepth, seeThroughMaxDepth > 0 ? seeThroughMaxDepth : 999999); + fxMat.EnableKeyword(ShaderParams.SKW_DEPTH_OFFSET); + } + else { + fxMat.DisableKeyword(ShaderParams.SKW_DEPTH_OFFSET); + } + } + } + + // Overlay + if (rms[k].fxMatOverlay != null && rms[k].fxMatOverlay.Length > l) { + Material fxMat = rms[k].fxMatOverlay[l]; + if (fxMat != null) { + //if (hasTexture) { + fxMat.mainTexture = matTexture; + fxMat.mainTextureOffset = matTextureOffset; + fxMat.mainTextureScale = matTextureScale; + //} + if (mat.HasProperty(ShaderParams.Color)) { + fxMat.SetColor(ShaderParams.OverlayBackColor, mat.GetColor(ShaderParams.Color)); + } + fxMat.SetInt(ShaderParams.Cull, cullBackFaces ? (int)CullMode.Back : (int)CullMode.Off); + fxMat.SetInt(ShaderParams.OverlayZTest, GetZTestValue(overlayVisibility)); + fxMat.DisableKeyword(ShaderParams.SKW_TEXTURE_TRIPLANAR); + fxMat.DisableKeyword(ShaderParams.SKW_TEXTURE_OBJECTSPACE); + fxMat.DisableKeyword(ShaderParams.SKW_TEXTURE_SCREENSPACE); + if (overlayTexture != null) { + fxMat.SetTexture(ShaderParams.OverlayTexture, overlayTexture); + fxMat.SetVector(ShaderParams.OverlayTextureScrolling, overlayTextureScrolling); + switch (overlayTextureUVSpace) { + case TextureUVSpace.ScreenSpace: + fxMat.EnableKeyword(ShaderParams.SKW_TEXTURE_SCREENSPACE); + break; + case TextureUVSpace.ObjectSpace: + fxMat.EnableKeyword(ShaderParams.SKW_TEXTURE_OBJECTSPACE); + break; + default: + fxMat.EnableKeyword(ShaderParams.SKW_TEXTURE_TRIPLANAR); + break; + } + } + + if (useAlphaTest) { + fxMat.SetFloat(ShaderParams.CutOff, alphaCutOff); + fxMat.EnableKeyword(ShaderParams.SKW_ALPHACLIP); + } + else { + fxMat.DisableKeyword(ShaderParams.SKW_ALPHACLIP); + } + } + } + + // Inner Glow + if (rms[k].fxMatInnerGlow != null && rms[k].fxMatInnerGlow.Length > l) { + Material fxMat = rms[k].fxMatInnerGlow[l]; + if (fxMat != null) { + //if (hasTexture) { + fxMat.mainTexture = matTexture; + fxMat.mainTextureOffset = matTextureOffset; + fxMat.mainTextureScale = matTextureScale; + //} + fxMat.SetFloat(ShaderParams.InnerGlowWidth, innerGlowWidth); + fxMat.SetInt(ShaderParams.InnerGlowZTest, GetZTestValue(innerGlowVisibility)); + fxMat.SetInt(ShaderParams.Cull, cullBackFaces ? (int)CullMode.Back : (int)CullMode.Off); + fxMat.SetInt(ShaderParams.InnerGlowBlendMode, innerGlowBlendMode == InnerGlowBlendMode.Additive ? 1 : 10); + if (useAlphaTest) { + fxMat.SetFloat(ShaderParams.CutOff, alphaCutOff); + fxMat.EnableKeyword(ShaderParams.SKW_ALPHACLIP); + } + else { + fxMat.DisableKeyword(ShaderParams.SKW_ALPHACLIP); + } + } + } + + // Solid Color for smooth glow + if (rms[k].fxMatSolidColor != null && rms[k].fxMatSolidColor.Length > l) { + Material fxMat = rms[k].fxMatSolidColor[l]; + if (fxMat != null) { + fxMat.color = glowHQColor; + fxMat.SetInt(ShaderParams.Cull, cullBackFaces ? (int)CullMode.Back : (int)CullMode.Off); + fxMat.SetFloat(ShaderParams.Padding, padding); + fxMat.SetFloat(ShaderParams.OutlineEdgeThreshold, outlineEdgeThreshold); + //if (hasTexture) { + fxMat.mainTexture = matTexture; + fxMat.mainTextureOffset = matTextureOffset; + fxMat.mainTextureScale = matTextureScale; + //} + // if (!Application.isMobilePlatform) { // TODO: currently this does not work with URP on Android + + if ((glow > 0 && glowQuality == QualityLevel.Highest && glowVisibility == Visibility.Normal) || (outline > 0 && outlineQuality == QualityLevel.Highest && outlineVisibility == Visibility.Normal)) { + fxMat.DisableKeyword(ShaderParams.SKW_DEPTHCLIP_INV); + fxMat.EnableKeyword(ShaderParams.SKW_DEPTHCLIP); + } + else if ((glow > 0 && glowQuality == QualityLevel.Highest && glowVisibility == Visibility.OnlyWhenOccluded) || (outline > 0 && outlineQuality == QualityLevel.Highest && outlineVisibility == Visibility.OnlyWhenOccluded)) { + fxMat.DisableKeyword(ShaderParams.SKW_DEPTHCLIP); + fxMat.EnableKeyword(ShaderParams.SKW_DEPTHCLIP_INV); + } + else { + fxMat.DisableKeyword(ShaderParams.SKW_DEPTHCLIP); + fxMat.DisableKeyword(ShaderParams.SKW_DEPTHCLIP_INV); + } + //} + if (useAlphaTest) { + fxMat.SetFloat(ShaderParams.CutOff, alphaCutOff); + fxMat.EnableKeyword(ShaderParams.SKW_ALPHACLIP); + } + else { + fxMat.DisableKeyword(ShaderParams.SKW_ALPHACLIP); + } + if (outlineEdgeMode == OutlineEdgeMode.Any) { + fxMat.EnableKeyword(ShaderParams.SKW_ALL_EDGES); + } + else { + fxMat.DisableKeyword(ShaderParams.SKW_ALL_EDGES); + } + } + } + } + } + } + } + + int MaterialsRenderQueueComparer (ModelMaterials m1, ModelMaterials m2) { + Material mat1 = m1.renderer != null ? m1.renderer.sharedMaterial : null; + Material mat2 = m2.renderer != null ? m2.renderer.sharedMaterial : null; + int mq1 = mat1 != null ? mat1.renderQueue : 0; + int mq2 = mat2 != null ? mat2.renderQueue : 0; + return mq1.CompareTo(mq2); + } + + int MaterialsRenderQueueInvertedComparer (ModelMaterials m1, ModelMaterials m2) { + Material mat1 = m1.renderer != null ? m1.renderer.sharedMaterial : null; + Material mat2 = m2.renderer != null ? m2.renderer.sharedMaterial : null; + int mq1 = mat1 != null ? mat1.renderQueue : 0; + int mq2 = mat2 != null ? mat2.renderQueue : 0; + return mq2.CompareTo(mq1); + } + + float ComputeCameraDistanceFade (Vector3 position, Transform cameraTransform) { + Vector3 heading = position - cameraTransform.position; + float distance = Vector3.Dot(heading, cameraTransform.forward); + if (distance < cameraDistanceFadeNear) { + return 1f - Mathf.Min(1f, cameraDistanceFadeNear - distance); + } + if (distance > cameraDistanceFadeFar) { + return 1f - Mathf.Min(1f, distance - cameraDistanceFadeFar); + } + return 1f; + } + + int GetZTestValue (Visibility param) { + switch (param) { + case Visibility.AlwaysOnTop: + return (int)CompareFunction.Always; + case Visibility.OnlyWhenOccluded: + return (int)CompareFunction.Greater; + default: + return (int)CompareFunction.LessEqual; + } + } + + void BuildQuad () { + quadMesh = new Mesh(); + + // Setup vertices + Vector3[] newVertices = new Vector3[4]; + float halfHeight = 0.5f; + float halfWidth = 0.5f; + newVertices[0] = new Vector3(-halfWidth, -halfHeight, 0); + newVertices[1] = new Vector3(-halfWidth, halfHeight, 0); + newVertices[2] = new Vector3(halfWidth, -halfHeight, 0); + newVertices[3] = new Vector3(halfWidth, halfHeight, 0); + + // Setup UVs + Vector2[] newUVs = new Vector2[newVertices.Length]; + newUVs[0] = new Vector2(0, 0); + newUVs[1] = new Vector2(0, 1); + newUVs[2] = new Vector2(1, 0); + newUVs[3] = new Vector2(1, 1); + + // Setup triangles + int[] newTriangles = { 0, 1, 2, 3, 2, 1 }; + + // Setup normals + Vector3[] newNormals = new Vector3[newVertices.Length]; + for (int i = 0; i < newNormals.Length; i++) { + newNormals[i] = Vector3.forward; + } + + // Create quad + quadMesh.vertices = newVertices; + quadMesh.uv = newUVs; + quadMesh.triangles = newTriangles; + quadMesh.normals = newNormals; + + quadMesh.RecalculateBounds(); + } + + void BuildCube () { + cubeMesh = Resources.GetBuiltinResource("Cube.fbx"); + } + + + /// + /// Returns true if a given transform is included in this effect + /// + public bool Includes (Transform transform) { + for (int k = 0; k < rmsCount; k++) { + if (rms[k].transform == transform) return true; + } + return false; + } + + /// + /// Updates profile glow color + /// + public void SetGlowColor (Color color) { + if (glowPasses != null) { + for (int k = 0; k < glowPasses.Length; k++) { + glowPasses[k].color = color; + } + } + glowHQColor = color; + UpdateMaterialProperties(); + } + + + #region Normals handling + + static List vertices; + static List normals; + static Vector3[] newNormals; + static int[] matches; + static readonly Dictionary vv = new Dictionary(); + static readonly List rendererSharedMaterials = new List(); + + // cached meshes + static readonly Dictionary smoothMeshes = new Dictionary(); + static readonly Dictionary reorientedMeshes = new Dictionary(); + static readonly Dictionary combinedMeshes = new Dictionary(); + int combinedMeshesHashId; + + // annotate usage count of the instanced meshes due to normals or combine mesh option + // when highlighte effect is destroyed and the usage count is zero, we destroy the cached mesh + static readonly Dictionary sharedMeshUsage = new Dictionary(); + readonly List instancedMeshes = new List(); + + void AverageNormals (int objIndex) { + if (rms == null || objIndex >= rms.Length) return; + Mesh mesh = rms[objIndex].mesh; + + Mesh newMesh; + int hashCode = mesh.GetHashCode(); + if (!smoothMeshes.TryGetValue(hashCode, out newMesh) || newMesh == null) { + if (!mesh.isReadable) return; + if (normals == null) { + normals = new List(); + } + else { + normals.Clear(); + } + mesh.GetNormals(normals); + int normalsCount = normals.Count; + if (normalsCount == 0) + return; + if (vertices == null) { + vertices = new List(); + } + else { + vertices.Clear(); + } + mesh.GetVertices(vertices); + int vertexCount = vertices.Count; + if (normalsCount < vertexCount) { + vertexCount = normalsCount; + } + if (newNormals == null || newNormals.Length < vertexCount) { + newNormals = new Vector3[vertexCount]; + } + else { + Vector3 zero = Vector3.zero; + for (int k = 0; k < vertexCount; k++) { + newNormals[k] = zero; + } + } + if (matches == null || matches.Length < vertexCount) { + matches = new int[vertexCount]; + } + // Locate overlapping vertices + vv.Clear(); + for (int k = 0; k < vertexCount; k++) { + Vector3 v = vertices[k]; + if (!vv.TryGetValue(v, out int i)) { + vv[v] = i = k; + } + matches[k] = i; + } + // Average normals + for (int k = 0; k < vertexCount; k++) { + int match = matches[k]; + newNormals[match] += normals[k]; + } + for (int k = 0; k < vertexCount; k++) { + int match = matches[k]; + normals[k] = newNormals[match].normalized; + } + // Reassign normals + newMesh = Instantiate(mesh); + newMesh.SetNormals(normals); + smoothMeshes[hashCode] = newMesh; + IncrementeMeshUsage(newMesh); + } + rms[objIndex].mesh = newMesh; + } + + + void ReorientNormals (int objIndex) { + if (rms == null || objIndex >= rms.Length) return; + Mesh mesh = rms[objIndex].mesh; + + Mesh newMesh; + int hashCode = mesh.GetHashCode(); + if (!reorientedMeshes.TryGetValue(hashCode, out newMesh) || newMesh == null) { + if (!mesh.isReadable) return; + if (normals == null) { + normals = new List(); + } + else { + normals.Clear(); + } + if (vertices == null) { + vertices = new List(); + } + else { + vertices.Clear(); + } + mesh.GetVertices(vertices); + int vertexCount = vertices.Count; + if (vertexCount == 0) return; + + Vector3 mid = Vector3.zero; + for (int k = 0; k < vertexCount; k++) { + mid += vertices[k]; + } + mid /= vertexCount; + // Average normals + for (int k = 0; k < vertexCount; k++) { + normals.Add((vertices[k] - mid).normalized); + } + // Reassign normals + newMesh = Instantiate(mesh); + newMesh.SetNormals(normals); + reorientedMeshes[hashCode] = newMesh; + IncrementeMeshUsage(newMesh); + } + rms[objIndex].mesh = newMesh; + } + + const int MAX_VERTEX_COUNT = 65535; + void CombineMeshes () { + + if (rmsCount <= 1) return; + + // Combine meshes of group into the first mesh in rms + if (combineInstances == null || combineInstances.Length != rmsCount) { + combineInstances = new CombineInstance[rmsCount]; + } + int first = -1; + int count = 0; + combinedMeshesHashId = 0; + int vertexCount = 0; + Matrix4x4 im = Matrix4x4.identity; + for (int k = 0; k < rmsCount; k++) { + combineInstances[k].mesh = null; + + if (rms[k].isSkinnedMesh) continue; + + Mesh mesh = rms[k].mesh; + if (mesh == null || !mesh.isReadable) continue; + + vertexCount += mesh.vertexCount; + combineInstances[count].mesh = mesh; + int instanceId = rms[k].renderer.gameObject.GetInstanceID(); + if (first < 0) { + first = k; + combinedMeshesHashId = instanceId; + im = rms[k].transform.worldToLocalMatrix; + } + else { + combinedMeshesHashId ^= instanceId; + rms[k].mesh = null; + } + combineInstances[count].transform = im * rms[k].transform.localToWorldMatrix; + count++; + + } + if (count < 2) return; + + if (count != rmsCount) { + Array.Resize(ref combineInstances, count); + } + + if (!combinedMeshes.TryGetValue(combinedMeshesHashId, out Mesh combinedMesh) || combinedMesh == null) { + combinedMesh = new Mesh(); + if (vertexCount > MAX_VERTEX_COUNT) { + combinedMesh.indexFormat = IndexFormat.UInt32; + } + combinedMesh.CombineMeshes(combineInstances, true, true); + combinedMeshes[combinedMeshesHashId] = combinedMesh; + IncrementeMeshUsage(combinedMesh); + } + rms[first].mesh = combinedMesh; + rms[first].isCombined = true; + } + + + public string ValidateCombineMeshes () { + if (rms == null) return "No objects to combine."; + foreach (var rm in rms) { + if (!rm.isSkinnedMesh && rm.mesh != null && !rm.mesh.isReadable) return $"The mesh of object {rm.renderer.name} is not readable and can't be combined (check mesh's import settings)."; + } + return null; + } + + + void IncrementeMeshUsage (Mesh mesh) { + int usageCount; + sharedMeshUsage.TryGetValue(mesh, out usageCount); + usageCount++; + sharedMeshUsage[mesh] = usageCount; + instancedMeshes.Add(mesh); + } + + /// + /// Destroys any cached mesh + /// + public static void ClearMeshCache () { + foreach (Mesh mesh in combinedMeshes.Values) { + if (mesh != null) DestroyImmediate(mesh); + } + foreach (Mesh mesh in smoothMeshes.Values) { + if (mesh != null) DestroyImmediate(mesh); + } + foreach (Mesh mesh in reorientedMeshes.Values) { + if (mesh != null) DestroyImmediate(mesh); + } + } + + /// + /// Clears cached mesh only for the highlighted object + /// + void RefreshCachedMeshes () { + if (combinedMeshes.TryGetValue(combinedMeshesHashId, out Mesh combinedMesh)) { + DestroyImmediate(combinedMesh); + combinedMeshes.Remove(combinedMeshesHashId); + } + if (rms == null) return; + for (int k = 0; k < rms.Length; k++) { + Mesh mesh = rms[k].mesh; + if (mesh != null) { + if (smoothMeshes.ContainsValue(mesh) || reorientedMeshes.ContainsValue(mesh)) { + DestroyImmediate(mesh); + } + } + + } + } + #endregion + + } +} + diff --git a/Assets/External/HighlightPlus/Runtime/Scripts/HighlightEffect.cs.meta b/Assets/External/HighlightPlus/Runtime/Scripts/HighlightEffect.cs.meta new file mode 100644 index 000000000..5bc1ff6fc --- /dev/null +++ b/Assets/External/HighlightPlus/Runtime/Scripts/HighlightEffect.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 888380afc233049ce9e618f9f36c8ba8 +timeCreated: 1545593776 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 900 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/HighlightPlus/Runtime/Scripts/HighlightEffectActions.cs b/Assets/External/HighlightPlus/Runtime/Scripts/HighlightEffectActions.cs new file mode 100644 index 000000000..62fe3a56e --- /dev/null +++ b/Assets/External/HighlightPlus/Runtime/Scripts/HighlightEffectActions.cs @@ -0,0 +1,108 @@ +using UnityEngine; + +namespace HighlightPlus { + + public enum HitFxMode { + Overlay = 0, + InnerGlow = 1, + LocalHit = 2 + } + + public partial class HighlightEffect : MonoBehaviour { + + public static bool useUnscaledTime; + + public static float GetTime() { + return useUnscaledTime ? Time.unscaledTime : Time.time; + } + + [Range(0,1)] public float hitFxInitialIntensity; + public HitFxMode hitFxMode = HitFxMode.Overlay; + public float hitFxFadeOutDuration = 0.25f; + [ColorUsage(true, true)] public Color hitFxColor = Color.white; + public float hitFxRadius = 0.5f; + + float hitInitialIntensity; + float hitStartTime; + float hitFadeOutDuration; + Color hitColor; + bool hitActive; + Vector3 hitPosition; + float hitRadius; + + /// + /// Performs a hit effect using default values + /// + public void HitFX() { + HitFX(hitFxColor, hitFxFadeOutDuration, hitFxInitialIntensity); + } + + /// + /// Performs a hit effect localized at hit position and radius with default values + /// + public void HitFX(Vector3 position) { + HitFX(hitFxColor, hitFxFadeOutDuration, hitFxInitialIntensity, position, hitFxRadius); + + } + + /// + /// Performs a hit effect using desired color, fade out duration and optionally initial intensity (0-1) + /// + public void HitFX(Color color, float fadeOutDuration, float initialIntensity = 1f) { + hitInitialIntensity = initialIntensity; + hitFadeOutDuration = fadeOutDuration; + hitColor = color; + hitStartTime = GetTime(); + hitActive = true; + if (overlay == 0) { + UpdateMaterialProperties(); + } + } + + + /// + /// Performs a hit effect using desired color, fade out duration, initial intensity (0-1), hit position and radius of effect + /// + public void HitFX(Color color, float fadeOutDuration, float initialIntensity, Vector3 position, float radius) { + hitInitialIntensity = initialIntensity; + hitFadeOutDuration = fadeOutDuration; + hitColor = color; + hitStartTime = GetTime(); + hitActive = true; + hitPosition = position; + hitRadius = radius; + if (overlay == 0) { + UpdateMaterialProperties(); + } + } + + /// + /// Initiates the target FX on demand using predefined configuration (see targetFX... properties) + /// + public void TargetFX() { + targetFXStartTime = GetTime(); + if (!_highlighted) { + highlighted = true; + } + if (!targetFX) { + targetFX = true; + UpdateMaterialProperties(); + } + } + + + /// + /// Initiates the icon FX on demand using predefined configuration (see iconFX... properties) + /// + public void IconFX() { + iconFXStartTime = GetTime(); + if (!_highlighted) { + highlighted = true; + } + if (!iconFX) { + iconFX = true; + UpdateMaterialProperties(); + } + } + } +} \ No newline at end of file diff --git a/Assets/External/HighlightPlus/Runtime/Scripts/HighlightEffectActions.cs.meta b/Assets/External/HighlightPlus/Runtime/Scripts/HighlightEffectActions.cs.meta new file mode 100644 index 000000000..12aa7a749 --- /dev/null +++ b/Assets/External/HighlightPlus/Runtime/Scripts/HighlightEffectActions.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: e749f80d0d29a49d49d6e0f4752065cd +timeCreated: 1542876337 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/HighlightPlus/Runtime/Scripts/HighlightEffectBlocker.cs b/Assets/External/HighlightPlus/Runtime/Scripts/HighlightEffectBlocker.cs new file mode 100644 index 000000000..26385e004 --- /dev/null +++ b/Assets/External/HighlightPlus/Runtime/Scripts/HighlightEffectBlocker.cs @@ -0,0 +1,34 @@ +using UnityEngine; +using UnityEngine.Rendering; + +namespace HighlightPlus { + + [DefaultExecutionOrder(100)] + [ExecuteInEditMode] + public class HighlightEffectBlocker : MonoBehaviour { + + Renderer thisRenderer; + public bool blockOutlineAndGlow; + public bool blockOverlay; + + void OnEnable () { + thisRenderer = GetComponentInChildren(); + HighlightPlusRenderPassFeature.RegisterBlocker(this); + } + + void OnDisable () { + HighlightPlusRenderPassFeature.UnregisterBlocker(this); + } + + public void BuildCommandBuffer(CommandBuffer cmd, Material mat) { + if (thisRenderer == null) return; + Material[] sharedMats = thisRenderer.sharedMaterials; + if (sharedMats == null) return; + int submeshCount = sharedMats.Length; + for (int i = 0; i < submeshCount; i++) { + cmd.DrawRenderer(thisRenderer, mat, i); + } + } + + } +} diff --git a/Assets/External/HighlightPlus/Runtime/Scripts/HighlightEffectBlocker.cs.meta b/Assets/External/HighlightPlus/Runtime/Scripts/HighlightEffectBlocker.cs.meta new file mode 100644 index 000000000..3c1d95f0b --- /dev/null +++ b/Assets/External/HighlightPlus/Runtime/Scripts/HighlightEffectBlocker.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e1449eaee17884bf3ad10a841cab981b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/HighlightPlus/Runtime/Scripts/HighlightEffectOccluderManager.cs b/Assets/External/HighlightPlus/Runtime/Scripts/HighlightEffectOccluderManager.cs new file mode 100644 index 000000000..a5b0c5df4 --- /dev/null +++ b/Assets/External/HighlightPlus/Runtime/Scripts/HighlightEffectOccluderManager.cs @@ -0,0 +1,278 @@ +using System; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.Rendering; + +namespace HighlightPlus { + + + public partial class HighlightEffect : MonoBehaviour { + + static readonly List occluders = new List(); + static readonly Dictionary occludersFrameCount = new Dictionary(); + static Material fxMatSeeThroughOccluder, fxMatDepthWrite; + static RaycastHit[] hits; + + /// + /// True if the see-through is cancelled by an occluder using raycast method + /// + public bool IsSeeThroughOccluded(Camera cam) { + + if (rms == null) return false; + + // Compute bounds + Bounds bounds = new Bounds(); + for (int r = 0; r < rms.Length; r++) { + if (rms[r].renderer != null) { + if (bounds.size.x == 0) { + bounds = rms[r].renderer.bounds; + } else { + bounds.Encapsulate(rms[r].renderer.bounds); + } + } + } + Vector3 pos = bounds.center; + Vector3 camPos = cam.transform.position; + Vector3 offset = pos - camPos; + float maxDistance = Vector3.Distance(pos, camPos); + if (hits == null || hits.Length == 0) { + hits = new RaycastHit[64]; + } + int occludersCount = occluders.Count; + int hitCount = Physics.BoxCastNonAlloc(pos - offset, bounds.extents * 0.9f, offset.normalized, hits, Quaternion.identity, maxDistance); + for (int k = 0; k < hitCount; k++) { + for (int j = 0; j < occludersCount; j++) { + if (hits[k].collider.transform == occluders[j].transform) { + return true; + } + } + } + return false; + } + + public static void RegisterOccluder(HighlightSeeThroughOccluder occluder) { + if (!occluders.Contains(occluder)) { + occluders.Add(occluder); + } + } + + public static void UnregisterOccluder(HighlightSeeThroughOccluder occluder) { + if (occluders.Contains(occluder)) { + occluders.Remove(occluder); + } + } + + /// + /// Test see-through occluders. + /// + /// The camera to be tested + /// Returns true if there's no raycast-based occluder cancelling the see-through effect + public bool RenderSeeThroughOccluders(CommandBuffer cb, Camera cam) { + + int occludersCount = occluders.Count; + if (occludersCount == 0 || rmsCount == 0) return true; + + bool useRayCastCheck = false; + // Check if raycast method is needed + for (int k = 0; k < occludersCount; k++) { + HighlightSeeThroughOccluder occluder = occluders[k]; + if (occluder == null || !occluder.isActiveAndEnabled) continue; + if (occluder.mode == OccluderMode.BlocksSeeThrough && occluder.detectionMethod == DetectionMethod.RayCast) { + useRayCastCheck = true; + break; + } + } + if (useRayCastCheck) { + if (IsSeeThroughOccluded(cam)) return false; + } + + // do not render see-through occluders more than once this frame per camera (there can be many highlight effect scripts in the scene, we only need writing to stencil once) + int lastFrameCount; + occludersFrameCount.TryGetValue(cam, out lastFrameCount); + int currentFrameCount = Time.frameCount; + if (currentFrameCount == lastFrameCount) return true; + occludersFrameCount[cam] = currentFrameCount; + + if (fxMatSeeThroughOccluder == null) { + InitMaterial(ref fxMatSeeThroughOccluder, "HighlightPlus/Geometry/SeeThroughOccluder"); + if (fxMatSeeThroughOccluder == null) return true; + } + if (fxMatDepthWrite == null) { + InitMaterial(ref fxMatDepthWrite, "HighlightPlus/Geometry/JustDepth"); + if (fxMatDepthWrite == null) return true; + } + + for (int k = 0; k < occludersCount; k++) { + HighlightSeeThroughOccluder occluder = occluders[k]; + if (occluder == null || !occluder.isActiveAndEnabled) continue; + if (occluder.detectionMethod == DetectionMethod.Stencil) { + if (occluder.meshData == null) continue; + int meshDataLength = occluder.meshData.Length; + // Per renderer + for (int m = 0; m < meshDataLength; m++) { + // Per submesh + Renderer renderer = occluder.meshData[m].renderer; + if (renderer.isVisible) { + for (int s = 0; s < occluder.meshData[m].subMeshCount; s++) { + cb.DrawRenderer(renderer, occluder.mode == OccluderMode.BlocksSeeThrough ? fxMatSeeThroughOccluder : fxMatDepthWrite, s); + } + } + } + } + } + return true; + } + + bool CheckOcclusion(Camera cam) { + + if (!perCameraOcclusionData.TryGetValue(cam, out PerCameraOcclusionData occlusionData)) { + occlusionData = new PerCameraOcclusionData(); + perCameraOcclusionData[cam] = occlusionData; + } + + float now = GetTime(); + int frameCount = Time.frameCount; // ensure all cameras are checked this frame + + if (now - occlusionData.checkLastTime < seeThroughOccluderCheckInterval && Application.isPlaying && occlusionData.occlusionRenderFrame != frameCount) return occlusionData.lastOcclusionTestResult; + + occlusionData.cachedOccluders.Clear(); + occlusionData.cachedOccluderCollider = null; + + if (rms == null || rms.Length == 0 || rms[0].renderer == null) return false; + + occlusionData.checkLastTime = now; + occlusionData.occlusionRenderFrame = frameCount; + + Vector3 camPos = cam.transform.position; + + if (seeThroughOccluderCheckIndividualObjects) { + for (int r = 0; r < rms.Length; r++) { + if (rms[r].renderer != null) { + Bounds bounds = rms[r].renderer.bounds; + Vector3 pos = bounds.center; + float maxDistance = Vector3.Distance(pos, camPos); + if (Physics.BoxCast(pos, bounds.extents * seeThroughOccluderThreshold, (camPos - pos).normalized, out RaycastHit hitInfo, Quaternion.identity, maxDistance, seeThroughOccluderMask)) { + occlusionData.cachedOccluderCollider = hitInfo.collider; + occlusionData.lastOcclusionTestResult = true; + return true; + } + } + } + occlusionData.lastOcclusionTestResult = false; + return false; + } else { + // Compute combined bounds + Bounds bounds = rms[0].renderer.bounds; + for (int r = 1; r < rms.Length; r++) { + if (rms[r].renderer != null) { + bounds.Encapsulate(rms[r].renderer.bounds); + } + } + Vector3 pos = bounds.center; + float maxDistance = Vector3.Distance(pos, camPos); + occlusionData.lastOcclusionTestResult = Physics.BoxCast(pos, bounds.extents * seeThroughOccluderThreshold, (camPos - pos).normalized, out RaycastHit hitInfo, Quaternion.identity, maxDistance, seeThroughOccluderMask); + occlusionData.cachedOccluderCollider = hitInfo.collider; + return occlusionData.lastOcclusionTestResult; + } + } + + + const int MAX_OCCLUDER_HITS = 50; + static RaycastHit[] occluderHits; + + void AddWithoutRepetition(List target, List source, LayerMask layerMask) { + int sourceCount = source.Count; + for (int k = 0; k < sourceCount; k++) { + Renderer entry = source[k]; + if (entry != null && !target.Contains(entry) && ValidRenderer(entry) && ((1< 0) { + for (int k = 0; k < occluderRenderersCount; k++) { + Renderer r = occlusionData.cachedOccluders[k]; + if (r != null) { + cbuf.DrawRenderer(r, fxMatSeeThroughMask); + } + } + } + } + + public void GetOccluders(Camera camera, List occluders) { + occluders.Clear(); + if (perCameraOcclusionData.TryGetValue(camera, out PerCameraOcclusionData occlusionData)) { + if (occlusionData.cachedOccluderCollider != null) { + occluders.Add(occlusionData.cachedOccluderCollider.transform); + return; + } + foreach (Renderer r in occlusionData.cachedOccluders) { + if (r != null) { + occluders.Add(r.transform); + } + } + } + } + } +} diff --git a/Assets/External/HighlightPlus/Runtime/Scripts/HighlightEffectOccluderManager.cs.meta b/Assets/External/HighlightPlus/Runtime/Scripts/HighlightEffectOccluderManager.cs.meta new file mode 100644 index 000000000..bd8680df3 --- /dev/null +++ b/Assets/External/HighlightPlus/Runtime/Scripts/HighlightEffectOccluderManager.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: d0bc1f04199a64e66ae9630062b3a6ad +timeCreated: 1542876337 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/HighlightPlus/Runtime/Scripts/HighlightManager.cs b/Assets/External/HighlightPlus/Runtime/Scripts/HighlightManager.cs new file mode 100644 index 000000000..17eaf84ae --- /dev/null +++ b/Assets/External/HighlightPlus/Runtime/Scripts/HighlightManager.cs @@ -0,0 +1,476 @@ +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.EventSystems; + +namespace HighlightPlus { + + [RequireComponent(typeof(HighlightEffect))] + [DefaultExecutionOrder(100)] + [HelpURL("https://kronnect.com/guides/highlight-plus-introduction/")] + public class HighlightManager : MonoBehaviour { + + [Tooltip("Enables highlight when pointer is over this object.")] + [SerializeField] + bool _highlightOnHover = true; + + public bool highlightOnHover { + get { return _highlightOnHover; } + set { + if (_highlightOnHover != value) { + _highlightOnHover = value; + if (!_highlightOnHover) { + if (currentEffect != null) { + Highlight(false); + } + } + + } + } + } + + public LayerMask layerMask = -1; + public Camera raycastCamera; + public RayCastSource raycastSource = RayCastSource.MousePosition; + [Tooltip("Minimum distance for target.")] + public float minDistance; + [Tooltip("Maximum distance for target. 0 = infinity")] + public float maxDistance; + [Tooltip("Blocks interaction if pointer is over an UI element")] + public bool respectUI = true; + + [Tooltip("If the object will be selected by clicking with mouse or tapping on it.")] + public bool selectOnClick; + [Tooltip("Optional profile for objects selected by clicking on them")] + public HighlightProfile selectedProfile; + [Tooltip("Profile to use whtn object is selected and highlighted.")] + public HighlightProfile selectedAndHighlightedProfile; + [Tooltip("Automatically deselects other previously selected objects")] + public bool singleSelection; + [Tooltip("Toggles selection on/off when clicking object")] + public bool toggle; + [Tooltip("Keeps current selection when clicking outside of any selectable object")] + public bool keepSelection = true; + + HighlightEffect baseEffect, currentEffect; + Transform currentObject; + RaycastHit2D[] hitInfo2D; + + public readonly static List selectedObjects = new List(); + public event OnObjectSelectionEvent OnObjectSelected; + public event OnObjectSelectionEvent OnObjectUnSelected; + public event OnObjectHighlightEvent OnObjectHighlightStart; + public event OnObjectHighlightEvent OnObjectHighlightStay; + public event OnObjectHighlightEvent OnObjectHighlightEnd; + public static int lastTriggerFrame; + + static HighlightManager _instance; + public static HighlightManager instance { + get { + if (_instance == null) { + _instance = Misc.FindObjectOfType(); + } + return _instance; + } + } + + [RuntimeInitializeOnLoadMethod] + static void DomainReloadDisabledSupport () { + selectedObjects.Clear(); + lastTriggerFrame = 0; + _instance = null; + } + + void OnEnable () { + currentObject = null; + currentEffect = null; + if (baseEffect == null) { + baseEffect = GetComponent(); + if (baseEffect == null) { + baseEffect = gameObject.AddComponent(); + } + } + if (raycastCamera == null) { + raycastCamera = GetCamera(); + if (raycastCamera == null) { + Debug.LogError("Highlight Manager: no camera found!"); + } + } + hitInfo2D = new RaycastHit2D[1]; + InputProxy.Init(); + } + + + void OnDisable () { + SwitchesObject(null); + internal_DeselectAll(); + } + + void Update () { + if (raycastCamera == null) + return; + +#if ENABLE_INPUT_SYSTEM && !ENABLE_LEGACY_INPUT_MANAGER + if (respectUI) { + EventSystem es = EventSystem.current; + if (es == null) { + es = CreateEventSystem(); + } + List raycastResults = new List(); + PointerEventData eventData = new PointerEventData(es); + Vector3 cameraPos = raycastCamera.transform.position; + if (raycastSource == RayCastSource.MousePosition) { + eventData.position = InputProxy.mousePosition; + } else { + eventData.position = new Vector2(raycastCamera.pixelWidth * 0.5f, raycastCamera.pixelHeight * 0.5f); + } + es.RaycastAll(eventData, raycastResults); + int hitCount = raycastResults.Count; + // check UI blocker + bool blocked = false; + for (int k = 0; k < hitCount; k++) { + RaycastResult rr = raycastResults[k]; + if (rr.module is UnityEngine.UI.GraphicRaycaster) { + blocked = true; + break; + } + } + if (blocked) return; + + // look for our gameobject + for (int k = 0; k < hitCount; k++) { + RaycastResult rr = raycastResults[k]; + float distance = Vector3.Distance(rr.worldPosition, cameraPos); + if (distance < minDistance || (maxDistance > 0 && distance > maxDistance)) continue; + + GameObject theGameObject = rr.gameObject; + if ((layerMask & (1 << rr.gameObject.layer)) == 0) continue; + + // is this object state controller by Highlight Trigger? + HighlightTrigger trigger = theGameObject.GetComponent(); + if (trigger != null) return; + + // Toggles selection + Transform t = theGameObject.transform; + if (InputProxy.GetMouseButtonDown(0)) { + if (selectOnClick) { + ToggleSelection(t, !toggle); + } + } else { + // Check if the object has a Highlight Effect + if (t != currentObject) { + SwitchesObject(t); + } + } + return; + } + } + // if not blocked by UI and no hit found, fallback to raycast (required if no PhysicsRaycaster is present on the camera) +#endif + + Ray ray; + if (raycastSource == RayCastSource.MousePosition) { +#if !(ENABLE_INPUT_SYSTEM && !ENABLE_LEGACY_INPUT_MANAGER) + if (!CanInteract()) { + return; + } +#endif + ray = raycastCamera.ScreenPointToRay(InputProxy.mousePosition); + } else { + ray = new Ray(raycastCamera.transform.position, raycastCamera.transform.forward); + } + + VerifyHighlightStay(); + + RaycastHit hitInfo; + if (Physics.Raycast(ray, out hitInfo, maxDistance > 0 ? maxDistance : raycastCamera.farClipPlane, layerMask) && Vector3.Distance(hitInfo.point, ray.origin) >= minDistance) { + Transform t = hitInfo.collider.transform; + // is this object state controller by Highlight Trigger? + HighlightTrigger trigger = t.GetComponent(); + if (trigger != null) return; + + // Toggles selection + if (InputProxy.GetMouseButtonDown(0)) { + if (selectOnClick) { + ToggleSelection(t, !toggle); + } + } + else { + // Check if the object has a Highlight Effect + if (t != currentObject) { + SwitchesObject(t); + } + } + return; + } + else // check sprites + if (Physics2D.GetRayIntersectionNonAlloc(ray, hitInfo2D, maxDistance > 0 ? maxDistance : raycastCamera.farClipPlane, layerMask) > 0 && Vector3.Distance(hitInfo2D[0].point, ray.origin) >= minDistance) { + Transform t = hitInfo2D[0].collider.transform; + // is this object state controller by Highlight Trigger? + HighlightTrigger trigger = t.GetComponent(); + if (trigger != null) return; + + // Toggles selection + if (InputProxy.GetMouseButtonDown(0)) { + if (selectOnClick) { + ToggleSelection(t, !toggle); + } + } + else { + // Check if the object has a Highlight Effect + if (t != currentObject) { + SwitchesObject(t); + } + } + return; + } + + // no hit + if (selectOnClick && !keepSelection && InputProxy.GetMouseButtonDown(0) && lastTriggerFrame < Time.frameCount) { + internal_DeselectAll(); + } + SwitchesObject(null); + } + + +#if ENABLE_INPUT_SYSTEM && !ENABLE_LEGACY_INPUT_MANAGER + EventSystem CreateEventSystem() { + GameObject eo = new GameObject("Event System created by Highlight Plus", typeof(EventSystem), typeof(UnityEngine.InputSystem.UI.InputSystemUIInputModule)); + return eo.GetComponent(); + } +#endif + void VerifyHighlightStay () { + if (currentObject == null || currentEffect == null || !currentEffect.highlighted) return; + if (OnObjectHighlightStay != null && !OnObjectHighlightStay(currentObject.gameObject)) { + SwitchesObject(null); + } + } + + void SwitchesObject (Transform newObject) { + if (currentEffect != null) { + if (highlightOnHover) { + Highlight(false); + } + currentEffect = null; + } + currentObject = newObject; + if (newObject == null) return; + HighlightTrigger ht = newObject.GetComponent(); + if (ht != null && ht.enabled) + return; + + HighlightEffect otherEffect = newObject.GetComponent(); + if (otherEffect == null) { + // Check if there's a parent highlight effect that includes this object + HighlightEffect parentEffect = newObject.GetComponentInParent(); + if (parentEffect != null && parentEffect.Includes(newObject)) { + currentEffect = parentEffect; + if (highlightOnHover) { + Highlight(true); + } + return; + } + } + currentEffect = otherEffect != null ? otherEffect : baseEffect; + baseEffect.enabled = currentEffect == baseEffect; + currentEffect.SetTarget(currentObject); + + if (highlightOnHover) { + Highlight(true); + } + } + +#if !(ENABLE_INPUT_SYSTEM && !ENABLE_LEGACY_INPUT_MANAGER) + bool CanInteract() { + if (!respectUI) return true; + EventSystem es = EventSystem.current; + if (es == null) return true; + if (Application.isMobilePlatform && InputProxy.touchCount > 0 && es.IsPointerOverGameObject(InputProxy.GetFingerIdFromTouch(0))) { + return false; + } else if (es.IsPointerOverGameObject(-1)) + return false; + return true; + } +#endif + + void ToggleSelection (Transform t, bool forceSelection) { + + // We need a highlight effect on each selected object + HighlightEffect hb = t.GetComponent(); + if (hb == null) { + HighlightEffect parentEffect = t.GetComponentInParent(); + if (parentEffect != null && parentEffect.Includes(t)) { + hb = parentEffect; + if (hb.previousSettings == null) { + hb.previousSettings = ScriptableObject.CreateInstance(); + } + hb.previousSettings.Save(hb); + } + else { + hb = t.gameObject.AddComponent(); + hb.previousSettings = ScriptableObject.CreateInstance(); + // copy default highlight effect settings from this manager into this highlight plus component + hb.previousSettings.Save(baseEffect); + hb.previousSettings.Load(hb); + } + } + + bool currentState = hb.isSelected; + bool newState = forceSelection ? true : !currentState; + if (newState == currentState) return; + + if (newState) { + if (OnObjectSelected != null && !OnObjectSelected(t.gameObject)) return; + } + else { + if (OnObjectUnSelected != null && !OnObjectUnSelected(t.gameObject)) return; + } + + if (singleSelection) { + internal_DeselectAll(); + } + + currentEffect = hb; + currentEffect.isSelected = newState; + baseEffect.enabled = false; + + if (currentEffect.isSelected) { + if (currentEffect.previousSettings == null) { + currentEffect.previousSettings = ScriptableObject.CreateInstance(); + } + hb.previousSettings.Save(hb); + + if (!selectedObjects.Contains(currentEffect)) { + selectedObjects.Add(currentEffect); + } + } + else { + if (currentEffect.previousSettings != null) { + currentEffect.previousSettings.Load(hb); + } + if (selectedObjects.Contains(currentEffect)) { + selectedObjects.Remove(currentEffect); + } + } + + Highlight(newState); + } + + void Highlight (bool state) { + if (currentEffect == null) return; + + if (state) { + if (!currentEffect.highlighted) { + if (OnObjectHighlightStart != null && currentEffect.target != null) { + if (!OnObjectHighlightStart(currentEffect.target.gameObject)) { + currentObject = null; // allows re-checking so it keeps checking with the event + return; + } + } + } + } + else { + if (currentEffect.highlighted) { + if (OnObjectHighlightEnd != null && currentEffect.target != null) { + OnObjectHighlightEnd(currentEffect.target.gameObject); + } + } + } + if (selectOnClick || currentEffect.isSelected) { + if (currentEffect.isSelected) { + if (state && selectedAndHighlightedProfile != null) { + selectedAndHighlightedProfile.Load(currentEffect); + } + else if (selectedProfile != null) { + selectedProfile.Load(currentEffect); + } + else { + currentEffect.previousSettings.Load(currentEffect); + } + if (currentEffect.highlighted && currentEffect.fading != HighlightEffect.FadingState.FadingOut) { + currentEffect.UpdateMaterialProperties(); + } + else { + currentEffect.SetHighlighted(true); + } + return; + } + else if (!highlightOnHover) { + currentEffect.SetHighlighted(false); + return; + } + } + currentEffect.SetHighlighted(state); + } + + public static Camera GetCamera () { + Camera raycastCamera = Camera.main; + if (raycastCamera == null) { + raycastCamera = Misc.FindObjectOfType(); + } + return raycastCamera; + } + + void internal_DeselectAll () { + foreach (HighlightEffect hb in selectedObjects) { + if (hb != null && hb.gameObject != null) { + if (OnObjectUnSelected != null) { + if (!OnObjectUnSelected(hb.gameObject)) continue; + } + hb.RestorePreviousHighlightEffectSettings(); + hb.isSelected = false; + hb.SetHighlighted(false); + } + } + selectedObjects.Clear(); + } + + /// + /// Deselects any selected object in the scene + /// + public static void DeselectAll () { + if (instance != null) { + _instance.internal_DeselectAll(); + return; + } + + foreach (HighlightEffect hb in selectedObjects) { + if (hb != null && hb.gameObject != null) { + hb.RestorePreviousHighlightEffectSettings(); + hb.isSelected = false; + hb.SetHighlighted(false); + } + } + selectedObjects.Clear(); + } + + /// + /// Manually causes highlight manager to select an object + /// + public void SelectObject (Transform t) { + ToggleSelection(t, true); + } + + /// + /// Manually causes highlight manager to toggle selection on an object + /// + public void ToggleObject (Transform t) { + ToggleSelection(t, false); + } + + /// + /// Manually causes highlight manager to unselect an object + /// + public void UnselectObject (Transform t) { + if (t == null) return; + HighlightEffect hb = t.GetComponent(); + if (hb == null) return; + + if (hb.isSelected) { + ToggleSelection(t, false); + } + } + + + } + +} \ No newline at end of file diff --git a/Assets/External/HighlightPlus/Runtime/Scripts/HighlightManager.cs.meta b/Assets/External/HighlightPlus/Runtime/Scripts/HighlightManager.cs.meta new file mode 100644 index 000000000..02ba108fd --- /dev/null +++ b/Assets/External/HighlightPlus/Runtime/Scripts/HighlightManager.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: af4d46fd89b9543e5be2358ac0c9ced0 +timeCreated: 1542876337 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/HighlightPlus/Runtime/Scripts/HighlightPlusRenderPassFeature.cs b/Assets/External/HighlightPlus/Runtime/Scripts/HighlightPlusRenderPassFeature.cs new file mode 100644 index 000000000..6d40b1386 --- /dev/null +++ b/Assets/External/HighlightPlus/Runtime/Scripts/HighlightPlusRenderPassFeature.cs @@ -0,0 +1,287 @@ +using System; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.Rendering; +using UnityEngine.Rendering.Universal; +#if UNITY_2023_3_OR_NEWER +using UnityEngine.Rendering.RenderGraphModule; +#endif + +namespace HighlightPlus { + + public class HighlightPlusRenderPassFeature : ScriptableRendererFeature { + + class HighlightPass : ScriptableRenderPass { + + class PassData { + public Camera camera; +#if UNITY_2022_1_OR_NEWER + public RTHandle colorTarget, depthTarget; +#else + public RenderTargetIdentifier colorTarget, depthTarget; +#endif +#if UNITY_2023_3_OR_NEWER + public TextureHandle colorTexture, depthTexture; +#endif + public bool clearStencil; + public CommandBuffer cmd; + } + + readonly PassData passData = new PassData(); + + // far objects render first + class DistanceComparer : IComparer { + + public Vector3 camPos; + + public int Compare (HighlightEffect e1, HighlightEffect e2) { + if (e1.sortingPriority < e2.sortingPriority) return -1; + if (e1.sortingPriority > e2.sortingPriority) return 1; + Vector3 e1Pos = e1.transform.position; + float dx1 = e1Pos.x - camPos.x; + float dy1 = e1Pos.y - camPos.y; + float dz1 = e1Pos.z - camPos.z; + float distE1 = dx1 * dx1 + dy1 * dy1 + dz1 * dz1 + e1.sortingOffset; + Vector3 e2Pos = e2.transform.position; + float dx2 = e2Pos.x - camPos.x; + float dy2 = e2Pos.y - camPos.y; + float dz2 = e2Pos.z - camPos.z; + float distE2 = dx2 * dx2 + dy2 * dy2 + dz2 * dz2 + e2.sortingOffset; + if (distE1 > distE2) return -1; + if (distE1 < distE2) return 1; + return 0; + } + } + + public bool usesCameraOverlay; + + ScriptableRenderer renderer; + RenderTextureDescriptor cameraTextureDescriptor; + static DistanceComparer effectDistanceComparer = new DistanceComparer(); + bool clearStencil; + static RenderTextureDescriptor sourceDesc; + static Material blockerOutlineAndGlowMat, blockerOverlayMat, blockerAllMat; + + public void Setup (HighlightPlusRenderPassFeature passFeature, ScriptableRenderer renderer) { + this.renderPassEvent = passFeature.renderPassEvent; + this.clearStencil = passFeature.clearStencil; + this.renderer = renderer; + ConfigureInput(ScriptableRenderPassInput.Depth); + } + +#if UNITY_2023_3_OR_NEWER + [Obsolete] +#endif + public override void Configure (CommandBuffer cmd, RenderTextureDescriptor cameraTextureDescriptor) { + this.cameraTextureDescriptor = cameraTextureDescriptor; + } + +#if UNITY_2023_3_OR_NEWER + [Obsolete] +#endif + public override void Execute (ScriptableRenderContext context, ref RenderingData renderingData) { + +#if UNITY_2022_1_OR_NEWER + RTHandle cameraColorTarget = renderer.cameraColorTargetHandle; + RTHandle cameraDepthTarget = renderer.cameraDepthTargetHandle; +#else + RenderTargetIdentifier cameraColorTarget = renderer.cameraColorTarget; + RenderTargetIdentifier cameraDepthTarget = renderer.cameraDepthTarget; +#endif +#if !UNITY_2021_2_OR_NEWER + // In Unity 2021.2, when MSAA > 1, cameraDepthTarget is no longer cameraColorTarget + if (!usesCameraOverlay && (cameraTextureDescriptor.msaaSamples > 1 || cam.cameraType == CameraType.SceneView)) { + cameraDepthTarget = cameraColorTarget; + } +#endif + + passData.clearStencil = clearStencil; + passData.camera = renderingData.cameraData.camera; + passData.colorTarget = cameraColorTarget; + passData.depthTarget = cameraDepthTarget; + sourceDesc = renderingData.cameraData.cameraTargetDescriptor; + + CommandBuffer cmd = CommandBufferPool.Get("Highlight Plus"); + cmd.Clear(); + + passData.cmd = cmd; + ExecutePass(passData); + context.ExecuteCommandBuffer(cmd); + CommandBufferPool.Release(cmd); + + } + + static void ExecutePass (PassData passData) { + + int count = HighlightEffect.effects.Count; + + HighlightEffect.effects.RemoveAll(t => t == null); + count = HighlightEffect.effects.Count; + if (count == 0) return; + + Camera cam = passData.camera; + int camLayer = 1 << cam.gameObject.layer; + CameraType camType = cam.cameraType; + + if (!HighlightEffect.customSorting && ((camType == CameraType.Game && (sortFrameCount++) % 10 == 0) || !Application.isPlaying)) { + effectDistanceComparer.camPos = cam.transform.position; + HighlightEffect.effects.Sort(effectDistanceComparer); + } + + bool outlineOccludersPending = outlineAndGlowOccluders.Count > 0; + + for (int k = 0; k < count; k++) { + HighlightEffect effect = HighlightEffect.effects[k]; + + if (!(effect.ignoreObjectVisibility || effect.isVisible)) continue; + + if (!effect.isActiveAndEnabled) continue; + + if (camType == CameraType.Reflection && !effect.reflectionProbes) continue; + + if ((effect.camerasLayerMask & camLayer) == 0) continue; + + if (outlineOccludersPending) { + outlineOccludersPending = false; + foreach (HighlightEffectBlocker blocker in outlineAndGlowOccluders) { + if (blocker != null && blocker.isActiveAndEnabled) { + int stencilOp = 0; + if (blocker.blockOutlineAndGlow) stencilOp += 2; + if (blocker.blockOverlay) stencilOp += 4; + if (stencilOp == 2) { + if (blockerOutlineAndGlowMat == null) { + blockerOutlineAndGlowMat = Resources.Load("HighlightPlus/HighlightBlockerOutlineAndGlow"); + } + blocker.BuildCommandBuffer(passData.cmd, blockerOutlineAndGlowMat); + } + else if (stencilOp == 4) { + if (blockerOverlayMat == null) { + blockerOverlayMat = Resources.Load("HighlightPlus/HighlightBlockerOverlay"); + } + blocker.BuildCommandBuffer(passData.cmd, blockerOverlayMat); + } + else if (stencilOp == 6) { + if (blockerAllMat == null) { + blockerAllMat = Resources.Load("HighlightPlus/HighlightUIMask"); + } + blocker.BuildCommandBuffer(passData.cmd, blockerAllMat); + } + } + } + } + + effect.SetCommandBuffer(passData.cmd); + effect.BuildCommandBuffer(passData.camera, passData.colorTarget, passData.depthTarget, passData.clearStencil, ref sourceDesc); + passData.clearStencil = false; + } + } + +#if UNITY_2023_3_OR_NEWER + public override void RecordRenderGraph(RenderGraph renderGraph, ContextContainer frameData) { + + using (var builder = renderGraph.AddUnsafePass("Highlight Plus Pass RG", out var passData)) { + + builder.AllowPassCulling(false); + + passData.clearStencil = clearStencil; + UniversalCameraData cameraData = frameData.Get(); + passData.camera = cameraData.camera; + + UniversalResourceData resourceData = frameData.Get(); + passData.colorTexture = resourceData.activeColorTexture; + passData.depthTexture = resourceData.activeDepthTexture; + + builder.UseTexture(resourceData.activeColorTexture, AccessFlags.ReadWrite); + builder.UseTexture(resourceData.activeDepthTexture, AccessFlags.Read); + builder.UseTexture(resourceData.cameraDepthTexture, AccessFlags.Read); + + sourceDesc = cameraData.cameraTargetDescriptor; + + builder.SetRenderFunc((PassData passData, UnsafeGraphContext context) => { + CommandBuffer cmd = CommandBufferHelpers.GetNativeCommandBuffer(context.cmd); + passData.cmd = cmd; + passData.colorTarget = passData.colorTexture; + passData.depthTarget = passData.depthTexture; + ExecutePass(passData); + }); + } + } +#endif + + } + + HighlightPass renderPass; + public RenderPassEvent renderPassEvent = RenderPassEvent.AfterRenderingTransparents; + [Tooltip("Clears stencil buffer before rendering highlight effects. This option can solve compatibility issues with shaders that also use stencil buffers.")] + public bool clearStencil; + + /// + /// Makes the effects visible in Edit mode. + /// + [Tooltip("If enabled, effects will be visible also in Edit mode (when not in Play mode).")] + public bool previewInEditMode = true; + + /// + /// Makes the effects visible in Edit mode. + /// + [Tooltip("If enabled, effects will be visible also in Preview camera (preview camera shown when a camera is selected in Editor).")] + public bool showInPreviewCamera = true; + + public static bool installed; + public static bool showingInEditMode; + + public static List outlineAndGlowOccluders = new List(); + public static int sortFrameCount; + + const string PREVIEW_CAMERA_NAME = "Preview Camera"; + + void OnDisable () { + installed = false; + } + + public override void Create () { + renderPass = new HighlightPass(); + VRCheck.Init(); + } + + // This method is called when setting up the renderer once per-camera. + public override void AddRenderPasses (ScriptableRenderer renderer, ref RenderingData renderingData) { + + if (HighlightEffect.effects.Count == 0) return; + + showingInEditMode = previewInEditMode; + Camera cam = renderingData.cameraData.camera; + +#if UNITY_EDITOR + if (!previewInEditMode && !Application.isPlaying) { + return; + } + if (cam.cameraType == CameraType.Preview) { + return; + } + if (!showInPreviewCamera && PREVIEW_CAMERA_NAME.Equals(cam.name)) { + return; + } +#endif + +#if UNITY_2019_4_OR_NEWER + if (renderingData.cameraData.renderType == CameraRenderType.Base) { + renderPass.usesCameraOverlay = cam.GetUniversalAdditionalCameraData().cameraStack.Count > 0; + } +#endif + renderPass.Setup(this, renderer); + renderer.EnqueuePass(renderPass); + installed = true; + } + + public static void RegisterBlocker (HighlightEffectBlocker occluder) { + if (!outlineAndGlowOccluders.Contains(occluder)) { + outlineAndGlowOccluders.Add(occluder); + } + } + + public static void UnregisterBlocker (HighlightEffectBlocker occluder) { + outlineAndGlowOccluders.Remove(occluder); + } + } +} diff --git a/Assets/External/HighlightPlus/Runtime/Scripts/HighlightPlusRenderPassFeature.cs.meta b/Assets/External/HighlightPlus/Runtime/Scripts/HighlightPlusRenderPassFeature.cs.meta new file mode 100644 index 000000000..3af9ec87f --- /dev/null +++ b/Assets/External/HighlightPlus/Runtime/Scripts/HighlightPlusRenderPassFeature.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 473a86c9e274347dfbdde619584cebe9 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/HighlightPlus/Runtime/Scripts/HighlightProfile.cs b/Assets/External/HighlightPlus/Runtime/Scripts/HighlightProfile.cs new file mode 100644 index 000000000..aabb5ea34 --- /dev/null +++ b/Assets/External/HighlightPlus/Runtime/Scripts/HighlightProfile.cs @@ -0,0 +1,504 @@ +using UnityEngine; + +namespace HighlightPlus { + + [CreateAssetMenu(menuName = "Highlight Plus Profile", fileName = "Highlight Plus Profile", order = 100)] + [HelpURL("https://www.dropbox.com/s/1p9h8xys68lm4a3/Documentation.pdf?dl=0")] + public class HighlightProfile : ScriptableObject { + + [Tooltip("Different options to specify which objects are affected by this Highlight Effect component.")] + public TargetOptions effectGroup = TargetOptions.Children; + + [Tooltip("The layer that contains the affected objects by this effect when effectGroup is set to LayerMask.")] + public LayerMask effectGroupLayer = -1; + + [Tooltip("Only include objects whose names contains this text.")] + public string effectNameFilter; + + [Tooltip("Use RegEx to determine if an object name matches the effectNameFilter.")] + public bool effectNameUseRegEx; + + [Tooltip("Combine meshes of all objects in this group affected by Highlight Effect reducing draw calls.")] + public bool combineMeshes; + + [Tooltip("The alpha threshold for transparent cutout objects. Pixels with alpha below this value will be discarded.")] + [Range(0, 1)] + public float alphaCutOff; + + [Tooltip("If back facing triangles are ignored.Backfaces triangles are not visible but you may set this property to false to force highlight effects to act on those triangles as well.")] + public bool cullBackFaces = true; + [Tooltip("Adds a empty margin between the mesh and the effects")] + public float padding; + + [Tooltip("Normals handling option:\nPreserve original: use original mesh normals.\nSmooth: average normals to produce a smoother outline/glow mesh based effect.\nReorient: recomputes normals based on vertex direction to centroid.")] + public NormalsOption normalsOption; + + public float fadeInDuration; + public float fadeOutDuration; + + [Tooltip("Fades out effects based on distance to camera")] + public bool cameraDistanceFade; + + [Tooltip("The closest distance particles can get to the camera before they fade from the camera’s view.")] + public float cameraDistanceFadeNear; + + [Tooltip("The farthest distance particles can get away from the camera before they fade from the camera’s view.")] + public float cameraDistanceFadeFar = 1000; + + [Tooltip("Keeps the outline/glow size unaffected by object distance.")] + public bool constantWidth = true; + + [Tooltip("Increases the screen coverage for the outline/glow to avoid cuts when using cloth or vertex shader that transform mesh vertices")] + public int extraCoveragePixels; + + [Tooltip("Minimum width when the constant width option is not used")] + [Range(0, 1)] + public float minimumWidth; + + [Range(0, 1)] + [Tooltip("Intensity of the overlay effect. A value of 0 disables the overlay completely.")] + public float overlay; + public OverlayMode overlayMode = OverlayMode.WhenHighlighted; + [ColorUsage(true, true)] public Color overlayColor = Color.yellow; + public float overlayAnimationSpeed = 1f; + [Range(0, 1)] + public float overlayMinIntensity = 0.5f; + [Range(0, 1)] + [Tooltip("Controls the blending or mix of the overlay color with the natural colors of the object.")] + public float overlayBlending = 1.0f; + [Tooltip("Optional overlay texture.")] + public Texture2D overlayTexture; + public TextureUVSpace overlayTextureUVSpace; + public float overlayTextureScale = 1f; + public Vector2 overlayTextureScrolling; + public Visibility overlayVisibility = Visibility.Normal; + + [Range(0, 1)] + [Tooltip("Intensity of the outline. A value of 0 disables the outline completely.")] + public float outline = 1f; + [ColorUsage(true, true)] public Color outlineColor = Color.black; + public ColorStyle outlineColorStyle = ColorStyle.SingleColor; + [GradientUsage(hdr: true, ColorSpace.Linear)] public Gradient outlineGradient; + public bool outlineGradientInLocalSpace; + [Range(1, 3)] + public int outlineBlurPasses = 2; + public float outlineWidth = 0.45f; + public QualityLevel outlineQuality = QualityLevel.High; + public OutlineEdgeMode outlineEdgeMode = OutlineEdgeMode.Exterior; + public float outlineEdgeThreshold = 0.995f; + public float outlineSharpness = 1f; + [Range(1, 8)] + [Tooltip("Reduces the quality of the outline but improves performance a bit.")] + public int outlineDownsampling = 1; + public ContourStyle outlineContourStyle = ContourStyle.AroundVisibleParts; + + public Visibility outlineVisibility = Visibility.Normal; + [Tooltip("If enabled, this object won't combine the outline with other objects.")] + public bool outlineIndependent; + [Tooltip("Select the mask mode used with this effect.")] + public MaskMode outlineMaskMode = MaskMode.Stencil; + + [Range(0, 5)] + [Tooltip("The intensity of the outer glow effect. A value of 0 disables the glow completely.")] + public float glow; + public float glowWidth = 0.4f; + public QualityLevel glowQuality = QualityLevel.High; + public BlurMethod glowBlurMethod = BlurMethod.Gaussian; + [Range(1, 8)] + [Tooltip("Reduces the quality of the glow but improves performance a bit.")] + public int glowDownsampling = 2; + [ColorUsage(true, true)] public Color glowHQColor = new Color(0.64f, 1f, 0f, 1f); + [Tooltip("When enabled, outer glow renders with dithering. When disabled, glow appears as a solid color.")] + [Range(0, 1)] + public float glowDithering = 1; + public GlowDitheringStyle glowDitheringStyle = GlowDitheringStyle.Pattern; + [Tooltip("Seed for the dithering effect")] + public float glowMagicNumber1 = 0.75f; + [Tooltip("Another seed for the dithering effect that combines with first seed to create different patterns")] + public float glowMagicNumber2 = 0.5f; + public float glowAnimationSpeed = 1f; + public Visibility glowVisibility = Visibility.Normal; + public GlowBlendMode glowBlendMode = GlowBlendMode.Additive; + [Tooltip("Blends glow passes one after another. If this option is disabled, glow passes won't overlap (in this case, make sure the glow pass 1 has a smaller offset than pass 2, etc.)")] + public bool glowBlendPasses = true; + public GlowPassData[] glowPasses; + [Tooltip("Select the mask mode used with this effect.")] + public MaskMode glowMaskMode = MaskMode.Stencil; + + [Range(0, 5f)] + [Tooltip("The intensity of the inner glow effect. A value of 0 disables the glow completely.")] + public float innerGlow; + [Range(0, 2)] + public float innerGlowWidth = 1f; + public InnerGlowBlendMode innerGlowBlendMode = InnerGlowBlendMode.Additive; + [ColorUsage(true, true)] public Color innerGlowColor = Color.white; + public Visibility innerGlowVisibility = Visibility.Normal; + + [Tooltip("Enables the targetFX effect. This effect draws an animated sprite over the object.")] + public bool targetFX; + public Texture2D targetFXTexture; + [ColorUsage(true, true)] public Color targetFXColor = Color.white; + public float targetFXRotationSpeed = 50f; + public float targetFXInitialScale = 4f; + public float targetFXEndScale = 1.5f; + [Tooltip("Makes target scale relative to object renderer bounds.")] + public bool targetFXScaleToRenderBounds; + [Tooltip("Places target FX sprite at the bottom of the highlighted object.")] + public bool targetFXAlignToGround; + [Tooltip("Max distance from the center of the highlighted object to the ground.")] + public float targetFXGroundMaxDistance = 15f; + public LayerMask targetFXGroundLayerMask = -1; + [Tooltip("Fade out effect with altitude")] + public float targetFXFadePower = 32; + [Tooltip("Enable to render a single target FX effect at the center of the enclosing bounds")] + public bool targetFXUseEnclosingBounds; + [Tooltip("Optional world space offset for the position of the targetFX effect")] + public Vector3 targetFXOffset; + public float targetFXTransitionDuration = 0.5f; + [Tooltip("0 = stay forever")] + public float targetFXStayDuration = 1.5f; + public Visibility targetFXVisibility = Visibility.AlwaysOnTop; + + + [Tooltip("Enables the iconFX effect. This effect draws an animated object over the object.")] + public bool iconFX; + public Mesh iconFXMesh; + [ColorUsage(true, true)] public Color iconFXLightColor = Color.white; + [ColorUsage(true, true)] public Color iconFXDarkColor = Color.gray; + public float iconFXRotationSpeed = 50f; + public IconAnimationOption iconFXAnimationOption = IconAnimationOption.None; + public float iconFXAnimationAmount = 0.1f; + public float iconFXAnimationSpeed = 3f; + public float iconFXScale = 1f; + [Tooltip("Makes target scale relative to object renderer bounds.")] + public bool iconFXScaleToRenderBounds; + [Tooltip("Optional world space offset for the position of the iconFX effect")] + public Vector3 iconFXOffset = new Vector3(0, 1, 0); + public float iconFXTransitionDuration = 0.5f; + [Tooltip("0 = stay forever")] + public float iconFXStayDuration = 1.5f; + + [Tooltip("See-through mode for this Highlight Effect component.")] + public SeeThroughMode seeThrough = SeeThroughMode.Never; + [Tooltip("This mask setting let you specify which objects will be considered as occluders and cause the see-through effect for this Highlight Effect component. For example, you assign your walls to a different layer and specify that layer here, so only walls and not other objects, like ground or ceiling, will trigger the see-through effect.")] + public LayerMask seeThroughOccluderMask = -1; + [Tooltip("Uses stencil buffers to ensure pixel-accurate occlusion test. If this option is disabled, only physics raycasting is used to test for occlusion.")] + public bool seeThroughOccluderMaskAccurate; + [Tooltip("A multiplier for the occluder volume size which can be used to reduce the actual size of occluders when Highlight Effect checks if they're occluding this object.")] + [Range(0.01f, 0.9f)] public float seeThroughOccluderThreshold = 0.4f; + [Tooltip("The interval of time between occlusion tests.")] + public float seeThroughOccluderCheckInterval = 1f; + [Tooltip("If enabled, occlusion test is performed for each children element. If disabled, the bounds of all children is combined and a single occlusion test is performed for the combined bounds.")] + public bool seeThroughOccluderCheckIndividualObjects; + [Tooltip("Shows the see-through effect only if the occluder if at this 'offset' distance from the object.")] + public float seeThroughDepthOffset; + [Tooltip("Hides the see-through effect if the occluder is further than this distance from the object (0 = infinite)")] + public float seeThroughMaxDepth; + [Range(0, 5f)] public float seeThroughIntensity = 0.8f; + [Range(0, 1)] public float seeThroughTintAlpha = 0.5f; + public Color seeThroughTintColor = Color.red; + [Range(0, 1)] public float seeThroughNoise = 1f; + [Range(0, 1)] public float seeThroughBorder; + public Color seeThroughBorderColor = Color.black; + public float seeThroughBorderWidth = 0.45f; + [Tooltip("Only display the border instead of the full see-through effect.")] + public bool seeThroughBorderOnly; + [Tooltip("This option clears the stencil buffer after rendering the see-through effect which results in correct rendering order and supports other stencil-based effects that render afterwards.")] + public bool seeThroughOrdered; + [Tooltip("Optional see-through mask effect texture.")] + public Texture2D seeThroughTexture; + public TextureUVSpace seeThroughTextureUVSpace; + public float seeThroughTextureScale = 1f; + [Tooltip("The order by which children objects are rendered by the see-through effect")] + public SeeThroughSortingMode seeThroughChildrenSortingMode = SeeThroughSortingMode.Default; + + [Range(0, 1)] public float hitFxInitialIntensity; + public HitFxMode hitFxMode = HitFxMode.Overlay; + public float hitFxFadeOutDuration = 0.25f; + [ColorUsage(true, true)] public Color hitFxColor = Color.white; + public float hitFxRadius = 0.5f; + + public void Load (HighlightEffect effect) { + effect.effectGroup = effectGroup; + effect.effectGroupLayer = effectGroupLayer; + effect.effectNameFilter = effectNameFilter; + effect.effectNameUseRegEx = effectNameUseRegEx; + effect.combineMeshes = combineMeshes; + effect.alphaCutOff = alphaCutOff; + effect.cullBackFaces = cullBackFaces; + effect.padding = padding; + effect.normalsOption = normalsOption; + effect.fadeInDuration = fadeInDuration; + effect.fadeOutDuration = fadeOutDuration; + effect.cameraDistanceFade = cameraDistanceFade; + effect.cameraDistanceFadeFar = cameraDistanceFadeFar; + effect.cameraDistanceFadeNear = cameraDistanceFadeNear; + effect.constantWidth = constantWidth; + effect.extraCoveragePixels = extraCoveragePixels; + effect.minimumWidth = minimumWidth; + effect.overlay = overlay; + effect.overlayMode = overlayMode; + effect.overlayColor = overlayColor; + effect.overlayAnimationSpeed = overlayAnimationSpeed; + effect.overlayMinIntensity = overlayMinIntensity; + effect.overlayBlending = overlayBlending; + effect.overlayTexture = overlayTexture; + effect.overlayTextureUVSpace = overlayTextureUVSpace; + effect.overlayTextureScale = overlayTextureScale; + effect.overlayTextureScrolling = overlayTextureScrolling; + effect.overlayVisibility = overlayVisibility; + effect.outline = outline; + effect.outlineColor = outlineColor; + effect.outlineColorStyle = outlineColorStyle; + effect.outlineGradient = outlineGradient; + effect.outlineGradientInLocalSpace = outlineGradientInLocalSpace; + effect.outlineWidth = outlineWidth; + effect.outlineBlurPasses = outlineBlurPasses; + effect.outlineQuality = outlineQuality; + effect.outlineEdgeMode = outlineEdgeMode; + effect.outlineEdgeThreshold = outlineEdgeThreshold; + effect.outlineSharpness = outlineSharpness; + effect.outlineDownsampling = outlineDownsampling; + effect.outlineVisibility = outlineVisibility; + effect.outlineIndependent = outlineIndependent; + effect.outlineContourStyle = outlineContourStyle; + effect.outlineMaskMode = outlineMaskMode; + effect.glow = glow; + effect.glowWidth = glowWidth; + effect.glowQuality = glowQuality; + effect.glowBlurMethod = glowBlurMethod; + effect.glowDownsampling = glowDownsampling; + effect.glowHQColor = glowHQColor; + effect.glowDithering = glowDithering; + effect.glowDitheringStyle = glowDitheringStyle; + effect.glowMagicNumber1 = glowMagicNumber1; + effect.glowMagicNumber2 = glowMagicNumber2; + effect.glowAnimationSpeed = glowAnimationSpeed; + effect.glowVisibility = glowVisibility; + effect.glowBlendMode = glowBlendMode; + effect.glowBlendPasses = glowBlendPasses; + effect.glowPasses = GetGlowPassesCopy(glowPasses); + effect.glowMaskMode = glowMaskMode; + effect.innerGlow = innerGlow; + effect.innerGlowWidth = innerGlowWidth; + effect.innerGlowColor = innerGlowColor; + effect.innerGlowBlendMode = innerGlowBlendMode; + effect.innerGlowVisibility = innerGlowVisibility; + effect.targetFX = targetFX; + effect.targetFXColor = targetFXColor; + effect.targetFXInitialScale = targetFXInitialScale; + effect.targetFXEndScale = targetFXEndScale; + effect.targetFXScaleToRenderBounds = targetFXScaleToRenderBounds; + effect.targetFXAlignToGround = targetFXAlignToGround; + effect.targetFXGroundMaxDistance = targetFXGroundMaxDistance; + effect.targetFXGroundLayerMask = targetFXGroundLayerMask; + effect.targetFXFadePower = targetFXFadePower; + effect.targetFXRotationSpeed = targetFXRotationSpeed; + effect.targetFXStayDuration = targetFXStayDuration; + effect.targetFXTexture = targetFXTexture; + effect.targetFXTransitionDuration = targetFXTransitionDuration; + effect.targetFXVisibility = targetFXVisibility; + effect.targetFXUseEnclosingBounds = targetFXUseEnclosingBounds; + effect.targetFXOffset = targetFXOffset; + effect.iconFX = iconFX; + effect.iconFXMesh = iconFXMesh; + effect.iconFXLightColor = iconFXLightColor; + effect.iconFXDarkColor = iconFXDarkColor; + effect.iconFXAnimationOption = iconFXAnimationOption; + effect.iconFXAnimationAmount = iconFXAnimationAmount; + effect.iconFXAnimationSpeed = iconFXAnimationSpeed; + effect.iconFXScale = iconFXScale; + effect.iconFXScaleToRenderBounds = iconFXScaleToRenderBounds; + effect.iconFXOffset = iconFXOffset; + effect.iconFXRotationSpeed = iconFXRotationSpeed; + effect.iconFXStayDuration = iconFXStayDuration; + effect.iconFXTransitionDuration = iconFXTransitionDuration; + effect.seeThrough = seeThrough; + effect.seeThroughOccluderMask = seeThroughOccluderMask; + effect.seeThroughOccluderMaskAccurate = seeThroughOccluderMaskAccurate; + effect.seeThroughOccluderThreshold = seeThroughOccluderThreshold; + effect.seeThroughOccluderCheckInterval = seeThroughOccluderCheckInterval; + effect.seeThroughOccluderCheckIndividualObjects = seeThroughOccluderCheckIndividualObjects; + effect.seeThroughIntensity = seeThroughIntensity; + effect.seeThroughTintAlpha = seeThroughTintAlpha; + effect.seeThroughTintColor = seeThroughTintColor; + effect.seeThroughNoise = seeThroughNoise; + effect.seeThroughBorder = seeThroughBorder; + effect.seeThroughBorderColor = seeThroughBorderColor; + effect.seeThroughBorderWidth = seeThroughBorderWidth; + effect.seeThroughBorderOnly = seeThroughBorderOnly; + effect.seeThroughDepthOffset = seeThroughDepthOffset; + effect.seeThroughMaxDepth = seeThroughMaxDepth; + effect.seeThroughOrdered = seeThroughOrdered; + effect.seeThroughTexture = seeThroughTexture; + effect.seeThroughTextureScale = seeThroughTextureScale; + effect.seeThroughTextureUVSpace = seeThroughTextureUVSpace; + effect.seeThroughChildrenSortingMode = seeThroughChildrenSortingMode; + effect.hitFxInitialIntensity = hitFxInitialIntensity; + effect.hitFxMode = hitFxMode; + effect.hitFxFadeOutDuration = hitFxFadeOutDuration; + effect.hitFxColor = hitFxColor; + effect.hitFxRadius = hitFxRadius; + effect.UpdateMaterialProperties(); + } + + public void Save (HighlightEffect effect) { + effectGroup = effect.effectGroup; + effectGroupLayer = effect.effectGroupLayer; + effectNameFilter = effect.effectNameFilter; + effectNameUseRegEx = effect.effectNameUseRegEx; + combineMeshes = effect.combineMeshes; + alphaCutOff = effect.alphaCutOff; + cullBackFaces = effect.cullBackFaces; + padding = effect.padding; + normalsOption = effect.normalsOption; + fadeInDuration = effect.fadeInDuration; + fadeOutDuration = effect.fadeOutDuration; + cameraDistanceFade = effect.cameraDistanceFade; + cameraDistanceFadeFar = effect.cameraDistanceFadeFar; + cameraDistanceFadeNear = effect.cameraDistanceFadeNear; + constantWidth = effect.constantWidth; + extraCoveragePixels = effect.extraCoveragePixels; + minimumWidth = effect.minimumWidth; + overlay = effect.overlay; + overlayMode = effect.overlayMode; + overlayColor = effect.overlayColor; + overlayAnimationSpeed = effect.overlayAnimationSpeed; + overlayMinIntensity = effect.overlayMinIntensity; + overlayBlending = effect.overlayBlending; + overlayTexture = effect.overlayTexture; + overlayTextureUVSpace = effect.overlayTextureUVSpace; + overlayTextureScale = effect.overlayTextureScale; + overlayTextureScrolling = effect.overlayTextureScrolling; + overlayVisibility = effect.overlayVisibility; + outline = effect.outline; + outlineColor = effect.outlineColor; + outlineColorStyle = effect.outlineColorStyle; + outlineGradient = effect.outlineGradient; + outlineGradientInLocalSpace = effect.outlineGradientInLocalSpace; + outlineWidth = effect.outlineWidth; + outlineBlurPasses = effect.outlineBlurPasses; + outlineQuality = effect.outlineQuality; + outlineEdgeMode = effect.outlineEdgeMode; + outlineEdgeThreshold = effect.outlineEdgeThreshold; + outlineSharpness = effect.outlineSharpness; + outlineDownsampling = effect.outlineDownsampling; + outlineVisibility = effect.outlineVisibility; + outlineIndependent = effect.outlineIndependent; + outlineContourStyle = effect.outlineContourStyle; + outlineMaskMode = effect.outlineMaskMode; + glow = effect.glow; + glowWidth = effect.glowWidth; + glowQuality = effect.glowQuality; + glowBlurMethod = effect.glowBlurMethod; + glowDownsampling = effect.glowDownsampling; + glowHQColor = effect.glowHQColor; + glowDithering = effect.glowDithering; + glowDitheringStyle = effect.glowDitheringStyle; + glowMagicNumber1 = effect.glowMagicNumber1; + glowMagicNumber2 = effect.glowMagicNumber2; + glowAnimationSpeed = effect.glowAnimationSpeed; + glowVisibility = effect.glowVisibility; + glowBlendMode = effect.glowBlendMode; + glowBlendPasses = effect.glowBlendPasses; + glowPasses = GetGlowPassesCopy(effect.glowPasses); + glowMaskMode = effect.glowMaskMode; + innerGlow = effect.innerGlow; + innerGlowWidth = effect.innerGlowWidth; + innerGlowColor = effect.innerGlowColor; + innerGlowBlendMode = effect.innerGlowBlendMode; + innerGlowVisibility = effect.innerGlowVisibility; + targetFX = effect.targetFX; + targetFXColor = effect.targetFXColor; + targetFXInitialScale = effect.targetFXInitialScale; + targetFXEndScale = effect.targetFXEndScale; + targetFXScaleToRenderBounds = effect.targetFXScaleToRenderBounds; + targetFXAlignToGround = effect.targetFXAlignToGround; + targetFXGroundMaxDistance = effect.targetFXGroundMaxDistance; + targetFXGroundLayerMask = effect.targetFXGroundLayerMask; + targetFXFadePower = effect.targetFXFadePower; + targetFXRotationSpeed = effect.targetFXRotationSpeed; + targetFXStayDuration = effect.targetFXStayDuration; + targetFXTexture = effect.targetFXTexture; + targetFXTransitionDuration = effect.targetFXTransitionDuration; + targetFXVisibility = effect.targetFXVisibility; + targetFXUseEnclosingBounds = effect.targetFXUseEnclosingBounds; + targetFXOffset = effect.targetFXOffset; + iconFX = effect.iconFX; + iconFXMesh = effect.iconFXMesh; + iconFXLightColor = effect.iconFXLightColor; + iconFXDarkColor = effect.iconFXDarkColor; + iconFXAnimationOption = effect.iconFXAnimationOption; + iconFXAnimationAmount = effect.iconFXAnimationAmount; + iconFXAnimationSpeed = effect.iconFXAnimationSpeed; + iconFXScaleToRenderBounds = effect.iconFXScaleToRenderBounds; + iconFXScale = effect.iconFXScale; + iconFXOffset = effect.iconFXOffset; + iconFXRotationSpeed = effect.iconFXRotationSpeed; + iconFXStayDuration = effect.iconFXStayDuration; + iconFXTransitionDuration = effect.iconFXTransitionDuration; + seeThrough = effect.seeThrough; + seeThroughOccluderMask = effect.seeThroughOccluderMask; + seeThroughOccluderMaskAccurate = effect.seeThroughOccluderMaskAccurate; + seeThroughOccluderThreshold = effect.seeThroughOccluderThreshold; + seeThroughOccluderCheckInterval = effect.seeThroughOccluderCheckInterval; + seeThroughOccluderCheckIndividualObjects = effect.seeThroughOccluderCheckIndividualObjects; + seeThroughIntensity = effect.seeThroughIntensity; + seeThroughTintAlpha = effect.seeThroughTintAlpha; + seeThroughTintColor = effect.seeThroughTintColor; + seeThroughNoise = effect.seeThroughNoise; + seeThroughBorder = effect.seeThroughBorder; + seeThroughBorderColor = effect.seeThroughBorderColor; + seeThroughBorderWidth = effect.seeThroughBorderWidth; + seeThroughDepthOffset = effect.seeThroughDepthOffset; + seeThroughBorderOnly = effect.seeThroughBorderOnly; + seeThroughMaxDepth = effect.seeThroughMaxDepth; + seeThroughOrdered = effect.seeThroughOrdered; + seeThroughTexture = effect.seeThroughTexture; + seeThroughTextureScale = effect.seeThroughTextureScale; + seeThroughTextureUVSpace = effect.seeThroughTextureUVSpace; + seeThroughChildrenSortingMode = effect.seeThroughChildrenSortingMode; + hitFxInitialIntensity = effect.hitFxInitialIntensity; + hitFxMode = effect.hitFxMode; + hitFxFadeOutDuration = effect.hitFxFadeOutDuration; + hitFxColor = effect.hitFxColor; + hitFxRadius = effect.hitFxRadius; + } + + GlowPassData[] GetGlowPassesCopy (GlowPassData[] glowPasses) { + if (glowPasses == null) { + return new GlowPassData[0]; + } + GlowPassData[] pd = new GlowPassData[glowPasses.Length]; + for (int k = 0; k < glowPasses.Length; k++) { + pd[k].alpha = glowPasses[k].alpha; + pd[k].color = glowPasses[k].color; + pd[k].offset = glowPasses[k].offset; + } + return pd; + } + + public void OnValidate () { + outlineEdgeThreshold = Mathf.Clamp01(outlineEdgeThreshold); + outlineSharpness = Mathf.Max(outlineSharpness, 1f); + extraCoveragePixels = Mathf.Max(0, extraCoveragePixels); + seeThroughDepthOffset = Mathf.Max(0, seeThroughDepthOffset); + seeThroughMaxDepth = Mathf.Max(0, seeThroughMaxDepth); + seeThroughBorderWidth = Mathf.Max(0, seeThroughBorderWidth); + targetFXFadePower = Mathf.Max(0, targetFXFadePower); + cameraDistanceFadeNear = Mathf.Max(0, cameraDistanceFadeNear); + cameraDistanceFadeFar = Mathf.Max(0, cameraDistanceFadeFar); + iconFXScale = Mathf.Max(0, iconFXScale); + iconFXAnimationAmount = Mathf.Max(0, iconFXAnimationAmount); + iconFXAnimationSpeed = Mathf.Max(0, iconFXAnimationSpeed); + if (glowPasses == null || glowPasses.Length == 0) { + glowPasses = new GlowPassData[4]; + glowPasses[0] = new GlowPassData() { offset = 4, alpha = 0.1f, color = new Color(0.64f, 1f, 0f, 1f) }; + glowPasses[1] = new GlowPassData() { offset = 3, alpha = 0.2f, color = new Color(0.64f, 1f, 0f, 1f) }; + glowPasses[2] = new GlowPassData() { offset = 2, alpha = 0.3f, color = new Color(0.64f, 1f, 0f, 1f) }; + glowPasses[3] = new GlowPassData() { offset = 1, alpha = 0.4f, color = new Color(0.64f, 1f, 0f, 1f) }; + } + } + } +} + diff --git a/Assets/External/HighlightPlus/Runtime/Scripts/HighlightProfile.cs.meta b/Assets/External/HighlightPlus/Runtime/Scripts/HighlightProfile.cs.meta new file mode 100644 index 000000000..f269c7ce6 --- /dev/null +++ b/Assets/External/HighlightPlus/Runtime/Scripts/HighlightProfile.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 8e9253636bf2648bd813257f451f8486 +timeCreated: 1549831900 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/HighlightPlus/Runtime/Scripts/HighlightSeeThroughOccluder.cs b/Assets/External/HighlightPlus/Runtime/Scripts/HighlightSeeThroughOccluder.cs new file mode 100644 index 000000000..807d13cff --- /dev/null +++ b/Assets/External/HighlightPlus/Runtime/Scripts/HighlightSeeThroughOccluder.cs @@ -0,0 +1,78 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace HighlightPlus { + + public struct MeshData { + public Renderer renderer; + public int subMeshCount; + } + + public enum OccluderMode { + BlocksSeeThrough, + TriggersSeeThrough + } + + public enum DetectionMethod { + Stencil = 0, + RayCast = 1 + } + [ExecuteInEditMode] + public class HighlightSeeThroughOccluder : MonoBehaviour { + + public OccluderMode mode = OccluderMode.BlocksSeeThrough; + + public DetectionMethod detectionMethod = DetectionMethod.Stencil; + + [NonSerialized] + public MeshData[] meshData; + + List rr; + + void OnEnable () { + if (gameObject.activeInHierarchy) { + Init(); + } + } + + void Init() { + + if (mode == OccluderMode.BlocksSeeThrough && detectionMethod == DetectionMethod.RayCast) { + HighlightEffect.RegisterOccluder(this); + return; + } + + if (rr == null) { + rr = new List(); + } else { + rr.Clear(); + } + GetComponentsInChildren(rr); + int rrCount = rr.Count; + meshData = new MeshData[rrCount]; + for (int k = 0; k < rrCount; k++) { + meshData[k].renderer = rr[k]; + meshData[k].subMeshCount = 1; + if (rr[k] is MeshRenderer) { + MeshFilter mf = rr[k].GetComponent(); + if (mf != null && mf.sharedMesh != null) { + meshData[k].subMeshCount = mf.sharedMesh.subMeshCount; + } + } else if (rr[k] is SkinnedMeshRenderer) { + SkinnedMeshRenderer smr = (SkinnedMeshRenderer)rr[k]; + meshData[k].subMeshCount = smr.sharedMesh.subMeshCount; + } + } + if (rrCount > 0) { + HighlightEffect.RegisterOccluder(this); + } + } + + void OnDisable () { + HighlightEffect.UnregisterOccluder(this); + } + } + +} \ No newline at end of file diff --git a/Assets/External/HighlightPlus/Runtime/Scripts/HighlightSeeThroughOccluder.cs.meta b/Assets/External/HighlightPlus/Runtime/Scripts/HighlightSeeThroughOccluder.cs.meta new file mode 100644 index 000000000..6d02b1622 --- /dev/null +++ b/Assets/External/HighlightPlus/Runtime/Scripts/HighlightSeeThroughOccluder.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 8dd965ceab19c4729a9dabd8aeb2972a +timeCreated: 1542876337 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/HighlightPlus/Runtime/Scripts/HighlightTrigger.cs b/Assets/External/HighlightPlus/Runtime/Scripts/HighlightTrigger.cs new file mode 100644 index 000000000..b23235cd5 --- /dev/null +++ b/Assets/External/HighlightPlus/Runtime/Scripts/HighlightTrigger.cs @@ -0,0 +1,456 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.EventSystems; + +namespace HighlightPlus { + + public enum TriggerMode { + ColliderEventsOnlyOnThisObject = 0, + RaycastOnThisObjectAndChildren = 1, + Volume = 2 + } + + public enum RayCastSource { + MousePosition = 0, + CameraDirection = 1 + } + + + [RequireComponent(typeof(HighlightEffect))] + [ExecuteInEditMode] + [HelpURL("https://kronnect.com/guides/highlight-plus-introduction/")] + public class HighlightTrigger : MonoBehaviour { + + [Tooltip("Enables highlight when pointer is over this object.")] + public bool highlightOnHover = true; + [Tooltip("Used to trigger automatic highlighting including children objects.")] +#if ENABLE_INPUT_SYSTEM + public TriggerMode triggerMode = TriggerMode.RaycastOnThisObjectAndChildren; +#else + public TriggerMode triggerMode = TriggerMode.ColliderEventsOnlyOnThisObject; +#endif + public Camera raycastCamera; + public RayCastSource raycastSource = RayCastSource.MousePosition; + public LayerMask raycastLayerMask = -1; + [Tooltip("Minimum distance for target.")] + public float minDistance; + [Tooltip("Maximum distance for target. 0 = infinity")] + public float maxDistance; + [Tooltip("Blocks interaction if pointer is over an UI element")] + public bool respectUI = true; + public LayerMask volumeLayerMask; + + const int MAX_RAYCAST_HITS = 100; + + + [Tooltip("If the object will be selected by clicking with mouse or tapping on it.")] + public bool selectOnClick; + [Tooltip("Profile to use when object is selected by clicking on it.")] + public HighlightProfile selectedProfile; + [Tooltip("Profile to use whtn object is selected and highlighted.")] + public HighlightProfile selectedAndHighlightedProfile; + [Tooltip("Automatically deselects any other selected object prior selecting this one")] + public bool singleSelection; + [Tooltip("Toggles selection on/off when clicking object")] + public bool toggle; + [Tooltip("Keeps current selection when clicking outside of any selectable object")] + public bool keepSelection = true; + + [NonSerialized] public Collider[] colliders; + [NonSerialized] public Collider2D[] colliders2D; + + public bool hasColliders => colliders != null && colliders.Length > 0; + public bool hasColliders2D => colliders2D != null && colliders2D.Length > 0; + + UnityEngine.Object currentCollider; + static RaycastHit[] hits; + static RaycastHit2D[] hits2D; + HighlightEffect hb; + + public HighlightEffect highlightEffect { get { return hb; } } + + public event OnObjectSelectionEvent OnObjectSelected; + public event OnObjectSelectionEvent OnObjectUnSelected; + public event OnObjectHighlightEvent OnObjectHighlightStart; + public event OnObjectHighlightEvent OnObjectHighlightStay; + public event OnObjectHighlightEvent OnObjectHighlightEnd; + + TriggerMode currentTriggerMode; + + + [RuntimeInitializeOnLoadMethod] + static void DomainReloadDisabledSupport() { + HighlightManager.selectedObjects.Clear(); + } + + void OnEnable() { + Init(); + } + + private void OnValidate() { + if (currentTriggerMode != triggerMode) { + UpdateTriggers(); + } + } + + void UpdateTriggers() { + currentTriggerMode = triggerMode; + if (currentTriggerMode == TriggerMode.RaycastOnThisObjectAndChildren) { + colliders = GetComponentsInChildren(); + colliders2D = GetComponentsInChildren(); + if (hits == null || hits.Length != MAX_RAYCAST_HITS) { + hits = new RaycastHit[MAX_RAYCAST_HITS]; + } + if (hits2D == null || hits2D.Length != MAX_RAYCAST_HITS) { + hits2D = new RaycastHit2D[MAX_RAYCAST_HITS]; + } + if (Application.isPlaying) { + StopAllCoroutines(); + if (isActiveAndEnabled) { + StartCoroutine(DoRayCast()); + } + } + } + } + + + public void Init() { + if (raycastCamera == null) { + raycastCamera = HighlightManager.GetCamera(); + } + UpdateTriggers(); + if (hb == null) { + hb = GetComponent(); + } + InputProxy.Init(); + } + + void Start() { + UpdateTriggers(); + if (triggerMode == TriggerMode.RaycastOnThisObjectAndChildren) { + if (raycastCamera == null) { + raycastCamera = HighlightManager.GetCamera(); + if (raycastCamera == null) { + Debug.LogError("Highlight Trigger on " + gameObject.name + ": no camera found!"); + } + } + } else { + Collider collider = GetComponent(); + if (collider == null) { + if (GetComponent() != null) { + gameObject.AddComponent(); + } + } + } + } + + + IEnumerator DoRayCast() { + yield return null; + WaitForEndOfFrame w = new WaitForEndOfFrame(); + while (triggerMode == TriggerMode.RaycastOnThisObjectAndChildren) { + if (raycastCamera == null || !isActiveAndEnabled) { + yield return null; + continue; + } + + int hitCount; + bool hit = false; + +#if ENABLE_INPUT_SYSTEM && !ENABLE_LEGACY_INPUT_MANAGER + if (respectUI) { + EventSystem es = EventSystem.current; + if (es == null) { + es = CreateEventSystem(); + } + List raycastResults = new List(); + PointerEventData eventData = new PointerEventData(es); + Vector3 cameraPos = raycastCamera.transform.position; + if (raycastSource == RayCastSource.MousePosition) { + eventData.position = InputProxy.mousePosition; + } else { + eventData.position = new Vector2(raycastCamera.pixelWidth * 0.5f, raycastCamera.pixelHeight * 0.5f); + } + es.RaycastAll(eventData, raycastResults); + hitCount = raycastResults.Count; + // check UI blocker + bool blocked = false; + for (int k = 0; k < hitCount; k++) { + RaycastResult rr = raycastResults[k]; + if (rr.module is UnityEngine.UI.GraphicRaycaster) { + blocked = true; + break; + } + } + if (blocked) { + yield return null; + continue; + } + // look for our gameobject + for (int k = 0; k < hitCount; k++) { + RaycastResult rr = raycastResults[k]; + float distance = Vector3.Distance(rr.worldPosition, cameraPos); + if (distance < minDistance || (maxDistance > 0 && distance > maxDistance)) continue; + + GameObject theGameObject = rr.gameObject; + for (int c = 0; c < colliders.Length; c++) { + if (colliders[c].gameObject == theGameObject) { + Collider theCollider = colliders[c]; + hit = true; + if (selectOnClick && InputProxy.GetMouseButtonDown(0)) { + ToggleSelection(); + break; + } else if (theCollider != currentCollider) { + SwitchCollider(theCollider); + k = hitCount; + break; + } + } + } + } + } + // if not blocked by UI and no hit found, fallback to raycast (required if no PhysicsRaycaster is present on the camera) + +#endif + Ray ray; + if (raycastSource == RayCastSource.MousePosition) { +#if !(ENABLE_INPUT_SYSTEM && !ENABLE_LEGACY_INPUT_MANAGER) + + if (!CanInteract()) { + yield return null; + continue; + } +#endif + ray = raycastCamera.ScreenPointToRay(InputProxy.mousePosition); + } else { + ray = new Ray(raycastCamera.transform.position, raycastCamera.transform.forward); + } + + + VerifyHighlightStay(); + + bool isMouseButonDown = InputProxy.GetMouseButtonDown(0); + if (hasColliders2D) { + if (maxDistance > 0) { + hitCount = Physics2D.GetRayIntersectionNonAlloc(ray, hits2D, maxDistance, raycastLayerMask); + } else { + hitCount = Physics2D.GetRayIntersectionNonAlloc(ray, hits2D, float.MaxValue, raycastLayerMask); + } + for (int k = 0; k < hitCount; k++) { + if (Vector3.Distance(hits2D[k].point, ray.origin) < minDistance) continue; + Collider2D theCollider = hits2D[k].collider; + int colliders2DCount = colliders2D.Length; + for (int c = 0; c < colliders2DCount; c++) { + if (colliders2D[c] == theCollider) { + hit = true; + if (selectOnClick && isMouseButonDown) { + ToggleSelection(); + break; + } else if (theCollider != currentCollider) { + SwitchCollider(theCollider); + k = hitCount; + break; + } + } + } + } + } + if (hasColliders) { + if (maxDistance > 0) { + hitCount = Physics.RaycastNonAlloc(ray, hits, maxDistance, raycastLayerMask); + } else { + hitCount = Physics.RaycastNonAlloc(ray, hits, float.MaxValue, raycastLayerMask); + } + for (int k = 0; k < hitCount; k++) { + if (Vector3.Distance(hits[k].point, ray.origin) < minDistance) continue; + Collider theCollider = hits[k].collider; + int collidersCount = colliders.Length; + for (int c = 0; c < collidersCount; c++) { + if (colliders[c] == theCollider) { + hit = true; + if (selectOnClick && isMouseButonDown) { + ToggleSelection(); + break; + } else if (theCollider != currentCollider) { + SwitchCollider(theCollider); + k = hitCount; + break; + } + } + } + } + } + + + if (!hit && currentCollider != null) { + SwitchCollider(null); + } + + if (selectOnClick && isMouseButonDown && !keepSelection && !hit) { + yield return w; // wait for other potential triggers to act + if (HighlightManager.lastTriggerFrame < Time.frameCount) { + if (OnObjectUnSelected != null) OnObjectUnSelected(gameObject); + HighlightManager.DeselectAll(); + } + } + + yield return null; + } + } + +#if ENABLE_INPUT_SYSTEM && !ENABLE_LEGACY_INPUT_MANAGER + EventSystem CreateEventSystem() { + GameObject eo = new GameObject("Event System created by Highlight Plus", typeof(EventSystem), typeof(UnityEngine.InputSystem.UI.InputSystemUIInputModule)); + return eo.GetComponent(); + } +#endif + + void VerifyHighlightStay() { + if (hb == null || !hb.highlighted) return; + if (OnObjectHighlightStay != null && !OnObjectHighlightStay(hb.gameObject)) { + SwitchCollider(null); + } + } + + void SwitchCollider(UnityEngine.Object newCollider) { + if (!highlightOnHover && !hb.isSelected) return; + + currentCollider = newCollider; + if (currentCollider != null) { + Highlight(true); + } else { + Highlight(false); + } + } + + bool CanInteract() { + if (!respectUI) return true; + EventSystem es = EventSystem.current; + if (es == null) return true; + if (Application.isMobilePlatform && InputProxy.touchCount > 0 && es.IsPointerOverGameObject(InputProxy.GetFingerIdFromTouch(0))) { + return false; + } else if (es.IsPointerOverGameObject(-1)) + return false; + return true; + } + + + void OnMouseDown() { + if (isActiveAndEnabled && triggerMode == TriggerMode.ColliderEventsOnlyOnThisObject) { + if (!CanInteract()) return; + if (selectOnClick && InputProxy.GetMouseButtonDown(0)) { + ToggleSelection(); + return; + } + Highlight(true); + } + } + + void OnMouseEnter() { + if (isActiveAndEnabled && triggerMode == TriggerMode.ColliderEventsOnlyOnThisObject) { + if (!CanInteract()) return; + Highlight(true); + } + } + + void OnMouseExit() { + if (isActiveAndEnabled && triggerMode == TriggerMode.ColliderEventsOnlyOnThisObject) { + if (!CanInteract()) return; + Highlight(false); + } + } + + void Highlight(bool state) { + if (state) { + if (!hb.highlighted) { + if (OnObjectHighlightStart != null && hb.target != null) { + if (!OnObjectHighlightStart(hb.target.gameObject)) { + currentCollider = null; + return; + } + } + } + } else { + if (hb.highlighted) { + if (OnObjectHighlightEnd != null && hb.target != null) { + OnObjectHighlightEnd(hb.target.gameObject); + } + } + } + if (selectOnClick || hb.isSelected) { + if (hb.isSelected) { + if (state && selectedAndHighlightedProfile != null) { + selectedAndHighlightedProfile.Load(hb); + } else if (selectedProfile != null) { + selectedProfile.Load(hb); + } else { + hb.previousSettings.Load(hb); + } + if (hb.highlighted) { + hb.UpdateMaterialProperties(); + } else { + hb.SetHighlighted(true); + } + return; + } else if (!highlightOnHover) { + hb.SetHighlighted(false); + return; + } + } + hb.SetHighlighted(state); + } + + + void ToggleSelection() { + + HighlightManager.lastTriggerFrame = Time.frameCount; + + bool newState = toggle ? !hb.isSelected : true; + if (newState) { + if (OnObjectSelected != null && !OnObjectSelected(gameObject)) return; + } else { + if (OnObjectUnSelected != null && !OnObjectUnSelected(gameObject)) return; + } + + if (singleSelection && newState) { + HighlightManager.DeselectAll(); + } + hb.isSelected = newState; + if (newState && !HighlightManager.selectedObjects.Contains(hb)) { + HighlightManager.selectedObjects.Add(hb); + } else if (!newState && HighlightManager.selectedObjects.Contains(hb)) { + HighlightManager.selectedObjects.Remove(hb); + } + + if (hb.isSelected) { + if (hb.previousSettings == null) { + hb.previousSettings = ScriptableObject.CreateInstance(); + } + hb.previousSettings.Save(hb); + } else { + hb.RestorePreviousHighlightEffectSettings(); + } + + Highlight(true); + } + + public void OnTriggerEnter(Collider other) { + if (triggerMode == TriggerMode.Volume) { + if ((volumeLayerMask & (1 << other.gameObject.layer)) != 0) { + Highlight(true); + } + } + } + + public void OnTriggerExit(Collider other) { + if (triggerMode == TriggerMode.Volume) { + if ((volumeLayerMask & (1 << other.gameObject.layer)) != 0) { + Highlight(false); + } + } + } + } + +} \ No newline at end of file diff --git a/Assets/External/HighlightPlus/Runtime/Scripts/HighlightTrigger.cs.meta b/Assets/External/HighlightPlus/Runtime/Scripts/HighlightTrigger.cs.meta new file mode 100644 index 000000000..630204a89 --- /dev/null +++ b/Assets/External/HighlightPlus/Runtime/Scripts/HighlightTrigger.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 5009cbb7e54994bb586cde7a70f34e6b +timeCreated: 1542876337 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/HighlightPlus/Runtime/Scripts/InputProxy.cs b/Assets/External/HighlightPlus/Runtime/Scripts/InputProxy.cs new file mode 100644 index 000000000..b1fdcf7e7 --- /dev/null +++ b/Assets/External/HighlightPlus/Runtime/Scripts/InputProxy.cs @@ -0,0 +1,90 @@ +using UnityEngine; + +#if ENABLE_INPUT_SYSTEM && !ENABLE_LEGACY_INPUT_MANAGER +using UnityEngine.InputSystem; +using UnityEngine.InputSystem.Controls; +using EnhancedTouch = UnityEngine.InputSystem.EnhancedTouch; +#endif + +namespace HighlightPlus { + + public static class InputProxy { + +#if ENABLE_INPUT_SYSTEM && !ENABLE_LEGACY_INPUT_MANAGER + + static Vector3 lastPointerPosition; + + public static void Init() { + if (!EnhancedTouch.EnhancedTouchSupport.enabled) { + EnhancedTouch.EnhancedTouchSupport.Enable(); + } + } + + public static Vector3 mousePosition { + get { + if (touchCount > 0) { + lastPointerPosition = EnhancedTouch.Touch.activeTouches[0].screenPosition; + } else { + Mouse m = Mouse.current; + if (m != null) { + lastPointerPosition = m.position.ReadValue(); + } + } + return lastPointerPosition; + } + } + + public static bool GetMouseButtonDown(int buttonIndex) { + if (touchCount > 0) { + return EnhancedTouch.Touch.activeTouches[0].phase == UnityEngine.InputSystem.TouchPhase.Began; + } else { + Mouse m = Mouse.current; + if (m == null) return false; + switch (buttonIndex) { + case 1: return m.rightButton.wasPressedThisFrame; + case 2: return m.middleButton.wasPressedThisFrame; + default: return m.leftButton.wasPressedThisFrame; + } + } + } + + public static int touchCount { get { return EnhancedTouch.Touch.activeTouches.Count; } } + + public static int GetFingerIdFromTouch(int touchIndex) { + EnhancedTouch.Touch touch = EnhancedTouch.Touch.activeTouches[touchIndex]; + return touch.finger.index; + } + + public static bool GetKeyDown(string name) { + return ((KeyControl)Keyboard.current[name]).wasPressedThisFrame; + } + +#else + public static void Init() {} + + public static Vector3 mousePosition { + get { + return Input.mousePosition; + } + } + + public static bool GetMouseButtonDown(int buttonIndex) { + return Input.GetMouseButtonDown(buttonIndex); + } + + public static int touchCount { + get { return Input.touchCount; } + } + + public static int GetFingerIdFromTouch(int touchIndex) { + return Input.GetTouch(touchIndex).fingerId; + } + + public static bool GetKeyDown(string name) { + return Input.GetKeyDown(name); + } + +#endif + + } +} diff --git a/Assets/External/HighlightPlus/Runtime/Scripts/InputProxy.cs.meta b/Assets/External/HighlightPlus/Runtime/Scripts/InputProxy.cs.meta new file mode 100644 index 000000000..954705eb2 --- /dev/null +++ b/Assets/External/HighlightPlus/Runtime/Scripts/InputProxy.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 22dd181849f53482686b5c26304410c2 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/HighlightPlus/Runtime/Scripts/Misc.cs b/Assets/External/HighlightPlus/Runtime/Scripts/Misc.cs new file mode 100644 index 000000000..6f2465e7a --- /dev/null +++ b/Assets/External/HighlightPlus/Runtime/Scripts/Misc.cs @@ -0,0 +1,33 @@ + +using UnityEngine; +using System; + +namespace HighlightPlus { + public class Misc { + public static T FindObjectOfType(bool includeInactive = false) where T : UnityEngine.Object { +#if UNITY_2023_1_OR_NEWER + return UnityEngine.Object.FindAnyObjectByType(includeInactive ? FindObjectsInactive.Include : FindObjectsInactive.Exclude); +#else + return UnityEngine.Object.FindObjectOfType(includeInactive); +#endif + } + + public static UnityEngine.Object[] FindObjectsOfType(Type type, bool includeInactive = false) { +#if UNITY_2023_1_OR_NEWER + return UnityEngine.Object.FindObjectsByType(type, includeInactive ? FindObjectsInactive.Include : FindObjectsInactive.Exclude, FindObjectsSortMode.None); +#else + return UnityEngine.Object.FindObjectsOfType(type, includeInactive); +#endif + } + + + public static T[] FindObjectsOfType(bool includeInactive = false) where T : UnityEngine.Object { +#if UNITY_2023_1_OR_NEWER + return UnityEngine.Object.FindObjectsByType(includeInactive ? FindObjectsInactive.Include : FindObjectsInactive.Exclude, FindObjectsSortMode.None); +#else + return UnityEngine.Object.FindObjectsOfType(includeInactive); +#endif + } + } + +} \ No newline at end of file diff --git a/Assets/External/HighlightPlus/Runtime/Scripts/Misc.cs.meta b/Assets/External/HighlightPlus/Runtime/Scripts/Misc.cs.meta new file mode 100644 index 000000000..71f90ccbb --- /dev/null +++ b/Assets/External/HighlightPlus/Runtime/Scripts/Misc.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a87ac1812c2d44355a6c2acddcdd42ea +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/HighlightPlus/Runtime/Scripts/RenderingUtils.cs b/Assets/External/HighlightPlus/Runtime/Scripts/RenderingUtils.cs new file mode 100644 index 000000000..c1f56b3b7 --- /dev/null +++ b/Assets/External/HighlightPlus/Runtime/Scripts/RenderingUtils.cs @@ -0,0 +1,47 @@ +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.Rendering; + +namespace HighlightPlus { + + public static class RenderingUtils { + + static Mesh _fullScreenMesh; + static Mesh fullscreenMesh { + get { + if (_fullScreenMesh != null) { + return _fullScreenMesh; + } + float num = 1f; + float num2 = 0f; + Mesh val = new Mesh(); + _fullScreenMesh = val; + _fullScreenMesh.SetVertices(new List { + new Vector3 (-1f, -1f, 0f), + new Vector3 (-1f, 1f, 0f), + new Vector3 (1f, -1f, 0f), + new Vector3 (1f, 1f, 0f) + }); + _fullScreenMesh.SetUVs(0, new List { + new Vector2 (0f, num2), + new Vector2 (0f, num), + new Vector2 (1f, num2), + new Vector2 (1f, num) + }); + _fullScreenMesh.SetIndices(new int[6] { 0, 1, 2, 2, 1, 3 }, (MeshTopology)0, 0, false); + _fullScreenMesh.UploadMeshData(true); + return _fullScreenMesh; + } + } + + static Matrix4x4 matrix4x4Identity = Matrix4x4.identity; + public static void FullScreenBlit(CommandBuffer cmd, RenderTargetIdentifier source, RenderTargetIdentifier destination, Material material, int passIndex) { + destination = new RenderTargetIdentifier(destination, 0, CubemapFace.Unknown, -1); + cmd.SetRenderTarget(destination); + cmd.SetGlobalTexture(ShaderParams.MainTex, source); + cmd.DrawMesh(fullscreenMesh, matrix4x4Identity, material, 0, passIndex); + } + } + + +} \ No newline at end of file diff --git a/Assets/External/HighlightPlus/Runtime/Scripts/RenderingUtils.cs.meta b/Assets/External/HighlightPlus/Runtime/Scripts/RenderingUtils.cs.meta new file mode 100644 index 000000000..f0a47f147 --- /dev/null +++ b/Assets/External/HighlightPlus/Runtime/Scripts/RenderingUtils.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 95fcf366e400b4f79938bee11ff1ddc0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/HighlightPlus/Runtime/Scripts/ShaderParams.cs b/Assets/External/HighlightPlus/Runtime/Scripts/ShaderParams.cs new file mode 100644 index 000000000..f31de1a2c --- /dev/null +++ b/Assets/External/HighlightPlus/Runtime/Scripts/ShaderParams.cs @@ -0,0 +1,105 @@ +using UnityEngine; + +namespace HighlightPlus { + + public static class ShaderParams { + + // general uniforms + public static int Cull = Shader.PropertyToID("_Cull"); + public static int BlurScale = Shader.PropertyToID("_BlurScale"); + public static int BlurScaleFirstHoriz = Shader.PropertyToID("_BlurScaleFirstHoriz"); + public static int Speed = Shader.PropertyToID("_Speed"); + public static int ConstantWidth = Shader.PropertyToID("_ConstantWidth"); + public static int MinimumWidth = Shader.PropertyToID("_MinimumWidth"); + public static int CutOff = Shader.PropertyToID("_CutOff"); + public static int ZTest = Shader.PropertyToID("_ZTest"); + public static int Flip = Shader.PropertyToID("_Flip"); + public static int Debug = Shader.PropertyToID("_Debug"); + public static int Color = Shader.PropertyToID("_Color"); + public static int MainTex = Shader.PropertyToID("_MainTex"); + public static int BaseMap = Shader.PropertyToID("_BaseMap"); + public static int BaseMapST = Shader.PropertyToID("_BaseMap_ST"); + public static int BlendSrc = Shader.PropertyToID("_BlendSrc"); + public static int BlendDst = Shader.PropertyToID("_BlendDst"); + public static int FadeFactor = Shader.PropertyToID("_HP_Fade"); + public static int Padding = Shader.PropertyToID("_Padding"); + public static int ResampleScale = Shader.PropertyToID("_ResampleScale"); + public static int NoiseTex = Shader.PropertyToID("_NoiseTex"); + + // outline uniforms + public static int OutlineWidth = Shader.PropertyToID("_OutlineWidth"); + public static int OutlineZTest = Shader.PropertyToID("_OutlineZTest"); + public static int OutlineDirection = Shader.PropertyToID("_OutlineDirection"); + public static int OutlineColor = Shader.PropertyToID("_OutlineColor"); + public static int OutlineVertexWidth = Shader.PropertyToID("_OutlineVertexWidth"); + public static int OutlineGradientTex = Shader.PropertyToID("_OutlineGradientTex"); + public static int OutlineVertexData = Shader.PropertyToID("_OutlineVertexData"); + public static int OutlineStencilComp = Shader.PropertyToID("_OutlineStencilComp"); + public static int OutlineEdgeThreshold = Shader.PropertyToID("_EdgeThreshold"); + public static int OutlineSharpness = Shader.PropertyToID("_OutlineSharpness"); + + // glow uniforms + public static int GlowZTest = Shader.PropertyToID("_GlowZTest"); + public static int GlowStencilComp = Shader.PropertyToID("_GlowStencilComp"); + public static int GlowStencilOp = Shader.PropertyToID("_GlowStencilOp"); + public static int GlowDirection = Shader.PropertyToID("_GlowDirection"); + public static int Glow = Shader.PropertyToID("_Glow"); + public static int GlowColor = Shader.PropertyToID("_GlowColor"); + public static int Glow2 = Shader.PropertyToID("_Glow2"); + + // see-through uniforms + public static int SeeThrough = Shader.PropertyToID("_SeeThrough"); + public static int SeeThroughNoise = Shader.PropertyToID("_SeeThroughNoise"); + public static int SeeThroughBorderWidth = Shader.PropertyToID("_SeeThroughBorderWidth"); + public static int SeeThroughBorderConstantWidth = Shader.PropertyToID("_SeeThroughBorderConstantWidth"); + public static int SeeThroughTintColor = Shader.PropertyToID("_SeeThroughTintColor"); + public static int SeeThroughBorderColor = Shader.PropertyToID("_SeeThroughBorderColor"); + public static int SeeThroughStencilRef = Shader.PropertyToID("_SeeThroughStencilRef"); + public static int SeeThroughStencilComp = Shader.PropertyToID("_SeeThroughStencilComp"); + public static int SeeThroughStencilPassOp = Shader.PropertyToID("_SeeThroughStencilPassOp"); + public static int SeeThroughDepthOffset = Shader.PropertyToID("_SeeThroughDepthOffset"); + public static int SeeThroughMaxDepth = Shader.PropertyToID("_SeeThroughMaxDepth"); + public static int SeeThroughTexture = Shader.PropertyToID("_SeeThroughTexture"); + public static int SeeThroughTextureScale = Shader.PropertyToID("_SeeThroughTextureScale"); + + // inner glow uniforms + public static int InnerGlowWidth = Shader.PropertyToID("_InnerGlowWidth"); + public static int InnerGlowZTest = Shader.PropertyToID("_InnerGlowZTest"); + public static int InnerGlowColor = Shader.PropertyToID("_InnerGlowColor"); + public static int InnerGlowBlendMode = Shader.PropertyToID("_InnerGlowBlendMode"); + + // overlay uniforms + public static int OverlayData = Shader.PropertyToID("_OverlayData"); + public static int OverlayBackColor = Shader.PropertyToID("_OverlayBackColor"); + public static int OverlayColor = Shader.PropertyToID("_OverlayColor"); + public static int OverlayHitPosData = Shader.PropertyToID("_OverlayHitPosData"); + public static int OverlayHitStartTime = Shader.PropertyToID("_OverlayHitStartTime"); + public static int OverlayTexture = Shader.PropertyToID("_OverlayTexture"); + public static int OverlayTextureScrolling = Shader.PropertyToID("_OverlayTextureScrolling"); + public static int OverlayZTest = Shader.PropertyToID("_OverlayZTest"); + + // target uniforms + public static int TargetFXRenderData = Shader.PropertyToID("_TargetFXRenderData"); + public static int GlowRT = Shader.PropertyToID("_HPComposeGlowFinal"); + public static int OutlineRT = Shader.PropertyToID("_HPComposeOutlineFinal"); + + // icon uniforms + public static int IconFXDarkColor = Shader.PropertyToID("_DarkColor"); + + // keywords + public const string SKW_ALPHACLIP = "HP_ALPHACLIP"; + public const string SKW_OUTLINE_GRADIENT_WS = "HP_OUTLINE_GRADIENT_WS"; + public const string SKW_OUTLINE_GRADIENT_LS = "HP_OUTLINE_GRADIENT_LS"; + public const string SKW_ALL_EDGES = "HP_ALL_EDGES"; + public const string SKW_DEPTHCLIP = "HP_DEPTHCLIP"; + public const string SKW_DEPTHCLIP_INV = "HP_DEPTHCLIP_INV"; + public const string SKW_DEPTH_OFFSET = "HP_DEPTH_OFFSET"; + public const string SKW_TEXTURE_TRIPLANAR = "HP_TEXTURE_TRIPLANAR"; + public const string SKW_TEXTURE_SCREENSPACE = "HP_TEXTURE_SCREENSPACE"; + public const string SKW_TEXTURE_OBJECTSPACE = "HP_TEXTURE_OBJECTSPACE"; + public const string SKW_SEETHROUGH_ONLY_BORDER = "HP_SEETHROUGH_ONLY_BORDER"; + public const string SKW_MASK_CUTOUT = "HP_MASK_CUTOUT"; + public const string SKW_DITHER_BLUENOISE = "HP_DITHER_BLUENOISE"; + } +} + diff --git a/Assets/External/HighlightPlus/Runtime/Scripts/ShaderParams.cs.meta b/Assets/External/HighlightPlus/Runtime/Scripts/ShaderParams.cs.meta new file mode 100644 index 000000000..39d981de9 --- /dev/null +++ b/Assets/External/HighlightPlus/Runtime/Scripts/ShaderParams.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0c43adc34509547febe8181a2de00da5 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/HighlightPlus/Runtime/Scripts/VRCheck.cs b/Assets/External/HighlightPlus/Runtime/Scripts/VRCheck.cs new file mode 100644 index 000000000..30d16afdd --- /dev/null +++ b/Assets/External/HighlightPlus/Runtime/Scripts/VRCheck.cs @@ -0,0 +1,62 @@ +// Comment this line to disable usage of XR module +#define ENABLE_XR + +using System.Collections.Generic; +using UnityEngine; + +#if ENABLE_XR +using UnityEngine.XR; +#endif + +namespace HighlightPlus { + + static class VRCheck { + + public static bool isActive; + public static bool isVrRunning; + +#if !ENABLE_XR + static bool IsActive() { + return false; + } + + static bool IsVrRunning() { + return false; + } + +#else + + static readonly List displaysDescs = new List(); + static readonly List displays = new List(); + + static bool IsActive() { + displaysDescs.Clear(); + SubsystemManager.GetSubsystemDescriptors(displaysDescs); + + // If there are registered display descriptors that is a good indication that VR is most likely "enabled" + return displaysDescs.Count > 0; + } + + static bool IsVrRunning() { + bool vrIsRunning = false; + displays.Clear(); + SubsystemManager.GetSubsystems(displays); + foreach (var displaySubsystem in displays) { + if (displaySubsystem.running) { + vrIsRunning = true; + break; + } + } + + return vrIsRunning; + } + +#endif + + public static void Init() { + isActive = IsActive(); + isVrRunning = IsVrRunning(); + } + + } +} \ No newline at end of file diff --git a/Assets/External/HighlightPlus/Runtime/Scripts/VRCheck.cs.meta b/Assets/External/HighlightPlus/Runtime/Scripts/VRCheck.cs.meta new file mode 100644 index 000000000..6bdc7e525 --- /dev/null +++ b/Assets/External/HighlightPlus/Runtime/Scripts/VRCheck.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c5a7be65460ba4182b08a8f602571e25 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Settings/PC_Renderer.asset b/Assets/Settings/PC_Renderer.asset index c00a23ed4..36d385602 100644 --- a/Assets/Settings/PC_Renderer.asset +++ b/Assets/Settings/PC_Renderer.asset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c0384e7016e9f8795b79c76034b8c8334a143a2931d4a71826e4b242e236e73e -size 9172 +oid sha256:58e66ea6da44f2d670e8317b778ec45ec4f1e45b9db64a252486547af8db9726 +size 9717 diff --git a/Assets/_DDD/Restaurant/Environments/Props/Prop_Open.prefab b/Assets/_DDD/Restaurant/Environments/Props/Prop_Open.prefab index 0eb79e709..846a0e7e4 100644 --- a/Assets/_DDD/Restaurant/Environments/Props/Prop_Open.prefab +++ b/Assets/_DDD/Restaurant/Environments/Props/Prop_Open.prefab @@ -79,6 +79,12 @@ PrefabInstance: - targetCorrespondingSourceObject: {fileID: 4438924429928472453, guid: 1d634c3376e4a4684bc984ced9134847, type: 3} insertIndex: -1 addedObject: {fileID: 1277818069658415318} + - targetCorrespondingSourceObject: {fileID: 4438924429928472453, guid: 1d634c3376e4a4684bc984ced9134847, type: 3} + insertIndex: -1 + addedObject: {fileID: 3538352761187622062} + - targetCorrespondingSourceObject: {fileID: 4438924429928472453, guid: 1d634c3376e4a4684bc984ced9134847, type: 3} + insertIndex: -1 + addedObject: {fileID: 6899480242032072806} m_SourcePrefab: {fileID: 100100000, guid: 1d634c3376e4a4684bc984ced9134847, type: 3} --- !u!1 &9211739394093953175 stripped GameObject: @@ -100,3 +106,215 @@ MonoBehaviour: _interactionType: 2 _holdTime: 1.3 _interactionMessageKey: Test +--- !u!114 &3538352761187622062 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9211739394093953175} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 888380afc233049ce9e618f9f36c8ba8, type: 3} + m_Name: + m_EditorClassIdentifier: + profile: {fileID: 0} + profileSync: 0 + camerasLayerMask: + serializedVersion: 2 + m_Bits: 4294967295 + effectGroup: 0 + effectTarget: {fileID: 0} + effectGroupLayer: + serializedVersion: 2 + m_Bits: 4294967295 + effectNameFilter: + effectNameUseRegEx: 0 + combineMeshes: 0 + alphaCutOff: 0.5 + cullBackFaces: 1 + padding: 0 + ignoreObjectVisibility: 0 + reflectionProbes: 0 + GPUInstancing: 1 + sortingPriority: 0 + optimizeSkinnedMesh: 1 + depthClip: 0 + cameraDistanceFade: 0 + cameraDistanceFadeNear: 0 + cameraDistanceFadeFar: 1000 + normalsOption: 0 + ignore: 0 + _highlighted: 0 + fadeInDuration: 0 + fadeOutDuration: 0 + flipY: 0 + constantWidth: 1 + extraCoveragePixels: 0 + minimumWidth: 0 + subMeshMask: -1 + overlay: 0 + overlayMode: 0 + overlayColor: {r: 1, g: 0.92156863, b: 0.015686275, a: 1} + overlayAnimationSpeed: 1 + overlayMinIntensity: 0.5 + overlayBlending: 1 + overlayTexture: {fileID: 0} + overlayTextureUVSpace: 0 + overlayTextureScale: 1 + overlayTextureScrolling: {x: 0, y: 0} + overlayVisibility: 0 + outline: 1 + outlineColor: {r: 1, g: 1, b: 1, a: 1} + outlineColorStyle: 0 + outlineGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, a: 1} + key2: {r: 0, g: 0, b: 0, a: 0} + key3: {r: 0, g: 0, b: 0, a: 0} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_ColorSpace: -1 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + outlineGradientInLocalSpace: 0 + outlineWidth: 1 + outlineBlurPasses: 1 + outlineQuality: 2 + outlineEdgeMode: 0 + outlineEdgeThreshold: 0.995 + outlineSharpness: 8 + outlineDownsampling: 1 + outlineVisibility: 0 + glowBlendMode: 0 + outlineBlitDebug: 0 + outlineIndependent: 1 + outlineContourStyle: 0 + outlineMaskMode: 0 + glow: 0 + glowWidth: 0.4 + glowQuality: 3 + glowBlurMethod: 0 + glowDownsampling: 2 + glowHQColor: {r: 0.64, g: 1, b: 0, a: 1} + glowDithering: 1 + glowDitheringStyle: 0 + glowMagicNumber1: 0.75 + glowMagicNumber2: 0.5 + glowAnimationSpeed: 1 + glowVisibility: 0 + glowBlitDebug: 0 + glowBlendPasses: 1 + glowPasses: + - offset: 4 + alpha: 0.1 + color: {r: 0.64, g: 1, b: 0, a: 1} + - offset: 3 + alpha: 0.2 + color: {r: 0.64, g: 1, b: 0, a: 1} + - offset: 2 + alpha: 0.3 + color: {r: 0.64, g: 1, b: 0, a: 1} + - offset: 1 + alpha: 0.4 + color: {r: 0.64, g: 1, b: 0, a: 1} + glowMaskMode: 0 + innerGlow: 0 + innerGlowWidth: 1 + innerGlowColor: {r: 1, g: 1, b: 1, a: 1} + innerGlowBlendMode: 0 + innerGlowVisibility: 0 + targetFX: 0 + targetFXTexture: {fileID: 0} + targetFXColor: {r: 1, g: 1, b: 1, a: 1} + targetFXCenter: {fileID: 0} + targetFXRotationSpeed: 50 + targetFXInitialScale: 4 + targetFXEndScale: 1.5 + targetFXScaleToRenderBounds: 1 + targetFXUseEnclosingBounds: 0 + targetFXAlignToGround: 0 + targetFXOffset: {x: 0, y: 0, z: 0} + targetFXFadePower: 32 + targetFXGroundMaxDistance: 10 + targetFXGroundLayerMask: + serializedVersion: 2 + m_Bits: 4294967295 + targetFXTransitionDuration: 0.5 + targetFXStayDuration: 1.5 + targetFXVisibility: 1 + iconFX: 0 + iconFXMesh: {fileID: 0} + iconFXLightColor: {r: 1, g: 1, b: 1, a: 1} + iconFXDarkColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + iconFXCenter: {fileID: 0} + iconFXRotationSpeed: 50 + iconFXAnimationOption: 0 + iconFXAnimationAmount: 0.1 + iconFXAnimationSpeed: 3 + iconFXScale: 1 + iconFXScaleToRenderBounds: 0 + iconFXOffset: {x: 0, y: 1, z: 0} + iconFXTransitionDuration: 0.5 + iconFXStayDuration: 1.5 + seeThrough: 2 + seeThroughOccluderMask: + serializedVersion: 2 + m_Bits: 4294967295 + seeThroughOccluderThreshold: 0.3 + seeThroughOccluderMaskAccurate: 0 + seeThroughOccluderCheckInterval: 1 + seeThroughOccluderCheckIndividualObjects: 0 + seeThroughDepthOffset: 0 + seeThroughMaxDepth: 0 + seeThroughIntensity: 0.8 + seeThroughTintAlpha: 0.5 + seeThroughTintColor: {r: 1, g: 0, b: 0, a: 1} + seeThroughNoise: 1 + seeThroughBorder: 0 + seeThroughBorderColor: {r: 0, g: 0, b: 0, a: 1} + seeThroughBorderOnly: 0 + seeThroughBorderWidth: 0.45 + seeThroughOrdered: 0 + seeThroughTexture: {fileID: 0} + seeThroughTextureUVSpace: 0 + seeThroughTextureScale: 1 + seeThroughChildrenSortingMode: 0 + rmsCount: 1 + hitFxInitialIntensity: 0 + hitFxMode: 0 + hitFxFadeOutDuration: 0.25 + hitFxColor: {r: 1, g: 1, b: 1, a: 1} + hitFxRadius: 0.5 +--- !u!114 &6899480242032072806 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9211739394093953175} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f0feb22ab60a4d1885271637838f43b9, type: 3} + m_Name: + m_EditorClassIdentifier: diff --git a/Assets/_DDD/_Addressables/Environments/Prop/MenuBoard/PropMenuBoard.prefab b/Assets/_DDD/_Addressables/Environments/Prop/MenuBoard/PropMenuBoard.prefab index 3dcee641a..205f4080d 100644 --- a/Assets/_DDD/_Addressables/Environments/Prop/MenuBoard/PropMenuBoard.prefab +++ b/Assets/_DDD/_Addressables/Environments/Prop/MenuBoard/PropMenuBoard.prefab @@ -74,15 +74,19 @@ PrefabInstance: m_AddedComponents: - targetCorrespondingSourceObject: {fileID: 4438924429928472453, guid: 1d634c3376e4a4684bc984ced9134847, type: 3} insertIndex: -1 - addedObject: {fileID: 2285326470091144097} addedObject: {fileID: 8104602334973352575} + - targetCorrespondingSourceObject: {fileID: 4438924429928472453, guid: 1d634c3376e4a4684bc984ced9134847, type: 3} + insertIndex: -1 + addedObject: {fileID: 4545680930728379745} + - targetCorrespondingSourceObject: {fileID: 4438924429928472453, guid: 1d634c3376e4a4684bc984ced9134847, type: 3} + insertIndex: -1 + addedObject: {fileID: 5410819217098966190} m_SourcePrefab: {fileID: 100100000, guid: 1d634c3376e4a4684bc984ced9134847, type: 3} --- !u!1 &580268897300907643 stripped GameObject: m_CorrespondingSourceObject: {fileID: 4438924429928472453, guid: 1d634c3376e4a4684bc984ced9134847, type: 3} m_PrefabInstance: {fileID: 3861763275173960190} m_PrefabAsset: {fileID: 0} ---- !u!114 &2285326470091144097 --- !u!114 &8104602334973352575 MonoBehaviour: m_ObjectHideFlags: 0 @@ -98,3 +102,215 @@ MonoBehaviour: _interactionType: 1 _holdTime: 1 _interactionMessageKey: Test +--- !u!114 &4545680930728379745 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 580268897300907643} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 888380afc233049ce9e618f9f36c8ba8, type: 3} + m_Name: + m_EditorClassIdentifier: + profile: {fileID: 0} + profileSync: 0 + camerasLayerMask: + serializedVersion: 2 + m_Bits: 4294967295 + effectGroup: 0 + effectTarget: {fileID: 0} + effectGroupLayer: + serializedVersion: 2 + m_Bits: 4294967295 + effectNameFilter: + effectNameUseRegEx: 0 + combineMeshes: 0 + alphaCutOff: 0.5 + cullBackFaces: 1 + padding: 0 + ignoreObjectVisibility: 0 + reflectionProbes: 0 + GPUInstancing: 1 + sortingPriority: 0 + optimizeSkinnedMesh: 1 + depthClip: 0 + cameraDistanceFade: 0 + cameraDistanceFadeNear: 0 + cameraDistanceFadeFar: 1000 + normalsOption: 0 + ignore: 0 + _highlighted: 0 + fadeInDuration: 0 + fadeOutDuration: 0 + flipY: 0 + constantWidth: 1 + extraCoveragePixels: 0 + minimumWidth: 0 + subMeshMask: -1 + overlay: 0 + overlayMode: 0 + overlayColor: {r: 1, g: 0.92156863, b: 0.015686275, a: 1} + overlayAnimationSpeed: 1 + overlayMinIntensity: 0.5 + overlayBlending: 1 + overlayTexture: {fileID: 0} + overlayTextureUVSpace: 0 + overlayTextureScale: 1 + overlayTextureScrolling: {x: 0, y: 0} + overlayVisibility: 0 + outline: 1 + outlineColor: {r: 1, g: 1, b: 1, a: 1} + outlineColorStyle: 0 + outlineGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, a: 1} + key2: {r: 0, g: 0, b: 0, a: 0} + key3: {r: 0, g: 0, b: 0, a: 0} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_ColorSpace: -1 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + outlineGradientInLocalSpace: 0 + outlineWidth: 1 + outlineBlurPasses: 1 + outlineQuality: 2 + outlineEdgeMode: 0 + outlineEdgeThreshold: 0.995 + outlineSharpness: 8 + outlineDownsampling: 1 + outlineVisibility: 0 + glowBlendMode: 0 + outlineBlitDebug: 0 + outlineIndependent: 1 + outlineContourStyle: 0 + outlineMaskMode: 0 + glow: 0 + glowWidth: 0.4 + glowQuality: 3 + glowBlurMethod: 0 + glowDownsampling: 2 + glowHQColor: {r: 0.64, g: 1, b: 0, a: 1} + glowDithering: 1 + glowDitheringStyle: 0 + glowMagicNumber1: 0.75 + glowMagicNumber2: 0.5 + glowAnimationSpeed: 1 + glowVisibility: 0 + glowBlitDebug: 0 + glowBlendPasses: 1 + glowPasses: + - offset: 4 + alpha: 0.1 + color: {r: 0.64, g: 1, b: 0, a: 1} + - offset: 3 + alpha: 0.2 + color: {r: 0.64, g: 1, b: 0, a: 1} + - offset: 2 + alpha: 0.3 + color: {r: 0.64, g: 1, b: 0, a: 1} + - offset: 1 + alpha: 0.4 + color: {r: 0.64, g: 1, b: 0, a: 1} + glowMaskMode: 0 + innerGlow: 0 + innerGlowWidth: 1 + innerGlowColor: {r: 1, g: 1, b: 1, a: 1} + innerGlowBlendMode: 0 + innerGlowVisibility: 0 + targetFX: 0 + targetFXTexture: {fileID: 0} + targetFXColor: {r: 1, g: 1, b: 1, a: 1} + targetFXCenter: {fileID: 0} + targetFXRotationSpeed: 50 + targetFXInitialScale: 4 + targetFXEndScale: 1.5 + targetFXScaleToRenderBounds: 1 + targetFXUseEnclosingBounds: 0 + targetFXAlignToGround: 0 + targetFXOffset: {x: 0, y: 0, z: 0} + targetFXFadePower: 32 + targetFXGroundMaxDistance: 10 + targetFXGroundLayerMask: + serializedVersion: 2 + m_Bits: 4294967295 + targetFXTransitionDuration: 0.5 + targetFXStayDuration: 1.5 + targetFXVisibility: 1 + iconFX: 0 + iconFXMesh: {fileID: 0} + iconFXLightColor: {r: 1, g: 1, b: 1, a: 1} + iconFXDarkColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + iconFXCenter: {fileID: 0} + iconFXRotationSpeed: 50 + iconFXAnimationOption: 0 + iconFXAnimationAmount: 0.1 + iconFXAnimationSpeed: 3 + iconFXScale: 1 + iconFXScaleToRenderBounds: 0 + iconFXOffset: {x: 0, y: 1, z: 0} + iconFXTransitionDuration: 0.5 + iconFXStayDuration: 1.5 + seeThrough: 2 + seeThroughOccluderMask: + serializedVersion: 2 + m_Bits: 4294967295 + seeThroughOccluderThreshold: 0.3 + seeThroughOccluderMaskAccurate: 0 + seeThroughOccluderCheckInterval: 1 + seeThroughOccluderCheckIndividualObjects: 0 + seeThroughDepthOffset: 0 + seeThroughMaxDepth: 0 + seeThroughIntensity: 0.8 + seeThroughTintAlpha: 0.5 + seeThroughTintColor: {r: 1, g: 0, b: 0, a: 1} + seeThroughNoise: 1 + seeThroughBorder: 0 + seeThroughBorderColor: {r: 0, g: 0, b: 0, a: 1} + seeThroughBorderOnly: 0 + seeThroughBorderWidth: 0.45 + seeThroughOrdered: 0 + seeThroughTexture: {fileID: 0} + seeThroughTextureUVSpace: 0 + seeThroughTextureScale: 1 + seeThroughChildrenSortingMode: 0 + rmsCount: 1 + hitFxInitialIntensity: 0 + hitFxMode: 0 + hitFxFadeOutDuration: 0.25 + hitFxColor: {r: 1, g: 1, b: 1, a: 1} + hitFxRadius: 0.5 +--- !u!114 &5410819217098966190 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 580268897300907643} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f0feb22ab60a4d1885271637838f43b9, type: 3} + m_Name: + m_EditorClassIdentifier: diff --git a/Assets/_DDD/_Addressables/Prefabs/RestaurantPlayer.prefab b/Assets/_DDD/_Addressables/Prefabs/RestaurantPlayer.prefab index 6c8c02937..40cdaf4d0 100644 --- a/Assets/_DDD/_Addressables/Prefabs/RestaurantPlayer.prefab +++ b/Assets/_DDD/_Addressables/Prefabs/RestaurantPlayer.prefab @@ -403,6 +403,12 @@ PrefabInstance: - targetCorrespondingSourceObject: {fileID: 5259510642736920361, guid: 3db3fc62639929c4ba6031ca4ae6600c, type: 3} insertIndex: -1 addedObject: {fileID: 388082324973004231} + - targetCorrespondingSourceObject: {fileID: 5259510642736920361, guid: 3db3fc62639929c4ba6031ca4ae6600c, type: 3} + insertIndex: -1 + addedObject: {fileID: 8993310060139522557} + - targetCorrespondingSourceObject: {fileID: 6791841979869644848, guid: 3db3fc62639929c4ba6031ca4ae6600c, type: 3} + insertIndex: -1 + addedObject: {fileID: 662634663174340165} m_SourcePrefab: {fileID: 100100000, guid: 3db3fc62639929c4ba6031ca4ae6600c, type: 3} --- !u!1 &7316134055819320434 stripped GameObject: @@ -469,8 +475,227 @@ MonoBehaviour: - {fileID: 0} - {fileID: 0} - {fileID: 0} +--- !u!114 &8993310060139522557 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7316134055819320434} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e1449eaee17884bf3ad10a841cab981b, type: 3} + m_Name: + m_EditorClassIdentifier: + blockOutlineAndGlow: 1 + blockOverlay: 1 --- !u!4 &7511707580127947132 stripped Transform: m_CorrespondingSourceObject: {fileID: 4993183601549197863, guid: 3db3fc62639929c4ba6031ca4ae6600c, type: 3} m_PrefabInstance: {fileID: 3275709266858077019} m_PrefabAsset: {fileID: 0} +--- !u!1 &8301489204453483371 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 6791841979869644848, guid: 3db3fc62639929c4ba6031ca4ae6600c, type: 3} + m_PrefabInstance: {fileID: 3275709266858077019} + m_PrefabAsset: {fileID: 0} +--- !u!114 &662634663174340165 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8301489204453483371} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 888380afc233049ce9e618f9f36c8ba8, type: 3} + m_Name: + m_EditorClassIdentifier: + profile: {fileID: 0} + profileSync: 0 + camerasLayerMask: + serializedVersion: 2 + m_Bits: 4294967295 + effectGroup: 0 + effectTarget: {fileID: 0} + effectGroupLayer: + serializedVersion: 2 + m_Bits: 4294967295 + effectNameFilter: + effectNameUseRegEx: 0 + combineMeshes: 0 + alphaCutOff: 0 + cullBackFaces: 1 + padding: 0 + ignoreObjectVisibility: 0 + reflectionProbes: 0 + GPUInstancing: 1 + sortingPriority: 0 + optimizeSkinnedMesh: 1 + depthClip: 0 + cameraDistanceFade: 0 + cameraDistanceFadeNear: 0 + cameraDistanceFadeFar: 1000 + normalsOption: 0 + ignore: 0 + _highlighted: 0 + fadeInDuration: 0 + fadeOutDuration: 0 + flipY: 0 + constantWidth: 1 + extraCoveragePixels: 0 + minimumWidth: 0 + subMeshMask: -1 + overlay: 0 + overlayMode: 0 + overlayColor: {r: 1, g: 0.92156863, b: 0.015686275, a: 1} + overlayAnimationSpeed: 1 + overlayMinIntensity: 0.5 + overlayBlending: 1 + overlayTexture: {fileID: 0} + overlayTextureUVSpace: 0 + overlayTextureScale: 1 + overlayTextureScrolling: {x: 0, y: 0} + overlayVisibility: 0 + outline: 1 + outlineColor: {r: 0, g: 0, b: 0, a: 1} + outlineColorStyle: 0 + outlineGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, a: 1} + key2: {r: 0, g: 0, b: 0, a: 0} + key3: {r: 0, g: 0, b: 0, a: 0} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_ColorSpace: -1 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + outlineGradientInLocalSpace: 0 + outlineWidth: 0.45 + outlineBlurPasses: 2 + outlineQuality: 3 + outlineEdgeMode: 0 + outlineEdgeThreshold: 0.995 + outlineSharpness: 1 + outlineDownsampling: 1 + outlineVisibility: 0 + glowBlendMode: 0 + outlineBlitDebug: 0 + outlineIndependent: 0 + outlineContourStyle: 0 + outlineMaskMode: 0 + glow: 0 + glowWidth: 0.4 + glowQuality: 3 + glowBlurMethod: 0 + glowDownsampling: 2 + glowHQColor: {r: 0.64, g: 1, b: 0, a: 1} + glowDithering: 1 + glowDitheringStyle: 0 + glowMagicNumber1: 0.75 + glowMagicNumber2: 0.5 + glowAnimationSpeed: 1 + glowVisibility: 0 + glowBlitDebug: 0 + glowBlendPasses: 1 + glowPasses: + - offset: 4 + alpha: 0.1 + color: {r: 0.64, g: 1, b: 0, a: 1} + - offset: 3 + alpha: 0.2 + color: {r: 0.64, g: 1, b: 0, a: 1} + - offset: 2 + alpha: 0.3 + color: {r: 0.64, g: 1, b: 0, a: 1} + - offset: 1 + alpha: 0.4 + color: {r: 0.64, g: 1, b: 0, a: 1} + glowMaskMode: 0 + innerGlow: 0 + innerGlowWidth: 1 + innerGlowColor: {r: 1, g: 1, b: 1, a: 1} + innerGlowBlendMode: 0 + innerGlowVisibility: 0 + targetFX: 0 + targetFXTexture: {fileID: 0} + targetFXColor: {r: 1, g: 1, b: 1, a: 1} + targetFXCenter: {fileID: 0} + targetFXRotationSpeed: 50 + targetFXInitialScale: 4 + targetFXEndScale: 1.5 + targetFXScaleToRenderBounds: 1 + targetFXUseEnclosingBounds: 0 + targetFXAlignToGround: 0 + targetFXOffset: {x: 0, y: 0, z: 0} + targetFXFadePower: 32 + targetFXGroundMaxDistance: 10 + targetFXGroundLayerMask: + serializedVersion: 2 + m_Bits: 4294967295 + targetFXTransitionDuration: 0.5 + targetFXStayDuration: 1.5 + targetFXVisibility: 1 + iconFX: 0 + iconFXMesh: {fileID: 0} + iconFXLightColor: {r: 1, g: 1, b: 1, a: 1} + iconFXDarkColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + iconFXCenter: {fileID: 0} + iconFXRotationSpeed: 50 + iconFXAnimationOption: 0 + iconFXAnimationAmount: 0.1 + iconFXAnimationSpeed: 3 + iconFXScale: 1 + iconFXScaleToRenderBounds: 0 + iconFXOffset: {x: 0, y: 1, z: 0} + iconFXTransitionDuration: 0.5 + iconFXStayDuration: 1.5 + seeThrough: 2 + seeThroughOccluderMask: + serializedVersion: 2 + m_Bits: 4294967295 + seeThroughOccluderThreshold: 0.3 + seeThroughOccluderMaskAccurate: 0 + seeThroughOccluderCheckInterval: 1 + seeThroughOccluderCheckIndividualObjects: 0 + seeThroughDepthOffset: 0 + seeThroughMaxDepth: 0 + seeThroughIntensity: 0.8 + seeThroughTintAlpha: 0.5 + seeThroughTintColor: {r: 1, g: 0, b: 0, a: 1} + seeThroughNoise: 1 + seeThroughBorder: 0 + seeThroughBorderColor: {r: 0, g: 0, b: 0, a: 1} + seeThroughBorderOnly: 0 + seeThroughBorderWidth: 0.45 + seeThroughOrdered: 0 + seeThroughTexture: {fileID: 0} + seeThroughTextureUVSpace: 0 + seeThroughTextureScale: 1 + seeThroughChildrenSortingMode: 0 + rmsCount: 1 + hitFxInitialIntensity: 0 + hitFxMode: 0 + hitFxFadeOutDuration: 0.25 + hitFxColor: {r: 1, g: 1, b: 1, a: 1} + hitFxRadius: 0.5 diff --git a/Assets/_DDD/_Scripts/RestaurantEvent/InteractableHighlight.cs b/Assets/_DDD/_Scripts/RestaurantEvent/InteractableHighlight.cs new file mode 100644 index 000000000..2bfb7f17b --- /dev/null +++ b/Assets/_DDD/_Scripts/RestaurantEvent/InteractableHighlight.cs @@ -0,0 +1,155 @@ +using System.Collections.Generic; +using UnityEngine; +using QualityLevel = HighlightPlus.QualityLevel; + +using HighlightPlus; + +namespace DDD +{ + public enum InteractionOutlineType + { + None, + Focused, + Available, + Unavailable, + Objective + } + + public struct InteractionOutlineData + { + public Color Color; + public float Width; + public float Opacity; + } + + [RequireComponent(typeof(HighlightEffect))] + [RequireComponent(typeof(RestaurantInteractionComponent))] + [AddComponentMenu("DDD/Interaction/InteractableHighlight")] + public class InteractableHighlight : MonoBehaviour + { + public static Dictionary OutlineData = new() + { + {InteractionOutlineType.Available, new InteractionOutlineData() {Color = Color.white, Width = 0.5f, Opacity = 1f}}, + {InteractionOutlineType.Focused, new InteractionOutlineData() {Color = Color.yellow, Width = 0.5f, Opacity = 1f}}, + {InteractionOutlineType.Unavailable, new InteractionOutlineData() {Color = Color.gray, Width = 0.5f, Opacity = 1f}}, + {InteractionOutlineType.Objective, new InteractionOutlineData() {Color = Color.cyan, Width = 0.5f, Opacity = 1f}}, + {InteractionOutlineType.None, new InteractionOutlineData() {Color = Color.clear, Width = 0.5f, Opacity = 0f}} + }; + + private float OpacityMultiply = 1.0f; + private HighlightEffect highlight; + private RestaurantInteractionComponent interaction; + private void Awake() + { + // Cache HighlightEffect + highlight = GetComponent(); + interaction = GetComponent(); + + // highlightEffect에 alphaCutoff, constantWidth, combineMeshes, outlineQuality, outlineIndependent 등의 필수 옵션이 켜져있는지 확인 + highlight.alphaCutOff = 0.5f; + highlight.combineMeshes = true; + highlight.constantWidth = true; + highlight.outlineQuality = QualityLevel.Highest; + highlight.outlineIndependent = true; + highlight.outlineBlurPasses = 1; + highlight.outlineSharpness = 8; + } + + private void Update() + { + var currentType = GetCurrentOutlineType(); + ApplyOutlineType(currentType); + } + + private InteractionOutlineType GetCurrentOutlineType() + { + // interaction이 null이거나 컴포넌트가 비활성화된 경우 + if (interaction == null || !interaction.enabled) + return InteractionOutlineType.None; + + // IInteractable 인터페이스로 캐스팅하여 상태 확인 + var interactable = interaction as IInteractable; + if (interactable == null) + return InteractionOutlineType.None; + + try + { + // 상호작용 불가능한 경우 + if (!interactable.CanInteract()) + return InteractionOutlineType.Unavailable; + + // TODO: 여기에 추가 상태 로직을 구현 + // - isHovered, isFocused 등의 상태를 체크 + // - isObjective 등의 퀘스트 상태를 체크 + + // 플레이어가 현재 이 오브젝트를 포커스 중인지 확인 + if (IsPlayerFocusing()) + { + return InteractionOutlineType.Focused; + } + + // 기본적으로 상호작용 가능한 상태 + return InteractionOutlineType.Available; + } + catch + { + // CanInteract() 호출 중 예외 발생 시 안전하게 처리 + return InteractionOutlineType.Unavailable; + } + } + + private InteractionOutlineType lastAppliedType = InteractionOutlineType.None; + + private void ApplyOutlineType(InteractionOutlineType type) + { + // 같은 타입이면 불필요한 프로퍼티 세팅을 피함 + if (lastAppliedType == type) + return; + + lastAppliedType = type; + + if (highlight == null) + return; + + // OutlineData에서 해당 타입의 스타일 가져오기 + if (!OutlineData.TryGetValue(type, out var data)) + { + // 데이터가 없으면 None 타입 적용 + data = OutlineData[InteractionOutlineType.None]; + } + + // HighlightEffect에 적용 + if (type == InteractionOutlineType.None) + { + highlight.highlighted = false; + highlight.outline = 0; + } + else + { + highlight.highlighted = true; + highlight.outlineColor = data.Color; + highlight.outlineWidth = data.Width; + highlight.outline = data.Opacity * OpacityMultiply; + } + } + + + private bool IsPlayerFocusing() + { + // 방법 1: 싱글톤 패턴의 플레이어 매니저 사용 + // if (PlayerManager.Instance != null) + // { + // return PlayerManager.Instance.CurrentFocusTarget == gameObject; + // } + + // 방법 3: 정적 참조를 통한 현재 포커스 대상 확인 + // if (InteractionSystem.CurrentFocusedObject == gameObject) + // { + // return true; + // } + + return false; + } + + } +} \ No newline at end of file diff --git a/Assets/_DDD/_Scripts/RestaurantEvent/InteractableHighlight.cs.meta b/Assets/_DDD/_Scripts/RestaurantEvent/InteractableHighlight.cs.meta new file mode 100644 index 000000000..17a30d9a0 --- /dev/null +++ b/Assets/_DDD/_Scripts/RestaurantEvent/InteractableHighlight.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: f0feb22ab60a4d1885271637838f43b9 +timeCreated: 1755082447 \ No newline at end of file diff --git a/Assets/_DDD/_Scripts/RestaurantEvent/Solvers.meta b/Assets/_DDD/_Scripts/RestaurantEvent/Solvers.meta new file mode 100644 index 000000000..a4ec90de2 --- /dev/null +++ b/Assets/_DDD/_Scripts/RestaurantEvent/Solvers.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: c463c6dc93a04ffea1ab895e7c4a3063 +timeCreated: 1755082332 \ No newline at end of file diff --git a/Assets/_DDD/_Scripts/RestaurantEvent/RestaurantManagementUiEventSolver.cs b/Assets/_DDD/_Scripts/RestaurantEvent/Solvers/RestaurantManagementUiEventSolver.cs similarity index 100% rename from Assets/_DDD/_Scripts/RestaurantEvent/RestaurantManagementUiEventSolver.cs rename to Assets/_DDD/_Scripts/RestaurantEvent/Solvers/RestaurantManagementUiEventSolver.cs diff --git a/Assets/_DDD/_Scripts/RestaurantEvent/RestaurantManagementUiEventSolver.cs.meta b/Assets/_DDD/_Scripts/RestaurantEvent/Solvers/RestaurantManagementUiEventSolver.cs.meta similarity index 100% rename from Assets/_DDD/_Scripts/RestaurantEvent/RestaurantManagementUiEventSolver.cs.meta rename to Assets/_DDD/_Scripts/RestaurantEvent/Solvers/RestaurantManagementUiEventSolver.cs.meta diff --git a/Assets/_DDD/_Scripts/RestaurantEvent/RestaurantOpenEventSolver.cs b/Assets/_DDD/_Scripts/RestaurantEvent/Solvers/RestaurantOpenEventSolver.cs similarity index 100% rename from Assets/_DDD/_Scripts/RestaurantEvent/RestaurantOpenEventSolver.cs rename to Assets/_DDD/_Scripts/RestaurantEvent/Solvers/RestaurantOpenEventSolver.cs diff --git a/Assets/_DDD/_Scripts/RestaurantEvent/RestaurantOpenEventSolver.cs.meta b/Assets/_DDD/_Scripts/RestaurantEvent/Solvers/RestaurantOpenEventSolver.cs.meta similarity index 100% rename from Assets/_DDD/_Scripts/RestaurantEvent/RestaurantOpenEventSolver.cs.meta rename to Assets/_DDD/_Scripts/RestaurantEvent/Solvers/RestaurantOpenEventSolver.cs.meta

bI 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%0A$2IMMGF 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�Ro=xg1 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≀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%0AA=1ov^*wMnPPrz? z<7RySY=5ORHfDP3xNO^#Jbe>#eRj@DL`Yq^+;M*q8xLK)w|vADJi}uqh?>VqpRjk1$RqowD`dWuLD z8yZ}`l|}$##h;6HT_XPuy#&AH;E2)RW(a-UGq@wy&|m8>B%!C?y-7vlhI0(pPL#9F zxp1JL=N}mm0#hT`q5p1e2_JM3n)p>*SOyZU2FYoOPPxRk14uDA8umfe;!Fa43wB*o z!U0zt`st!QdL#+|>)){4Fdi#0lGyJNm`s?pJG8rVpS=r)`fudDRZt~iv#yD|Yd7xh z?$EgV!ri5DcWY?ep>fv*EZp7QT^g6h-EH{yiI|C)*%xQe?YXVUlE^QkUrUyc8VxofXs6EsWyq@RAwKsvO?Kd=uF{8q?wuwvSpm6UqC)6mE(CqoDh*1S zx}j1ff4WuOle(Cnkw!p<_fuQNRbQ8 z5RjX(km_8;OxLx_eEuw-jmTo_mR#enmxdD{koYKE|7|svBsSw;#;JucV{ihZIaleG zn3oS?8Nm+lvTpJzbPRZm?rGuhnq%(l>|WU%Z>xp3+Vfx`imwlvR?Y#Vl|~zH%>NEv zT~fGc&6GA&K3lH)iK`bK0==~=pIZ(wM*}DxK<|WE^_7<2;F#}ki4Szwn+C(ilgqyW z>=%Wm)SZw^KykTzbl6JDO!35CvhIrMO(-%tS6tP~jkBWt&#B8#Ri;q`x;X*D76&mP zAIX)9B!YweN+6Poxf}PqGGR;@_wxJ7q?ez=p34x-i~^?m#ygwrE2)pfDkxEblvZ19 zhQeR=YH)cX&O$Y%q+r_AZ|hDgn8|I5g}_eojL7K z)2iV*CvOx8lJ8)#UV@=;e29k|%bM`-b%;4u)jUa@gEZhj;<SxUFQ^tq(o_j^GX)e}Ev)+M76cr!ft~X%24;jX_*wZwJ5fx`h?) zD2wS3mx0Z#@=NjYN}ZVx_(K-g5@yP-yurIA{OeT3xenF$d1a^5f^bcSLm#&(vBzR} zi9es4+Rn|*Lx`R+N1QrSJKoiy@$cfxC_|unKrn7Z<$1gsFPr&fbR^Ph5@I&Z7@Mdp z6P?}!GX81)woIZp#PEpN7|Ua!Nntx{lc>e$^L3XZTiL#8gdf~Hg@vhuFYAXt7lK_i zLF@<_8LzC`x+@s2qp$2r^UZN^Xs#@{<$}soimGol0W_g2Qxsfu#=2B-3iJIi>urj* z>2rp7r5wi|lOuDS^JkRTA$cJxBj00HlUw*gF~LZUsDDC)BYjs@aA8_L1O(cjN^JG1 zayTx6;rN9+G)677scQNDJjw|&yx9GNkslkt-FZ~zhD8>cP})ai`#@CC28efBw{}Ke zGg=H~Wv*H?ZG35K?k|}2j%H9QY*YYSP3#0==+TcK6U5gbkP&?xTE~SnnBYuA{C*)B z%y&z%Noy`^6c|*^`2oORLPZ;E#pd6irU|f}ooz;^h&9g$$Doq+=@UHwYsZ$~>o3Df z?e&300*)jvuRgzUhwdqf zp%5R7I{Oi|k9tL7-N9jZ(KHaF2EjA0$tV5NEO8vb{>DOXxeU?EYdnx&Aqn#f7Epb!BY8LHe?QhrJ zhuCItSRz2;ibMM)!P+Z|p75krE6NOM#Z&lE0aaTcatL!D8Pz4`jYbsZ;7stOA^t5W z=u+2}@lKS13ySufTs-jo3Kiea$`(56WL3<$gyVl$d zB+#SP&}_OiBmJ#U=HYd-t0zC8UX)$qnaK^cewF&ul_-vzg4otd9vU^QSNI`p{^w|= zHm5lG#cz@V?kiJLepx)v2;d~}U1eXQg4nm6#3J*5wA z1}tWC40pEa=x^HF?~(?dQuQ-lF(DOL+f>Fg^j$OuO0btV9$qdVY5S#kvT&>(r=6ok zW(o<~$H5|wd!GlckU;xOzjEh7oQ+5XL$ag5(-=s;%%x^nECidj>UU@y1RaE2tIoTm z*c0^M;$`AJBbhXdDirM(>>^qtH!C@*vIcH*APUq1Q_EbWc<2bV2BTn_#Vwgf*1@)O zE#N>dzcgYP0J*S`B{?eCy%lyiX1mndGfV~Sr4VJ>9a&|Fu|zhiENP-f<^1Q~x{D9m zzYnfEOBhkI3b4x)#?3((2C@LLGk4nvd$qq;I8!=bEV?&rMdHDUZox}>`bby9(<7fc zgr5$fCSBBM0LazAqf7n0Pude?)|c|mLH8;QUpqfWb9Jnx7tu(q+mJ9B)^v;#Fz-Fg z)%S%OO)6tK9nORk9y4b%b(A@-&eY=RoV}8|S~@$0(|wQTX;sZ>CuCsSBre0P>G+RZ zyv37gUuTN9`*p8?&}&GJ>}O4hPK~+-i>`0QXDa1mm+yF`adx0>P<)s6c~gJuCb&;~ zOX>?8@8SC-B4Z>765Ip0zmU>M!P>wA<{ac_#);KqrTt6TClc9}+k?H>55|uJ2V4Wg zse^FTLoq!aRW7IC3M>nQ#v!iyh8T-f)>FVu15GmA+l4oX5#OhFr%T1qgB6ECUf?LV ztx#g0PSHtUX@#1b_&WwmQ%z!mikl(4bz_2@UxJyG@J5?xQH^EKD~IE3m2PSOV6IxH z_a8qU|DN9Xx753SZoluu;x0RwKe}X}+V5~L2}JZE$HT0Xc9XBVR4`X{dOFCcd1g;b ztz+ty`~Vv@Y^AJaVp(&V6zX#`?v0L$xsTsp9^^Wr2}39}7`d$F{lj{RIfIHrv%~i2 zeVOA$TV-mlvA2pgF-Rh@rB;ifD04S%g8|#S%SJIjPlQ(6d=`$wb~Y(h zHGzir1M0cuk#>A*Lxj}XiM=vZM+yZWNoBoUEhq;}s*Sge$<^~qrGnLXjSF2I$OxCW z+V7D^i|I>h32g5Z2&x2!%My0)Uu5I)NJy;pj3|-A`t;^JNIYW+4-YH$Vs4AtrH@<3 zb_}0Q)sf%dH08O&l$Hiwl3=jvlAQ304rkxqF{Csj5q?pi*gcn_^n{HB4y)>9=76Jm zOZ3V7y;t>O>s=~r9V>pXK@0XsT1CyvgwKWzrJh=UM1Cb7`!ys|vi^4Ja?oefuLL0% zqCTTrFi!xm8sYZUfom5tf{a6>NNjs8Aim{RBpyZ<+Y9hMH3?3Vf`CFugGp+zKsl1+ z>>6V>^zj_kt0k}^-#o19(ZP40EGoj%5Yo@4^Y{w}zHlSWzUPeXUvd%{*TA0Z5IFaE zv|>D1MBI$K(XIq5&#k5QsTL~4e$7iGg< z)#?C>lUJK|06Y8rOpywGY2pyL;5X0>2me5-(vwy%Jjg%7+wxgD4Y5WtO5IHc+ANJ4 zqR3B<7l^Rp%L@4rX=+7%Z}s(Cmz@51+HuHVq)r?e=#%%w>OsOmdoU|yVlM0C)I01( z{_}JGsZ?b$3W>p+JdT-U4Q3+DjyQM}5%Z6_FGI6t4fF3rcxWw45TF$Tm3l;> z{~m2zE>s1Sh$gWK;Hji6D}|ht56Hi!n%0})c(iI|NMxvf_l&Y&=46xBu<~Aqup(hS zsl9(${`dW1w8msENHvqyU_wn$G~Ms!9U+c|srA*W+RaP?!Eoi$DrUZ56r-DpcVM#a z&jN*aM_H&06FAtR8yEaE3SEKJBXUYtvR-M|!)rq2If{blFFt2?RCBO9b}|QJmIg>%QZpjtquhO zW^Xkkh8*P5Xc;?1X1NT%6#llu;+=1hY@hLknJLofN`<`0{Dsv?b~}8ZqkfI!u=__Y z+M_bXza|B(lnZA(*Qr+`hyjl+ru~poxTcwLO?4x;dCLON!00c)ut4JI7S{C}&sCY9 zlC|8f8`Q&NF&(UW(spYO$KV9TEQdM1ug zK6vV*>te&?ftL9k`chMU+a9qnnTQ~LBtu!pYO{(8F4TA*Q&f>}G!UbG=ZS{j-qr z87=OvU*2AG>%90SVnf+A1l8s9XB!_oM!VUw;Cvk`Fcl7GrZKt%Bxh`o~)PVS+Mrc&pO}|V7!%30Lrq6nf z`A*<3%Vfzb6P%>VLDm;}eyd(AM=VG^q3d{+xl0hKf3{%RtN^-KS#38CuJ&`A{8VvF zo-N(G&T3hshPY$}XjCRwL?@jD)fdut&gi))`Y4l9X!xN5T!rDgUpv6u3P+@a46`;I zgj5g8OD-JZQ}VB8#N)r~a%)hK9A(`lh`ynBXMSDb7Kh6|c-uO(X zyUYL~Yh4LB^Bb0u7)%b?Cg2=O!5=v@lG;%sEPU;TM_txNiQ^hu+gf$3VFxCi#FbjP z^siQ;npx8)M3kfJw`9h^V|bN}YQ51&o$!7iRrHBMRW(39T_laG^3QL{z7^_AvZd_B zv7Zg<=WI`GZziT)-J5k~ZQP|N58g9WjO)3B;9ogn6Ai8ipU1)W&vh7T2N&vU0Y|z< z3HSMEl(lz2mq9t=B2kg-+j45STu!C=*(~*i$BO{~Vx|LNmt^1#$Wt)>1vrk4!tXE) zc25_K{_XzO9>{GyL;n6s1vsywq}s3M>vE*t*Rz(=W*$|RO?1E1VZTK`wx*b-oYT}{ zhBq=10sAmD7H0sbqXhT$Bppx!5N(nx%Gye9mU3=NT@(5&Fqx|oO{vaJ-#^+#%0KZh zLb1#D&Y#gf+f@v&a~6?U1kPZNkY}f)4&%m57QR$MFcimD7vhK2@l~)iFN;F z)`R&wHaVdI&P3py>tNnT6Pm8KDe*kl44r1PYf1=mSBKn=$YxHPf2l5+bUz9pIsBO6 zZoJzDc%?`sJZUl%CPWyLw;tW!1gk>eU5MmQF*-Bq#qq(*_oGMzCr zhuf@{_85JC;KSc~2c!c8XZlBv$1m`E*nPWuR*rNVJB~(D_EYXl0gcC}N%%eHHQG;p z)N_EBH7_pL8$2hlOzzIQLxTIcC(ZuK^X$`Fw5|yreh}wy)n)4n{MjwwBRh`UrhhtzF4uhua|dxszf0hv zZ)6UK0#L0sGA;51gYuHN)o(m4i$=x@-ot|x3(d63lCemvWM~zKN2*K2Pj;-u3?s7a z8v_XXV%NzHH=3oo;EK@z2I;v&ET3u1Yk6QM_fAwg`5um_7tk3U7}?v)8~zU+v~`oX zINUue^(o@oQ-M15rR+PUoG4?hWR*emr$0AyE(W8uAe3M{ZtoJSoQKYo_EM3R_cO|0 z8dUY$IfGa}XMdk5@MJIe^9qD^^gB%GxAHpIvz3pE{3V4No-t2Kq2Hu^};T_r6pD z^R!3jQ{4o_`Vk^k{YoF#6TG$EQZY*By|I=Kkcy-_tzc=1SIgzjfy>A%VQ>nr>^;@T z4_COOzKHE}`2MbO;1@4(8=kUuF=ctm(eGr0(mcQnPlwfQwzLGDoSbFh;PH5!g6I(V2E^}qhG?(;CHAUwGH%<-((yv@Mf{ImUmo+e4ZU1`M2M+~sZtCd=B>A!4wgn4 z6{=ZzUoWhbMey4#LX|D@B9K=P?D9?dKR)2u{M&M%#7FsT(Fb>F?Yy+{8s!&$eO;q# zZAx3X^FVxY-%7M# zyPe}u=8twbVo^i$N`2bnujM|W9?|rfWXTF5#X}M<|ERmXb2?A%j)V7AX~rPnnp?pv z@rhQ&E^S1@ng5U2Jwazk<$!j-%b&pqO%;FMip*SUP>DQ=c0Qx+p~*;}m2$RFv`#SqPS zZstg+@YDj~?n6FAofUO4$z7M@&~I1BQ2FLyQ%HMFf`!LrL7;{5$P!Z zEjqdlozr6j4;7vm}?!8&etj91>{+g4EXPIb#HkFVIL;uCwPMWIqA1?blz9DHLJ#>jjdejKHX z?*uRUjFe;c!t6s<-wE{HW&Tw*s{}~e@Xnb0J$#(TaNbu*7OLb&^>6{9dbQw0)UQjU zvSB}mvs)pcr`_i>6JG->E$KDr=u{{)81a+o?O!zSi3=V|SDnzPW3k!%fF2Po%}}tG ziiR@1(4^OM9Zp{eROiZPSD;Vz3tXJh(v8~piCX~mFrn-WQ_eB;y;J-`y+qvu%Ckc5 zxp!5@M%A<#!57~DDBa!6K)bQjjN%4&+>iCSZv}SMLA2Yg;Z*r$*Ccg?26KWlY7qBR z9H~jqjp(tpQ~?Kr?|IR|X3txXvt~T%_~l zp^-H2&FL*#?7T}}55->vhhgY>TQL=eUoW*7b__eI9Yjuh{uJDR<=|GSsul zBa-}Sf!WaO*CU6jvue3@x1CK%nQ6`de`7}x|5!ITFo1-WY~n%f1E6v|G|$2Q@8{CP z>o{FTQiN%SR))2(Sve`jWY7Z7vk3~eo5OPA0>{>^F1N60}>Q3|xG5XS5{NaeAxeI)&xIS@y@e6!)H zrOD;+y{nC&&V97!81Wy`w_e@fm5Ooy%G<$JucrXjrr8P7@rQZaO>8F6-jNH-`!n4) zf3<0;J^ooYMa@m&+6QX!-o>G)V|(xJ}7`&brm}v=BQol7tsc9+2sI>nMiCh9E4byF=r=G{f=MYuNsIg}> zF~!LNZn|Iy6+rsIoVsPMbJ*@{MO=4iGRXMel}U+LuN9)N?1QRSgq!z7mHn2_c59$- zKf(9LUVJx`gD*No&%qr<$T>v3MMYgqR(4u$7U^-k2k%18*mhykq)&+4~A?Y$fQOz^~$1t=V`OJt-(qSJC0 zB7^ZY=*vp9dhS7q6XUZ6L2B-$c^2m5!v=!Z*h67rEzkM17 z|CRq>{$#gl_-}A2+${fNT+06r5t$2tS;pSg+}Y9Lr?IO!iG}e`7jpz=d2@S9S1S?@ z9xk^3pG0IfZUiAA1Q%Clb7MOM&#d#zWrxCJx8G7JMbeQHl^9Xd3CZG-bn2Jtmu?(@ zddc``OrOpsOJ8&-a3mi0EVm`aAMuFQkWixxIQW+63=pvJs)0t9NCQsJe>`0(oW^iI z(Z{^D;)?J9VFhY4hk<2+|tqLEUy;k9MleLCoNTB{wr>#KE5a;`sgd32mQu$SqV#~-n7C<#<}6QD z&wCxpz2$ekJ2>v=h`?+p6!0;{pKFNLRa7-W(m|%8tz@#FKvic3YNqJE%_gq!N6lLC zIch!{(XhZU2(9cd7?@zsI6Y-ty4ZSeJ(02;{T+8eQP~zeH5Q2x5+@L0U$^!p>b?&| zulhVZ$(orjPrCstBYLJT1}lhKDD}8#mmasQhWF0jnLO}r#C!;=ze{ufu|z+QcB55mDBeH2g$^iq@v>+0navQ@HIV8} zWKI$dJ_PGom)I23wp*2teyY4Pa1+`YcfNFur4?|R+c|o@=Su;Ji;!qWQgG(VOKF~Y zHxz=dY=Oju0#6$E^zCD3v>~;dhgTfXM2RDHVUh1Yc(1Uh`if*rTr>O?zy8LG`pi6e8IS0+x(|Jol|V*ywuG$mQufSvz35nDU1> zZm@Ci8N?>F#g|mv`*-1seEgn!(l?HJ&UYoCxmHk+W?$R>PhfHLo_x{m5BanWa}7uu z;O15pgp)FlAKu{ck#PbXPZ~a|re`dTk~p|}>bDy;h!&1^oeIkC+ngIE_EQ+a*b)YgGyE(-J+bW5}RZzU%> zdpF z)51<~$l@5~`7&?%?(j7v4h*psiQL$3ROt&zeuZk6WlWf7mjSxDM^?pt%Egny2@95= zDsJh4semr{wDEu(5%r1gXC=TNcq{GiuGG{<=3JlVhg-oXbU}Ig9=k*=?4SSM=x>N8 zySFs;DbN^Blm_l6-YS~g-xEAhC%ZiWxbRTjF3#FA02m#>%^N>ka3k`0LtKF4nXXX5yRIF>hHW3 zDIt(u`~g%IVu*q4a2}V$uGQdwS!94aDLU6qOC5l)eGh$a%FK~N)MNkCv8kmHBu|2L0eMexA1K#&QfJ^g<& z+ynMymGj?3&3EgCU4o~6dm5v{X8~JvOa(%ze`(SGwH{Ye{69rBYj--jb@YOPsyiK^ zU|{0T26zh$fD*#}|CIHrR2~df1GI7i5Ko%{Ut54F?}UAk6QXyTv9uzRLbczzj1JpB zO9>F8SaxFzT(bX^cS{iY%D5+U91w`7uiq(HYV+#1C;`!{TUz!-E$>S8oL2VscYDSE zPaWXq0AN!CT78XGIeDAg?kT_Get2}M7`kXJRz=fg&g0r&5`AsYRd4;Ts~S~T&u6Ox zY`^Ba74n-vLD#DXll;WxAdIui&(OaN>V%ba<-iPe?d+Jzs_b`D_HlfEV&H$3yk#nN zz=4Xn69IXFwjn3eSv)ZpaY-R{ddbH#toD6K5P1kwT7 zG*4Y?P6*LqD}1yx#-8*0O$5q;b#0Q&(>=RJoV?v_ZjY}(L})`h9)E~b%$hbyOO|y# zg`Ed^sJF-y(I3R-ZhRU5A~gU&0Z0Q8W(HNH=R}OD%o=b!2GujBORfH$5ygRJX_lLh zGIensD97lL!$%AF7dt7;2w_9KI*zDYTgd{B&AwferdUa*N|~B6g1u{FZDeBa<#N>P z^7XRezVyL6kpS|v0qy?+v6=&0%{l25H6C-yn3_6TlRN-~ZPizEq*}gajcsm6q`{%0 zn-0kpz{8a{el3k%GfJjq%RjV`1yxwi%U{8x=EZ&}yEYiyO@(Sv$>1KJa&Dam0 z&x!z8JM%h@8K@#89^URcucO{(0IpuwM(ML9*FsKKKsr*{GF#r$#Fx)i@SxZ)5s5d7 z?NN^kR{=;asie+bD+#+$yW((Ip+8k!iXLo0Vg#I2m^e6`)uxxAlZ^2sVFYi&)rv@8 z;6AMuRFtx9orm~_)`r&=+^8tHFmjY~LVAFgx_Ot;4?AqD2oKb;rnc9s@{_vp1gXgw z#mrU5Gklg|>b%rt(}Jo)4K9z1OA{yq{(y~L-2C0A(nzUwppGSrHv78G&x|RJZ$Zn` zN`*gW)oAW(`SUw3&!(_EMN`nPB*Zn zv2)BIKTp-@o_16sQXM^f!?AuWmBf zdFNcbvUN0tUoG24wp~9lH#GdTSbVx?W#Mg%N&>N^jp##gm5wcR(5y_by}V8nhfF&h zU79w2Y4POni)&l$m-j+D7DVjU7p015VXeU^PAcNSF_puLfH3Q zVR72&_BrXo^KRyezrMVoT6}o{Z(wKaKTX#IveFa-$S$!$%23RrTc>L!DO}|Rb5BW+ zHrrIT0bl{OrmrxG9*IMqR4-?%%K^D_BK!PwpRA{jlJGG_7?5r!L9VPxy$o>S*sS_$ zKJT|@=TX&#rza2gmVJ`!jBCs49nx(}DnF<+?|CZBCc+ zyA^koQcg6=+#R_Z6B{MjphTvuExlK-S;I<}fgugv;iYeEX3WdHrHX6-}`@{&>MIQS_&}qDvP{!LJ9;`#$W)wY^;+PX+=j*U_9g zfZCG}CxA?6<~mYOoA9DUq=j>Kk)MZ;SFpQ*&TMvS&F==%H#q=a$nSCasDxS)Ms@VT zYUI*w&0Gm!D48^^0s6=AvsSGIu1VRn7)Ej^v@+#BrfS{n^dscA(xyL(e)WLm z=kulmh+%44J{I}$(RJ>sF#e)u)=QTCUUvSnrULJHOj2xyII_uY1}nJ^=a1$x_vjMg zoJ3dG%R8#@%Rk%}GJ(u#q1RR6&#TkS(~9w^1r-WlGy5!_^@ESK!XiF0-!nP@yu=w~ zbMJ-)g|AmoYjQq%vDv#*J6f)7Z2QGQe&u>@b9uZF9L0C&xK?oNaWH=#`eU%Q+WN&o zCKZ^RR#b>aMlEXNvyy|(5I|{PWKaNLTb=ZzXlWJH;=NBYRyiedvT*PvZ9kB%QvOR~l(3cERKc=2(V)@|pJBou zKhF1@omms0Fi`nuG68)1Ol5uJc$tu-Jr0;Ac z_SRy`dYh3kDG3J-C{jA>{Cw>`-l3q`+UtnXQCB`ew~#cZLuR>BYHI4CVM!@zH3wij z`z%q^uVB^W$wWI^^f_kplT?D>wIPh_KC?tS@(Ml+YTH{Kij zqZaur#xtkIWhRa4ODXY`d=-+VNiNE3&OG{knrcbYM~|u7t{@9)Pxz**hvwQBm zgbPYIv&vz5QrNY{v15tW@jt&$-izWslNo_XIW{_{6V=DBAS#x9WzL3q|EJHnm6(|;^<_6z{BqbV@o$kAa7jQvy$n(pP|z&y zGHWcyTw;tu&Lev<8Bbv>GbLyzfz2tO#Uxh`5L-YnmJl(FHdN)f8)W`X0nhgCid;}s z5qU;}g zK%|II%BFJ)2nf0upyCG7pr*~fz&Zt4Vv&0Jb7P^c8rdof8+$ZH~EdDb0H3UC)p z;K7&-R^-AP`A(vaaCibd$WZX4y_`_ULi?Rt8<+a^hf^E;pYl~gwr=<3Li+6|XO_a# zLhYv)r+>*vV9_wqgh&Rc{Y9PvfBj0kBgI@4Lx}uMKoT}AuhjbVoZ~FGgN>z`h~Wz& z>3bEILvtoi~s)hKCCndMf@iI~h_ueL=M0gC!?uYPRFUCmmNC>VNjLlh2w$bJB>h8vWZx0{ufk}XjjSeq8IVGsmv59Dx^ zAJIm;%bkq(DS7`p!GLbaDCVLmGX}p9H&(*8@1un2T#QU2xI86T2`3OOuWjggzr>+z zt;+5q2Z~1MoYK~Jl4APzI{k-@AZRgQLy!yhwy*x*FrGJrO>oG{Aq;ZrNQN+I+2ND$Qh&d|x3!`Yd{^ z@MdqAQVvM^wEwo^P|_#)*zJXO!tKx5c1u6l(FLLIXzy^?I?c)MwXfO9l=8=4%7KWy z6%$<**-R!gxu2Vpi9g}Cm0(uwwE`7fCbANG_}2S5qfN+?U)#Yu@e zaT7y|xCYZwubcq^iwCJ?qcmx2LR`^s&y-R>{xZE`e?UC_J~_I<>OiK>}7MFz5StgmK+fRPHi*!mac8Mu*ao zP-*ERw^jtHDEtfQZMK$=p=JeF&(5UtaFc6K)Tf-WSrwhv`8=k)xak~d%G7r*#6;VU z9gs{q#_r%OsV6zSl?eE@rMIz_8}?f3_S85YRyy&q_mCa3Qr0DmSpJjj_9CL*G9XQ~Rf5qUAFeOX68vdJ33x zp3R1vOT5T^&o-{(--@9X1KCJQS{wLV?dW^=ET1qQ*O%YKjR-X!1xWliVbkWMpeEk> z4T|xnzRBTIZk4qB!6*h;6n#?OLBnCBz2fE)VgdC28GJ{*rejw9Blm6sMY zo%*i4EYPanwz>-}yhY2uv^@-CGIo_Au7)&XlPL%q#R^*O=nTzwDw3t#Ru_z}1hAIp z>{CWatrhIag@m*aIu>X1%A8sMRZN0y;Y(P-hfe^lq=y2Vt_oLUI<5P?RG(cS+9c8 zoW>LY&11UHzdMH+MupIx#7d{V1uK-}Q{9~jrP6Jr6wiL5>@1nTw%AS5TXT_?xqKy& zbtA$9=Zc>t-rq>O1rFX$<{|^#e*ZEY&Qy_$5b{Km?=r7YZdR)@*}BT4{%~hQ;Cf@4 z40(*<5S7u|N9J!tfjPtH?Cj`>yX{8=XwWgA4Z(v4{D49lFnkC!W)3sSllv3UTbc!GqL6joj#I1 zy5STO|2VFzEs6^NrZkNXR@fg0PCId{mSU1x)KNYAlV>a~OO%Da{3zoFYGa-m(eavjz_{q#7vp%}Jf{nC? z8cTXCNRLe_MU6MXgW~Y7l93Ui8-Jdg8527HR6fu?xW2aoi^k$9?4AGc+6J&Kt6vE0Qmr2uK{o0vty^iNF_&tqWccV;oryM&sso5LaW)b zzG}X3$uN((NR->-rK5|#hGTGDHOt<7pw1*B#gXZ8PD4iC?hKB3G;x{+D~(xLZ;bTV z*6w{MCV5sdhICu=8<$K2C~&Ac6b&MpT*rN-BI0{n9Z(nca!SX#dq9xJW$J?%{+1Ob z4=pq6`fZ#jXiMR^Z^{jt=SKYeW=d(W6#n2|vYeg;;vR0n?fzjcnaM%)d#<>hlelK@ zYzByoj?jJ?FNn%sSZrF`3`i}cRS5dE+rNnmsy8kJSI6|Twd|>zy_^-kAe~c2RmI=u zk7lm|gs7-oKN|S+MvGvM7?xdxok@O7TEryq4pklqTy^ef@0G^BjB+tKyTaDkubq~x zv{h_^GarbK_3sr6ccNUAH&(b~3jf0KzpPaKbr7Z&AP1IUf1>HtVT8}Pf?=!IT+@>> zsXLDFQ78dx5T|w^;e`c#ovHHVh`PBq%Rhe*l;N0!DhycS7Dy?S5~#h(Y2 zf-oOdj!!{1SVpmSa)JAih8Xh5VL-wpTgixX5CS**;Df8Tgw(C@S?|ON8(#44!t{ zJ1t6m!?!CgX-W0ISw%Mm!a6Oj+`~tYI}C&w1D_3=^)S_MT zpI}){{gi7HBoGFHsmeEM77z-F|FG-(VZTN+ck=r{hw#!|Z9i84VQ}^IK{QM|%0J~| zlvWkJ=tExB39@1?tYyW@<~N#Ah$uyaFKW&woiCL;2Wf87A_uphmeA6=6(mx{Y{HXc z1?KZ`<|TQZ=swG}rYLTrNxh|y-ic24i_xz=RD_CEpFtAgMFPN6biKNJqY51;QvV=Z zkBX_e&6n}D_CmW0^J^5MZ)dfr>fPYJ9dlAuB^nF{c{@}W6q`-LSrn?-F2={&F4j?s z)c4Iq3e>alJ*mCsmALRbvIio2N`3XhmYc-}xM=Jc(&JrEslAh9eM2<44P`zH3eL=F z)Pn%csB#L;bqrlOO2i?<4t@CHK;lvb|A$j0`W60VX@^gLM~>0zuENx%*<3QpxZK(# z5Y|5gQM(F)HW_X&#@9<0d4gBarS8g@rBhQHjPBU`G1r5vupwGlp%~f215woCq{Wuu zg1iCtKH%xkAymnQb`x4HzCP+-sD(TqiLz96Ua9R=V1T4RuUFE`8 zIQslu^?OiB1{~^}enac2HKXvtt!U=T&&e^0{osFr-^IdM14h6r|5V!G02FIDxT81T z$7q3Td0V029ABsh6AY7HpG0SLZ1hLfp>mf-PiH9I{2+Zw%#WCDxOx}hdHPAVjKYP{ z>y+XF3kO`mdo%UWXGK*DZf~i};=xwbv%yc1QBN?RmVAlq4VOOPfDVNMsq~;1wRhnD zy&(*w3Ho;149LAgFxQk+Kyq};RNw70lw|RxKV^w3+!l5V{*yt?E6ywxUa&1Cn~T4d zrKWM&-lZy3OegcRiZE?*NY?9wNHo<`N46#*>RN%s)g;D=$JvX2!kY0s<57)h2%s>j z{sSJgGKTK)$K1kGQ#Jci!6=|)lQw&kR_+ID_udM0y4P`Mut;5r z>x!wt*2W4)#e=U>TjZ_6W9WBxRpG3?j9biyKNf6)U}}8}F+L}SVlL3HSMZ_+tQ68J zNT{zwn>1KFRyFWf8|_)PYmEwxj|%yoD@g22X^~py1;vYM&i0T^1@cV6m=-aYgy&gK z%Xm$9L$@j?M)l3XW_649!Mr?3L#@Mwk7t}Rr98%)Pl>ejg5!|{-T6LyLzQt7 zXzNUTa2Bydf-kaR%YHukvGEVIV&Z#~`RT?o8H(&GIBffE2&{E15cxg-`emlhQcRLT z{qv~$ZjTd=fX7%M8%e$bWUu1?aKv@jbic~FIFUu?u(E?2 zf`5Xc)7Pt5Wo%1T=W_3wdq4;E-84 z-|dWuN~q%^x_>}82mJeXtKqxgSx>g><$hc$#qgoxB6ja{B#~ipT&)t&%}=7A14;YP zw9KoD$LK+*rqIGRDA0%9xtEx#;5#umF3#9h3V2EO0Sg%M4HCP zs5iw0=+b1_PY4U80@*(DxC#WOIjCWgG5b7_swIU!?U36vkwb(j`OlYVhtQ!$e3Jg7 ze(&`5f(hWUf55q9+8IZXo zXj%;Vq1RYs{9gc3K(4>*dLQ2VWRAedw{ev_fTt#b)&aL-qzzb8hLuS0!u<4xJB!v) z$hfSzG2_FOt-1NeQ&LSF`3w=$&?VZi%0ZOEngw)6US9f(M9d}Qh*h=| zEGO&)`{7B+>Mwm1qwli$*Xw~@l~LLAgb<~|+VS6Hc-x4~O%T{M$X`M6+Af8|-$3bo zM`b(yNMR|kmgP~xi*mQH)L#qLraf4Xe8MFvhFRIiGDh$ci*@?q{uvY=&$xcId^@+fG+eD4L{yhFx46LP(lbqy* z@l_W3n>WjD3%0pH>6lo#f-S9r{u64wQWE?^bc&eaYtl6fuN%Pjwphg0ca|djAayZf$rs!ATYC`GpQOYz?A6%d`*dDC2>915WkgYTP z^>#+Xbx)y$GG8|H&WloAzOz^;NDKI@|Iy(wRVk*VP)ZEm6TIObX4(JF@gNS*>r(H_ z>fwh%y`}kzOCK6h@QG1sW!iQ3AbC#F30{NY8huAf+7yj=5U_$Vp|k7r_G?IPM=0aH z)Saz)UgT82@zp?s4ow)rF7b^Tahn{B1{EjM9=TR zEGWyftVlxf1=wLNap}B-hU!nU=^gNfbc1KZ_mEEmMPX@2qfGk3XTao#X?`rRVlc*PRlLji;DWS8hLJ*OdX7+KVa)x0yACMDQH|K zeO+yuYTWm<7cqTtr7ruC$Qlw+?^`nIiBZIJn7G3&*KnL&Y#^vA6LJi5xng?D6Cy~9T zGa}>k;r9`3#0^KxASINGDGo|sR<9wbK=WcXh5%TH1-k0(AJbPP#Wd5LGUN{4dPWe| zjYUQf=>yPy5_>P%w;vSyH#iQrq^qnohfJKzbvRLMZ7lbGlJFBtMpUdIMoZ;kZMMH1 ztFt&2iy%7C;|_SI4VwK$%@j1OfDgg1oZmBGr^6=~>oW88WAxocN%@OspP=@Ib_AH% z8MGMxK~moVq@7a*&ygN5m{j!lRdt`L;R{z|mb_Cuj-{1=}d4sD)9i6)wT3EmJHmD7^$(2} zzxwHlaA@UFry ze84y?*?g5WQ!(ZXs{Z2UP|$?sm*aKDxQckS_-S?o`D`?HXb)BbQLtS$)zIayXDB+A zj#Y|}oc(EJe_||a&KFjj)b4cd*1;JNq4~9JqTsa$2z$QA>>`?U*A)IocI66 zS-33k0LF>HIr&?&*4FL(I{u2*dydm2AS4udEI16qZ)RA#0}SV1B@$(iKe$oVo!lQd z^SVYFL~-LudS9AV4mHYR*2>~yHi7)@*XzVu=KNFNpI)m!pyLp)I-3kAx~J=qnThLR zSn&({F?iuS_9oCr0T2<{8>S;-IWK5yLR?t<8n^a_4jwvCJlv+}As?rL{wnKoL+qZ1 z>~*E0`7vYCJ5bUVx2|KaDFAd~eJFNLd?6P^Dz%Y56(tp^=}$(8q>!A!%U_8%j7uSz zBi@3Rsg13ntX=7KRd}-m4(X=9Ug^$uTx0O@%~8!y4dLqq z*#eXKmaHKzf}wkXRbD?T+&TAMC=V;uUv5o4SjFRU z%&y^D4?_9^;v2}r&)n}bLw>xcB5eMGv6QskRq@{0T@n7pUC5WDBP9TTy)kHbYYN|hNptxUaX95qC4fiF{r%i9j4_2cp|?Te#)y5Y^p9viBqNkB zr^xNqP3B}06Y_HN_b-1opfroMK|uiM{MY41nXTRHID>DBlH8d5NkccH6^NmkS1C>% z1G671XQR^Q>=kS4wbGS93~mDWTk_9a;uJC_@71Ovbh)rK>LvAiiKpOiL1LneH@->GsHJnJBo=$YA(o%h@n@MG{P1V^Y&f}$5` z8}qz{iu;A)(i+QU4r+^MBxSL7b!@+$se+kqZ|`1a@Nsn7#Yo!l)82cMPiI~+oHV^< zNNnX8t!j zH)O#4LT_?i_+q=&+4F*7_LW{nF6*~|7gSW=uYJ|;0OQ3A+SI?RKJoB7U^g?6^<~9; z_O5&4J=zBC{x_71cH?3ChW>y%(jU(^y8cA5X{na=AX+~oE}I7Kl$ulX!c8ypod{c} zx|Xg6QxMCFDGuNow~_alGzf&pa1$tQ)bx!DSR>(XqrISkH@=~8S}#gb?2!_@rf`!A zx&toDz%RzAsWa!wbMx^tG4!FZ56AdAKtQ*>>GPh6^+rBPuq`hD<+!`e)p8{%~dkh>;=R)Fmok{@DmQR z)yocSpYDaVeh_pX%uMiQSiJ+P_7OsUVBIbYu$wsfwyJs33n!h(l^R{VJgm+idXK%@ zGP)b*+_O`jt8DpJkOg8PW){<{UT(mQyqId4F4AtZcWx7%iPqQswE3T6hSLoF8gDwS zk<~<~Hs$ZADG>~{lmEk@`z_7dBf^wsN8&!}J@=#glHRLfG^oo*Nx?^O;N~KIqcdAx zWQt!H$Jf%O0}!1Sa&)+E8~>uCIxI}tAdgGbJDu2IK3tz4$OgN{t%|W8t)5mcw%IyV z8*(X7Gmx4|knfv}`Im=Rp&nd0kZ{N-F}^Zai{l^m%0`;!$Gc^hgOkK0TwWqb1U`~c zGo+nfi*ICnv89Y*ZTcRfU||M5rye*htNJWcHw@KI&;8F!ir`(p^)&pJw z!50U;39>O*2WmVS^{w{S+-~OP$Ing~PHVjO;#gp!(9jSVM19wIs;J=C#LqH$`EL$i zdRd4r5I6@fWfZS5@J>o@swl~baau9SYOir<2}nOsm!ka5FtN%vhtx1%llq2a2T zsQWO?WNE-^^IgK&^on8Nu)NN;UpeSwf42^mN?R8m)`x!eAG%jsYaBx{O_Eve6TZ49 z<;^9?mKlY*5L+IkP;EsL#o7tc=L^z1z=W@k{|kkBnJ}5qp*_L#Wt7m`+QC4mI&K;P z2VhkRCV^TrQ+jfgUW=pMnm!7yJ6ni#*rar?xdh(3p;QV<)8kyzq~H<#wVVMg#~0qm`ZDfHasdZ)MTB$d2N+*}?zuBZQoJ!v5X z*kmwjVdDS&(dAqn=ZK!3aq&ObfzbQ&e|!jmZ7H8t_F!m{Lzya9|C8H+v>r=lS05ucj$bx@Lcf}0muNRr0<22mHE9w7_zv(4zn=jw zYr~Kh33~*;lGKhj>DdzkyJFq1gwCx+KED6<&my;?DU?1Ifp)@n^}!FYUXRb)lcueI z2IfEI!zi&-L3>+j95Gwp7-ta`RYseZXk4f;m(qr{6G_KkUS>~HeYEfI^ zBXx3p*+J1H>0@#FD)C^&mBeK|X(m8HjdP=350-Uw)YH5pLJ;Ogw72VN+FB^pFa3NUi>N$%0KzAB9}WYA^LlG})xnz?bvP-Xlv%nrc;lLJ z(#RB`1JJn8T)XnFvTkaomC%LSEOeD)47avc6VHSaXF;6+VS}ZYx<_P9Bkd7t+`F9XGG?%35S9f?_s zu_x2^3^{O6(Z44fYG|R+>ZaM@nqu!?SyvpCD#$mieTespD_-j;SMC-!^^)9vOJ1G} zn*yIHu5b!j6zrQZ=C_~myJ6_-a5=`_iu*;@ZAww$23CpU+8o;k&1t8Q^%GG^fBQND zoTv8t_6*^;$Xr1`!|y(`doCCWVR-rGF_W8%0~121#y54qCe>nr1MiHrOv18leNQz^>@ZRiemb6NpM zlP_Zvc#uAEtgFeS?v-2Nm-C^9DdU{;SYQ8ggB>5Lutm+5QA7hz+CsFCZ`fyS%=zn! z+XmTRx00K8K(*s_tmEzu(Qg$1V-Doan!6j{Q~UG|SRMOUZe{N4>&La8^X zVU| z2-GU@mkpVc@QEKA62TpEP)VwFIA(E@rfEY1EyX+XZ^z6dJ?-31^kA_u<(pD3qkn22 z^|6Lo(hSF8VBeb9iK2yq9tP*A=M|-&59<@%%K}oR72QS@OGEYGHv>3P5&75X$eDO? z3zPgYiMamEjd0O7h`I@k_;p?6fuVAX5q1JFB#D7A5nW=@N>L*?h1>x>S(ooV=@nx; zzY_&BM07}nSA0zI(n3@4c;Zocd2%}u{whtrH&WR-#E|7pg8A?L%Nf7k5qoxg3keXz za&G*q!TW<(NLqeYDLu)7Yr-se`P2j+_{KXN8$vUt{b>SK^ux39BiG238P@B@0wnGl2wTgRBlW$CwjvV5_W&l(pCvMDgU4aV@^Q1 z#X{A4_b;Bn3jG1>>k(d`LR86Md)vs%gY&x(rFH})J0t=knm=MrT+ zJm=RT(VXQ%gvycECj!qd`xyCd4^J6R>dTd~LPNLRM0g9yp$pg9%;K2!qen z|7ZuAH}9A;F>D4KRe6b1w6-!;Jh%VHmHnFeiCDEUOGh`gord0 z-B|A3q*ELd50K1QBq`YGgU=g3XF+}DNWEa?e)D>VD|@S^#1<|zGtH+qQm?y4T^`wXaTaH(NNK3IU=f14+RmUo%j%#zk+jaYriF$Fc z?^Wt>-#cR7$$tDnoN)CO9-*aimOU$Gf^`_y5#??iJJ&qlCy&*d-BH&gdFL{zF&=+a zSaU7dDajopL=7sPz><$Vnic(q6xhp4Xdd%#8L%7qnf!c~s2w`0x!%6O<@W7)q>*vX z@!LnUhdpBvP8i@^8Gps{)_`=Ee_Ti1G==aucnQWJxazMAbLgOtsy3N={fL5mA9gba z3wvPVc&e3`AVUnZ8+f?koNQ$Rm4t5IgMM+L$7PQ+P~-{~TdqkLXhLp3&nE&HySZO7 zez-ZCkGeU|KQvakwZ&)#NPv?fUdu+u-XxmA@%)wB=2GJWuh$buJ7ou-Zt5Tq75Hr2 zSI==5t)$wRxs*D9Yo#Eeoj){yVyOy?^&K?2>An@#>~(Bqo)c9Vl$O(erIU6CRK$sn zPfL$A7KW5X&OVy<`-g~km#2ThyCu+2$6rbWG2&c*L!uTazWKj>eP+JKi9?_}?-e9T5){JZ#F{yzQ0E(-p~ zxjn5G)sbuGuvYwR(r}XKgXWw}AI4&{pL25AJ<54o>Z!5(JEH1k zzy1)GyHB{OE48>&w&_rCd<~^p@PUkKri|9B@@rDN1jV@dGJdZ4p_{j;*xcP%fIwRj zb4HPVA?uc^x;I|Er`3e^dfAY8KfMr;QU`lU$GUEciHUJk8BG5Ie`tBAAlOf%uD}r9 zSOwRPc(&xBmsdW$eigSA!l|MELpy0tP=E4I`NMdDFJA^^BV2D>b$`q`9u(=%{zzF0 zD%TECM-v4!Y#(OnzNYpRGN1N_CWJ0fK3hu(HXv6+2+sWb5=H-w?JBU5GY=y z8omE4r9=mR<$617bz*Zl%O2j{J)bc~LYi_vt27i5GN|7Cb>L(tAT&vp=Y!H7hdU*l z7Wsg9Jal&=Ku7O4YLpqN>*kvyl|pYb`pOi=#oZMG#bXMc%9Ll~6{SF>2$ZqI zp{__;Fm?!+=8C|HVx?E756G<&hdliq{=$GEFEskt^?0*#e_D3I7A!E0>9U4N_K4|3 zbd$12?LM6Q&Sr@l7jTIvQ`DK7CMAe(p5)oueQKX#w9r)F!SUHIZhPgEoT1zH%2$xH zLL{}*np@|+!sieL62DNLGAH$XNShNbg=^t&YMa?_px-+@;3C)T*O_vD6SZN0iY1bNv&=k*1P*y8t9HiBF={qa zw^(^3`8p;ng_;`lJE!DB382an7d&_!Yr|`sm6^;TwiVb@_L9@63}9N@WbN>|ZP;IT zdpq?q0u|=i7-{!kWKG+>>m+nH{}Ks|+5Z-iKz+`Yk_>zsC~hhCHxKDQ?$ zQ{t~DhAeBXA=|kKG->ILs~Q*y7Xz;)$s(!AT%dzBf%CBWBaenSc|@7}J?C)O43c*< zz-3L^eC2S;m=j2(BX#;y>FE>H#EDZzD`AV3WTx%GP&Z5=>z3AJzB&n9$5!6$3ZRi-;YX~Q*RYRakC z@ytj4VClN(4j{M#NDYUpq&!Qu`rDtr*=`l)9AzE1rK3Vx@e<&fSy=BTYBZcSgL&Pg z3m;*fbXUu(nZ!{kIOjtobDz#W-}58a~JMHT9Ivwgi*`T(~IUUDXSv zEix|v1b6(<+W+u+2v$hxckDGe3oUjDJf9q*+2e|59qjvhDwZFhPkrtle6nMk_OpeJ z!=ll;QM~z{*k>>B&KYC%aX0!CSfNtTe^w|@`6#^ET1eec}iMu93 z)@KHDvfk&f1`8edK{b1n0UUQgl`i9YQ>;JSjMVA#Nf~Qhf)V%QSQljqINtR1Lb?ax zXcJRV9;P^X9I>O<_jx*#rSLnG4KSo+>dhz~VSR&JwT=fp^^jtd}$P|2(ox`AXxp z0tkrFyH6FgN`E4_=>u+TEiMw%!{x*i6DLgLH+agELjI9V*{_OAb1PY!S>X0BS2-l} zr_@#(IWQRlpR!jjF_D7+eAWc+V!uC1$vb_+ z(tOgz(21Y95>)Mp-QCNIm)2q^~q34a`CBOsyZ%Ywu>@FT1q$n|~HRh{s|l~0sJO-;&_^tfDPp{nPV60-}Hl!_z0 zOgBU#Yv#k-_G$87C8NY{*1T(Vs&NW~C`k z8|7?-c3#GWCnZ83)UCTmiR&}?llkZl`1FR+u+(1WS&Ab_|1)ED2MV<<=cR|cS1njJ zdVg%z56#7~v*XIzEP<>m@+C&Q=xAU*4V+koraoF)iQDlDz2U|}*v>I%mvET;R{qSn z0~u(p5GcrB`j{VfGb92O`EJyuh_otb6)k?!4fD`e_p_$C*ph(-V>I-zZ`HxJuuk09yh+tdE8>0y3c`a^xs!(Xn{CGZhqjZf%W+I`!%7t6Jx!33a^n^>r6 z;gpxlM!02-XAZx5`id5Jdj5S0L=&wS_Qjik_ZPE&PCJ7U2N> z{J3kR_!-LWJt$r5wvq8V^Y~Tz#_CDI_l)ZSh7=xohrtf7pCh5b$x5yY==2xjLqDvY z_q&hYq|9ySY=;+xYa8qzB_|OZy+)G0)o=;`Nbm-LuH8Rcw4!M^*#(yUxHFp!>C`OQ z1fNqRd16t&e_fzeiuKFxaTHo{R^zU2|K!)7m^b@W2IjGcy%d7o{ecX(4Kzn{H#(ne zBtk^2k4Ht(iH7Q;Bd*!agXUe*QRO<|VI8Z>lr?sn1%k8-CwwNaaTkcZ>s0^5$Ycjp z6MD_lX(DMZFf_PHD46Szp@o{yOmaQ*5CFX$A6mgU*@E!c>6dD$!oN>!<;T7QqqA>> zMU5QA54LNaoqqMZ#}N6eQ`K7jm`A=y-SChtA}c$7xTk)v@5{+k=`=tj!3w}N9%gb^ zv@1`1!BJpOa_vzdVN)q8ee4zH$Af#_N0Zw4yfN{U>*scprnhTrjGq}Aq`wxvP7Qm} z(H42@Q}NPNdxzh6EOwmA!T_X5Qx#8QYm)lGpu(kLKHw z>mv2Qs`2(l+ts4Zr+Osb!1y_Q?{ofbuB?4%Do40gv<~;6BGV~uJFgV;Z0vd~WQ5Au z7XGvXn(aHCAR!*v{Uk96PpmkcJ;x#nZ)6SQ&zyb9_9I{4wV@3)m;m+|B-}N=O2@Fa zq7=Io1hgCmWTdrb$pm;7ONE|qKh>^hQiN%c7!5K4p*-MC68x5#7D|BInfAmRm zL2*M2+?|#oY;AMGEl_Emr;V=I+sto>K`3sCA4B62a0uVbKxwKor+T|DB_T50yv;M) zILLhJ1_bGA$sX|S!SW7#HOHNfjfJ9rHy(-N;Y}ASJCH4sb1~tqVo923B$~zQjXb4+ z_5(~w+j5y--Ad1tM;!M<>C8cz#3L)nB}`z&I%C-J`5pr+37%#VxslC=yag*jRJzAM zcao2LMkq0-!#h??nNOMV#C-DsI0^QA>v!WkWf^^Bcj?pr;xRQV{PF0F zo__%0_jd-DUgeDdfQ)SHQ(hA|04sh(dyYSm(z(eBcNxH~ZoY9D7!czCbQ@J( zn=43Y0Nm{j^|CLllb(Ee4Wp(%{+=_#e+n5@HR@wqik^#BZoUJ=U+yQuGIv4Nw^)ct zeRru%X~{O^*l7QBm}C$xzfNQY`44n|K!rvE>>lS&xf)MdSPEH+S<>W%`qRm2cJ-y0 zrmUJR+8Si{zVk+luX$I;p7jcHEK7#b-*$wQ4UY0y{=v$l2dYOPF!*r*UcjTu(l42Z zd?)nW8xQK--5;>@OKHM%A=2F6_tkjTdlEO1A|T(K++u+omWm3VGY0myDxL;=97=@o zCSQ4<{yixFOtr*&2go|!)HlX<8ujxr z>1>0>Y4CAy>I-V@pd$W38hY+O4NO0lg`{G9P+*t-l}}v>?(a0Ag$r$a&zz>e{`i%j zy1eru^Ov<4J-+0cpH4v5-0Q0CFCJliU)&}?P>+{qtc7U`ChLFwAlikUU_XgMsEOQ9 zx$+9SnzUhnR|X4wh+`4~??`hp@*)h3`T$(->ZwdDOAJ~zr}AVUK2f-c>o-LlN8 zziw)h={d~RHeS&e>D~do?^7>x)OU4LGcd42_@HaP+If2KG@UdZPo?bYm)6!UljK>M z26Q0WN5sZ5b-gdFiGmUcHkYhB8#EBnb@5LD!7n)hp?5&db%oH?o<+{~PK1xC{{>}$ z80#TrX8z0Q5x=#SfE40qRM~Up62%|c9+MO~5T;3ziCx>Jp#9jE#q`z~H>AaDl{8do zBC{ymP>`EDV7%Ct;Q8Jc6#KWf^i#VDhj5>|;p)j#=^N8PaW_M5cdju~$rbBeG&;ma zHmwmiHlCFlYsq`?T=?ThZ-?z@gtt?_Kjj7G04vuH31_VLa7E185v2S{S$0FMMM!Ob zT0gGhxiD`oF9KD%4}Zl|HkDqU;NOpF?$jKx}iK}76-frzyN!&r2@MJMZa>1QN=yhWTsG-tI| zGiO0GQ2X!9X8qqZkBQK8D`9V_UVW6T3H4V?3u-Kg;#vT`U91>&VZ}2IH>rZ^Dq&5M zXXUkFE2zhh(OVhTi|=}B3St7AmtpMJ%)vzk~t zMAG|j5{x3h6mUIVhifSurid*jAPq)NpJax$j`Q$7x z`N!{#A?(miFMqGDIr5-^0FrFEeK0j5khJ=);c2|zP;4Ei*h5284bfu+Tubw z$B=`Z#+Q;s8PyFlY+rbdu7|W-Ko9)g|L6v6-2T4awE?GGW|JvB_p7C)i2@fQeUZfC z5(W%1L=J!$I7F1*Rz&1Hep5ZpI<|X=H6Qy>-q7wcHKU_QfZvBE-hErOLeCW=st~B~ z95C0hLE7$!vFGI9M?EAZLM_%?@iF?yw%D}_rpzo(v2iw`?M(CKvuj|0na`~gFvbUtGV>I z?*4dA2_CBtwWi-C;go<^!)U&UHQfP%DG3SZXb~%3)TClcfMPR1_mvy->o{267>$`! z2EM`jS2eBF$tit#vnGjx`y!PORq^|Pej=%J5TkGUQ%ld5hsMLZF0smd2y~V<@`J6Y zmu;9fgCA&rp5R~B6*8@P7NHa{Tu7lqms&~(pW#gwFfV0A5Yix- zf?&&z&?C+wF>8gwJy^BMsO`DaUdqHsqxOrxoWWoHMB;m`gbG)0z? z^pyo5m9>%X2rl1=cB^#Jj*0Q-F_}6Tt@6kj%^(wy3?*ndbPes6T0x8MiEkuYy(^Z0 z$AtE)K{u)+r^J*g9#G&jg*L9v;l+)*Qh*in47rpE4~aw@*AYAh9beVOxADwjAlH@x) z;rq|4-OGd)I$|tVM!#0RvbaX~}zWJbI zG%f9huDN~A6Udhn%`B|$LCMe^E@HR(={iwE+xd48m)bUlRV>KyY`P}da~1}Si?mHZ zE5vb2`=PUJ)uJhjFHw%aT?5=j*;tGfJ6G*nr&3&_-GH+0-<9_e>gB)%I~-k_Pi;??js)x3*;c)sT=L`N%s(O=`7BUH))VW9&kKbPs( z7=Wb@N&?f%&jj}jKcoF0P#(Q)rs-b4)qu3ku$Jq4+1>%v1AnIa{OMQI5~#jPsT}Hi zug+E>GTLk!B1)?lzIsw34ATGpyA(%?>WRQRQ88+%`tB{|kBaU_6B z(5$UNq??ND$x7g5<;!-Hi|bf9+LT^IBdOl#qo8DDwJcnsLj+1z}z05l`G?4dpT=K zm2JpZUM1|tfj?@fv?=p|-zE!bl+Te*FWr;RR0F|ZrTiimbG8b0jsbku;s!1Qbj);~ zhP?dr`!NU4fkZScQb?&zQ~{4C0Y30{ zwU`W9$BZ39N?p1(b~XfFyC=G%5S*us=J-(GiuSLr*LUO z1LqaVRz*lSG1Tvk(YZ{HQvc^f}+ zZY9`_`#yJAQl4sBSSCs(XV60G#T*r-2xz#Y<50&{TM7p^aalsoo?3qtI50n!GbU}% zT_)93f7M?;n{T!F}H3i3Bhep_~JW@vZ(m?GiZ!-b}^1mZpP>rf&F> zp$fCN+t;OEzkicX;m>Sr!rY->#gzZibsHE9|D_{j^EPkp=_jNPl)f!@`_F9Vq8p6~ z6}1JX57xG^r&)5nC{G`k#M|L(M4$eZq>ROQu4#C(oD&Sw%)d5%-N1I~v)USYe&WpI zdlS68w4==8gJ9Co>C>U>va>{137oL91(yNv4Zn_s+0-Kle0y8YD=u5%TOkTjkC3-8 z`@0lG?^9)yAY5+La`W@3=mh)h4uI^W6!~Sf5tX}#E}c=?Bj+WNZt!BRqY7_!_ch&L z7eM3N>+ejb=Hu(LIjm8xGvjOA>ItPjg3Z7CI5O+6gE*$EI)Omxm}_j8*X14XPU3#pJPH(R2(eO`l~RSZTav7~>NF<*SohrT6RMX6 z@2h7pG#G$ir>DYB>nd6oQ3;HR<24A4v=_NTGPqc55dS`pl17-J-E91|7*L_H^tKHQ zgmyW&Nu?MQxyFy7f)!N4ES^Dk{4`Zjc}ccgitA4b-PB}>TDFtE683o6(r1quM1f~U z75sZ;P|WbB{`&W4g{Ud+dVP~3(NHmWow)a-%uPzs{>_p9UUpSS{t(Z%79OS~0us@Sf==Dp>b^x5# zEaFkcE~_qq`tZK_>JHd*R?>Y<+xvG4EyyL~exhjPBkVFs(t)N4w4Pfeo23k`Ec_dq zRK<4|3P!?*By)Xhv7)qJY?4U*I6V^{GJ2vBAuQ3@bO#91tf0-`>`c;G)c!4n%8=D% zqZn3X?7`Cv{JdPrE5qdjB_sh32Bxp=#0o@8l@lsM@#g_j^OtWaI!c75T3c|Ehpm_u zb&`>j!9fu-{xFsJO}%UbP+sByBX@I9M8$v7cd4!P?uK4;a~xtbn~NbY~%{ad*wJ| z9pNpCX7i6KPQ@Nvm|r1kUR$y7SRs8?tbO$sNZ92jN1HMpmZ)=^3_~yY6C(0Zw%dw9G>-P&ae+$KO;@MaLSO@ON0|2>B8kgq!C+ovy?`U!(YSkHrBj0t0-kyP2 z3gT7o1B1A2hNc@M!pG8a|X75T%^p`K%q%}s@(6>Mka&6h;&NVT-O`B zc5xA#HIjDdU`g@hp6KubB(ij)a+EBQxR;esjRtxZam`(nwAd^7q}Tjry7^X4SSc&> zquvv(Brm1aGS@7O@5NB!y@x6k!rlYC>R1ddyO%mCt@tYggaC=cf%>NEllVcE1Bu2Cw_MAZal7r2q7D5DAHWbu^Thi)m|zbb}|MI^sp{Nc~aNMWJ;5 z=C!@AK%IR{wvLC*q&(G>>3=>cC{QgKA@gYVhZSJVuZx8dGzQCOoLeqLYOHXFka?X- zmE;wo0{fdQOl`*w#6`}jwex9As^}P5*t!_?44Ru7BY3%u6wW9Vhe4sq5K`AYe`1(!WtD2H;`EQ} znkKXwc4+$0eUSn3GzUqo(#Y1xLRw5-$4f zTx&x*!Vdm5dC%aAmtFYk1@p$hh#T|_kACNQZ39GS`er(JQ+JUq3IZ>ZoF%ERX&L+d z&{+ZcDBCIeh;z9Y;!)C`n;7)Ce8dfHB1zZWUday}(LJm5zu0F+VLo>Q7>h zLnQbz?D)g}=zggDWlQ^+?3XRI&{qGphVKW)Dpgl&Apys)#td?tU~-KM!N74E>0hBH z1dy?!O!U?!v#~;_r|5XuX=&SxJxxghub@2pj~;%x!4v6K-E^faGALexeRL(rwOBisy4gBJgMSzk}4}L<^?Y>r>Lt;91F=4Lza;G zeo5Omb~sc8S)xw{B^isgQUxh1n^zd5l9QJjoHcb|!d?eoGVH^h>sof)I?*~MY*|SI z#a2Ce0jGa-BuTZl_3|_K3E_aEc<}e-y0S+zld(46jQuIKLIjCcFm}{%+=~`JikUz9 zhNM%;9&vS`Ub0NUQ67fq~EcMW?hu~W|43COQn1)=B&2zC>IFX zNa*73>g{ro?2-t4dJ#oWYt^HceKs|LTP%K@mGkk4*UeV)AhKId}pF>?^I zf@ot6OdVn?)l{NSmV;Oqx$B11U8APM(+7uJ`Sbk&mf9uV?;Ed#O12MiKV#=6#^Z>h!Ib6tiA-6gOYalb@st; zHZUH09bqtZq*U-zlUKWli5>XOjjVD?LUd=xb#7m=_E)J+WZGLdovz7T@CHJ+)p%dW zF!i6WtziW(6a{0c1&2c=r$j?w9Dey6;1AdVfF9_T(a!5f`+hsRW<~VB6?)HEb0=n! zqeb&IB6YHGo!keUe_z|g&A-%mq|KA#=Hhx%@r>V!<4cUi9pIInlc>a)jFay|J zKfwwao5VfU2^CMUW7f(k2u=$3rbs)e0+&Ury}rM2YmthqSyPZYxrgD_&eiBt zZS5B?!1;6^-+*%slLoOWBO%?RJpEO)Vg4g6gWVuM%{JQ#!u^seGcpmQcx_Q>xru=A z3>XzJPxf|P#XzIj9YE`}5Cuu6@Z--z@UmO#QscZa^CLBUW2~K!0IDFWh%NG?bwR3| zgk(*nwh4+WV84Tg(c{&$vq&iXm{?;bTA3Q z;EgQ*AVe2bZU(~L+Ya}tE`+F^ZYR06~(F}a-=$9|Frxv_B{D*vm$AX1!#|P^}6Eu zgOq~33LlwR$$1hd;U)Tj8v@4KB7ul(UTVW0jOG=ytA9?@gmopfxQ9ox2@+^2tg?{oM6?mg}}=Zy2}-gj%|Da@)_ zl~Lb0R?Uyo7hC_z33#$xkccjgJ$2rx3nxWu_3L6 zUb8~sE3DD6?7BN6=@2RMUP?*oa!(jIN_ohiBu@(RYO4VBNI4?3;GWMgTc&hn`+`DN!o|bp+{FWNLjTN9rTYZ+cag}90_l`j zyfw|m-yMp3sm1|kf$h8sj8|4QoiNX~b3}-x9@xF|)Wj4&4v>jG=PP!asrK_cY}?0Q z)`zOrQAmillYQoO$^Rr5P$J*L?td}bBinpui+eLVs+`_mVQ*xKixGXrULqTR^q}4ObDQ4Q5auV=7b6@FzWUXs!PQC zAmKMXhQg?=TY5Ym))~+a0VqhWLG$i(<}o1&AxJTSbAQ@)W1@?L@3bFc`~gkD=4g zmdYL`o>uCjM!7M50?-+6D5VK~^AM`U=sK!fUbf$gvi5&gI=b{9!63tsZXmzY@YGxd zPze{hYeDG@58cxG6j?IZ=`87o`l6D>EeEN3t5jDpk$h4#@R5D~+V6Bu-Y6X)yj_y* zl_V^P%TD{@z9O6YTbe!m^pD~j7r`j*fy$~_C&FkZTYC-ImIXQrdzg2gFu77TyIW>m zqwq(>Tc{*=m@#xIuj6cy#**7~2J973toC%GnO@HH+?k|pV6S(rwD!wl_M+q&#+A9x zd$*ZS|Hb3OVzU2SYr{?s2Vr5d3I|nNvzxT)*Nx4%s$Ftd#Rda76N{ZKh;=vL!cJqu zpN3Ioyx1$c4JMY2_E#@@Q6UQNTt(@tR(HZQ7A5-zq(4@COjJb87BwB%RhBKjLy8hM(L0Aqm0wX zn2LtcK8R%J&Trn`1%{t&0xc${mq44J0hlpgR;wzM9_L4uB+DD`F-@Z2`vf?q?ZH56sZq&t1 zZ_z_npnUUf0sUmfIoIE!5gZ|ZuN4g8;`uW?HB_l;cpHnyu*J2HC+`+9e)+Np<^hWh zLiQzZ7PEOJyY{}e=l$hx@yGq{3qmVFlI_1s@5}O^)B6h9dk|n&Fu(ATa@7IN<7qhehAh-zV#r`t5L`;qCO#r!i#q6DIRXiO`2^jwej|-5q zSIN}b-qp$2)R};hofXi_f6m+cw+1x*KXvFe{ck<}@3b{0Ha3ob@z$P==r#PW#8)!< zrp(M%xv9s8)z(&o3R&r_F(oRl@(q3ec9T z=&67Wmpu5qHF%&ePM%uW9qad|pH6T?sHo3K`*8H#F9oO#8OUzFtEB@AO5@zeFv*N6 z;x=7M3@^c%tVx1Dl4-7jDlR2Vo?5pqhnLACrbCsGMG5#(k$LAja#=qoE4SP0NtlsO zsf#Cg`u2T8`?=WH^X6_)qd&+|_45Kq2z)7F8{CY*kZg{cG#wpuOco{rOH(fOT6MRP zsxdeTEgbR4~TKH|#eht7|CNU`06_mPx8Mor0whK3;PITWxV# z=z#16^OnLa?#i7~D>`nt15JY(y>5GokE6d-{F*e738r18f}OnzJ3!G`XA_8~Y1iP{ zt^$JUd+I+WuF-xvHzN9GuPyI=WVezhS$o=p=q+s+ZbF4bj5-M%)EwIH!h3OCtJn;HEzLjfG)o%>A zVdihONw{XNk@w^x5sS1Git=&3vV)AiJ)n?2hONvpPAn=lcr!X$m_xc&HAkk&=D(k` z&&_o?V@P)i!5AY}=q(_Oo0ppr=A#v!T)h<(c@!$TvPc;Y5SFdU8M8uquU}!7L5U!9 zC9lu89gqpHBO<{{#(zJ0>dlqbMH383s->&MvBdJ$=;ivbApda6fif6x5Z7bh+NYpM zHsG@dMWz(i1&eP%7@MIK@QqKr1sA)Ui8>YvoNH;3UMUJgGKsv;N35tBR#zw%Ky~qe zto=&5lXO!3jMhwnH8X=+zJX?V~vY0R&&9TPVj)oJ_*o@S;gR zM|tb-*)ok|$tpHK7G$M71H3Q$ax7xeq8kbT37?;^I1Lrf(wIOgoqO}(tvaj(I6Ht( z2;1em=xevnr2Zx_{GCn*EyQmX{-Z(O zIM*$}=MS1G9Es)kn%COpqsph}mztl;N6_)bW|-S@zm{!yMO#m}QrDc8*;wQ3hGCy$ zY=8*+*<|b~1Dt;pt3w)x)t z1%`8@(xXRcVwMa9+yV`)cVLoYC?m#r&SU;?a+m4T@H_xzqMmM*|xBJQ8ARW*nc|&e=@&LCrIb#Q19KmCW+qH2Wyuh5iHV zLRP-p+Eaon=aq@9;uZ&1f^lg8@k}U1^>|9U>X!f#-vag)FU=ijc?N_Qpr%b=67*vn zO*|dO%J-X81H_7+2wXO%1C#2(cR=0&!sTD$%lN(Uww_|~aj1MQ!px;Bg$SObJUj@U zhNyx+;ESdL(A?&6%^w4vb^er$t4(T z={AG=ef^#Ml(Kq*kr8@&krh+<^>uQ1uJ*O-&wNwn&u=`9Q#Wp z)G3H3rgFYqE5k(L6+7r`;;W2Lr;=TW_yj zC8s8BLwcalUu;cE?VT%CdOJ(Bct%80XJH_yx#Z@%i#xEIHjAM^`d;spc#~&u!blWA z-z2b7L#ODq_0f0|m4gwn7O`p2Ug;e1evm4zTGGq(&^aEK)aI9)=-IiUxu)xF>w?+Sgyl5-L&d?%K1T^&+z%~t+X{)I z7@-9r@6Km#pM6JWo`lW0{iv2L4`dwGa%%23UAHP%DQdFEJ!M8pcN5sDmtLG7+% zJvjBrH_q^w4=BI_1v8D>std>4_2u6!a6WhLTl9$n+6udDsgd2TtIkPs0{6TL<8wT` zrRnuxoncX*o@C9bkf98_>$Q#jVP;i$bFFL&p5-){eg9LUDCrC3iI>JK2;!x6ZTJ&Y z^omV+EVCg7Yw$c9h`huHKUd2;RIcjq=fjoZwDGw%6t1Y*F^R$=Jk0iy5V@vE@2Pf1 zAO!@73DtnKQr8L)rq_LG(i8Ydh;7Koo78pM+5+om6?*)>6I(hlgEPKD6dFGBomVG$ zo*4FNEpqUAWqh+wq~a&2Ava>wpt}gf%%rMz)T85wb!7PtynM=qJ~#0*8nJ#pJ&fRR zb6c=>9B^%SumTnVeMqM%Ppc~C`&@`f0^#kS!6u`E83Wwf<0v$Sao~<`y9ws}B@2q7 zSlWEAEIiOfH`&}ok`APeXs=LseF{hi*ZLv+C`s@L6_(4Qwvm-shB`Kw^;TnPSo zU<9a@e>?t*u@Er-`_WpAnSl8(2L&Js#8?TK|7wuGk8A`i%>O(B_`&p|9xmd_E`Q0y zf7=mPW+!0!_bTGb90UL<^|#L7g8!~}{wb!x$V|Y<_V2xDFtPw%{tgGwxCSFYC9wZn z3xHaGD+&XQG_`X9=&64W>VQImc6RoFcWp-Yf0_qW_{VkvMvi~p0mBq`vUhd(rz>G) z0ssxg&C=NPA3h7Zc{rGdm}4oMvi|` zV3sb<3Z_oN_O=f8c7KZlbf2)jjlGkygQ2nMe{}diLw9EVf2TXM1AdnUe34{Ip#9gI z41l32yBfLt6`k~ww*UD1U)3bNx~0iqE;K9azX+9!tQF^?CCxB%v1+wuFa7zA1h4pc zE6M8W#;dok=%QIRW-JKx_%xEDsNt?LFfvAA0%`>m^zib6o}sj=u7Dt_2r3G0^lwhU zU}@TLDq}GIA|BJ6`qEerCB@!yXA4)YKWpz_c(;_V+`8QCHb4L>R-n8EjxNMb-?Bc$ z4I(SDzRt_JQx)YSyiFwMxe_t0$29(`c30!bS=HlhIWM9ZNhbw4b2$9P2L}s0nU`5n z6^n+{%Wg%mRsjl-$GlOJbk>35n-&dPWuulMHPde3pud$Pg_OpS_iwEeTB_7xGHFUC zTE!y5VggK*(z-R=m>Bx^P3|k7>)tv2pvb%Xleep{!8QBt1`-{q#A2Ena(GcRtsg?| z{U_(IuS@wKol3j%-;U2Yyw04d$fe`rhjfe+ z8XL4s^2aYW-b*ftnGcSuMG5PVd6kL_;>vF0a31>%DLK6o6fiYALU>XvnlvcCkLGuO zX}3*};!)NY6j(q}(y0AhQIWiVwgT^}ev4ucDkPr_9Wl~KN{lWmU2rR1+k*+|Dtz-{ z2S>70Su7|jC{M^BGA&p_FWY$2-w11$#NjPx(e-`dz_YDlSymuhT>J{W4BlYLQBl)d zDf~roRz7+1xDaxR;DUb&?$n^*+1TgxMuMuV=l_fDHmohyh1t`IG&WQeO99ueqIBoR zf6+H5b4>BKOr=g+^8V&mb*i=wWzQ`~xxPq%s!W zzQSJ?Op4l7DPXLt&q0^L>kct|)L8pqycIf0{n5kdRgtW|noo>&JmT^)=#LgEDwUHb zH({sP8UCVAgg^&-Ki&%CBi#%c*Js`fE{Oy5$G~od(5qCG=2|8CWsQvlpMV1f($wh_ zB2OZu(9r$!x&87uDtNlZS&OjHh@)w7zbd%B;ts3tVk?^uc&RQT?cyVUX{hnUpY3td zW=x>f(Sx61Bje`I;c{|J2A$~OMcAoX8W#~ZmRDEmyU!2=6Fc|1Bq>`Z ztFnk;DRIAjin&h^B$9*iyOo&~MaN?q7j&9SyAKe+h=-58pHLiOOE+#@)J6{_miKlq z;4+R3Y1daBE|y7EOdb>`tgbF}7jo;xB^OdTis#faM=|3%JY|JnI%V>5l zB0vyN89P6*(Al1u!myNjgq7drho-kqsV^;jZ%{OKZTWD83!nO&P4{2Ir5G7rQ`MYP zBqO%P-W1R{k3zm{+xzC}X*J5VFA=SV4aYHi7_%8~`R>n>#5rzs#8DYqLzDGx}#a`5B%x2mco3cBNi?CAXUe&5wu3=)dbO2SRL@CUef z!;pouH~qrA{|qh(#lTTHr+ZK#>J=cZ|bjnZV82-Taz|1%?l95vsl_~fGglX zhU$+%t%nXR)(1uxmzh}_e?5j@5(pCVl}**ut?s~y?Ot>e&q-s?XgvB5h%cDi4IkXv zJ6BZ4YwhW7Fa`zjG>&2(MGfsinH$*HnJT+STYkUrd+$CIM2pXQNIpRK5 ziS5Cc*0Hj3wElXuZWI3Yqi$T0)mWi%E^l=?1uI8O=Sy~jFsP4X$_{7x9J|PI&-FiE zhuJH3N{ZIm^KP)>@^51D88KqUu@~BBJm3_tuCf-6Wvq2Vht2|+!^G?SQJ(00$fmc{p^KQI$8Z>V$aEPP3i@8M<(mJpP#f>dG;01_b^5Vf}MnEh~ zfLZE+urz_9X#&L1{{Q}GotY6}6JnUGCMt`LPn5-H)W6QiE2}5y9=hSQ=s??_O*@z!RX5as7nC5||L6S|)Q8nw23Wor7AAs*(d~dygT3T-V7&pB_x0R6mbiHeyF35F z-@VVtaw%ZEa#u5_mMm)g5I)q-{Z;&T_q%5=aI%2+-?$auoLbWai8%*+aYnwh}cuN;Z})Kvs%3ew&!TCKcJ z)AVR2|Q_dedQ(E)i?}dJBp-tNWT8a=bR)2n_P+*d1>f;B0gZSs1G8^1Y6@ z6cFSC@0j}iHgr>VT3&8%b5^40>S}!jTw#TI7aTxtY@392PfP}_i$OCv3Ue)B9fLZ;jIQTY zi#U`}ZR|`{i)p;*4AY;(r5l+Nl%V}GC&NjPA=}eVE~~iZyZj_BGS<8;bP(_-~A9?p40&Ik`60Z6M6=UayvaP+Jv8s2KNinhUF{UH2g{@YnH&v(C z^Yg3?BZTIAo4x(RZNlK`JXP$6^E6n|E)DHIgjh}kr!8XK!-cuWF_>8gu||!4d(cO6 zp`zt=2^CauoN(0}piH<=_ytud*!$}=d7x_`)TuW$hIZf!EJkJaFw;E@Yp=# zFm+trbu4CcX?RXJdUeh&a8Z*qwl-J%9``wbGl=D<23aANL;d{xeP>0>D3qwEdsdeI z$~q^9&%1vcF$DR$bb$a<&S?zmLo`cOj2wN9?ZpPa4=UbxsQv_N4vDc_Wa%6ul6(pH z@Ilhu_N;YVFodO^4VrO98|rkiBH*hyw_y=;d|KQ}cXxQauIrM^`tCJXfNIiKrQK2pu^9f7F4P0ES6A3s)P2H`{;Njct zc3hUNc@G>;_n|pF>PfZC#FUs&5%JtKHBoOKp9kIzb0GdJo9}ng<0&6XJZDLJFrlKF zxak@Ct<*y}9`lp>?#+sl#ioT?A0EWDL-zo1N##w`W#FtO<6)fmylQ7hx|My5lBDc3 z`wLBi*v*T^yVw+RS)`&jP7$NItFqTS@&W6l4N7k0ot4UoMUtvj z>;-S|USHvHY;NyoS!8V2GBtK#mJ$s4Ubr|_WdU!K%RMYqYym%D9d}{_-1AI<-^|ERx=733mCN~OL(5x z&3P*xHI%U}rM%adH@Q8YA)#K@Uyj+uUfWl9O=izf+QkBs84Gz6#Qj(I?)%1u7Go%? zmU(gjDT*0sXcxhJSiM>(mgwA-+@7Yhv#lYXYltr8(30rkdE5DppWFKZJv=GLhpJHQW zCO~=GKWzgu)$jYfU%Z@z$A7ALOCxLEx5YZ&2w^R(<^#%dEUvGvFf%YQ@^+JmTq;`f z`rJR0GiVa=c^(Z8u1G2>B!-7d*!CQ$wR&9M93~AzpTytJqL)RoH8!|E!Ntf<(b3d~ zN3D0$DW-!iS@_OeIqIzz>?mI1!eeO&KP1JC z*5m+FI$64Y)UbFu#OS;`nsB0X_@Ib z_?RT&qaw;GB?WV8wv0`msC^?>OtdwydGAt*fc0m4yy39tPp1jB86P%b0NdR04CVO0${pR;Z{^F6{Ll zs1+YiJ36Ie&!3J1V34L~=jvr`suPN2L9p;Mu&|A5^{qtwH?|uDz zVt(NHct${9UY$F6PNOB}v|M|FP4rjUZ9Go}{K?~Mu#gGQ?4lgm8+e$Q*yzFh{r$wm z`T6;}YRjsAYK+p5=#`C|nVFZBlaY~)iH8EmxkM8ib-0Q=?t&U?zTRvBARJsEtfrYf zB2Y$$WF6Jq(CF?`>h<~x5gIBkCMG`o({V@!5E zD9~czp^Bd;wsi{|zfhzSZghRvaUemW1%Vs%kN}u7D0OozL4rdT*hr`(0T+*>#L7E5 zP$1P&?AK#8!9_)S0be>Ut9f$wW(^W(5EsH!+Ju4t2M!91bo}JWYlkIkS@oUvM#RXG zmMT%I$WW;ag^rS*7q2!oBq&mteoC10xPXQvOl?eQO{vRR}DjQLOtTLSMj;OpWd!6z8LG=n8JSiGX zVWlD^vT6y^37R4_qP|);zf_Xx*nYD}K*NQRrds?|p@K^#JGcWkpc@p9X4f#pKpDK} zl;CkJ|E%sisFQVY+<#+6NogQNW6{)!nN~4N;;K2y2sM|@DQ*xy5Kd7q9X2G>6aw{} zxqtzLqYNg#K(+0F;{R(Lm67vrWbJQ^?{5H8=zl7*_rHpI{(nUI{sr~S$icw|AT}$@ z8ai78BAEXkWc{Cx^8K%)o;Tjz6_j4(kR$0tLtgep>f@*%5#<>`{_I-i;Q>f6HhE0!PG{=z-*O zjflV5w;LGs4Tyh3i7f+33138|*Az|BaeaJ~zXxQlZ2pK6kNtw?C z-KP52#XSc}i%kzulanfj%w;EOr?uDgIy~1FHs+)+&hRmdqoe(^o>^Xez04km*Wdeg z{|p^2K2BY3)^5G|KY#!m%zQO`)p|MR9uM}6K$?ZTFTe~q9MuA`?@=m(k>OQw4h-h1 z%P?l7%ZI7V&x{5s)N35M!#($SftSC3ybtLwe9oPJ@YKDa*2o|MHDz1uloIFZ|5x*3b@ji9V_${<>z8@8h9+{EPY ztraTjF5ge(U&=D1y~Mb_=W@b>QE*rtOT?7)(T?T--?w`y$ECps)h+C_w}(tV*uYTh zZuf9{34AsCjDJ~(^6q>5J(s%Wjf5Q=2zN01Ae(_-?|VGm-c3Y}ET^r?)GutGntdGV z?q~Pm412vB8~D8TZESqS?YM7H>ph<96Zt`itF1v!J>)l8E3va_mqWz`1_s%4t^C~b z>pmF?G^ZYZn!~=i&iAfz^pcM=w*1tc+nH+d`0iUG1e42L^x5ZUi?`aJ*8)-OE6Vf} z=jz+8@1IBc{FUTHoLW$c`C3@`F#QWe>`DEq$(!B_nxbSKGhHd3cS?d3wIh6Qq_W4~ zUjE!Ib`r$%JE7k%ByUPDrd!pq+eU@O+Ckug&TWQowI`B1;x*OSslG34D}OLY_a6%FB}$d z8r@RVD?b1EUSBu6nz8HRalAJT7P!a(7{z8q5vmok(7q2l9a`HS?CR~ z80fH%@%r~UhQZ+1pA?v@c4wwJ{%#s~TDipjhrVwJESV%BynGjxAH3ta-8RmvhjiVa z_EVL?%Xu@vpM!H}ne(nssc}bF@@_b;=nE`G&&l2gS3Jb+eCU5vBlY##-sB@;B@gzl zBk%jO`ogwyovuRIjqofx!}*(U&G@F@t^V+SA0Em78uCT%?Be%AaXY|xc6+G}|Ii)A z?PQ2-KZV1~_B=!P)tiY8OfQ*#C`Kp=O64Z%<`ku)2$Qa}{cggS^@S?uf$LLfA(rkptJY&2#l>T7Wba*Czi!dNU=*lzUT6>^MO8Fuo6eq{=-2ZlOq)EJlN&!E40F_Ix ze3Km>AIp6V3G~sR)vmC5*q_&*fy+lKeS5uNnCOMhay?B_dQp92K49U?=QN_QA>l|7 zmP^^yH@J$cDUJ9iCPw%odCPt_Z40A?E@B;{0`9j@ZY3~v%d4B>mtQ=4fk;{7*(q(!v1HTRInHJPHROHy&(1{${D*ENR>xMK z5gD(sU8auQB)10248k!TO?sRR`qtN{;9f+wm$N#R;94XPp>L)K>ck$t1I@+;6UVJK z^v5fT1NA&L)I(Q#l6ab%mw8kUgVbqjU*q7EZr*KJ%u**+8h3~-(Hc!PK)006j@g6D zaXowkVy?k+qlayvmb!aC*M94K_ZmagfI=wh1GX<=VsMX%@9OTScT0xhhAfARGqgUs z5LQn@qBiR2z=PR1NVb(QfGr*5r|Dbwn7_9tLspfxlFa{2Hn4O7wFtCqj03pcz6X7x z{jgTeH45o!J!STi+vJKYPf9}YAg{|EHlg$cHhjRB*|@Obb0D_>ndwb*2k()&>aMVG zE8#k@kUIAQ-qf|#2B)O?`l1?sBQSLi`wrnJ_bTY+O)4UK`Jq~BNBw%)1PvK<%1Vn< znnX_G0C}y<8d;grmj<1Krn}Fj3e6+i!!kWEK;OkWn0l|?jiq7n=A zOsHt4{-c6hX0w6bEDTj`@=n+$dd>FRwIh@NsMRZ!e9%=VSeaBf9i8~5miqn{<*4n> z;Ul#8ArZXqn}{@bp}c1Py}?e};T210&hIV`zZjSeiQ2~^%oR^H+OV2Mft5>_>oc#h zhed_%O(K-XxE@iK5P>ifD-9gmWjjJlf|4G$gSP=2n6L7WSymDcv@Owo;3K?R81^-~ zbUCx|S>8VcOIC;Uc+ux4fK_na&$?(%k8}r@- zO|58pne=ADsy^I7StSeys8O8;b@?ZG<N%`%xe@J>~`l$GZ=y`)OI3 zJ6*^Tw3qqapX|}(86vE2$z)()_Xl5@$+_9eEoVt}~<523$rXz-aQP&Wc3=JG% z8lVQiJ2r#lv_e<@17087^E7^^%UgL?A}BbY8PcXQ^mkcSD!Yb%Y*MZU2DX z%-ODZO#&BSJ9D)ZO1bSGbuGA_JA67APGzDW4g7&zNJdNo>@LF~aK_^8*dZ8wF*?wy zg(71$?GhdsA2XtZR(38?@1PsG7tb{y|^2`K8>9-T{SKqa#Y@&dTN~x5$fPm#+77GL>le zRe2(d=_GfxRmr$aK#}vkg*HFz&oDS4U`*iR@_@BDOxxG8Y-up#3kCOOBWHe3Lcf+G zUuqgBI)!mir}5TGkg!*7?p%4Ze(Ir`QzS*jccsZikWha#FNkS6E-OX~0~9U}Em=?b9S<_Zp$|qxe%oX%xAU@DhY*xP$lMjG(Nn;%9b8(R zS_g+?m=|pY^}fOXZFMDlPJe&w=aQq8(HnC$ge^p=(C|8qL8ETz^Tb8rr}HkVUWswV@wO+U;gE@)rLV8)MH}1>^hCSPl zr>nDxp;JZI;H*CFc8WOiY`PBXELyp#N4;w{Ujz=P!2F!l+h45zSmLkJZHr2`Z&WgT z(d-xWnTz-?aF95J$R$2u{4|Q1T~n1SMj5(h9a`DaS5=4z{S*3Vr#)JWtqOfCHqatW zszYV;3nI%^Ah0C=7zbgf=8VCeAfiol#S|0*)E~?6dMV0<8IF}n7=poU`ph4T`LVTF zS@R>xe)>{d@mr5&98i#(;XoMSSpDn-DXwS(!bsA>Wu8N*7`4)IX720E81T=nTJtFQ z2|??aWY6DA+=_6gq|bNxZ)-oGy>~UqPTKH(%dT=U|GXVNeSxKEFrGb?`@Fbxh5|0h zN_I|XE4{l^2eG)@ERYIk^H$DIuT3@&je_w~^8V2w&AfU^{5$k+T}~+@d5519m*jLe z$<=0{)rpN5zL90rEgwOLjazt+HRdVz)`^%?O65FCBjstB>U*#H;#)5csp&b4f#aW2 z@IfG%V9ahh)Z*5{^|G3XEZKek2#`2sXR~I5~;;ta_u=!+jeB_;j}i_ zXkw<_l$4Ujm~+)Qoi`7u9QkpAh@RqGMNn(F}27z4AGW+in0B>n?j9$E% zTjkzSYM4D^Vl0@O9;0<0^n}Bz@i}|b{>cpsnT9^&JeEXRkVjJfkqq8A4?cpX>sjMl z{i0JQXh|t<fXeuxhE@^}AgA~VUmQLs z4@6fSMV>@HHmRrT)Slg>bEAG02agFxZJnaYYvAN?Dn;?0Z)@P_w1 zriOufKJvw9#G~DB13rx%%7MMhT^(C*md*%mcd30N@8^?z)}t#+ky+lMKbe@ zziei$&}qqLZKQ7T`&L^-8goHPSw^Vtf#Q0&J2m>f3h@gRXsbl&(@yEr8bh=@WKIK$ zc+7nejyokYk5Z*kjc;BmoTyUCVNFujgh+~)Joud?r@uVUtWMG33TN(TZ)zIrS+IvO+|INipkx{`M0z zw{=W@oWrxi2!Kfyb;9;_C)M1JMkvlH_)6LoUUCqPPe+go7vmN)jO+$*vKYVB;$Lgx z(e`$Xb0G>av}th7JCzcZDL?R?9ihJz+GD)SBzLi{9Sij7ZF=e98f)7Lj5vCb9bU!= z5n7-v==kOLLCNdiCppbhu1PEXJicR>KG`3*IiDh`qd7j>!7V{bFw~E|uph6-z|kYF z9*-J<3eTRvcH5s$94>)NgalWQ55hRx5OoEG3{Pg7fs4f(+2WTl^@G*K`{ zClMn5ncNqW9toXU{sE=ne45aJ@jHSX1ul{QK4!@@GDcBaf3eVuleqAg3qRO!LRi&$6`whgoD_&mTPtgS6m#C7LS* z*@hi;_~gvEN{sbv2+z8l=8Hv`@9+NFAD((|Vr!<;*CQEV^H7qAeK>0EUy_5zxuP8? zlR^U2&UZRKm*prh4;5P?wOkvLoZx1~dEAciQtCQ0jo=%{h4C)c)in~u$ite5?jL!> zTcr9~L{M%%&agIAv}orxXdTVIkD|$ot)Ug%zc-&eU!kqGB#k2dJ>_p^Te(8fAF%oM zJn4CC@@>SwoanT#reYNDUu?s8*;O>YsgPyde^nQBN4ZNx^jS^pt2$O#0QovFr{o@@ z!>BT22lX3^0(0dJeOLC?Y!J4PfZ}mSf>D+oRGhLehknt7igP<7gj4-irAV~N@N;V_>fQZVW<>cOWyb$ zAWl@6s-(wH4Pf-d&|xx>Qe^MVh~4PFs@NRoUnx@v)6p4J*_jI2R&or*92pWC9emi| z*ftVtDttK4GVI_EyJOulTq~rzYB@|x0GVlqNpfXyp`sfI{JIIE@FvC$%bts%Y-#E` zNHY5|>2r{o`2cgiEQ74l-l0O>A+Xeu<5i>|9GM||RXa7abZ4p7wFO>)aCSCF+$1x2 z%OUm)=DX4uk7eDXhKvx&XPIWMsD8gc$D?)Y#K3puOYQCh+L@~)9Cgb}5N6Qhj3mO! z?<*0Z0phWT2b!GB?Ie&VP`X&sbu@p%#0}h^<(r>fXXd2%{HiTCb_;0o)2S5yu%D;Q zm%=`DPXixc!Hti1Ti^g8X6B;BTgiOuWv4bOqSy1ZYAmNSvYVUQw$ry>scsxi^qbG% zb1z)Qgpr?vX(4xoHR1WW{&Gfxf8{&uie5TG(t3Q8&WK7PHq{oD^KA<~-irHbqcBzI z4DrkxVt|>5TfZSE#8;eF52|&KFRh@aLZ~yq-K^Z}YS<1!{xzv#zf`qZR}}UF9(w;x zQ8Nu+5OVDJht%83?1oqb0poX>(s@QH{CoSn1@!eI$kb_uLou#i3k1-_^z?&3s#KE( z4$e#1J+`P4r8~1HrL(@u_aLmWl$Osc@DgtL+fby2n|kq<`#?Pny*{b>t5|sG!fzPc zI5zhJ5Dr|nEAy{8;H5WU7v*WeHBXafngf{it;mJHL#vOYw!yM5@sSj?WT44 z)Ekm7uWNuffe}MXH?B?481`m^`3cby+Nz_9VBKs4$o0`|Gx3cT_`g6>1y}oin98E@ z$?H)k#|1ows}Jgw4>QkW%Y*&d==Zj^{P*N(<;Ws#I zu7xket)R>^0$t0c>|DZ_w;P{LmK2Lw1&;!Bp=1acefjwrh~fnQS$ zRerFn;iqGwJl{!wL=W{_0&*3`YtJM-+HsEUZib3v-X?n>&9RU-1Qo+N(xuz8TGc8z zk^VW3se$W$vxQ3|)!Z_LQ86GJ#42vZ9<7kNM3qbqMuDFk3Cz(|7vhH%MK;-axY<^LibH>)x4=0k6dMOa4=D z%_N-6{q9sr@32omZrFBU{h^GWeWAv}vxBy=3&JB+H=pg~SHz9YK7|6|9)kyjv#OLH zlFZdy=>x-FoZbFA4?-#2WXc-8`od?w{-^(s1-r^DGv$MU%r%*pM82;1%WYZis-|is zC~CDlxey4;=zZS;A}ZK^ zYh@D;G#C>gvmo5qCvoqFm*9Jd1GqdnH@g>lwd{ zyti&6ks4`6`D=NT{ndt%9*9N8Ee`e1j0NsPQs~KXb?xQ9rN5eo5Lh&I%o*oadL==Z z{5cxR@d)K1kdj7gX1qy11KuRu5q~Y^d|HAA*H3`3ygDK+u*ARmYU6fp6tsSm-cP)~ zt-3e=9H97Y!f;6dr3*$uS0E`&;1;$3%1E- z&%JOOkanNgVmp;Z?wW%>^*0qr=Xc86WzG60KaJBlPv{Dz9|zTDM`0u6OYS&YT{Ub8?1EK@EX0Y7BD@meX_ z?d~lJD#bL(IkAQ^y~au5y$xW)4A)!|*q6VS}*Zwp1UxY|JTN4MAMKnY<6fYG-w6VpVeaF=z;+~L@3RkyO_KrbcezndbXcoUzg zLtj-cV{?(>Jg0)s$USS+tCrwG0PZ$Eps>4^hPq>z$G)ALIPhy$&-te2!~D)$!Wm4fiC6b@TIGz>A+Ec@P+8s&mA;*b=!9 z5#@%ou7imqQ0Xc*UFTqNmM$l^ij7SUFiz0}c<1~nJrU%#?LV!&xTpsmYh9vt(;mE*bUt$)U5>52~rsUyhXxz8Ri7ao<|1 zgDQl-#GPdxnNo7DUVJL=-_K?EhBMa-*3*NS5_xTh?)#JikhTJ`oLb)tA9Ju{zz7+> z6w~zvF%jzs2pF_tVX>he0C>gX_-LqiQ?r9m#CCk&nh~B;UFO?npl0nS!yU>}yVUGy{}*@n7~@IQ#|yq~+dYkG+qP}nwmEIv zHvVnfp0;h;&S}`7AQUglW zH@r*r$rCIE6$@1|#k#8V&ESU{Yt*K75B6!$!%2`mAxFx%aEl1B%hRE+aPQQEU219G zIX$SRNb;y?_LL8DH(A@qrrMDLmt*FF?MHEBX{FK@6EiQpWAL|A@X|Y?R$w6*y_5QL z4igXQv@lTA@fU!qkOgB8qt%Z7OCr_uqLc^OGt*-=u9bv)z@JCc5tkq>a5WHG-RT;= zUk!AAQXhu4ts@e2+4|}=W5n>N%7I>oTWqaLMNND?JUeD>r!e2wC}1c3{V!WqG!35) zl`I!0sk|>JE7S?mA?4t`xM@RDfmTbM-b+&OBkgek#3=@xTH}*j)a07bFJ7EySXk54 zeqUm1!#Z)j-}JObtFpZ9PguRZk6yPWvj?kJ9Z`f3s&*O#pkyt*{1`cckzJmOy;V0z zJ`sL!$-Bf3;aX5IvNwJ}nPILBy$|G*cKA4%)PAky1SK5p2fnl1Bgbk@O zB2w=|)3muCaAV|CkziLax99|)I`g2{eCuK#7?b5kAhK}s6yw%!dt3MSwYa&Vp2et8 z=r~n~tJ1t#uDaj-m48i(Lx}^zspJ-o5eo^+?Q1Jqs397IFOq{bVL1B}i(;kJbpCFdTjH(Rt_C*=6Okci*s3UB-UHG`hqxTI$p* z{efaLWp3U$PJ3_DYb!iL`p)nMKjzCCy{dtKN++ycI=Ih>OT_SyxV5P~z7IDo3W8W= zMn&sGd4k2NH4&|{A9e$zDsfoHVo5Cbv6L=W|5>W#n1&-Ix??3tjmGq!hjbW91qPCb z+A>04pKIlZI|nZdW^lrZ`*R2n2KFpIKTsHxzBpAhFx4kE6f=E40#XENW0T6EGAd|F zt^R?;;YQ>`njbhvKTm;n|B;G3p@PTWoIM9N-rl}YL{9rN#=B7i>Tm4FNqy$Ls**+CxbAMG`xKAfuv zY;WKeezb9Z3?f{CWoP&Tn)Xz|mwJ1q-ps(rOMWX^u&^<+?sQjP-zb3u2E0ptCw}&vsLrI?jj>4_CmpH>~I=4G~G(oXBqT+=62v#`Qzs9BR#gDw2 zMdufPg-KwYa*Fd_9Df?YncUv%c=5~b4Xa!f50oo-Nz1oDGH7KhsNgZ1@ z&(7m#|G|P59n)_>IV{IcO9qBT0~r;T&Mj&p85e&u!?|VGS5WCFCd)hx{1d* z`Q25DX9_u?Aw?X7by6XM$bVJ#?a)NYbA@SGPTWeWro4P!{SU*=)jVPp{q*#%wc0TC z8fJnTwv(Bo9z?-~$7MDXayhTPFtXQI;NEbvXK`_S0rB)u8M=?+$TV6MUI9>YSV4jvL~E;OuZ zF%4^XEfWBrft73Z2tWrQ!kZsIY>6w_7tXrC=1OY>Y1yX`4>5RCwp)55DG^xMj8kt$ zvsDi4LWo46-T!TJm1Tb7v1MJZB8CByBmb9jKUV?-M6$LKZKOJDCJd#R4nQxqJ2Dh= zuZdShB@Ge)a|X{Ce5VYj+TR@(iB!ZQ^Im~iu_mLkrxIE(CDd2=4MC5~JfH`7aJwiy zDKiPm4mjd5@)FFDx?n(cKNwcOgkbui>(~PBUx<9RPUX;Xi{GaRe?Jo)zrLftKwW-` zy^>P(K8wH=Akoi@EB6p`d}ID8(9kV`)yTL2|L}DM zf%*BtIbd}SYptEqkBJHio4TFp?IRr8iPov%f>>;E{3$OIzK+%l5AMQR%N$bG@3Sk&RxTf7XuCxl{gh8~@G2@|n3QA3T*q>!t6?03_tYz?70(%i!9H zS@R^m#(+(aCj>)%=LCm#bL)T`rC!UpQ;#Rkobu=&#pz-XYJjbL*PZt=k4u@EKx(%c z^iBN3V^#j9FH0~~3l*vW%*#FdzRiuDOpHF4MFhjsb;sWLAEht!0jyM~35<^zdtKI@ z97xserFXn*d!8{#XWFzbkyF}0&2~tDgjn`=x%$%wh1yULYff_48g)Xc0m#SZ40n=C zKQawI(l`=&njQzx&j3*M4Ab3PpwO?`A$<*d&<<@~Gh>YJ(CqIp7&KH9P-}y@JYO;p zeI^_{I>*1c{$8+VMc{2_&zcQT3PD?VSd>_Nt?^%{yq~{jw5hfA7^2;chN|rj``s*o z7=$Sy^O9=VrX%HACt)`)+b|#hBAWA+vsF}spyGE>pKhKh862v`PmJHYamkCT8!;Z; zUjc4Baumir4Vs-@fh=bR^HcAsTKbP6>C(pf{UWyR(Cf9%Eqwbbl#AioF~a1aHfvP6 z(gjbm|Kh|ptF7-hN0#xn={ipM?QEz(FwySmDYkY;e?ehTA=O?8r@XI>D{&3bk3pNOD zRG^cUMeV2JVDg(?<~mjCU&YuSW`jG5Ot0;I**AUg)?!7;Z@h)KHyhF=A!~oF3q{o@ zu5Z~ERFIAJr?ft<7?J7mO%C8K|Gj|{g+03dYI+oLF522};Y}OlmrQZ^nmjG_`1P!v z3OU%_4f5CsGpF9glVZ(YrqG+gD#o%Je9uRjEKpWckS$P@+F?sAL&*dS^o?6r>hx1ti zDL3-^=*`?k-UzkQd4pb)?i-|W?Ai(zAjjk}{Ds4`9$iEk|0Qs!>+BRt*59bI8Dk22 zDP$Da>v41ZmIWBcF|{~qp>gH!&{92&_GFb4mabD?%8_RYG1^XmLC z(%r3Ny=7rAFKc-CfYnO&Mgz+>O%;+j=zG*^yxTUaZ zfCQCd;gV~xS>LD;xg(T}@}V*>YD&*RPPC!t020Uw_s-l5?QH$tS%4GjWLOq$13|%N zqP~68RImC)RMTa{^rasgV=I{$*x0l>xCogEHfii!1lj+n?Dtq!n14}l2DR4SoO;#k zkQGDReefQy6}SVy2W%&(Ooa@>3KRmHbQ91YaI6;^CmI)^21qRoufAEVZsJs1Cre#5 zV2eHfkjDaB@M}6|KII0X@|SfRSOmW#9yIVcq1c$I zCPW&6|Ex=VhYLW1E^mWE+GagBThj9cAw@yxj;5*CE4oC!f@wZ!T2Jd1slYZ%S>217MH4{jKN4TGG<5=01=X?fQYK| zFoveKH29fhWmmI33P1TBkDJ@45|-=L1WJqVPj_ORvq$G7FHd7DKH$@-fM=Avu=2~h zH4#OEDT0lsc5CIpKVxiAQo;sbkAWA`^K2Fpqo^2qvlE}jFEWKENpJ8hQ*ebA?cB8K zvC$9tm#WDP6rzCgxXzHtP1(D4xE#PSWNIk0&TX}o>hs>k=6-BxOX_+F_hkP5lP+K!G#A&cy)Rwt-yk8~%4ARG2 zCp6e#yA9Qwl03w%45;O_sR;u%Q=%~w1#c)y6bC7^vNx7t!dlYrVQ~L-^I)e`- z_*Z|@;kUszf1!S6B`fN^(@6a$7YD9i2RfG_+41 za{JcHIf7lz#dH4&4>zY>cnAZ(P{oELc;5}G*zH*?z_4`v25Sw8+(|{)Ph2Wi_SF(& zhP;MRwT}ZPA5+|1HMb-{i?*BKKd9V)>is0*X1W&Eo$XS09Ea0s-~h)Wm}aPI#uR1r zWVnXZ)5H`A%>i@Z0IUZ*I_`pn4keozRYWapdfS&9lmJM0RIVK|RX_)zLN=ANCVdle`#{!9JpO3-?M~5hQ zba*z*GAE-dyh~Ho1Pk4us5X*E*lvbDD;gu1$O5_gjh0B20_G%|;H`$d1oi9g=CE;& zqN)EX3UH~kond#=S}^keHdlRj91HZ5_i%UhAD$zU9L>)0cudc{EUZl`rB?m=|fe`(BipF7Fzf8{pX^<|@ zLW^U8<`S-`F&E~v_ixFwc zwNn$}(m@CQ+E=L3FM!GWHH9-<)58Ry;9vex^cme84hVj94Kvopw2XZZSF(Me&fR_DcRt7K=0P8MI{42#PURaF z3$ifL-CkvnSo!NdJYJ6XVYz(4vcBf(M?w9rjzvdPYr9HY+X>{almHN=+wRP0ao}*a zW7ei{APdJ_^CV4l{=k=oXy4b#pF;1L$$x=q2F%&#QYsVV8)!&`2P!(mxKN9t*M5 z&)Rz3oz8S1jC$3`HSlFOj9iH9PVSXvF^oK&ix0dNsA#qRTSD8iLz{I|4t&c%UISHC zWHLbCGe)Lq#!~r6GD=6(mkf9E<7Zgl^Yroc!emXTocNWhP!=qx`=soaZp{w&i)!F7_U;Er{H5r$_3`>ps(PsoT=3!RXHww;rCLQxQxxen;f zjGbhE&aTFgXRnIycaKI)_opI0hf{6=aR&H0^`;2AvWTFbJ~hedeLVVp2r-7w&OX%+ ziWxhGf2R5rLFn8wljd||&!KbfboG#H-@Qi(23<%8PMgcdHgml{(m9^=2Ee70DVY_| zB4y$Md)m1lDBJXc+aCWLC>1bUP4e?s*+jr5n=zlPKHjUlJWXNjB6cvnAn$h7B@L!+ zBC{LG64y1~APnfJ@I%q25u>!u(m!|aSLrFic3)-(PEc_LrnM1VvGCRN_BHFKwsTy4 zE1@xWrsuSZ9l&=U?^$b32nh1@bB9PYiR|-345@pO!-UoV_;_4dn)Jc;(q^45V5>lx+w@@7)iEGryY%f6R**jdI<55xQXlIE|dtCim=q3hbvN_`d`l;fS5(2opa2K7UypuYR6P!7tY3 z!~I~%NeEjS0FUZ>_PqQ)76{)^d<{K$o)Nr75*hi+!#j7{r7&{9pjzzvFne`4R+9)YAjU^>%kgDp$lpU^Lo46gl+ENYI9 z!&YQ2UJ~*tIkn?Bz$9x%ixs|3Ud#-oYn)x03B|p|bpq{8jb7r(dTys(Ay3>~&oWbV%cJ%?L?T%@V~* zZr(khSw6Mg(Mn=}%7jZ>0Km1iqCVyO)LPuk=Cn9*@KDC#k3wnPP%y~~WFIjDjo=4K zoz7mA-Aj*`rS65|yY>l}K@{F`*N{C^qtt^w1vA-VQ?M1<07x9OgYU+a^%(5jtk=c{*Z2)?LAY7Rr@o&{32Zh@ zgGdmOOPX#l{kdgLPUG8l<1VwVo$y#!Z7->sDmOz!UkQUClxE1~O`{r?XDBcCFE03F z2W5e_2(>}w`Getf{UgOuT7&L4p4UH>I6xXt8dF%nt{Q$`q%bV3`ivA)BbDcZK;15wI|1>j?{m=c5}e zKcbYT(l*3-n7gW!Nkl!B^OAD50$<~rE2z~H)YK+~zgp_AGrm+wv2YK@$oa<-UjKfE zngO{==9-awjMHOP5mOFh}l=O{sO6lSkVCz`0K1A^~4^sVw*g(>D`c4-08Jk zH$`F9B|_e}Oib&m!<}hgR(xHmX}Bf@uwkMH#usJchk~@pI}WtnPe+_--XeV2lM22^5w(Zj-ug{V5NR zq!iud3Ca^`Vpd;v5*7j%ZATTZ4;!Z`ce;6jUTL=nw}2-HnjNrYcfg_jzK$&Z8ku(`E`^3kSx(^LRa40Tv4t5 zdGmJ7Kzr*-WsDvii$7bZA+cbS7}WvZu=La)IV?!OE{?Nk!dZ3Dp0)C)bf$Nr?3;v= z7uR15H+QbKeTcuA^c+ypVA9P)Z`B{fIdcR_V4^a|e!q>tMFp%2?-cVb!G$d9keElm@k8KF^r%`Aw>9_)!+Zce~BVQ8sE$oq4AZ zc;@GSt5xw1v0HCIHZ%3)(m#Uj)H9!%%JIgqh#>w}}LFhjD< zgokQea&@e35`aann!R1~lmX+e5J$9y1z^!j)lBd8Bwv)B`OF;MhKAu0o3F-zn8K+= zL{S?C(ukzKuKHJ>mlOs!sb9VQDwYPwZ!rb3RIO@wN_kQtmy4+t#Y2`Lw{B*KJZbQx#+Qotmd!5jTB`#rF)u*UfRL|(AKD( zmbID7in=;SuG#As*L8Cn__8676qzmCq3Xmcr-yZ!8XubT)iPD;ljqC>dR&uuu=ud; zfrBmdbkfoNdo;n>BhjpX*u4!;i3#Re4~q9#k#4m|_OSM`x<>)% z{`)0uRRG2yNKVY-geK)6KP#5F^0f~T65LY0{UXhV$Kfyqmm^hUdFcBrA^F49i1ebi z7t6iUHaH|49=)-2Oq=p0{iU;=6xMJpRvBeDl2IN5W9m~V+#YvydfX0sqD2y#5?TCc zlPCCJ8o-y`7e2f%wgX#>ge&c<*)unYHLy(}L==t2dGhs@M?UNV$IvawSn@1Du*Oo^$P){7N}T0V-;uHcF9eTYr%cTz+X4j(C{un~o2y0i zGYMJj)i7UGbPGQAu|4ia2jv=FRz3X=S4L^?j7XF8LUTCwB#-pzhwgbMX=lB+@FPU_ z27XToVXKQKty)Nu>_W&>{N|sWB3|$JPr7;DM4=9QC1XFqP+w^@&w1J*$@Komhz6l# zV+T=G($VdhUtSP#Gy*5>$W|h@o=?1|z*YfmNQ3-c&7*S^CK*6ToT8tMR4lmL!%)iD*(wZm~VA0+URYwW3+KB?XjV7Vy+syFdWmbLu93?(M z$%xX3%5L^IvQ`& zZ_YFU7`A2(nN5p=?K8LrV>+V&SXXnBB{vK6rqO?ZKB8Z#yzbZ?NfCInlxVq3>HfGN zgljlCB7>Xddk>$SWOZ}n*bD8R8FErHE`H&%o$;4=S+mTXNzGAvgN|l}cp_X~>n6zI zcdgyUl1#2u5EE0mxIlcwoqlz==rrep2ps-mZ{%gqG2#Z6Xl@L1-i5aQt1b%c-XMq{ z?KuPy6B=vlhrks{R3sQh_qj;A#-Z2;-6VoE6MmJm5=JI_66N|R$V%uj>|*&~CU)=P zY?SP$Wg@-!Ix>VRd04(NF4q8)*2vBeBOy`TEw=>p_4}YzP9yJ#YZe&e{5|5qctF2X zJPH+Y8;(T$N{x)k^oFn%dcpqSs%M(ARh&7;%+FI^B;{JeD_biIXSo%BEad z(3xAx(2gt#Wm*h>jrVES6FWNSGBlx7U{^3Dc__>x+%&G92ef3A@Jj0grH)qPZ8bjmUmBk%s7GSToP9T zTKgW2>am09E|iJ{(?!YG0twBtH!VS;aV^&yJ^(okQ?%vlL+{g3C1Rr8XdxB8>Y_1d zkEns*dg|?w!Ysmh>WO0chnMy@&iurQiucF+FnM`7!!G3jyBk8EhFwVFEq3vrLk!3IjTV;551Ui~lsjOXhF zF6EveW6%`N8T-VnbIWr(He-?EP2cJ+!N7i#T2=$enOtq$qY1v?L_`fXtRYpNJt%Io# zZn8QC=rgs31&(De{gHAWI9+MCZvtd!(~Pfhm$pvkyoWQhW`g-PKQv)%a*G?AVP^&3 z#e58p*uSN`ee#1ymEw69JjA<-m5Ff>A?b1aXkP5x6b)Q3JRh~Vz@Shh>6m6poV%<- zQA_;F7Us}aAcT6~c*6`vbW86sZ6k6K*EUm?BRRqQe3;fO0(!Q_34eJi=%3hmg1WjH z2L`eEz7dPQl2sP+^-Ld0c#4Xt5^mhdk4CB#R3IQ)K&kGyW}6mx zDMS75bXWa?n_LqQJ6!|aRO!xDI$Anhua)B=irS>r6Q+MkVoHp=`=K{uEO`4dgKyJucr&|y_EvZUmx5c zcy28r=yrSB-E@C=Pk$cU?!8`(kA?<6B)>CXx~ln&wOTT8yX>@GRw|-1rl`7uQ=P%WHCugPL zpJ;2r3%Yn#6BAv2oyNhsK?@H|F;^fGRzQ&MJi`6$HO}B;`6|>BS#45^R!cenHbz!% z?SzcjYF#V$Nnj&XNN=`@=t|zsMNVZ>cYe{zP&|a|hP|0ek#p`{*>rGzD@D0GKP1vF z80#8L^+=M|4ze$L#t+J_WEPtDPTItlmogNTM=!N6GsA!g?$yWH7khswT^%{WP*Gbs1~%`lRUiR5$J*9gdpJS zc{)i`Lo9g=x@^F5_jgg7J15r5HR_)n!yg1(ERxb}2yC|bGTR<^k40CT#^tw%k9+UN z-CbaFlZYCx9r~NlgF~f!%!b1pv1^_!8tnSS5YqT=;vctsZI)8QRS>=osXcs@lbnmf znxwyZjl6A|M^&D2-Ka_yW4y@0F@G;P%sKA}hg2k&;>%ld`1Xt@^(gA~HMSM9GRty{ zfQvt#p?*?GeQ7J?;)Q| zLGz-)@{yOE#~&hIu5{^~`7;5bH`CWV@)zeAePD)6G*?WNiz8RdnX3^+j315{hAKDw z>g2MHEiYE#&E4Hh@e2zHZcSk-=7W(PdC$=Ebm@(5t@TR&jJK5QiU3{B_iEVgrQ`4_ z)OeRLE3i9fEH}wB+$5~5^Rzw{*WI39W3u2!tIxZm4 z?IZ7Vg?Xg)Ul(dzO^wxOHXnpi`;GqGz8p4x6*&d+?S(kvwwykv=3r-i$Kaqf?h$d< zw!W2hQ(VA$DJ;Q#9v%$(DsIt+CaCGPiVIkKsb^=q=~h z@bHxt1`6^l9{}1~foQ2v2RQWgNoU@|TeBAoT?ZF0t1UF*(}K?}s@!p0u%>aDec^_k zN|q(9I)ZIVZ%=L4fPLF~eIxkm6VdKKnRhudWxO;QInKDk3x}SWawNX1P~Ej*mUVq-V!t1M!$LP*=pav}|3;lZtL?XirOzBl)43lF zcShdK6iae`a;h4{<_C(gGfIn;?iW8_+x_E{=YM;{?{5k z6X#EmndA?)@8n?rpPaK_W`;J-KZyeWXZjU0CoAXwOB#LFntj%qXBe$!VcSh{n=~5b zPeFlpu_rUJd?}IUZ{lz7(yL*Y{$CNy2#HxPe`zE;z`7}5&;;pt1+$24kBMn#p9}jY z(Vzptpk@ots9al>AjsCr6EN=lj$!tDVw?7BIb!=mPu8C8A}ys8v~ zE6BF4g?9QbqE={W99onQDyFQoQV|0M4CO1hP{vb?*&oiJ08yQNji)y@fKqx@p@c2z z5?;$$2!GOF8@=zMTL1S0OnN`qiixO$xNZOMSHeSy-x-sLJgP{ZiQ!DJF{HCrvfrMlFPaW86$!Qd*b2da_gZ?FN^>##~HX|P0x(P~(5>4Ej+x3Lye%Tun5C1AXC+#C?RpbHWN@QNX{?%`acC0FzH+r89&6N5I zrc_c9N&G6Gzglw;^$Y4Eb&3Nk*cEtPJA4DgD+ob8o;mb2Y6}^6FrLI3m#&{72J}@v zq5g3A9as@O48k{yHvaJMA;kVgZ@_;J|7}%z{CKO;7@ZRbi0)sF=eL3ZFGCQoKeiNx ztjQd1xXY)6>*X%k_-Ja{#AqYNMi72|uPQzl$Drf&(fK)c)b+E0`G>nIB*OHa(?i83 zrnc*RA^qxFjxs)5+n+}bL*GT3^BB*lyB@;ISR5UZZP4Tw3YKwS#mC`kJB_Z0t~o70 z726Rm$yHP#{c}$Nmytqn(UpdL6TI z%f#PH62DV$jCW?+&NT!jO}H>#%6}KF9p8rl7-PRGf7&clwWYVJtsY{Q&fwjYBy&DQ zT+8!W2*+J$a-*G0n>sC}N)q2#ml6V38QYK--{?>I(&*!P^ zAU-RH=V)S{PtPRCnf{XcPa|RT8Ql#YIjEd>Tcx{&4+1~tj*H$Yz53F}O?1=S!k>kl zaT(J)b$0gLr3vBK#Z|K=jxIqQhY>T(Z(-N?d=!5Tk)p0}R903IR#zjwmz|0ru#|u6 zM-`d&F=SaAm}l2BGUn?1s`#YkL*k)EI7gz{?EXt&`n3B(=WMZoUEMNP?y`nBq$dzD1R35KBk07B)atO2*E}G3!0RF);#^F;2E< z?;{v2Y(Q#Scr%tXI?=fVpDJY(0&w&=H9IsuARZyBU?A<0*?6N6ntj zv(yM0ll+{G$JNf!#i?A(q=2!pf>04W4sIk24rW0;5d~llF$Ny&|2ObDTT(&bNNqU+ zvP!8C8(lRCE^dI+&#h^ssE857j)8t02`xw#V;9R714;Vd#qT%$;_gKM6aUr*F`F+x+$0uVA5{u2@ep2F%U>KdNU^y97nf8McAUOY|0 z!Th-dih?<>iaXh#-WmCUhr@ZRKg`l16@xs_0UrY|$Qa|Uy-_^k!EdRvn^S~x<*3@Qs9{Jc4#sTfUI zo11eNR#j%Ph+~po)Y#m26n~z|-~}t1(m4Z14`JPI;iQL&tj@guH21k@V*u*U3dI_? zaHGk7%yQ=!cLcvuE*XVfd$gt1LXwzVfhKbYAG;qUeK$`f40`;5Gi>;$vu~R?Lvo>> z)vpadLB8iHCY3ac#PPVskKnfW5e?BkI4e#@Jxv%L`b zmUAg6#PYVbeCE|_ta4;;D^$6si>YQh=2jq}CGTNg(N#+BXvq}yU*3W}Fe9*zlKkvv zlKJLH@X1BR_1$s=JE!2d&HZ2Mxq_f2886Eo+FW{`qlq(K>9L3Z%P#c%-N?Oe?}nS_ zK>NZXsTp1otA89bUmB|FQ)NXEcuD#_y4HbcjFvOpSVc!&OY_U=-)}%H2HJ_VV6Cuq z%n3`b9*}}6dg}p8Q2Th)f~L#KX(d)!Ha^`A9wgBgmK=Y%1Hm zh|^p_RjWEI8rue(@8a`;F@6qzC_a~8<{`@qs8Cb)=2+(DkUNv$9z8Ix5Qa$mXUenh zzDB2Co?BY9ZIK`>XJr!ELGq)E`^vk{?h^N+!h7PY9fZ6%OzRyU>f>XcajWnFJwS;vhf)*{X9PzC3``p7BPs8tzb}wQ-Y>3TedUZID88+Kn__#T`I=}3mHkk&q|YpAk~##(3|PoEb#oUF@F~OJ+-IW6hY?h6;A= zoHBwmwHy1JYeIs8hKjw{xk<1iBOalH7>l28H;uWXHi4AysIa76ju2IsDO0w#yxejj!qwSR~IDBBkUW#11k z7nRa4W@KUz@7^86h4flKPX>>)a;~`JanOZYpzcJQPi;ha>OI`I8Z!maEstF{OJ+VWTfm^;&6TB z_&k^pIP7Awk2N{4O}`bry`w6fP#dGv$abjJJocb+dn#dXqWm~K|vS(VzlMn zI`=#;&u;DnHc5j^rWp}M!e`qe>f-S&ewm83W_K>rjGC8pad{|Ab7=%P*m;>bGjvC4 z%ggN7_I7r*_DM4rjmj~I0ATL2fF;VItE=kjsdrplYw8JU*oVf2gQCH+9+7CJxr@ST z{fj7id&R1_DcVCt`=;;#94Pk@l$3gHJ6Rotxg3=ol|> zx1XTeN^0tf_L2}9&TKqfY^j&0p`wI8GY3uDGH-0U!_B?vqXYTI?p{9q;Ye%z49VCz z>6y71S-ojfbTl+HY9X6Su6$+d*&`_vO9$^57!7OQ56+DX%BaR9gFyg2BF4jqj!QMG zsC_P-s!#PfkNpIg%5;~mo?oUW?(+7LGO^LIvNCeAvZ&0ehITDndCIouxS04Si;IUt z|5hc;EPgGeUB-%%2==CR6b_rjW7MWckrNyZXU~bGEFIl}3*jpoHt?qqVBrx=M%+*emFFspw_T2p8oZ5Gq`d)18|w^=6H7zjuz6k*KIrGU?>U zx(;_6?nM1-@*`?X#n+&KF1_WSGikK89a=uWJUx+lqukM*)oqcGX3B=LImWytYWpK+ z!V<$Xk>uFXXTXJ!95P`nnG%cYHOTt7fcnsJ~+xNH(|S%1O1=1)Ae}QnxbEz869=WVmV^oxSb;pwSSgG@f_cV+X zSTf+qDwS;QIdJI)zd!E+?oOf(T(~6jx6DdHEf!G}&Gws>?pTQAm6&Q1b+l;I0^n6( zJ#$@Z%m4};izxN46%$6139=!{Ht1we5TJiavsz)D@p}d-;1UN~m?JdM!%jq`l9;GB zf~U`wlMt&xTqC7(D`V#sCQHF1R2$1PlB0?hD0Qq(1yVRT=P?pOo!F{dgr`gz5AAX> z6nvW+Q}F9yoMk1GGRKv(@-wru?P%xgvSk%?t(3%59Fz%zXQ2NRDE{&4U;eiW@qboD z_)m=Ae^*8L@8s+Mp`!4Am#^8`7#aRA`I__ph}`>so^SWx%hyMpswz6NXmlQ#BU{Y@ z5L_H!)`8Xz?&Kb~zxsvq9WzH*gLki&CH{b+Y~q6iBk6!Z%b|b_`rqJtriW#C=4e$C zxT#)Md|q)iTl-fox9j)lgQEcx^Z0=H=n#YWfEXDOqrgz0gL86%Lk34cjL-b0=$jcH zrKTyMBcZAI2u_oq7SYpG*4`1&ml)Yx)>#qLmDfM%l@u5n8bUKcyHruRs;jd!bw_n~(Zgri%qM7&@E}Q1qw@o7l=OtYT93V*?ak%& z6(L@3ZjQc=p6<@a*8?FP5)j1a&Cxdo<{Bs+oQw}y6|uLu`fh}Z}J-SKS*$1 zt2_+YzhJWuoH4?_XS7UF4UzLiCvXl82&=hvNU6#7!nHN|%lr-$zv0`|b_;Tnb1cc=wklEH=!phcZhWgXf((@s=E=Jo|*Pn-v-@zy9tn;_WreAPGMu! zdPo3O)CRc^BbgrQZFEx}ZLB{1bR7_P_ae~iw_0|Nz1ICLygV$KTYudNd25}!4GNAL z>F$pA0+caM>yAIQbs?SD%MRYEC9un1QFN>xS9Vopwt^V2yYo$n!`}@$HH^kqBlmAc zA^J9L`}Y{*D;2mtzs0=Tc!zIx#h9l;vwI3KPL}UDE#H~XXHLC4A_GREMDmh3%)obXRJN_!3a8>UHc$qu~+R5&Js@GC)r0Y+tZzu+{dK9aa)Z% z3~_{~RAH=)IZg=D-L53RE{Pg{AM~iu_KM@ZcE<8&*`>`F^Ia-WRju>J>p0^weHgTL zz@;>vUCVa^mcNgF^Ikyg=qp!5*yfqSgsoSZ*gJ)F`Xd)`1E0C(WR9|TaDX$b{SNSn z)N{st5vaT@8;eoP&P#m`Ysf=N&3b=wNywp=3j$`_aWtCH-+nm@+^B2`+0RRgCUh#ay5e(M_`jzKjp3h#_&ZAnYbzhT4O)Qy0u*vQI8ShNS4b?4Xu!wQ z21@k=>Db`!ABB zDFa$W3&Y)hK#j1cTGsqF+&SoIaEPqrrEhV7_x9$wf4K{i|C{^O6Y*mcjvF1=HY$A) z@L4g7!Y_=PPv29>U#c*y-o2l z&p9YURmpM{wx>R3sCfRVU*RZv8KQ0U$8oZ3DQDD@oT}}&YJ+i@QwZ3yOD{yt0gj&Q zYYx6VdDPp&p7eo=?iTi^hWS_X*Yo=h=0{Nco*s{zd}U|k2(?xPrj;{6bp#U+T%D>E z{7^xx{Asf1%pizjR(t6;hae`zJsvMgMt63}CFel_UAVZ*66jymln-xnSL*~4Bwf6{ zsoFQH92_EGnvRo%ht3qKC1V!~y1%zqA@NzRQCNhw&Ctd^gqQgfR~on!@BjGxi8pLTH4jJDJVFwiNs&X-&8H zrDGSkCs3qA!OVVXpDXNsmg@7Lj-2wpB{3>d@@S)C<#_|1+h77|IlE{0 z?3E14w@-i;e6Gd2Vcugcy>nq!4+TI#5?a^t!5=WZS|=02_<07eF@(f!`=xDOs@Y%C z-97vd>eq}5KKS7X1P{xn3uuctgGd|0E94VMZp$!S)(&NA=ORPH_cfG+8jw$A3MyX< z^In_-`bg;|jaTys*Eo7S`^Bs_L>3XQW3GT~1RdHxswT0(xhq3w{CHL$>Tdgo558 z&tPwnqUu4bfI8sgSHtKEY8QbiKcRpr$zB`=n^7e$Mz!ob_b5w=eam# zTx_=5Df$dX7m8TtvA}9jQ&L{Z4MG&6t}A-ALrJ6ou~M{3#-`A8eL(OP~l7h zQ}7`rfwZM**rIXX7`TvGL3DFXV+Xg*w4ZFPp&*R);FG_2JzVAg9W1PtC%PfOWfrqV_vV;QeDQ zFPkjfHwXKCp^SKo#~^g_B_YN}{p!-V!vvwdRC|@aOBd4E%!~PwmHQbfnQ-*?{t{`a zyl3i`=tl3ahU=3N{>wAy1a}8eT7%y$vTzLT8abaIo>f?oIZ5jXI7TudQB0BA(jdu~ zCX~Qf29xqYb!}!hRT2R$P3PgN7D`Wqbt?O}AXT6AfQmQ|fIk36VJg5BX(__adf%8? z%?N6(4UDX*o0|8AO;@M2Cn$wH8asA;6!l*27_&5;qxVAsxvVWV=GFv_gO_fD-~>BU zGm9LK4PX@l*!o^x6Z;|Pf0!8r|5&we6u<*vqtw%F&#$CB;HB`vc48na)(E8;l2Jvy61S(_Ut?udOx|`NYymC1ppRJ@$F;7WLz>+?QD{_