From a05d8a18d2e81c94ce176fb58d2221afbbf5ee72 Mon Sep 17 00:00:00 2001 From: ZYT <2300409876@qq.com> Date: Sat, 6 Dec 2025 11:38:05 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=8C=87=E5=BC=95=E7=B3=BB?= =?UTF-8?q?=E7=BB=9F=EF=BC=8C=E9=80=80=E5=87=BAAPP=E5=8A=9F=E8=83=BD?= =?UTF-8?q?=EF=BC=8C=E5=AE=89=E5=BE=BD=E5=AE=BF=E5=B7=9E=E7=A0=80=E5=B1=B1?= =?UTF-8?q?=E5=8F=A4=E5=9F=8E=E5=95=86=E4=B8=9A=E8=A1=97=E8=8B=8F=E5=B7=9E?= =?UTF-8?q?=E5=9C=BA=E6=99=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Assets/DC/地形/安徽苏州.prefab | 351 +++++++ Assets/DC/地形/安徽苏州.prefab.meta | 7 + Assets/Magic_Spline.meta | 8 + Assets/Magic_Spline/Texture.meta | 8 + .../Magic_Spline/Texture/FX_Arrow_7_00006.png | Bin 0 -> 63028 bytes .../Texture/FX_Arrow_7_00006.png.meta | 140 +++ Assets/Piloto Studio/Scripts/Rotator.cs | 44 +- Assets/_MrCs/Prefabs/GameManager.prefab | 2 + ...i_Suzhou_Yueshan_Guchengshangyejie_2.unity | 889 +++++++----------- ...ongqing_Yuzhong_Hongyadong_Xiakexing.unity | 2 +- ...handong_Langfang_QingzhouTaihuacheng.unity | 26 +- Assets/_MrCs/Scripts/Manager/GameManager.cs | 813 ++++++++++++---- Assets/_MrCs/Scripts/Player/Player.cs | 4 + Assets/_MrCs/Scripts/UI/HUDPanel.cs | 6 + Assets/_Valheim/Prefabs.meta | 8 + Assets/_Valheim/Prefabs/Pet.meta | 8 + Assets/_Valheim/Prefabs/Pet/Player.meta | 8 + .../Prefabs/Pet/Player/PathGuide.prefab | 172 ++++ .../Prefabs/Pet/Player/PathGuide.prefab.meta | 7 + Assets/_Valheim/Scripts.meta | 8 + Assets/_Valheim/Scripts/Player.meta | 8 + .../_Valheim/Scripts/Player/GuideArrowPath.cs | 102 ++ .../Scripts/Player/GuideArrowPath.cs.meta | 11 + Assets/sucai/Hovl Studio 1.meta | 8 + Assets/sucai/Hovl Studio 1/RPG VFX pack.meta | 8 + .../RPG VFX pack/Demo scenes.meta | 8 + .../Demo scenes/Demo magic circles Vol 1.meta | 8 + .../Demo magic circles Vol 1/CameraHolder.cs | 163 ++++ .../CameraHolder.cs.meta | 11 + .../Demo scenes/Demo track markers.meta | 8 + .../Demo track markers/RaycastInstance.cs | 78 ++ .../RaycastInstance.cs.meta | 11 + .../Hovl Studio 1/RPG VFX pack/Materials.meta | 8 + .../RPG VFX pack/Materials/Shield2bcg 1.mat | 111 +++ .../Materials/Shield2bcg 1.mat.meta | 8 + .../Hovl Studio 1/RPG VFX pack/Scripts.meta | 8 + .../RPG VFX pack/Scripts/EGA_EffectSound.cs | 36 + .../Scripts/EGA_EffectSound.cs.meta | 11 + .../RPG VFX pack/Scripts/Hovl_DemoLasers.cs | 125 +++ .../Scripts/Hovl_DemoLasers.cs.meta | 12 + .../RPG VFX pack/Scripts/Hovl_Laser.cs | 115 +++ .../RPG VFX pack/Scripts/Hovl_Laser.cs.meta | 12 + .../RPG VFX pack/Scripts/Hovl_Laser2.cs | 146 +++ .../RPG VFX pack/Scripts/Hovl_Laser2.cs.meta | 12 + .../Scripts/ParticleCollisionInstance.cs | 48 + .../Scripts/ParticleCollisionInstance.cs.meta | 13 + .../sucai/Hovl Studio/Resources/Scripts.meta | 8 + .../Resources/Scripts/For demo scenes.meta | 8 + .../For demo scenes/HS_CameraHolder.cs | 164 ++++ .../For demo scenes/HS_CameraHolder.cs.meta | 11 + ProjectSettings/EditorBuildSettings.asset | 4 +- ProjectSettings/ProjectSettings.asset | 4 +- 52 files changed, 2980 insertions(+), 819 deletions(-) create mode 100644 Assets/DC/地形/安徽苏州.prefab create mode 100644 Assets/DC/地形/安徽苏州.prefab.meta create mode 100644 Assets/Magic_Spline.meta create mode 100644 Assets/Magic_Spline/Texture.meta create mode 100644 Assets/Magic_Spline/Texture/FX_Arrow_7_00006.png create mode 100644 Assets/Magic_Spline/Texture/FX_Arrow_7_00006.png.meta create mode 100644 Assets/_Valheim/Prefabs.meta create mode 100644 Assets/_Valheim/Prefabs/Pet.meta create mode 100644 Assets/_Valheim/Prefabs/Pet/Player.meta create mode 100644 Assets/_Valheim/Prefabs/Pet/Player/PathGuide.prefab create mode 100644 Assets/_Valheim/Prefabs/Pet/Player/PathGuide.prefab.meta create mode 100644 Assets/_Valheim/Scripts.meta create mode 100644 Assets/_Valheim/Scripts/Player.meta create mode 100644 Assets/_Valheim/Scripts/Player/GuideArrowPath.cs create mode 100644 Assets/_Valheim/Scripts/Player/GuideArrowPath.cs.meta create mode 100644 Assets/sucai/Hovl Studio 1.meta create mode 100644 Assets/sucai/Hovl Studio 1/RPG VFX pack.meta create mode 100644 Assets/sucai/Hovl Studio 1/RPG VFX pack/Demo scenes.meta create mode 100644 Assets/sucai/Hovl Studio 1/RPG VFX pack/Demo scenes/Demo magic circles Vol 1.meta create mode 100644 Assets/sucai/Hovl Studio 1/RPG VFX pack/Demo scenes/Demo magic circles Vol 1/CameraHolder.cs create mode 100644 Assets/sucai/Hovl Studio 1/RPG VFX pack/Demo scenes/Demo magic circles Vol 1/CameraHolder.cs.meta create mode 100644 Assets/sucai/Hovl Studio 1/RPG VFX pack/Demo scenes/Demo track markers.meta create mode 100644 Assets/sucai/Hovl Studio 1/RPG VFX pack/Demo scenes/Demo track markers/RaycastInstance.cs create mode 100644 Assets/sucai/Hovl Studio 1/RPG VFX pack/Demo scenes/Demo track markers/RaycastInstance.cs.meta create mode 100644 Assets/sucai/Hovl Studio 1/RPG VFX pack/Materials.meta create mode 100644 Assets/sucai/Hovl Studio 1/RPG VFX pack/Materials/Shield2bcg 1.mat create mode 100644 Assets/sucai/Hovl Studio 1/RPG VFX pack/Materials/Shield2bcg 1.mat.meta create mode 100644 Assets/sucai/Hovl Studio 1/RPG VFX pack/Scripts.meta create mode 100644 Assets/sucai/Hovl Studio 1/RPG VFX pack/Scripts/EGA_EffectSound.cs create mode 100644 Assets/sucai/Hovl Studio 1/RPG VFX pack/Scripts/EGA_EffectSound.cs.meta create mode 100644 Assets/sucai/Hovl Studio 1/RPG VFX pack/Scripts/Hovl_DemoLasers.cs create mode 100644 Assets/sucai/Hovl Studio 1/RPG VFX pack/Scripts/Hovl_DemoLasers.cs.meta create mode 100644 Assets/sucai/Hovl Studio 1/RPG VFX pack/Scripts/Hovl_Laser.cs create mode 100644 Assets/sucai/Hovl Studio 1/RPG VFX pack/Scripts/Hovl_Laser.cs.meta create mode 100644 Assets/sucai/Hovl Studio 1/RPG VFX pack/Scripts/Hovl_Laser2.cs create mode 100644 Assets/sucai/Hovl Studio 1/RPG VFX pack/Scripts/Hovl_Laser2.cs.meta create mode 100644 Assets/sucai/Hovl Studio 1/RPG VFX pack/Scripts/ParticleCollisionInstance.cs create mode 100644 Assets/sucai/Hovl Studio 1/RPG VFX pack/Scripts/ParticleCollisionInstance.cs.meta create mode 100644 Assets/sucai/Hovl Studio/Resources/Scripts.meta create mode 100644 Assets/sucai/Hovl Studio/Resources/Scripts/For demo scenes.meta create mode 100644 Assets/sucai/Hovl Studio/Resources/Scripts/For demo scenes/HS_CameraHolder.cs create mode 100644 Assets/sucai/Hovl Studio/Resources/Scripts/For demo scenes/HS_CameraHolder.cs.meta diff --git a/Assets/DC/地形/安徽苏州.prefab b/Assets/DC/地形/安徽苏州.prefab new file mode 100644 index 00000000..23f0af3a --- /dev/null +++ b/Assets/DC/地形/安徽苏州.prefab @@ -0,0 +1,351 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &616688178513851202 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 932119738183159764} + - component: {fileID: 7326694442604138514} + - component: {fileID: 2147988866276981564} + - component: {fileID: 4856538540538549100} + m_Layer: 0 + m_Name: Cube (2) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &932119738183159764 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 616688178513851202} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 1.6103896} + m_LocalScale: {x: 1, y: 1, z: 1.5974027} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4666156273386392709} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &7326694442604138514 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 616688178513851202} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &2147988866276981564 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 616688178513851202} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!65 &4856538540538549100 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 616688178513851202} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!1 &724252726936952539 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3714827713392600281} + m_Layer: 0 + m_Name: "\u5B89\u5FBD\u82CF\u5DDE" + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &3714827713392600281 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 724252726936952539} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0.7071068, z: 0, w: 0.7071068} + m_LocalPosition: {x: -3.704, y: -0.5, z: 1.85} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4666156273386392709} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 90, z: 0} +--- !u!1 &7975283993973379945 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 72832042947355210} + - component: {fileID: 8159567502049976636} + - component: {fileID: 7428044850780860213} + - component: {fileID: 2847486358990787404} + m_Layer: 0 + m_Name: Cube (1) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &72832042947355210 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7975283993973379945} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.13513514, y: 0, z: 0.65584415} + m_LocalScale: {x: 0.7297298, y: 1, z: 0.31168833} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4666156273386392709} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &8159567502049976636 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7975283993973379945} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &7428044850780860213 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7975283993973379945} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!65 &2847486358990787404 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7975283993973379945} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!1 &8134991575396817661 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4666156273386392709} + - component: {fileID: 6866317245644399425} + - component: {fileID: 1831803231171388633} + - component: {fileID: 6043315326034838932} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4666156273386392709 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8134991575396817661} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 3.7, y: 1, z: 3.85} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 72832042947355210} + - {fileID: 932119738183159764} + m_Father: {fileID: 3714827713392600281} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &6866317245644399425 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8134991575396817661} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &1831803231171388633 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8134991575396817661} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!65 &6043315326034838932 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8134991575396817661} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} diff --git a/Assets/DC/地形/安徽苏州.prefab.meta b/Assets/DC/地形/安徽苏州.prefab.meta new file mode 100644 index 00000000..a0911fbf --- /dev/null +++ b/Assets/DC/地形/安徽苏州.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 23d92bcafd23cd84c80d578f742aa637 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Magic_Spline.meta b/Assets/Magic_Spline.meta new file mode 100644 index 00000000..bb30ba2b --- /dev/null +++ b/Assets/Magic_Spline.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1bf5d6cbffb27984abed6ca5fd38a4d1 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Magic_Spline/Texture.meta b/Assets/Magic_Spline/Texture.meta new file mode 100644 index 00000000..b0938861 --- /dev/null +++ b/Assets/Magic_Spline/Texture.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f7ecf9012c86ef24c8e7ce87f35ba420 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Magic_Spline/Texture/FX_Arrow_7_00006.png b/Assets/Magic_Spline/Texture/FX_Arrow_7_00006.png new file mode 100644 index 0000000000000000000000000000000000000000..c30963c6c81a3f9ab9e9317f1d9134a2c090cd37 GIT binary patch literal 63028 zcmeFXg;QM36E=zlhv4q+7IcFX7I)XMxcd@31PH$P;(ThD2Q7WB+M6xzl(RX zcZfe^A6=k45^RFz5b=QKAg3XRgjAn|^I(mRc*gQnHt|71!ted}Lmu=fw?z!H1nL|6 zDtOyj`+9gIAz^0ws1IwY8hEO6tMKZ2YN)Ac@NvFCk_&t>;T%ZXkA!qCuA(TX|IYIG z5u-C?*kB{}RP)HtJ<1Scca;Ok5{^bBAM;k=Z4XOY;-Hr&-CtLk_0IZ1kJmQBSGkm* ztkp>t@-~|~SFrk}N_KDf=bO&CEL1H2TJ`xOvw9bD+U_z} zX<+@w2mI)~fWMz$O>vs;`@f5ZIWOB6_}?`sC|`i|e?}E9uw?(wpyK~O=<7@K|0@LH z4ugXKUv`E*%2a@uJwgkIsQ4$nO7xPFlA3n^_Q{}Acrn96^MQgIaBw(58u{Qr+|ElV z^@-$8duGZ@=(83Q;!TM>=e`Yj`ar}j%N<%_@%ESgL-`A}spujIr1(Fz=IM*Oe?hzg zm6XJ%4ng@j;f&d<}5zW7yHY-4pm{2l^Hn8`l7Zgyjz@tlf= zK_C%@|IGy0k~un&m{L%t{~;*}mP2e`8ofNtFJVG%qr(Du7mPK+7`fu!mUWR}cdy&-#Vv*GgYgqAr^5zwZ z&&B*zy!NkrBo;)wh(+ijRtYg#9!PvC_Su&0E@DgIW1KW0LK`~&q}4-X|6qJ?Tbw9O zi5QxjVn?E7m%z{6(X>yMSz>1>{BJ&kfAgut^)hv*rRZy+7g@!H;Ip%PJ0A6d1`m@E zsujno*OEVu>|Qe$KPI?5kVzOx3jBK1YcqHlFF@q$o9B3(Mv;_d3l#s+(wZZwykgC< zxKi#((mQ%MtppsL`Y=@#)(FrPxKhaiDtAS%&6nR5ufm9&V#Lpsz1m;;(F*}I2?Q!H zJbVVR`nqCH>M-FkF$*~oMJ-?@DlYujpgca7wde_m9(98FquHt#N*#a03cC{>Bl3PJ zq;C8hBOWCNodm@BKw=Dhcednp^kJ$jECK*|$&O=9&vY(YCEX{gMKOKmRj9L5{;{yv zwTz&cwv3J<8@lh&+~{|$ zJ4<={=~Nc*t5QPdf>;2bi)~0DfjbA{yk1PPzShC`D@In=ZR2k@E}QEndqbQo;sDb+ zdjeD|M)|;YW=To5@8vVyDYSr1MdHm5?{JoYGS_W2_tn1(#RGKOfflC>;&BSMEDWOxD`OU1>)T+2;DQt-cVe~0;UUS3e18AlWxb@6Uol(! zoM`^VP?QD&pwDJMO14}+mA=b75>MB#Fgxs$^x~kNnVLdl)_$J%)2~CVPposfjrE2$ ze_3yKtBtiXx#kFV>!#^vY`=?M6X_(ygeAfZch zXScfKI!^swSvUC)hG&DqK@FJHQKwfgBZq1Z}hOvpfu1c^=c@o-ViSnP?_OooB6 z?)mh<^_0q7ePvEWQ(MxLhW@B2?xQ9YI^|7f)LvsU?gV+rtjZ)!pXziR0_|RBr1f* zS1l@-VGKwkf(&f);B=$VCMx3PTuy^4YnSc5zA4}0zVXGbwJE?g?N1@l zcRf#J#lXqeO9qN|+Mt86M99@qej~Sxgu(mgKbf#-em&;;xO%=UGBpD;tv8e&t%!JF zXLzTH(M&Wqx;)9@w>G%e@ZDZ{DVkmHw|L>{ma*NpeA(`BU6ljJjPP-V_K0462$`Gl zGVdW=?-m(E!Jr&lfV%bN2Eky4Ps`Hc|HKlUn=q%}gJ-@y^5pqzS`VkcDF3ty#E?5$ zw0(y9hGycu?$OK+nI)nr4DFR0jR={Y`rqdS%cSsyl52SZgxxdDp&eJ>bS73^R-AS< zGO!q2FLeyLweL(b*q)C>QC(-q+&3n)F>*u9mv19nca|IU9uvit3uu6C76{D)@HA-4 zi13AC{(URVc1LC|`k_{~YAkNC5+FHa-E!o}9kD-6_+~u^?9)oU(r#34Gu~Bmc#*S6 zW!NG@9s2X>eer53WE&H5_QWgU=9P>b?6ws9Zq#|V_Hv<)p=BwWHl)~=w=2r?E3YIR zq&@mcAK?ff`lb`e3@Od{5H@4Z%VT-qeY=*0KUM9l%-p5J%rtt=ecqsyd8Bjxmx%u&r%d!$K?8f3G_blAc_ngLRMYL6272Kkx54IB_~S9gnTk{h(k1v<>UWV73zy?@O zH>p_>xV#x(=GMoMQdq~HtbQFkXQj)RIum414Rsv>RoA#WJ?Q7b4MjRylHO(tK_b#m z#4UPs*1ECEUV&+|2Znekqa|AWz1LzMv#$H%X%slsqgwIk$mR6Qng@|xsH=w}w+C#T3e4F^=4_)Qtah&( zZ>9sT4e_c@WudCp&f1nAns>vxl#W- z)lKEof*a0=ws3!Zm(ki7tIi9ncm0ctx!zv1Z*wB)p(|8Stx$oF-tYX(2XNqQ zj&mQEyx04P(AQm zM)(t&>navaEf2Y;)BIWI-*R4`v*gnXOq&z*- zCqBo;;~^lGFx@f3gSZ9*9-eL%R}<}Ui;?#hqkf3*m!B5ERT7&~JrL1}e86;3-<7xa zg7nZnU&IQp=IiE0ySiY8CK#Mi4}pf^|Eg_A;Hp-v_Ru`F z>akYai;P|F05dxpkqy2x1+C?=p0#VIxILIU#lytG4_3}9it92Kv13FiAtFfh#z)lVeAreuhGWK_(x1CS000^rfVO#-kgF=2) zohV{wAp^~yeYGTyT^P*uCe^F$T0!$SI2(rFa7OfXVwWnZ`+QkFS`v!)%y48bQr81d zyZs#JA8L$0=ZFw)psjQ^t->zpUyO8(UAXOIAsIKUsezbCy32>~FZl+R+X0&B)e=Pj z2--arTIPHs!vun3I0p!K+2>Cgjryza82tXE${ti@Zt^0%%XEwn)nytZ2aP9u#EsNK z*JyQu^}OT4!+Aq<4!Eixnk}{yYEHKv^(|gpr`~=P$+vNCNaG(+q zfg9*Ds@b<+-6m;vTO#viJa0&Btc19sBgNya(^MUvUD=;uCoh>RX#eYTdN1g8OIgV{ z?x9K(eDrByYbUoVlt?eC?2h#BNa%+g4?NIgbEx_yHAgp+v?IB|ZE`@gV4 zeInQ#{PLdY(WPE(Nx#(ef+55!(oNWBIMk@4xYVX-zAWmon&|jP19LTJV@qiNB$+ZG*Y^h~0~VTkKV=`u3bXL>b#XX+&q26vn5?pf#3E6Oms(`z@iQa3u* z$<7MXzWK$LpVavd^JDPB+*i!Ig%Pt4C3a<7y6YTYNW0&LL9S#RGh*F_CWcK{N@~gU znC2y-OTy#1)s2a}zjUh|nJw?-bou4EiXRM3c`@)%V7Atkjwx2#ofN}zWNurQv+7&7 zXhp306tky}diB@n3ZBvNioW4I2*gL{9_R5qlt7k(zNcdQ$EqB*6*YGFIB%pu@X+pu zjF6p;i8?EPM21}XTOr6?86=HxH)Yn#Hj5US+gQ(@34Goh3gqtEBj{qgHFVXRA{g;i z85>EGloG&40pCR%fhbQ9lssv;)}|x z%1FBG;FUU36iHqH4W2JFG3W7PT(+p|_tuR% zM8eJzm*eV5H;(Z>6z=)-wZpq3p?K-;14hA9yIE3!BS>1nu!cq#roEp!S0#$P#TUGX zzgH)!kDqz_Zhp}DeI~^ixuDT~SO$%wRB>Y)>lzBCS^N0$xE61xqX7+{FCa8E$Td+? zeYq}HC-V>ATj!uFC1hm$Q<)qO5{F7-9*g$S^Ea-VN@20@FayltyVVri;0uWzVSnCG z`m^?}tLh4wKKq$OkxL%AW1D&_VNiP=@bf1M31a825==XXs%-2?k^q~ zhhc-UD2P?=KuEl_%|85ZUg#6k+Us2YrV0vbH-WT?VIh3Qf)y2y3~rHRx8Va+!EYCJ zDqa$+iH5hy-3IpfcB|%LQejSy5Ftw^pPCv6tdU71{pCrH<2=`X#ij?Be&X`ea*jRcRGQibMDP#avq5p60EGlHlt2pmhxxLHpv^i~Hh8Aio z9NTdhhSVZ}LwnbYa0-HvV1fO3zpve?Np$`1p|roEHF;&|40jo!({s!O`}#{{B>SIz z*3i=g)m9SDg!Jr&T|_$3xMV7&*+#(eoq0Ulvf~Rsau(n35j`y5K?k(@Icu|}^xVnR zK$4ndp0BR7j+N`|H&^VEUDKUDJ@UI1C*U{R|!Jq88aWUIZVBHs}l=;=v(ZFfX58$4;(XGKJ!q2 zZfa9S0L5P+!e%(3&#hj0M$IMi@$!UuTkJzV8;jaq8%yc7EfUb?xe1@t<;Ckdwoo?k z<EK~yKkcx{h@3UtKs&XBNx({gd zBTYB=vfPab>2Vx2e7RR$`_Q@&=W+vdCu$CzY?g{LU24AMT#xJXb|>#b$PFX}$SZr0 z*331d)p#Some<)?BW(Uc?w|^3kg6u7#)jWm0sF1fgL)o|MIw%1z&%%hnX&g!H7|cbo0LaoV#BFYNaIPd_Q9 zpkWK^nvt{iKspB~_bjkffSO?zgul#ZOp^XHuIAS4M5|dWWB;Ggi@v99$W$nNCqbUA zdlkwy(O@Ph5{4k2<99{1prnxusy^|Te|z*Lp?+ZqgXdNEv#zAy%O!9U5@f=ER`f@- z1tJ~p2pjAHbS>&fXsAZNo`g5wnYvZKsV-}%DGs6aB0XpxCL1@|F92$* zxLbJJ#3tJ1Q1=c^sn7?6!>%n`yH+P-K2U4u&VLc(758yF#h0*-|y zeg(LTHRbwKB8$*F-nuB)&oPxWk~Nj`3d~vd>C1B0Zq>q2j&=QGOT1{=Q4TRr7U{Pb z+7Pmk_r3DCL#^pNAh?3<5VXKbBI4Y*?!KoA6_V`>9+ccRi$_oIaXtR>9A;CB;f{9& zaB0&TT9t>P%}rI>SD9DgYmer}CB@KcXB)fDifI)}mB)x}ddi`9l#b_(Vk{|h%;;ss zYupysnPyLm8F}C}x0pJj^ImdW;JIaB==~$kwCvdDm?z=_O2wNfJh4_U8;#(T&nTtS zH4P;%hUxml9RYCqU;d5%Yq z43Gpe3I2gJ<{0f1ZIw24VVMAVcVU+b9HaSRnta;ql2<(!-l-d5npaGe`T4>yJBN1r z!=#@u!8>V=2a`X6S$%hVKb@Jcm@9_Aw;O2nd%z4|XN~yux#5PO72m1x?leBJq*Wow zi_nuu>j`#8wPhK0Jrq|9!3<#r3%Xz6X>(0NnHRuA=X1mSw_KC;2>4R$`IwrxkarX6qv2*N#=TmSw-g$V{O?!QN{b&B4Sh6hwH^VnwTd< z{_Ol@EaTYc`gzYRLO--22lc{k&VSJB=L3W|O5EF*22&69Z7gfOupo3T&g6*T&^bi! z(AFcvr{kxY7egsGBHs)61f}ao>#mq4cNP016q)S7wa5E?`CZ)?^{HB1+V=V+gDo_? zZdR9oMN1DIdz^Z$jHir1MS(??Ef$6q$TZu)Ne=iO4aeU-?FyGjW3lo%tH0sUFg$r$ zvpHV3RwAQ(r1wyI^<4>sv1mlZLHF#9k9&#o^}uIjY;$wK=IefG#|t7;Ctaw777 zm|y%N+U?mEKVkV`;YaFXEXBVv-8sev8L~!6np@?T*w=4tWC&tg@h-_H?9INLJbTbi zJk=L*pNv}=`CG6RH0CyO@d)jEh@EACc=W}=nB-!%qXl5(g2XvQ-OX5Jc;f8!^};m6 zp$`2TSxXD&5$3J)DIwLa5CRe>Oap-29+hKM=^@C??P^x6Y=3?e@yZ}PkSF#~T-9^- zN^7^L950l2tX~v9E@jY?Ve}VcgA@3~(R9zftp3#Bc~E;$Az6iX%<&f#SeYkK>0e2w zUBP`#85`|&k_??(eNYo(nk$!U;$CFJx?}`<#n^o_S;-PhIua#JHU5 z0T1JML6*Ngp&Jc1nO{_!ur!D~)9pr{er2ZboJ!uO6@uCih4%+0+V?P~Aj(gMV5J&Z zgLVx}sI<@giKcXf+k+b*IWlHy(JU!Dm;Ham>d{$|NkRQgb5klnZZ<5ofWNyJJQrxw zp0dDF87HOU{N@v@%ekIc6kUpSUF(C~e&^=oqx-=WSYp2KgJJL!`O6u**UKThpVcLI z5aA)Ui47@j$EwdB&#|f+HQ#n8-v2qG5ctHZh4r=eB9r4W@oP$lp+m{1>E@I2w<=>a z&VK2SoHl#Y^6P`F|8(_VOx4E(x(>RZA%pRKyb>SS!o^K*OS+Xk=BQ^9U+aBZh_fQb zNvG>aX~o&#fc*>z`pH*5P4I#5FE4F~ToPQi|C6iMkbQPEz8A!tK1Oi5xP^%g--$T{ z&dLlzkGk3+>r`ib8y~~k3~sqYE&_M2Fs@JQO5mN59&(vJ5zS`$eq3pmeBJfYUg-xy zZ_o>Nwvijv+lTCQ$J_7vmVMJ-A-yk{fzPkNN)l(9)?6(q4yTC9=Oy|^j6NdHFO?#q zqgZt;x@rKy>^Fiwm#hqb9 zfMUTjcWW+KN+!k=5yn|A<@ShB;zc>XyHRi{8yrusUJ#!{iZpZhC0fvEf$ut`e2w6? z15fu87T4nGMjZMnKfEPa#UYGncF*d={ZxGtAHyAuWHk^7W&yRH|D8m&0L}*gD6j5| z8Tjod6Pdp}dV-zO1bqCCG4fDY155S@&=qv^lo?Wz9pC5p9aGO6gv|+~>}vW%HPVpb z3-0f1^Ok>lt=jYe`JYUW?+4ppUuQJLI?%ywlA$Cf;a?{0G`bL@?gXJtnJPkX8=PVa_*qc(JqS0zQG3dr z3Is|g)Q0AB>6Pxk+ycH?m?svTV_%XmxdC#_FhF^y#$J}fnV zzA9PL4KYLSWcy_*8^=7pXarayXsQlw`I5?h^$(ApPw{Gk%tdOFX^b&Boo`!%Q_OuV zK0)IS6BR1YL}oN6grD*-RIQGzL_P%$X$ex&EUPepn6+PhN#Lis3%GY-nD{H7Z62NG zJG-tq-R8EHmUR*^6|D_y(o=^d-ePhsno%Jl#DTy5h;hC>3!bwbtzG~t2>{zluSL;B z^h?zW5&|0d%!+pX$95wSv?&@3a`ePmt>jY3BS>yEEM`<=erQI->^diApj8Llbw=!V zik~r~&TL@CQ2gU8dYja&(HTSp=_KZ8xmW4Hi+%CTF*$=Ub5D{5w^r_r-U_0nv}My( z65-|q4=_L9wh|Om4$%-lT|X<~Y=nDs%3` z;#3PpH)j)0GVFHjPm4>i%EGigJDjFpF3vr|HkaTXoiu-eFJC;Fgu{o+tYnX_Y0X1d z_N5WEzOaEMqGhjxx)$b@Sdy(sM@H+REOnWSip-YLD`(|hC6EH~gXPEgEhXccm)*&iX4ubp4`3M9M-r&ZgQyuyQ= zbzK{M7Uh^1AYB-03~yCD%vGs{F)x*Jg+{DQBbJfSYx7;db1*~D5gylcJA%k~snVre z8QTxE4xt;mB6YA-RP6LE8R~^JLto|o(0HnM$4ZGhelKR>nRnO;@+0rGFv8YFfBq|HFj$RS__L|+W*8H%)blUCtQQ18 z8F6DY#`^W);|APDcWl#MbrV@!1+IFe-QV4k@`pyx79aROCuGv~E7Jb`uyZAKV!Iol zqwNmJW?f=xn}+ta^CrGHRVbmDiH#AKh;F)FWrGIu6HiM(?$!#9&68G=yK(9(v_9%j z#I6sC9=dW*w))SKYq8e{68+kPJ5EpW3w3YX9|~XzoU~}6{M?N!H1L?l)mz$MNq<-( z{}&rSk6*mPye$@jt--#Jy3JDHjM%C7&lle4q-2#Z2}N7JQb9#*VW zN_PkRA_7v@7F-1f>C!qTc@T+8D_asHk>_H*%}jgGGPPbQJlFB&Vwi5XEs27DBGqm9 zN2XjTFG1M!5=N1Q!bt7M<`Gy$cO(LoU+YvglK#$8i)g?H{v%Z~7CZ3@y1jO z_51?P7vH)loRahV%+*;p%$vPS_)8<)6iMm@q`1Va&89<2z$AymLemm5dl{kA-|0#i zD;yOJci7jOq{vPVNh0u++y;VG_^3rfV~E0&Ef@}V8jX`u^i{gqG~q$vRTQ_)7grQCMmG~mwz5p#1HqIT&omPhfP5aR~2+x)Q4f#%&i^yY$!@s>2kuz zG15n8?ZGI?eRsbf-JL$xvrLJix!GT^Q>KJ8_((w<7qmwSx^%#l03-ic3Vs0l8VB6M zqyG)hdA}snzci?m$OQzz$5u-08YGWc6N#?KQu@^967b*pBD!rVah09)K9SpCcTkbr z(0mu;LIp{vOz=Oxk-T61SY0Gj0{lY0eMTxd*akUQQF1Gi;#+D9W&*OSrhRB?{1VK( zkh~rjv6?^o25!&Z;7<*g`D?zE+KIjCHzVeI)JWCI zjyBy*3-7k{jtEW;%fZaj^cv4V_RT|+g{vr~y>~3GQP5qVVlnGGpn4aYtP@iG zyQd#bDd{$q34{A#asccwk@;rkFO5rF%x-MYMUyjfaIjpsrl&x z1_=U0=Sp*D2Sa|+;UxS52qt0_iJC}6B2`ypKpNkUlldgU~g&>v7;9oycZx`G(}flW=Af@3YSb}M_#Ot zDBls&znEuXxNTI7^vxFWcD2J6DPZ0;P}n>2Hd`K3`oyf|E!#v}Qkx1R{eLg939&>p zdc3lKOUxYRE4mPwE^ZKRsc5?~b*-R9l>ZGWorH^JhRJS=kXss4eA)g8cjMTi0j z!H{^#7D87 z^WgST!V{FAh=n?B$?+t;_!P~yK3e$8%B#UCzs{lH_RVH%h^6QcTiGpclu|-A^e!f( zTeTGy1`V`?GnY(MUFIdjUS@a_c)IwNCmzW1rM@Ph$l}K+l33{$Gop{*nn6nIj zI=>Yap^2ij`>*+hI319)2(kFp`(}_Om?iIrxjOU4YIEl_;*Xp;b!i+Mg=RjD)9Hg8ydbl&{2b!^*HVfrXLnBk# zw+qFjCUQVwSlJ?KGfUWSv$#n(u29$so0s~cH}fj$;{|EXn>TQ@p6vrZOqwk8!eIp@ zC;sh|6fnK#%4qw?plviHLXX@550v5fV-vhHtnY3GYG7l$I@0j1RHPl5KuLzUG#N>^ zWJ2AeO(-pbL1w=E`vK2;neZfrX&|-6crdk{#RrLxk+`QMfV z{-a)`H0vQ+lT45pM784;eB5F*zDo#!Ep}$-+%`b3o|8EK_R>`}e&{vh3lD%MQxF969+{au!sM=*YaryB;d%~4Gh6W|NlQDFGb7S(#rz=g`>3F9V z>;1CEno!MF_VE<fZM<&k|huJd+ z*6CK26;>2Ov@A3M9cAM1J(j{e%o`RYxPOC|gxSl2)o8=ruDa_}>O!c`Oo0o4%67Ik_qi z<=;oCD1K9wz4^#v2_lY2FNj_LTjGWy+onNmLXFBE+w!9^@nsM}l({6XR@kaQ@QGCP zFO#@{x*QS%{Dt^?_vF>;;(IXG9oeuS+=4$OI`VcPAT_A!1V?`(D)oNk<3YH5HH3di zc7qM?aKqyEI&)R)++WL2Ku)>;BR|*ae&3(4wBa5PW#4I;Ri=in%bDqdWk*AlufR=F zK8zcd9)7Gy71=J%m(*K>A0M(!Zm^MZ)>YNFdo`EYun<{d_C;C(DB@(#LMi-Z?o^yc z`Me2~6W%hS?<@QQ4dB5YBbud>G$QHT71Q<*BT`S>Asg+sG3r(q1bxc~OYt~G9IA;w zd~3vxL~131Phv+lxEqF?ctb-Sym$So>6eqDQ)??G)x6p=YZ;^2HLDcUvF_{n(I9Hr zsAS&HvPX#F=m(I{76HVm4nnYl8-V+GAmQDO~=LJ%NYK5K)KAeP^){%Lj0x z_*wCm(nT3-L25ABx?Vj-1s-PZ+t=tCg|w3-Kqxy~@fu4z!i*a!YI0gPH%z5NW)TV2l=c9%_QV}L8Hm6xC&lk2BI`RW&(Zo11LadtQ6o%F#U zV7}je9U9c1JJUj%7%$&}|EN9l6~CSu`og~ujhJri~F%BC=({;$! z!}XH|R`4H#{M{sciB!?gLzx`_}0KJe} zMeA_*AL&>?oQhJ%2znLZ*|B9tZ#o*Y1> zgO+6@FZyH5)YN|cXG9euKiwlzD%0(!CYrCuf^4WVCB%o%3g&T1E>C&+GO{O+F+I)=)vq2j=B|TJ_4IqINf@d* zI!zuP?B^74A8qVD%!QYg^KW=gTE9!UXpOtJdS00OJ{f=D(N-#iB^%7z!;VA*xF3XY zBO{0qlIt2SMc?#J8>0G^%_uYYr89*fz5QdlgEQ9zq0K6Eor@lB{)hEnmm{=};s5QF zB5xlKf?Bb`<3wZqBL9K~cZgvAaZQ6ec_7I?71{>Ji^$G|3UL9_cujEH17STx3#s9w zU>dky*l%dbFO~3@8V~RMxv%Yi1p)~%bk>v`BJ%lP4);qtOghS!_lUYH zhrSdX`_RkaKFjt!qh2rNRp_BdhLzkv8c(m|P#HrezGhPdmtfu&!~(6#h#g#&>EXL~ zuZcfWvzpTt9v8%wKdbM`a85*)*XrcAs!ixVPZ%i}h3GrY^}@u>P6|Q@E`dLGkzkj^ zK3zvGq$rn{!$haFZ&^3pD(`7iWyp-e%rAX7Kg14M>4bINujf9=JY%0fTg|;#W18N` zLGzU8@xV=}Lc-)mQh{^H<{<5;ASsx*5NVf&m-V7C>@ydpPI#ID*qHnJe-b)Ve$I0d zwmCLeuZWszQNnZfDzpP&Zz#1{>#%-m1u`3)p?WpyeJ7-vi(3i~xlgbN}Nk`bc!=q_b-w(1c zW_37fy5J$tKP{3t5$S$)>`#WvaV2S1wz~T(1jmW~A`ZX=biB0vtF+2g(j!k z1yS>=V9{rDx4o#N``(?P>Z8yP%b>aUtf6<{j3XQLO}e|RQ*N0|b~-NW=J&$`g9Zfj z+cR_B>=h5dxw63uh*A7X^mU^RgG&rGla{S}LLqH%9t? z0$qQ!!$)60Me)o8pzLiIixs^hmrH50r#;VD%^CVd+z9}#?kQhpM>62K{V;)u>zNUd z&lmj&gf)05LDb!M+AN9E3@G;z6-L35LawI+;Rb)a!;X)~w{dLW-aHU7hq?;J^LED@ z2cx{TB{)<#T73E1mf$-xXuXl;V45yP8jciuBmwj*DDEmB<}LCMKU)KD0U1IR=YaQP z7AA{KeqxPaGdrntP|MO6LJICtt_{=ht&S=C>l zWk7Ws3C}{(CYUWRy3+44fPb@!y^hb4NO@regKw0FzSed-bKGzs@o&7ld+m0oHkVlo zeUzVGW@BTWoEH`RB`c%x;}N-9u};3HLFO7eSn0$Pb|+J!GEl;G?{_S^`xwW@lj$7x z&9nm!T_`^XWN>7{A91Dm580)1kT(5S-oy|igDn*`qZ24*60{idyBm8>pzq6ZKJy8$ zVQ?*vmE5Ymw24@&25GDjc0jAF3;g^P1=_E$WJ%S!eDws01E2c`^$Y7%b! z@2JuRWf5nGI?Gw1uDh(X=;+^bHRP|zZj1A8QWPH!lpk*II$4NizVPo2Grjn5Cj9+A zJ48X~{5Q#sd*yGMW*h&n6>82*X`Pi5^2_~yZ4z>5^Dk|x%&vo{1s-N+qJRCVNa$kSY7q^xZM8i93lMM!;m)b+y~={d6)f@us7Y*wxkp{ zlKBhS#WnMLhkz&h{=71`Te{1r-C(+tj@-!IV9Y1hBVjE{&+PXGn30Vk&^tmyr1FA5 zk%Brbv`lWt?R=(Z|B>M@I}(-qF0Ay>M-Q2@69egvzr98rS4T}=PfCntc-p%!16x=F zSbJs`b!4aY_hUpEr0yng^v=z+Wnslk%rY^OceI>tBY#z;q7B=i?u>hr{iis<#E8;CE(z z?KwFyQcylD66?K_V2Q;G**YnubGF&x9ng%3jSab7qM~(iFpJ-k82f#!(KS2{NnUI> z=v+AZmz7nWiJ?QlCt+V$u1_zW|A|76I?C68KV^Pb1oiUAH}71N8vm4)^U?i@a1FB} zMsq*tP`^W^Clm}*%H4V-q`OYHzOft+`HCi+uTGVP6r2r4UAUHrU{AkC4VAYGJH1pj zXIANSA(F^^+;P%yq`OPCz9E(2USm^=CxVa`FF zMfX5)__NB7k;Td_44@k%G4@!IcDO2*a>+O2?*o1$+rF|! z5VB)!wtXFPs&p#F-27k4Pv-Mes%nVpU%g)YQgq?Cc@Dt{h4t))V?=i6v|YI*4o@sH zqO?2TL+}eixb=PYhyIx2C%cSWJp_?eq18Voyj8-pHESUC>3L9wzc@^pocW2@@=8%l zGA#^lw?&>tby!RsA$d!E&Kx_NctJdc;Jk)N>dfjWeFGIHf8v~iE9WP!7|%G4;$jB_ zZgZ446fB&NaNElyCqt5B;PtuG+v2?+I|FF`D8+J&#VMS<1mFxnS8Fmx6No>%LH?he$JnKn*aOpSM)37cO5rrjqluvcDj&H;WAoYuTh39 z9yZQnt#7uC$`g*q;vFUTl~0W6KH%}ueWbsMv%dMe-2bc*Vqdc9;f&JLw__E%Qt@#v z%IaO!&EvDad?H~_{6&D7t0Eacg zVfE=6NO=$W7yZ>r56PWrU5o7ee~a6k2&_$>!$Ague$$q_MpxVFOX1J6-`)WnVvnQfQ7&${HOoN%};@YKE2Ka**+dOr18tt0D^CV&`aPBfA=Vhlw zSFVZmTV1cR4-89iR+;lIBs7qyHyH0APfa!;FERBKrk!_J@S7=(<$Oo-pQ?x+j(l0u z=h+Y0jQNZk9JOS^Q6;;eP)dLS7`7g=$+0XRy7}|OIFXj%qx1Z9yD7L&-@@mtVcLG6 z-8q0%&g~XNCA!6(Nzr>UX6geCYz`|^7&}IXo%?LBFIb7-ZUiF|k2`?=lT8uVzRJzZbuMt@ z$-s_+j8X@_{2uT7#n;?gEjC}wg4)QY+Pj^5nS)O3yX!s{zmYDrqiUDTDStvl zA1MpA`$jNKCyY$Hk+rmFgV0SoK9=Ke$+&Ajf8W;Do44zwL>R|fgP%Wmcn)Gl-$vzE zb)?9cR6`|ZCd|czK!vVq@X1G&q!;}Rd)wS>f=Y1#-wSNwkfjLV(g$ivYEQ8=s&KJ+ zQndo+y{?rA7IIY*)L)*4_&N%!nor3c#N9uH4}sJ=W0Wx?vS)0S`#f{ei;oeQ7Rt*Z z8-EY1Z{GMtum(?jc=Y?mbMM24;}2H=s3S2r!3HC)V+FcziF?l!!h~??1Cxf*=FXb# z+-e7mXbt6<+~}kK!d?tt<=!rKtabwFztX?ozpl?tFb_)0_=;mmKqOr`)GCp`GcoD$ z>2_ZzN{W&p;1l>+iVhZ=c*X3&@;VpKem82eZ{*Ob>s1;X^3_dgT6bh@fyR^m;-96$ zx-buQ-RQgri;g-QB>={|_T-xo-u~a8pK2ssz}$H9pRxrf1v88k2*pfXo$`ej^+afa z7!U~LoAnlExxEIh;JtVbbY5qm{~}?H>Si@6#ilOAldow-qUQVB3*T3$(m8S)DzcHu z!v&XqDbFS#(}{=4j}QH`;646(cP^Zzx=4a^z^xCP6?0hA4(^hJ$^_KdPrt-FreI0o zR0%#N6^u`GA(2WyZSwrAW+zb<{r++7@pTS{he9gPwZaq6c%$Ov?~t&Encg!Z!e;SKpNB=N7CQ0$7s8NZ~`j4y19o2OY8_Ro>U2u)tem z>9;nJNr#GF2)`CH&O``{=4z3n}$Aor^lO^ zgw`6ZLvv3;J%&BVzgQaIs51u!DU5~r{DMStLCQ3*;mh(Tx*Lhi{9M8k@dEUEBCQbo zr(L!`->#VqQT8seJ(UHN8;iBk(Ht>M)#V^KrTXempYdJ1|3$s@x8DbCHXL<|*CgIw z{o7a?$dmf_R6Tpw0T=wF;P!hWO^?eGf9>{ClL|)l>aMq5kj?>#ugF>}!aSQScd#q& zVWWR|$`-?-?e7d%}u0w~c|BuIMXE zcZI;3a}Fty_BB;)*`-Rq#t?{T@@jIYoZ%Pqg%@gjS0pSN{Voq7|Bl#bJ^m7&lFNbQ zCXcRn-SK*ZX8#9O0=ywAqRPJ2g-E6eTii1>O>uv=c;t@s#;)8sCFI-N-nUP#&vo## z&Jpviuj<=fq$9I<*Nro~T>q!bjb|3M6=9jZW*pSsuJoF`B?Gp|z_fd;(l(j7W4qW= zU#qFFYFJC_v^Xorn&<6X$N}WknU6u9m}bQM84L_?WE4Y=p-}nT+?QicWuG_F6Sud)Ol%D}OH$|kr1^MtokB~;-!xaaDPR*d^pEO6Jbou7N z9#Dtv#U~fHElO_Q{qhdiSyaqNJz+7FYQ4JadKp3*uJoL2GAB_;IjY-2Uz$GuT;bu{ zN)mLKQd`CCa6>@wu}=>=uF9a3iThU-E+IVeNeNrMcHTzHuRH0|FpUMDh>eHyhw^7= zo2#-6$3WC{58CwB=xBylFTP>0cPq`Mc-CX&sUH zVW4Iw$Kr*v>Vt{b8L>_qcKQkUF>3vn3@Mw$HCEY+(yhdH?yY0-&h4Evp^`od`$7iI z_Cd*o0A{_PrGWd(akxiVEss7mQ|p;a`Xmcm)V3h@q=C}6k9*KA zOdjAzZKUvFTC5}>k;R*Qt$4mczVRXm`71m^1KzZ{&z`5MF!B<5a5-y*IZ|_T2iQ)Y zxKE>qqL(>Wwt70sP%Hf6QP;d{=eOwFmn`nGr{sXF!LhHq;{v-XIYf))8lC&AO$5hP zB(;bPfVwLI`|1{%sf0SKyPOt1`JbD)D1psOL78Q}*|d0w!hDd1!!faluBdZQP?sc8 z?#cZR{2i&JN^c_jWt@-bB0TE9e$4vsK>lx@{eW2(UujW+rc1_SoiP6!;v}3JU1qTb zj#);ETFj5c27fZXimSiG8x&qQibdgTF9nM(fn&Aad%_vo1him+%8pWU_}5`E;0mWa zerPx5vsER1!?Mc1kajtxf7@aqOLdE8=|PKcS_p=2zH86|G=p;=anT4lPNL}?4w9rd z28_@@J6JYrJIuRqO_r?6qiyoLNYUyF_p8%j+v`4-RA{_g{a#~7O@`1>`$JXAH zqEhz1wp6pNmRiNteZ`jb9@j}d`En?{a42ok#mn{)z8>E|su835=H0l-nx@lBkt+Kc zYfWlfk3J%~?Pti+FpmvVkz8&Bth#9cWX^FL_{V}uRQ5!zm)k6-i4{kGwD1QPJ;`V9 zfQ>mdN1pWJdn43*TO97<-SNQ5DJ^4%0Vzv`A(xxD!!b-_rEZNGcAdBB8hvBkR~vqK zB;Q1XsmaYY+BzHX9Lb9WNv^#IuaH%Q}Ku`i!60cP&qahk>ZqwBgGoH$TIp zaWx4vFaBWWbh0*wAW+{Q(E{-4%nE=h}izewcZ|i@x}d(6*eKO>ZtoObh7cN zuB)S{?&hN7dFpYAVh0txnzOSQkc|#cCrntPFY63^%)T#d3RK7tXLo%||G`5J{xzvF zh5$0NL9Ez!`m;t6(kdWuHaR>mn4uSNwaf2*tLtSt$FEHg6hwn$Pi!Zx<(uPMJ$!0cWdbYp4{R(R*Xxnnx`@{#Xo7n^g2}^3@mq4D zCe0I+X|UnP{f!g=ltBxzxDDv?8C;jl4xE{R0Fgi zS1p3wncoyjw#>j?ZY{pagVj)z{g)$}QLEHfIqvK4fq|y9ee=>DQbgrqu-}K8L~};f z41qc?Y1J3r3vpzaK05K1wYStPn_9GcGv4w?pR%isA66*I%tNr)QK9oFg;A|vgkaqY z31CjcTjBp(?^N7tHU<$dTD)u2_2og;UwhaH|BZx2wZMKO$)4-F@rPj@k+euOU7%x4 z6!aiH{f6Okfe(-lXvPU0Hw6GP0G{ih;oI05i#J#A1zIkAqEj5OoIgG{5Ay?+0Iy^^iv-CMQwhF>`1C^^epixs zvSI6HV!um=Xfwd+E_*r!oy8DPv#1v>bj7`jg^IIZWmLQIv$=`(mG~T-XXBV1Wx0cX z_qq8OqI6>RfM~X3`_z?vde}dt1$SV!>j8-UqXyx1DC z|NjZ2+m|NtOm^2f@7nyuvk!5n6UPm%T)3jTuT`s=DHC(h6fhvE<7sgJT(AgG_;>~{ zk{bX1y9b?HKJFd8-fnqJ6B=31!PAbVmFxIOS`+kQF%)U%*?WL7&O&ZPwB<7fXjgq7 zw1wLRe{&H_&d*uq>Vyu>JBLa?=lHp*B`!^A|7;Z*hk>4&=o!oYb0F|^kO4*`02msW zGM8uGNp8=5-AF4-UYL?3qz7`?IFE;PsEACQ9MlT1be*a9O=w|A0o*QN&Hre@x{#5hWmKlTvyDC4*9R(t)+%Y-(0fXb7jVtmQ6?b|06`xU=?1%&2)-##kq zmU`}@j@q$gooJy zf8>c%EuSbPH#D!FalT6XDl;6EI1ux1>WPK2ea;b7M;l^fc!YV#ZGS~BQbq%Dr2Qr1-jvZIt4XrzPS#;F~bHdW;j{3>ryR*V> zlVoPw^fGtGY0j2Ex-(gug-cZ|IXHJHjN!707L)#V&;S%qn7J>M#)%LQ$~P->>-^Po zf_@^Xw94=|s9p0|mAMTAnIH=$JT~TD)x)hA%5$dFnk#gv(=r+s+Hq5D<(CO|k;2s+ z2Lq;f7TL0Y4XE#eUP@HhWLi>Nt`X4(@42q(K#jIJc2MG?W}2WV0@A{D`m zwE0=pbsH8PR?N6f!va3Kc8d#?=IuAlV>R}kM{kMR`TYcx-R$(BJ`Y&AR+Fz#X3Z^N z-FJHojWN8yywB!1gPqdnVl41#e_ep&p;og&H^k;xLB2@$p%7;E2)b)^Mrh^T>1zYk z+oYYhfqGRDS8>>aKAZOe5f7uF$wucq@&j$&qna)!fSnFV!3-Rh5D;Y3wYEWS|oyNt=W38sey3{ zok&97Pj8`aOnU#tY}#83B|%jfg4mTU`Ls2TW}%m2@=T~& z`KrF43NmJ;?|Nc9f}J*=RPI6GVb4P zBO-3lMh%1QTey(8UrS9p>p^+*_9KtE1+ z?iZ!TPu)ZzG+7#zb5c7XQIub^UCFsZ3GW`Z`V(`7tOG}jlX)DV|ZuyyvV&EaQ%5wgl97b!^ z_D3IM-55evP)^}hAbQvA2i!IFvmDE;of`^!X}qNLWVGFg;b=iRP!ok&xtQ6Q0mobS zo}gRp+I^`a`-a}>E5EO#O_xI7?8#sJUowRr3-Xezd?i;1KiTz}3+4B3S)+lU>EP-I!=1 z%9-K$yPv$7jj6MfmjS8u3oo6{Rd7os_1CJ)+uX%8jCdA6HRHcKRZ>N2-wSOXK480{ z@7z-qOSKpjGybZD_wp{VuVvKuxMt1_(ct4+jQ*yCtmWv0NvbT4ec#_s!VTj0H3-G6 zHE*M7mLU1c=T4m$?*SXFx0~zn>0;&*(t;Q zx=;PZA;E2@E>{ZtJU1TNp;wLr@G+|%@Hc6RqM zTxMIfysnrl$YJBjvQHz9lwPoqJ*SUr@#WFSe1B1R&`{AX4Y#}u8c2Q}l}fzp&@oOT z^vt?D+_MAT=gjJa&}8TskPLd&?OVJ5-jNGC8k{pRr5T)tWTQnDxP1Wy1J9Fh5E;)K zixIt8GM{uEe1j2M2!bJ#w&q$C+=`p|mG|(zWs7USI zue~B|#`ZFY6BmC>*bfc$zIyJ`+}S@glz1zCiNuxKT2v}~fcw>OIw0qiVU=}fS*`mR zin@j>>|L=B_E}T({S~?`IwWRYWx@*L@IueF+2a>ejaZ>ExTADyM796Ezzp`XChN8` zFs*Jqr4a#j=ssQKp40zXwJ3!~O&@SE4)778`hCRM7^q-3cS1L^WZZ7Qx~RmQ>5GqUS`o+A$4v5wOMD~!)j zaNN92Xm0?JHhRA5kMbn+DANiv3f0rQk_ho`nCZB4UZc5ZlWyj>BaCI!9&7f1#}F}y zNgh(}vhveu(fb(+CoyVP|D0Z2CA~7nXBs9*W97wc-h6I4M*Nso9WRuB z@sqp-ink2hZx?tkFedW9JfO{;2YGC~M37iHrSBs{Wp?6W4*A{{vGi?4L3p;slYfmw zX~HFdznyoz-gO!gaUbmfOs@>-cp)wE*bKRWE$z2YWPG0HsVy*zl5LkfJy4Cp$}DVD zz7&{M390ji)5%Tq<0 z9oWz1g)|c3UedwwN;#CAA~#Mj4pfgrha?O5J+-hYVB8>kssX83NozPn+&% zRadp}_Nvrn1hSBgUMPZOm#Gi9MD#vSl&5f4iC@0wCr`b8?=khFc1PNGmaHhty=(pX zNa`Hvox+5Mg-Ng4P!Ehq{~)f)!;TJ93<|5X~R$7w%VSj0P?BA+ihTLP3>pqhjv zaou0s=loG?dtZaw3cF1aa?_18lV5X~!3`SGebW{bSaJR(JONI`u3(+O0MvUzwIqX<&zs2iC9_x?B(U}V;uVpzeolQR4zZuBjTlRVl z#|s@0y{C@9A8JspZ+F{Q9KnhA1-?;oSzk{-R+Uorlq6b(7YIjvrmJ>Qmr*3`wloQ0@0mx1|To2sZ^a! z={?83m&nq|j<6-tNp6mm=93%h#sxI#@olxPBLe{VhOZJ2Kna6)t+jp)3bq_kmuEMT zdB5a9Jc1BjMN~sC1DhWt8~b5$F59%(vD~USCt|n;d|7U-0stW&D2O#1ng(zM&uA>3 z=Q7=->9E@BD|2}a^QfI0u2JJ7f&z1V>(Y*}n1&-ZUM|eN_j~c?G@-R->O$p{VRy!H z1`|0_bmBu< zu#&$bz4Wn1{R{Lz0ZDK@nYqRL7~g;OQPuT`zIMq1U^j)y;hL)kd4iUMSy%r1LS}uL z{QOj8lIcvCRaUZ5UO*$3=18r}n1XSVHq_0DPf4DwNYbRU$}{TZfz+Z`(^JGl7)uf( z@W33NBB zvfst<;nCNyo$PY1tQFTPNZxBZW4pwgQAj+b0pLyh@Zy#cd8q8i4d5K$KrOI2Kv z+lmoAQxROavGgdH$L^br1wX;+cX`V}B0~AH zUQ-T&azEX~ZPJ~EFlzN zJV~%H^}t&^5OQFz6xiI>ce~4%ih0IykAuE`DA`3SJ#r|)v1D@})$fR}%&!dRS1M)| zn=Zyr#m{Ll52J#{w+w$I39rpG`d`vGY$eGJ59i#xjIT2fXT6d>2_NC$K3LgKKWNtY zI1OA1S9=P7wHu})!~{A)w96AK{Aq(Q;ffz5-m7hMcfiH8W^W`uf*_zOu1Z}(;IHgl z!S;9Q&%_XI3!l!8G4Lzf6kiT^Ftn{C!vbf+>GQcUJDsD(j|M<+xxW4tzF4Vod$5vDzySkWl1YLV=gK=Dl2ao97Uax- zKuKT%hawGlaz`8jTJXHC`tu%fz3dt*Qfju*k;`4p;vT!3|HQdC`t1%L4up|#oc?j> zE2|@pQGLJ1NcvR$_2z|P)v19YsT;UXhtTva3MSD<`X*e_1hNPLU%wLYFZvnqaG0x? z%p4MpY#nK_ry2CL0BpE9-16}?nG3GS)-R7l`7u0Mt$UFB!K#AHl?OotQ;BApM=uck z>Kc8wNHkzd+JZN;0#~*mO>_ewz0B5V&}U1&9E)K7$d4Y4KI5PD<~Ee^Yt*V8)S++a z#R7M;#LwKScROuk z#9&5F($@~0eLwD=x~Sj;11$qRRk3|Uokj%eQ892`0#`HP$I2YCGv;#mkr(&>_+-wFuft_lgm0futT0>zR7MA~1rjrQ2h=H6d z6@Y0*cu|mOQb#~a@_B-meuJJw@Z&pk_Yix@Bm!~;n^mjT)-M0COM^l^&P9S5Ru-AO z`8rb4X%?d=XVkM}{UsJ`;@+qRY{-_OwW2#!#Vvb%P!MOaAf9K;LA{Ho}BbmXBjthC>a9ca1;NBFg z#j&`+P1qe5Z1yRgm*8#uos4l7nRRby9YKJT_F|OtFQKUBM>|p~_w`6>Kt`XC#%g6A>En1LKTB|i;3C6tZp!J z(4R06-ofz=wFQEjz1#I!+tR?R<#}Z?riNA^Z<)v-6i+Jh3M(AAIyGdF-DpAfmLp-j zGna1J*>S9PVGNVcS zTWIFqA1_Bn5WleP+ng7B=x1-tx$ior8U8eSvx9!i+@{)j=s$@A*I-m@EPp2xsA?k= zFyBk4-UHvqkg^AkIri}os*IR`9lj?~2&J!jJsrq1+JnfFJ7kad2h%HdJTKB>iT-1~ zXn_{=A4uS)2ew;=%Zm2jWnw!+m|gYr5$h_WmAGNki2*0Mb%a9YKRKt z4|ThTvQ)^R#_za>_k+|HyvWm1ZY1VI%p{o;R*LR~u?M}RM%B~tizt*4QBhCcM!G`N zkZBgX;sXqPgH!30tKYG}Y}g+QzXp0*@hH4=GXnndZw2A4$toF7Y6(^flpHwuGK_%+ zW5xh%ibA`1lJ76|)2`NdBcfS2yGTO$yoN_{$n~Nxw_NLDw1_6{TKYYrjoM--hYLfZyfJg7Sx^#4mG+6z>n6V~`-FFvQG*8|OmDIqTpC~;eW$ovAGu#MmN znKH?we5WXe^M1|=+hWdSX~^Om%E}Nk4pk!W7RW_c4|@AuBL$rp-3pI_7KwCrge~Ui z;X&Z703EC5iYK-BZg)6*xit94z|MOWcn9x3g19kM8>8CLqZzq}1IFkIzG~d^2AbV^ zPook-no7iiVbx<}IP*0M_&h73BS#019 z>B~dOXW&&h-_hZhGR%}D>>(alHgps~BHuoMvvSHCqzWJ11u$@(6Q@(p`eqRgHD+JF z(zXotK@s79q`t4eUAN*EUD@ub5m6U>AYr-uR4r&tiq(&XF#VxpoP~WLs$rKup{#8` zw4U|gs*_v%V>^PHgq!nMNE=Gh8KDz>ZVpTvYUKSR%(x%k=R4P*AsFf-dZn0oFAI-- z1^F!r;wjJ?P}z?JK?K5asTRK{;A@Y9MA%%#T>K**_C4FbY-lSQ-B_M)`-@kC)N}$K z-Y5K;yr}B)Ry|w6K4#o(PgS5Mv?h&t2@H^}s1y4k3?%c;8+*~Q17qb}7YNMxqXd2; zrTpaLMIH9VXfQ1~Yn0<+f>~(w{mzA>W*KVE9<}!Mg=u-sn}aa2mgGCNHq&tOpC}6{ zszZj5In>SMy&@EMCoh2xF6TzB=Fhj_BewHKY@*8VLMa96n&o2_ey5hr+M7@XY_u;@ z7qF)<4e6^*Lc?}6H`i-PS0XjimM+}@135E5G2nN72vPSI$@77wEf&7SasKd|KJI8u zUNg?mte9EeoC%-bx_{c>F{tn$(xVf^$YTEBpIcV~gal0duPBeZ(UX<(0Y|Ckgd_*c zbpWuum)&hyPU|9>Mt{DekfaF_e@q{{VeT}Yy+CV?XS&YP+#`;+-l7oddpImuUQYiu zNl-!_+wnx4Au zfFSAdY1q_s5A2ERS22owIHP`NuEE-WWzGwaH9NqR>oWjbMGV(ItKV)MauHuk;Z8mg zA(-EM>Mcy_t@iGgJj%XFlJt-W3~LMl(XP4Xr2>y*Hc23YVV-QrX`*wMUes^|dr)5V ziaw$4^Xi?POCQ80Piz$W@j8Mcg4*JnMwhOIG*#kvX>GGtJBrQAgrh}?G1^&+udHm} zl6OW7a)o{kz0`+Oa9$1qnB1aWOcSi5nj2M%!e;$HNp^zo&%@=N9MwlWe##aEm0Ryi z=G<8bbcW-f%-9M4@jz~jIa!7?W!WJ54=2Vk9X)$jjPKul6;?lNqbK3R;enhGrMR2~ zZ{BtxZJ({7xu^coOrsY-^;h2_F|Q7Oo(}?w`o3*e8VU|OybJjZ8f6i57)V;@RVhCY zxJ|)Zvc}FQq5~y?@XayVhc!gRCJOn?$^;?4T?NAc@$asc#aZ#i(qOAAc?3$<{+ zg*;h2-TqZ?zC04h5SREIBLEK$2w8iW;3Ld$DOr6VUX{#|lj=9>NqGC;iO&|_)O^0cE;ebFrrWyZ!9MRXb}JYh z%nP%5PF|#5=-Ur1qFLp26IH|+2^Z}o5w`N&^|NI(p{0x;dhYf_u23KU*8Y;TNLW%_+0UgLaz;?y}O&D zmwK`d5RIhRqQAos0g|&oE=QD`ZjQk*#cB?>l~^uk4=zsUR%7mVf$C4Ycc8kZ9i>Fp1;S&WJUCsoNhzv^@I} zK`-}E<-WrE$ka0mil;-AWzCIxl-|o)#AEsrpQQ<luFTT!fo#BB>0;mjWD7@y zcYax|kY>(anCVzrcNMKFX&dZun?Jy}ZpWL3@C>6L*#QIwu=RLOR$0BSEZ;4W_Q zKc3R+5f?H7!35>;jBsyy&l&F?)j<8EK?}D!Qmu8(oj|I9Hz^an_|%p+XU*Yx>8{+w z!Uy@J$hwdCCx|LrR}~^I01Y1IXxQEFS;hrx9ufAx2(0C-fi_=NqTBcOmD0q85Wpm1 z%>jATn1tg%mhd+#pU68k(sPA$V8U-sv8k5}MIO&KxTskM#Ra!NKv6Zf{r{wNsW2g@ z{+BJ+!Eb+qcmX5g1}N2y@IA3rUhNlPn5;?#KwI|msapyyq9r%sm58BBsIC|4$FhB9 zE+;J%alb<^vCb#@VfU^5;7i8-QTXl36z4|bzj)m9+(8QwDpZ=h*q|7ATdxzb>k@DmW)sly!XP)?4b$)m+fIo`XGHhH>+$bAQ0g`6 zIh{QEj>ki3nOxhz5&s$eHVNf9ul_&mc?0H)^l2#8`M(%|*5u^~QM14x&arSYokWEp zP-K*Smyj<@F%8IMMf=;*Rm#~bGSacrKE`;?_h;0=jk)eJUK&4MEF$?_BR=XaKGSGY zavPL{!gf0jEkl#( zFIOGs=ush7(IdQz&`5;c>P=i=$nJ-4jd4Lk=2+-)yOrPNW)C_fF}m{EU*z4-7P&;M zmj=q;e#2UxUkz16t`-_sKz1zB4wv6ZQPE8G4;B+!bgdp!BRR5rHUL(eaKq5$@!l>7 zla)9ghb6{3@hF;F9`&AT`3EMq{wAAZ7N&jqaEgdAoeUzBRZ-SQSrcRLlTd5=%3!Wb zxcoe6{;#wsdh}3wb6gg^MMAM@8r?6kR%)&4Plvg0NA-Al%uy;&q(H3iwfx>cPJ2=B z@TXF9$wj~bF!lCU@nee98}-_oushCUalHffg*!X!E`54jAUiQ@9w_Ptn-hUol&^Dr=5noLb?kUdnWc3 z{(30I?rjn>NOnOy4lTE$e}6zIwYkr2&LH{*=vIITV9<5Zw<;La&ZEsO40b>Ur{^#l z5$}~KI<-DwuhAqB4;A*A9E+|16lxOezDhf7>5U;?Yt(&m?C^RQzSmv0VI1@ljnN0) z8@h7Y*FLk-zP%G*s-uhky7!lME!tdJ0JPAj7w5tr)hpU1X|2Mp5hFq>DQg!&tIj5C zyOX6h*1R>6DX?L$c^$q3vJK8&^I+mw78I>t{-dZbCOC&YUZGV_`S(kn0cBE?+dPay zhe_%P#enqKBnfNSds#o~I48%G6>;C0q)kB3)D8|2n7tH0n=@qv#rhp|mB-$6H3Tmq zIy0gCKzW@(?GK9^7%`;5Oh*~tu;hcKNEcEkCP*PSr0ckaMo9DO=)!f0{x6htBq2(^ zdyp$U5EkgZ7>zOTszF{Z6wq>mVxZ64xI3N6Kr1rkmeV4fh|dx1<65=2j0RbsvFC`00^yynuA<(%5wP#S z|Kgy}#A45po7H(Pwi)>I2`I7Mi)A&4(-%g936mPqh0<5b#fq(6FalCXH*^6PgcSrI8YQ@EEp5Hm)B1}n5A#2 zN{l@>A#OHt_*sAW=LN$(hm9&M-6dCND6PyaL?{78BB$On*h3yse_an$m8Ye3D8@+j zm9MGqZ|xg(&F`Uyl;MyoVJsjJRI4`b;*Q5R;eFSOo!(T?JT$jxb)#js7f(pxeGOb8)gsRg8N zYbd-XM^6JR@TpzG>-cVmO*x7JkO1;iDBmOt{(Xlp*p}M-dv!&Ng3=?6cPdb&LYPQj zEzXaYQSm_%c4s37lCh5^@K9}F9;xtipoT+e6**UPeZTZ-PuduTJ(o4u!G7wCA4Qa- z9u?3x$ilyb=N$2)w-mnsFQQB2zwUBi)p6i*BspMsGl^C^fN4J^G<=XaaN^DR`_J{$ z`OpW0CGUUMCaasVGbbk`L%BB!tOaADRCx;;yEOi4(l@4-a=#M!e5>W!TpD8c-Y+@* z(oe#O^j)7U9qBtE;u=@MpcnY;gyNJ0eH?AWsXrDRBdZv^*8kd$4{4bl&1%$hV~CYdfM2~utb99)<11OaMck^84kYm68+1=F`#VnU2g1u%iB_n-?=e1TF2H0tR@YuuKn zc>rREV_hZG`W#elnCCDljrz53c)HU@Q>=i}SI?zk$`@%>zl`^n4N6P@$5$Mes$V}1 z164N=Hla;w?|}m6*w#~?4k2a-_Wa$`3z7qEHLWY_>ckqveC{!uY%hjC-sv{s-$2m< zLKL|d>q#$_T?6N2Dn_)yBH7@Aaji)RNArGMwkCxZVDITAJul~&fxpS<)YRNDnW+tZ zF8l#|+#^f@NMEnme-5Ai;bUEx-LcF$Ju3Mhtb091qA?Jr$AqxEi8lV956|(3$PgWZ&Vm= zcwjaWyAxw)-klflA6yE+^C3&a16{(LFS+T1pize>EZP9{XY-E~FWvUX6P5p6TJ{9Xe$s5^7_j?cj(jO=>*$mc?`5-8Esn@j*phZL2xAQL{=xmx+}moZrQ-OBjpf{M28bb<5`+@Nbm$ zxZ{=fk5@M5$SD?%_lLpDyiuzpG0EWwlJIEZCitry>`O>?xAbj#9$u^XdVqD&CV^Qn zd^Cj=3d-Y`WT!B4wdxD#_SrscdH60$)5msU;kG?VT$i*=C%b+;`sN%8eUKkN;_Mv% z$L=~QsJHzns7u1}vVK@A2b22lyy;GlE^JP?&0t|rW&5oBDhet~HFMj33=CKOAy^)n zxbaYzInp8(-Hlv+nK@I24{&1o+7B66l-l>i+(%A8#MTXAn(PLvt^JBk87gQEQ?aWk z!LHuW!MjMhUet5y3fi1Y=(8X@iO@m7CeW?#yLD^*=E|0$uMlJ?zyfgO8ywyH&&qI> z_sj$rg`)1+4mSRXkF#VVC=tV^cYFV_`MXTGU3F%XFO?AB0cyzAGy2g2%!B<4WP@U% zh0liAyZwTzq^~BtPvd=`JDAe%zn+IfcmA?ovVQo4Ps6Wx(KU$D6;~ON{*T!D9|hRc zjBVW*NC=|%Uxw&H6bSeavwY6T|0f>!wV4wP4)M^;qoQSartBmCQq{_U3cxgbbo8) z*0rYIqiRtV=WTJk-s5>WC0RjBJ6}4DRO34ps?a@z%?bx@JnyT~b|qAr8f-s%ZCFT7 z)$yyJUS0(?3ZKP(60!|W7;0BrICkG}`ZujDSPHN+HQaj{ou&cQrD5Iy18D^rL=L1@ z&PL>&G5574VJ{hqq+-NcJP6T47H`P0w1%!yE);JURCew*?lkQx=Zw3ZL?@3hCb7pt5W}G01L3xWn<1{eyY;G!exgXJS>*yF^2_Td8F4}qNx6uKj$ihw!6R|LlO^Mrlnf-@D{Dx5EIk(_aPmC9mE=vD zv0G*;xdLbJar`U6jW@E&!HpznesQpmkyBBD_(pKe8apqT^pI9VOi&CWx7yS9vmf$? zaOTUxdo%W0gCH~B+n03A41n)f!rD~rZ)~YDv1!N93;Wa%P(km95M6>NVK<6g?fXg4 zg^}}eCGb=4>;boh3Ugt3CuZ0cakiL)dLnWnsAJ%MN{LX;V8^Or)?JKCpi@f8_#muQ z#~M_U;ZSyG>&fC@^~>vW`E-)msB^?n>^60rR$23+*SGK+rvh(R@^l8jh{MufOzyMS zT-x_x7QFo(T$divI%&b0-Oqbkr?Vl~YYR|ddQ_r!C#YeQow7H?T zBKSv*ijL$OxDE^=d?gPH2vl*i6t(2Qf-&2*_olf6^i%9xEi@{upPXJCO?Ol64f5de zre5XBQQk*_JVBK{|^84R%adSF)e?YN|~=_Wb!3%_S~qzQ(!zJago5Zp3ljZ!~7i#d+9K8zt*}&~+HQ1%+*;U3{1q4$O#Io2H)@ zS^Pq?oOaIR$OW5pme(cu6(disKJR*NkR%p+st$Ki%lsJa|I+Ku{-@+6V$#Ri)lq!1 zcSzX&6XR~RbB3xm+_V7-r>U15=J-c7V%?l)F#2-VPoll@nD+Fy+cI>}^7S#Q)-%G% zPC-0D^t8mBi{FhEx`$UDgVP6gc!`Ftv&`| zx%Z?mc{2W*ro*$Y0IkLs{B-!{{}5fM2xgY^+bQ1DM2l}ecRcss*?%SQ2T}Mh zOdquoz#q|sJnmBl&tv8A^p3+{Ec_d;sM89*jzUmD81|J>N4D=2$Xitt>NxgK`P0_% z`Js#T31e2Tyvfnq#2BKDAxM~d=BcL>pjt@*!Y@E8$Bi;Mm9zCB88eY_*rk;U`fSqp z>G;VW+UDc0LB5EukJJw;q>TW7r93z{d&G=Ty3Bgpi>5x)Waq{N<4-+jA%{LlYnINg9;+spepgbmdD`rU1 zX=nQh3Iztvzq%$EY^>*Ns^?2sV*v0o7jO3T>I~SUW%#~@h5UFL!5J(V7;e}_+N;<2 z&RIDMpU|nqttGw~j4Mi~3$lZ$Ck_cdvT^>VCD3?}NiXdv!*&~XZyu|daxKWZ-%SQ` z=#BOU%Sue5pDAjv5?f z&-!Uzr|I=5GKS#d12xSO?WUUeQm~mr!s5x9f;OOCIUIOYy@##6j>})FeJn-4s}g1g z{lV}H>h@yR9sdcHLK&1A68sqzc9@{=l;;g7zq~0bXkY6Zj+=$SCNG94RqPkD73AK4 z8XNeJr!o(M5$y&HzytDp`NS8ZR%8LKb*Pq#_*#l3BQq)S8DU0qe6Qs zTW!eSGM|!nVwt?~ei;YuSN~0elO*dH7pk-E_}cZB@m-#Hl2EHiN(O3*-BF6IMf*7A z6|His3wf`DY|)MDEct{hb+;r7Edp}`xSJd>-Wha+N82oj`}v&r&vDy!{@J4%#g05d z0P=!wU*-{!**LX4kIT?K>-EB_((Rl`9J2q*#WJ+-c3WXyUpkT!ga^L4jT*`~d;G;c z%w+*^9#ORDUTgNLe*c$!cA2ge~Rz_qim5w_B@d?v-dm>aSjK+>;3uOe*ePjx?b1ydOe@d$Ne7cdrefuPRExX z9#SQzKBVU}f6^xjITXUV<6DlzWSG`X^b)K;Ut&4;QCa2s6tgwGI@4JxqWhRQfvMk* zLz>|7Ax6i--Lhnm?R{lmScxuJm%f!@YxZj9ZD5DPL#W&K~(M ziw_rS5R?4){WiHfYPIMm&rd)HJ0*H?T(Pf0o#x*Q2ZLB53d>XW6&pP3C!V~rW6J^I_*F>HdEAFhA@;|L=P3`D z`V?}bNn3dk0>J~PY?3J#T0>b@&kdT>U=ih8DQ8` zDsX_H%^)qyfW;Q}Yjay_Wrk4(t8G2_xB6056>_K-l;S2B7X60DWo&jED$8}wPm^~# zxazAuf{cdEL_f}p93_oJBNgapH|r%((dZP&d@s3Fc$ZI#E$E6&Z-=uAeHNcf zYB_cZn%8wfuIo)ylj79FBV8Cesd)`R)8n_7NX}>%Q51%lHqcaZcBZ?{Q_Z^i;UwmI zy1kaeSymdIb$Ry7@6RXtw~Q@DFlkpR{$xC|v%!;uz)(a1MZsq+wF; z0~_C0gFe#T;!#kix1K+zFZJM`D1Vf#QGYoy*NjHCuQSRu^!X{8^V=M)*x@vHh=&Ip z;8oxH8Xes_9aaUnxMHCA#f+tuM!6piazFI*Du#DU^{3)4>p7g;?k5JMrgn@~9vjRj z{0xp5HA1;F!;aH#MM!Sj-H6=W<+1nZSxwbipzlob6f;59EV=zj&6WHdpuv^#&xr(* z+y+%=Bytya&o*!*P!}9joD*ui(qs}T@}zsiCvF}4#5bOCO`XxZ!A?!#d7|4~ z{>Aa7)I}oL%a=qIJ9;*8S+8v9hBwF7BDATqh=Tr!SJ8zELWWop!7K5d>+vXC4&sV)WGLuqp!FZU4DT#>HKQ?cTiab&0&=&D3YwXlNsdufE5&fSi8&Qy)@T78jz z+mg=X0Sn*U_v4F+u{?vrDWE_9}q8Lhk7>IZs##WBC6VCH+ha zK+z{T3U<~sq^X(1GV#je&fNqozpvYf?|VpTz3_V$4g&WlWzl$A+tRUOSqRy8ei_jD zQhC>}+WOffQ`Q$OmX~^O0{R5TgI=p&coYl@4f@+;hS>;Q?B6zK^df0IhT%68>9Es# zdSx4KN&!bTWUU7r3f(5`J!rFs=^$&BZnL%F8m<`GDlQwrA7N|9cMOUtG}%_xqFclg z`ZYL)+t3%?WG=FV=%x$*SplUd{bsUGjq}@M{+{#A|eYwgyciX%kgH|{a0C7a&3dPq&joQv?R%2No%q#R>u(z{ar%c$1*#j z-K%sOd*%vB8^z4TnL9h3wf^2Nq(+{=A%!kdJ zBa4d;XU5d0h$p`*&*$IsGo}U#M>c3JCsi_eiLhW83Qf28F^$NXcCVOCEKp1AJr*+t z=ZDKhs9ojfobwlr1PToYg{tqYGC>=HKa0!_`Y5Jz!ONgk-1AhOFC&!f&k(JPNi%I}Y$~Sp;>N7kdYcSL@ z{{v;G=H#84hsVV-Q*qJ@f{|YZ9ETL9AJmEwL-Tf6?dm#x0)$>GF4En*TsCl>6J?Lt zeBD-&nK$2Z(xvmJ<#y+N3eQ_>FOZ2N zrALsvB7G43!ZS9W#y6VQYPl~&K>Le%r;BiCfhbPJS! zz_I!<;9h~%=j`auEy=$)*cmtyzpivnZ!_O~JMuu-EOmiZoxM@A%jr`Ym2yVx7+$nI zJ2~=xn78<(%C<0QKG{9D>yD5qQRoeoD2dh2sxiYd&}lX7#X)_mS^?WgQ1Iy7^Ze$2 z-lJK&D;gy!^_5?V7W?f5Q>J^lWl>?w*80Du(-2i{mKjUWFnS7X*LVD5Gs00Nr(76Q z<34R628QE1fYMf}hjP*M7M*>22dUiVrZkZq9;t|J?b;_|;OxD~4;V)=0UT)cneN3_ zBv>1rVd#ZO?AkpI?cG4!3PPnf4XR=A`J^uOw^dmrZy%QMIHOd#u~33he4W|1 z^><98KMAki0>jn@lo*Yc5U8O(7(~Gcii_}&Z_l$EIVHg1zc>EX5#)XJpb9sGMSB!nv^}1-L2Iod@)Q??NfB*F zGv8&)J=<%}OdrbIF$SeAbHc3Vnx)(=uFAt3yiHDsJWbu@@N+joY3F@8P@Yz|>V9{> z_dNxl{wAxkkY`+UsBXn3K78;rh8B6KArxPGSf$OoNPl|AMg;yk3J=aoYH9WP)xjRj zu(XKAS?NjUlD>FEnZY05A2}n`if3wA!YAiHcv%|X$bUV5c<)!|YFAoN|MP_!xpxYR z=1X+j;_N?|JPk7(pQZvOaxkD=Dvl_AM^Y*V*a5j3d&sgK*gl>rX<}I-p;=iDc|?-8 za)VVIK}jUSQKGDPb`+HlHn=B%%#J{N~^Thd}nNn!b2U-{A8V;4j%!i8rYzL!^7 zoE7a%WuoOzplT2LcT@T2y=KG-=qZ|Rboq9kG)s|ArdZe}wB&4kSsJCugYJk;sN|}CA#N62)r1`8UBuXC zc;6HAy)*beU~#MX);>O`BekQaW`euJJ#vZ>`bJHcuj2EA&>Qoo%qg=&7hPxC^RgW_ z_tcc*(mQt7Hv69bSQNY#L1ruqs}2>Tl}ub}Nt=xCb-+Vu={vGSCG@)Zi^s@W_TO=j zBLm-Ha^3?M$(J4dSsn8KnLIPPcqR^s25d`SL{_x$irL`a-3z0#f6%I9CG`DU=x56c zMjuI>W(R+Vm~IFwM=1AU{o1fMYhjY%N#k3qAPG9Y@5+#S1&<%}TM$EKskyGOc0q$- z8PC1Rf--knX~Q>Hf)UDDH(K?nw`CM>@*IfnV?fly{7eU6>bsBp5cvjFP*4KVbV=7s4 zUu)kn(!hp&F<)sL9|O#<>&`gHQS|xZ#a7KZD+!xC(2GtTJL_s zZVs7zsT`pB7dR5BR%QT_T+xzv3p^Hdnq%l^0r_Vgq#=WssO4970d(R-1dLE{=d&cN}YI$k&Lw_Wk;uro|wGf;)+FHuo?8rJ=al7Ln=gFPz5Fh9fW4KPsK~JFFNOPcQyBg4erAL7P;Je-Y*dc$)}7cJtV} zG1(-v?zrjsiF1!Zz-e!T#%%R3ih_s5!4qSzv|x%w(qws=zM&OKMZX2qOn@-!ssJ3WR;`+3s8yP6WqX0^c4qRh*N8XUP7-^Oo$RH9! zm9SW?!1*~0^Tz#nxM3d&&yx)Pd+5Z!Ln~&fusa;HY=M-gMqPpZ*Wqm%_57nW9nE#gPcc)~LGnH7$6PUe7NwJIw{RGpm{)GzkF)m1pZi8uG?vCz6@j41LG&L*IsQtyongDBsIV_n!`k z59cKjTha2w8ax`8;m^zp13YKGE}B@=UC;qlaB#@S%;*$D-t*NCaf>v6Op?0VoBVsv z-NOp#>xD?9vtcTX(X|{ghxA8vZr7Aat@-P)=P%_R=V<1iE!p9cFFazbJ#Md&djT-C zfC0W}LMCX*Q3CbByKoVNb5O8ooTAf``{nc~GHbvq^EE8a+;$IT{39u7vR@!NQIs{t z^w_dBh`)Gx?G}|zIr&D9Mq3Ls-W}q|n8n@Bw#3lbD+v`-UHPO1e$;+@>*fp{PZkBi zP*!kAcVc3p^lp*F*pGO-iKUd`gE9x~qs#V`xJ9QW>U=5q=|e~P#4BHLlj3qs zB<3WQOL|2!6z2vCE44l!OTSB4fI^LRAzaYEMIK=Co>YUjDd9`b-ulSyv}=pSQb^q% zEne7N_DU!@>ni`K$1dpLW$d!SwQh}#ArXvZNoMRE+ROv9xSC@6QK%Jxp*J4O)eP?Q zT&qpcbP!W48>blB*O=u7;IEz~5&aqE3T)X4BFC@4y3X#%-S-MTqwKu~wXS&BK8?kltx=mFnHqv^T^tNkCzN6uUv;L6 z;}!^SmoI4*;kc`QH&}eK>s5Q>VHj&0&u&{H0i|4!~RqQlQ>7b}lg9|Q0MI~Q! zba)6o1t6il{1HY;h~$E@uOTFS{=h%%lw3~<6`sjqzOBo~1?IdTrwy&fc%jI{Y$rN< z!pk7IUiH~-v};;06Y2VbC>Eu+2C?L$N6fjs9h zvGFQF91jo&-uvuwX5JimTr4XBiek@OnSjb=skkgH?>zUwL;oSjvvbQqr#pd)mPK_o z&o2YDib&#;WKRofwL2Y^tnUgEx%f)Xw5cP{4fEKi|8z@5_$2mnGYOG9VTt;2t+#zjDNgni z;LSUZLGbLIx04kJW1`G0`PIz_1#SB?Wz~IN@{t{0pT;(((IA~{6>eSP?3NERa$wHT zn0d9%`yjEv$hGZb#RfawSzz7=%%;s=_vZIYHN<&TXfl zqK44I4`}T6Yoq=4L#DMh!X+El2>>uag4U!LE@|;|b^jp)@f%PGsmle#zRK|0*7Dtn z6;qlZ>491+n*Nv0-rd&{rJmZ#QqyX8ILKpZA|OQ5G0EqTvlFV;SR@*~DBNpad-A$} zDjWZ-l!Eo0du+Xzo+IQAOTswUj}Iai_+?yvaVF}IECqw9tEsts%}3WjTg)DZ}668>&l zI^`!2m`A2m7?_F>bD4o%B;KvmAsi_63^P;k_#7`kHptB;ZSiW*F#Nj_xG%wd^kfZ5 zn^?|u{c{veOp!(D|CuX^r3~I*cO>@eCiF9C;)t8myy# zb}UVujv2B3h@CgH3-6RqcY;f@v>@DIO7T)}z70c)I84ZKUwI2Fiwt1h+*VHM+?RnB zT=NE<4#ZGYAh4wdiPyQ$tNukCQC!#mHifR1i9&?IvejN*jQ1FcAkAm@4=?uu^=$W) zuMsATg^JXR=h=GK*2hxkXNp`iDe#VEv4YFRE>e|@9B0iLe&9F=xiIa2cM=5{-3B`z zU&-IHjG8bVCaHT_7ytNCpq(R*=7vHt1-nHU@zb{&S!TKb4EtS)`HKl~b|Mx2Rnv;j zwYtKY;*LWe)-P?(w*V-fv|9@vR*w#%l4JsP^Y|#$9zujjNVuXNkbEI?7#m@>_5A*- zWmy)YNSNFeou_YE>~(KHqIfNG+ej@bs`f zI}&-RHr+u$d?BFKdpvaCi;n{-%gZH>D;)Imm1K^b>5+{ux()p1{wv{Iy0$MampQ55 z&N(Jl)np!VHx8#k4@p{Vk6AYZ35#b~p=jJRb9VK>ofkkyV1>KiDlakB=LZ0 zBiMZDfkaU${V3^}`m_0**JA$NFG#Q^zs+nVNxx98@ma?dQwHyehfYn=cB5|Rs1(ir zqpfJy$UhP?L1eu09Wyj7tndhnJxToSzMy)Rgc4-M>HSU(7%vyw`A8X71U*n|Lr9(w ziAF^AXv&LRnxevvrGK#btqg_Tny2lgiYzR76ZAZdk}93WL@>KZWdiXY!Nwb3{3Zku z-s8Da{D$#zbyc7*AcLCe8^u?)h~ZD{SvNY$-?Y@g)202tQ~+3K;wVazBY=cfoi9GP zvY|pzV9W#-I7z(&vi2RBfEo~EXvp8@Jv9-nce&7>H8}all{nRk2v?Yfo%XMz%0bq+ z|J&=bZLyE^$z3kIZ00D?3#S}EHKuHROot1?2VCZHg|GqbZ1%f1<54pu$ z)KURt0QWhc`4z)s%ff8AjftX_xk~cM(4uuuJ9om-jec_*BIih+mjGCpF*p%Sl-xRP z4qL8Yi}W**3BqB>QOKAELBPu%IyZ-iddn|SLFweajy|U2}M(X4jOcNdWPWSWY>67T@*TmS{ zja_C+PPqBo_h%~OqwkQ+uDwH^Nu-GV3V`;YYn+S@M6P>xKv{0(h>m*IPBd_xd6d4fkEoWx zl=Hz%=*qK<$-zv{2fjGvFi`FFjW8Ldoiom`AX&I&Qo_l8460!dU4NC2Kc3yzJr9jd zQ77Qrz}`O1hsFGGvA;~m3380#VmUEO=zDwl?_ipvrrl|EzAj%Tr@VQK)IPvj0mI~m zIFnQ=a?q7Bz@-dh=JRO&`AD2sl>4WP*RZL<0OG*A^$mM~{211t;o@gaq$2%eGXo^? zzTkWM-727qzR|C#R7EsYe@4a)+Yqy{7V6ah7u@lgxx78MspgZ1qs0d>@EqjcI*Hd* zwbov+bz@KvFW;QyM&3(Ptpy>@Wo^m6&|H+3(>naXTEW-2elOYcI(w`R?qihnJMm}C zH|Iz_E+s_3cqiiZ)Cr$AHTI_`M+~y<>HhG>AlU&SRx5ag=tt~Nvs0%V;W}Kk8%J`b zJbD8;K9+%~0&P03bnKY1S<_qafGmt;2&(DmCT}BCMIrMjW&iJ6NwZtFsw=`oO(%f7 zW>0?g`hl+u?oOeAN*X@x+lj=2UKr{qz0zQQ4`DmInPKk^BZvF`wP9=^e6!hEt6mtx z@`M!bZ<<5R*^uz_DM64fGrh4hP)8)imOb;EJu+*n9Vw2|&MQhg_0!O03T~y&zCZOt zeWcvuOUYG?=de|xFA#bDB6Ee~Fc*gl*F2(Q#U=CcinbM!jX!q0sSH!d>Ml{tMn0 z{|%!`4~O%0&wUgpo+WQe2sw3i4%Sw%gXk8yAY?XKgiD`l8-u# z2L(fq6z;4(>}ptc*Ky1GR-W%on!mwLu{L}x^Y0hriM^6c{LBss|6$nan|CL@pYi0O zmiDZ9l$1Z75wUVLmBs70vmE6)lO)XxXaJn{{r=LMD+tf?VcDyUwOS3`3ysG~sLcK` zinL$J|7p(eWsN*OO0H1StY&-g8MPs{OZ*vYdmoU!AN4b_CjdlCe&+c9z0{s&I(ig><2TV@Si7zD+sHa)m zFONhT3Pwx2lxZ;~^1C{uwpmoqPXm7Y$G%8;ZCsFgYxb94ccWMRm>m3a5YWh+{Z$g^ z^pQP|XM5gz>%NY!B`fY7;dxixMWFC$Ge9f039V;m|EzziPoN2iZPtY5(;b!mwOes< z-5ua*Ckc1ZFy`HPT`t-)aR^(Bv3X*oZ+4> z9S`E%@7$HPtm=*N%Uq9^PiEUR3G^M`z&2vqc}mmVAS z@VX=0dYL^ov3UBt;KOl~!p_TMoe#HEAUEjUX8n1<102ABg@F>RezvpGD|68ds~HqM zwlFQobtdZdYhL)UG?+w8w{7>Tws{iDzH z!9w~QaTiKW4@mHQ=Qzouyn*1nNWPgix$TSB;RXNrD!q2Ak%u=q3}y!x1DnJ=dpIDo z5?!7Qw%TXC?Fk%KRT8GSB6s$3U&R&mhTxq@wI*OGySBdF*0Fc8e-Pr5_qnAN%LA|a zo_Xup8}-iV1N8OItezArtbUwXsC({MNloeJUmB7a*7lzK4!AgO4Rt!Kb=Z}jr_Tw&3J z5j%|n*C$7_8W>@<01eu~`W`McmM5%%5gJ|l;a88j zG~9cA965x(KP2)J`RZ_Tqd@!bCDB)Xgp?^35z6|=CzMrBaxO)K+2M$XdaN*+960!4Ln<_#D35XONgHo}5IaP@{Ve9a^NtIG5<4Rr@A^94 zopj;Rnf2(c-csXVGHgw7AG*BrcjQb-lm6w<%lRz7Q_qpMPTTb;J&CQ{0$!BDc33K<$ThW4;Qyi{79cat#iq z1!dg`l1>#jA!_lA(Ec&}dvng8*u9v%N9+jEBV!d-nzC==sk1Z|syLT5FLW^41J%4r z-3v2=GC)vuepT!NnYF}taECh1W0Nwx?2fAw-gy9WvxmzhNVg1~pX6ZBdx%JMmt(Ws zTN@wK3~$I&e5rSX+`ZZa=3YR)u#~JEsRq1hckOxPkH=>za-3%2R4!Z0SMD*At-{ z3Me8MLnj~oJt%fJA(_DyIbdG(lxlku|TtuUklqV($6++M$&g*ixw?hJ& z!Y4%=xPHXQcu@FZv!?TPyn|&+&fS|URoiN4TN6X-HS!5ZJOazVa;VpW7pNGEW z;hxKhZSp;F^3nWarL-TM0$quw9Tyz^8{09F9?zwXta7(JuiihVVcS!bM_y)`zdjb@ z!8eB*lFUfR>+exIvL!!s-*2;t{aV0L1gu&yH?lWdxVgxhN?uD@7z-98;_)1G=t^_6 z{-Esgl((!{WD-o;IU=s|u8<70uCf>9cbg2uFHjwc&4U#2{L|B zo2$-=A$(vgE1VZ!Z?}^^<6K%Vw&#GPSfh-fiksb+zvtoN+_ytqCYL;S%E=x^{N-k9 z>K|K|)_A$$+$yIj!V*{GuL;$MWAudL7BYKX76okrQRXWUhMJ4|r? zIc}S^;MwDX{Re$7jq-x+msCR~=s`%u`5d zJ`6UnVO<%?)!vGW@5aoT-qUiz+}%t2HgOvrSbkvf`zjdNi%>D2O-|D2MN-?9F8=VW zGs}-n!O+hA*Vq3JjpgyWE;i@K8-}X*CA~%qczy|&Qfh?bj5Tzj-|UCe)^n$W0J=Q(@S?x$JPK7rz$9PM z2r`lUbN0iloPbQf;?)6QkhaQD68-Ffh%CLV!mfv%=%)-WLUF*nMzcMyeQ1OUy`;T0 zi_`WRdt=qO!}GD1xPGnGV!g>bUy1S}6sfl|!CZ>?`1**&hp;K3#g&(T*B)`g!14PM z_C_da6{J7-IvKe3HHU87LM=vIU0YcYSvQWpS<{%*4Ex%EWH*i~tvt9xbHTSzr!0=J z7phhj7GHPy6wle;8=YOL|GlWwr0F(7&&~UGz9u~+$Higq^$Gi%McDc;nf~t23ohow zoKr;pO%%B?bQ#{#y0Bt>jEdxS2vem znxfCy);uBZeuVkU`q3()Qjtb{Gfgq?XRP9+g*~mYU%tW?V|alrbv=XYkhJ~i_maYj zY!hn?Vm4l(k2HizqSn4SA@l0<$0V$UH*2pY3Cgr{sY!?Z%c^Z5!J^|{ib`GB5*MWw zsr?yar%#FoFHPcyVtb=-A&>KEU{b9Z%@X5zw@dZMgKncVBK@j&w)>k2`s+Yo(*T9nt4U2QBuAzovCC#oL4b7zf&O{J zr42@pH#BuM@C}vDj(Pa&har`1t0n445IaS>rsIu}1lhB+Z{`wGSB95{Z6fdNKRxZc zy*;BH&LCg#E_?Ca@6J1eP^$86Ztp=ETFm&X6a=(^2 zviR`DHa$K)GhsXFWt43pJ2QutA|P_7@y|2(#_{F}@T$-N0J~*qw9Jfm6;V< z{H-`Z@q^Z^gmZ`FOR$wb@sJn0JeXsvm>HW+sS&KIA7a)(%lrrdrl$0k6whT2m$V{= z_7F+5hz|0mk6VS<*H0&EQ{G#tXS+BR*$?8b|VG;F}%hv@;thv83;K~If&jF{mt zRflC@#iP$|5uZCoOGF@A`sBB@)lQ6$6N#GNXoKc1RZrV!f|Hes1cTs7;d9zlTPX> zm!fo6!CIds7D(Q4Jf1ASaxMhjN z_ymPo6mMS-?#6srG))Pb+##-c1b{%X`zJQV5n9K^NX5Z~sf$=TKRaX8;ro%u%g`Ne(x~`t~Bz z;+m5PGn4dqpdo73K>;KsE(9Fp3bK2J#jg1HIYcd0088u{bv3v5}0Z;@{`fO9Zm4?UP3XUJD!BzG(5&}RuL%; zow?`ohhpCX_u8ogZn=D&pW>}j_H6%+y+k`7uh-Ek+=cryqZ<8o4LQ7#TBCJ z^L0<{ZI~7@Q+ILmFmo!LH}n^T@~P8tQdq>v<;WuXN@`hc#o3j6d#$;hyD<4`%eUfF z*kT#FFTS1sq{1(UJnb9RL5hs8a1n@W0J5~taVNRqYx14{wuSu^iJx|BJoB)E76-5h zRaGFP@?Jn1-l!18*_dN1dX*8}BUm4eAC3?#75?qevcFdF>n+)IW`J7V@9U4Wj!lf; z>2IZJ-9r|r!cutn<4wZ2lwY>&eRiTbgq?~j9k!23o!8#Yy85aL2?MetgdDq;C+XqC zk2l(TVja)9z8?bjAo*_0`C0jEFwqG~omi?&_eF5OvMhoLi$yk-LnL<4I z*T~-m@rhrF**#$_tCs1S zIq%1U?NClwO;?+cSx7&>#hNv)a*bFCY>8rbq%=paPe<@>4y!&}R8h}m{ zq+i$cP53Z+XEwSjC;2swNm_NQ=j@d5I!oa})3nnb^-r`RJ{ztItKOHLG6D3_T3X$Y}1+`1( z3gr{|dZ|6@kG0@T+mU92*C|8cGTX;hsX%w$)w_HYRTA|*Bk%>L=}(b~Z7hUyCp9KZUzi7g$Lg{sjr)51Qf19HpTVDa{$3CGDKW=@Q-x_@9tTo2W}EwW?pLR$ zzI4bQMeR}BcIxrjJXkIMpr@4|lwXqOfYo6HWof0%QwLuD>o%@chU3y}*<-E`2&3OY zrU~zB1uO_dwI@f6?MS0@WnM26;tuWfx0}iUr&P)+xVdLJOg%(az)2~Px#Re&19f-a z^C{yM-@MrJJg0eA=E6)-wf4PB?04-LdRXfoasYm!$~Ay=_fB%o+XJH-E;~F!QOxqP zZj6g%LSmWzKC+5yNm`4IJA-S80_iwX8@`KYPxIi~L3CtyTmF7wt1Qkx4stQ#_ARY zIziS2^0N>1o~yICGS&lgKWJu3-~I%%bSW=#BHDju;|GuS1M^(9$8<}A|&=^g!1`9?3Wv;enbhAk0w zV~8I9Bcs1|Y7G_38|+mErs_$LUU}no;g7qxOv91*i#)%_K!Y*NcJ{7=%m!ikG z2T;yA_uP6UXr&iYmcAb>(YMR$g3wzpc6VvGNGlY8oAMM~K2~t0b6;|lc^xJBDTeox znS-_!z3b}RL0-klsjsI0Er(%R7i+ah8~1{$xpyhNvV*tQ%=1KV&6B>p`}h($Z1pIitJ;x|@%UXUE8aimW;A`8-)H6VqrY5M!sF*hJ^HSdCt99Spo#lno z+2fc+*lBP#^t%Id2lgP(>9o~?t5sWl)c-;(^c8c9-L=vE9|)?jzrbzeVJ^jd-)?B{ zC<}r)W)o|XV3IP z?pTvB0!@RPADj)d1V=IsEDo?x&h5;3$gEt5&wzzER_8s=pUr5U*7GAvo?JbCvnE^o zfp4vr9+i8MxX1r8@j}Y? zEfTW=CLXF=0C9AdA!#i~->|~W1mO1yF*28&kf3cF(R9@x%_BTW;s_gQPM6VktRACt zmCznj-@To0bRfmQCDps(l(39e-Mzi&MtK#Y1Pj8U3uW7nKIAPPZ@M8(@qov%HX&<~ z_v*WL?rYB4k78+F9M|Apf{YV(Wzk9K@;CNaC;D{AE(4!Jm=fN2qQBES#k93|?YRgb zXrTDR$#v5({d&--D7N-og2nc6II%7Wm??9*t_*58u}MR*<_S2ZoWxnC2jy7O2Al}M zYtYA0Jtxl#Deq59psi*$>?+1M1oMSSQQ~4VsAOV=`ZtsS8 zAKEq_Bv=iL-g8W?uD;&PqOJ{I z2KX?%1pQ9`l}RYwHB6O#I69o^eE#03YZTrN$y9z%_{O{%D4VX`f;}usBUWtSwE610 zjb&Kl5O!5%F{suKmkPulovv@*sJXp;+zq)(@7R_Mx4NkXsL2S&H$l;dK)3|ymk$z` z=6RdcH=<_xQ$R=&j{p;u(kiYyvJnl6?sDK&1ooToqt4E;6Q!YrN)@XJ zduZb;PP;5Qr~uO<9rIhjs{NfrRgNM+1XVO2=g0R4M}-s^2ErhNoT=?37WOp`Y?f0$ z2ZWoOsp|=o=yVOz~$shVdS``u&v{V87sTw!bl&cCsL1E@&=GT zVv|Zyfy8v^JaYKiwaMGVR#mIyXvC@O^$`Qe=`#PaU+PNb+-=nvTH-#^V?NEt<-$~| z={TQ-^$ks^_`}r`T6A&)o)h3bbx-Vd%H9^M;LZ2J8Genp=LG`hUw!=>W)I|8y1tA< zYt+;@GXgtn9G!;DPM_v%|7B$mwT8gI3bCA! z2WJ{=hX$Z$LR=URXIIr)D?e2;Pn!_)SCg&{gQ|(=jXoNAi;`q7nZEmc_uds6>KpWT z@o$Qf(kW&@Nt!4IAH$UH*eKPT$nwgaFwK)3s~yf`PK}<=H9+8z?mj zLl`ZNZl}k{*WPu!IzHRwnmSLP9)@RwaM2(XnCQqGYH@Drvx-jk={|4)_ z$;;)m>qOg(uCSg#j&AID4P`drya}a6UG?pLRsP>IAQgdDuU)O8nB&l}yGQ zc5bco{7YhB?|-YnvaS0e)8?GjUwStg)|@`(cptD3wu%wk;QxuNzL#OTj&ztvmWhLC zF)MEG1uCBZ&Fqs|F;GYgHXEDxU}lEX7dWsigh8@9Y z+ZnR6PQ55W^ZXZ15GXYi4>mk982rHKpIh($$XH_D)W>u1MjFr>TM;v^cH_Lf_+vob zy$;vzfvqaa@}qNLuyMqF?Cy0Tr_~w2hSWHTz-U4sb8E7B1Y5S7HrDc(hPlafY?FP- z09R@HcWpPn(>8s3_wcP_zsaI6fUtnid%m1x`_ELwv!ba!7ud}t(aI5da z0YZvKeOgX8|2tc(NKIK*&uJrup8FkC?aIIRo=k1f;m3ZK?j&aeFPel7B}&MP#48w( z%`>g&JuNhSjU5O0VqlPS94BxcIEUwheu5cer745Prfxz1iN!95sBcXUJPftoJI-2E zpq9Nhm9Ke!&mE;)g75Ky4!%u`br!`;+XeM?$1E!vXR;ApAMHvz6KbcN$&Rd#{$G1v z{nl2~wHrz)P@ba2T~mrZcyWq5MH(oUmKG1r?|TWJ-grg zopYV@H=OU6dPKU6Ox%XtA0Wn*g&K>EY>< z!&iZ-74V6~T&sw6`zL0v`p;cS7+ar&SEI#g1^?^ClQ;Ry2Jng&Vx4pO@jv?1pWcocWs5)kh<8!$B;F@4nK|f#sH&|8YAL$Rud+FDr z`M-XkE;r)ZvG0s4khf}0W}01{O%S6l`yj|Sh~Ah;3z1Gq*%vT{TrFszk}q zY1nO8j`Qq3MTq*>U5d>BC$a7x+(6q5obO5gO-#!i7*@o~QxEJm$LvBkW`66n1UzWP zjw6DD)-;@>7fay0`o2RWL03Q0M*R=-w>>d;x3>U0xqY3~a;vWkg`Ib;$8+tF-vAR& zu$k{IC)&&R)lIAHTDD&-m{7o!nJDOB4N6>x#ge&a{g2r~H?+I6I&tpH_u5&G>a<(u z*H~Vvz}e8djklvGfr)z0(q8I)BNIa%{MjLxjiH(xpW($)NNy31q1n3#d=Eoo9g}HC zaQKuoJbn0fJ)cb1C0tFkLY(NBn`MM8I%62b`8sOMGL#Y+?J)sQt-zW2L;%-kw*h^ z*HSkZAL^3yZd-PZI~-6qof)yBk9o8=If3$i#M_%w*YO(P?eD43VtxF#L5#hmQAicp=VXt(duB zzr-hf$WLdao-bP=*{^5SJ6-wb{LxjrV_Eagl-|ek18jj-M@iAMCk&Im z?e9aVQ4W-L?QI$AX3r^8kBWphSr5{@bWNqaQ+8_38-am)+U*@4*j)AKBx^H!5jg=c z-k+H}k3saaxO9Is)?h5$OIxr&J4D=b8^`L;`I0dR-!>es*orvG1Q6H->;!fLdx6ng zdZJnA%`kbUkFsNkCJK^2Ocm7gDYhJ&=qz$niD*J5(P@H^uFEjbiBmJf?0fEofIo$~ zssm!y$0ec$u;gh)`uuXCmXA*(U;4ykJzqvlW7!O-cN#)CS~sA}Hj~>e+IR|X(JEil zc+K&3T;;M00(180S<=oRChB-*J`(~C^x@Y!)Vz`;QdR<=p25W`65RITZFF5qx5S^P ztd6Iz9y4=;-^U3JTq3H_avN^>(T^+X(Gu#$)8m`xOx4VNh&Lxuf5h3gwW#U{>ZE$V z3A_+wklK!<(A$_gq2cB2C+v5@V=tv@sm6a30ZU5p)0(iE#SWoe;>A`-XwlQ8I&$0# z5L`Dme&R!gJlk5b278hdgvC* zM)>yom{7{FH=>R6IG*FlHkUl-qb($YkK!6f!WK}L{US5Wbc$Iw5pGU~GHjZm#M+nq z-fWJkCyVLq@~BdOo7vZ6v~LckXYp@0W%4NZ+N*V^Ire9TQtKdspDhIbEbbi@WiYk=wwr712f2AP_ACh<)`dFxA3-7sD^!c!QZJ0h-Wrp+XObOrFyuAJNIQdeQfaG1BZrnoUrb_W{w zyKrJDx-WHrS^Gc3aVL}0LTif+?(tiQa+5;gc3@*x8AayI1v5zpdIQtGPxi#rnPI$r zFQQaDgSKp@C-z^1c~c6Qd!3;Sj;O1^%$snY4J??WvPE5#xssBV&b2Vp?JEohvM}T) zxvOBLw=H?>SuYRe1f{L)nV7W@uX2ocR|#%=#^{=3B5d|KUTmpZF%6aPuRTcrqReI$?TIWih+*ES&jkKuYao$yl5b!ZIPA#% z>rNx~dxB6M_iH1*T2r?EjRx64%f`T^^U&YNjU)TttCl_*dr2~|Z4)W+3*;;$udP3@ z9E_kxFT70=_}Z*mmyP~gn0=+mF$`>0n4*0@Y|9s#1_)(Z5EJf!)fw)TGQIXp$t557 zs-!vG+FNUpZL?RQfrO=#Ia||ZUbQkUnmVEx>gwn3SPhMk$B-2)@KvG0) zs6BcbACnLi7xjc4=HLgAVgPU4#>9^0oBIA9l4QvoEjL^z(gY%sON=R*Yjp4juyjp9 zwxwUtHYQ>;ChzJ8I(%~f>P->V%Tb;`FIP+?AI93kB%z|w)j;cQu91Whb@t=I4m5a8C=)0FzWa%8*gS$g0&cytk%#_y&!?i%vK0&P~X?*{7=B!$BLq z+mC$8wv*j%={Hp#BgxtJy5Ft%^((-B8l9g#*e4UyLTifoTFF{j6jDn@_LWvULH?3{G?eL`zP7_$eI3vy&I39m7uI^Kwemw2lBacKM-AC_7qg;wK= z6!Z|el;@&EFOVs)Y=sH|v-nGR(TZ8}xavP{Nq#Xq=d6oO1|S*_&l9MC^b+~skZS7kBtH~M5~4_4VM$ycskg}(?cyxQ%#(c;Su>4! z%OWv#LehHlc6v)GR^g+YFT4$TE&D?Ev?O_t!axrDN^}1*DaDSlvVSw3^_HiK+`*ew z(-bo`qFkkV40Y?dC0@(Bwf2)Px2VOGYn1D)aw5`MR~hW$?#=$^-E2ypqt3JjCX=l?M>IhBvp?6;iq58XEIVzJ+`W{=MU^iy;;L_63q7)yjJ-{JWtb{DXj-4< zCVg+zKiw|1qccvd$~NaeqK6UB<9nZW#3Y`1_98zirE@;(Nt+$9=?5S^=4t%65c{UR zs0JJfMf0((>(#c(ZR>fiStoJulGif$A%C*^yd&lh@fjbjzzk9aRe7(dx+>qu?cr4&z%*voDfGN>F)Em^cPw;Y|FX>1%}yd$g4}vN*0k=B^*3f zx>AUn09w30$WT_Ryrx(`V$+tWgtgGdQIM{bf#a+DGJ-whh?C#(+5SGcf0nOlDZq$l zStK_XqbHP9@qU(1e1#JBwHo5iSvH@TmoM0D-oY`u5~k8r-E~-9zdMr$HIb>HZK4?* zqr2N7d2**iw~*2u$*<9xUc6YXo~eL#nzB~q_~AS8GV?~_}aN;tdgntJt!ReCPm_`F5}aT9Khyyr_6 zYCb8Sj?PQUC>khUBePc2vQ_l*RA@WhjJ8JYu6ybHJ}>Z zwSYWWzcn(VBoF1&b_K{&!6+e}IfC0sA+wO*cQT{o;!zug&~j%a&W6E;3g>()a3Rt)WSahWl@ z^Au0-xLWY$D%OaJx!)p=4ViUsGTFmgm{OIU3kIS9t?jMIAvp1-v8ibtV#}%-lgu_# zq-tZ^x)tr4w~3;unOp)T&Z-s>WehoQIWa?3zV7HP;m~qKRg2pFF3TS~KKm)L-GBPR z4+g-J$Zl)a^$^N6n~D_ZqgPI-|JXvOXS$-Xh8k=_$DD>8dl zU$5c%wow-@%5Uzh$zA+{QaX@i_Gv?$%@C8QiSLerNzrzO_Xxl1dz!WQ^$6d)soPb7 zt(-r3J|fQt^mocz0?5m1fFODz+BWoa^!}`07KVc50<<+>0+WsT$2?AJ>i&bk&XWUA z@~H(sK2g}NW#z#2`Kx%SgNxk{i)tYWjk^Oz&U=Iex~4hjCcu~ql3@Z2CnRapI%&l= z4ZnxuZ1Oey1vFAZxa;7GPkU3#<`Qg2kWo;*EhuhjnCLN4mg-CECXj^4riRsqmR;$1 zjm<$`P(@g{1b>Ok7tB`FrO>d{j|wb^CGBfG5!`wvpu&=mIQD(&J*v3-bgS@_fcUSHpvX{IUI~;C9T0KVvu-Dz9AqPcQDMon{ z9yK_uCOtbI$MnWFWv_gMyS2Rwhm3nn*#DzDD_<~$l|?jl)Ect7to-Ti@v!%^67_OL zmi*j4^AQVJoXFGHu%wy|zWt+G(5#(+*%j2nKT3F&u%~jjL^AW>dj$84_EPIcYcwo) zd_)$lZ6afZC1JlUhO~~?2rpxI;bufvL0S@X#x7#TRs0&Hw>*w%VO_f%hWpl;AqfR~ zidHrCe<+P}a|^77%y7e=S6#PT(};(eC?6e9KNFDo4-WF0n$+Jdw@+kZRHbST80SyC z(lPmOLo7If$S+b6FHzvCoj*^`PWf1^rU*9>oNd{PMuueqn?Ct(3)UnWf)h+;A+{mc zsMZ9qa2L17-MIBBJhuE}#1Nvp0Pw<4#7d4C&p)^4d}GYtDw;T+EPm!xUd$}Zt!2NY z=yJW~!FKpCX@|R$&jSjmOaZ(QaZb8-m6LAhIbon2(eP)nCT*uZ+E?)1(s94}KF1HV zW?tfFz3d^KZlU}X#Cuby@10+DyKzO>l7; zrmkWW{jksOj74GYTQ)~RYdDCyXus=648@b|snbVT%a;5abLWPU&G;pY10Mx(d7FzX z)69g&khg&id?6CTCwWalV`Pxs-_u_MI=82#vpCsBX|rb&G###oI+mibMj%QpJChA# zddQUQ{(b$b9g=uImcAgl@ORDS#F&RN5az?*Q_HX{Ezb&Cs9Vi#gh*p*T?)GSeiYvi zZ+ZF)4N%pyneNibYKb=EKrI?#oFy@%v4nsW|1Jc^a=lCI*4sH1N12|PX+E;1mI4xm zkE(slmL*eDv+WVDM^Da8AKTN##47O?kwZ+EGkaCmjIXIYsZT<+YMA$L}gWL>|SFn)Y7!*6nD>h)|IGg=c*kx}R-zcRD37wqm2Old&r|6cdaJ&=Ui`5G!Q=wN(GYsZiOC` z29{q29f3N#4b=BNC&23sU!%Pdg}ARN%}XaNAjE~Qp&Qg^ znx2{&vkCeCQsH%PC__$M*#DyZb_e#+5Asz#_LCI5X5xLQX_Q`vHktPjdsGX1UM zLgu6G5a~!RtlMuu^Fbmz_Lfp#p^IaC&NV!B|Z0&!cqC?QQejDo;UQ zG+wCZ{8r38MUIdGII=syLhMJW<=5$^b-n7Y0>Q$vp@n)pb8gC(-iX&?O<$Yg_~D(I zn>oq4qR8`C-aHinX9KTl>WjKb7s$hrA>gewZ}d;^=ZCx};C87yJfeLy$suc+ThdBS z_*6^$uP3)M0&F=0@mY5Hl0|P<^YEna{#3V*N^L(yIO1jMSa!*uTI~_TxMoZanDc9A zq1Lr%rW%eYmve8oucKeaF2i+^v*)H*+XZ?;q>bm~;id8;GyQ2ewD&Rsei7fpdimPC z2aLjkTm2uNzUOH1`Fw$&Gg>8bZ(Hd`X_G-)`%2&~Ran^aI;9VNzv`PiQ_&T)sv?@t z%yys3tTrB{zgg}Rbz(K6ym{t~*vCRhD1Uknf-D1=u!iJN&1j* zizo_jtMYq+VWw&nbi?u-i*|FH#!%1-+BPd5)wMwiIl)2XQ5rSyRGNG(ZGBsS^rEVe zuO%(v@G%q1s}M0<{X59KV3g(>f%sV(bK0%=%pzXtT1{C+|N95T(bN&Of7v=U*#e3> zd}6yIrK2K@J;O$EC8}h|=}ME2XCyQ<|8vmJRG8LcNA^e6N7RU(Nw9}dj0PQLmKtP^ z3dm#=)2pBCEGrjUIDt4yR|~_iv)Cxar&rtsR}+oa`E#o(G?2Dd20zgG{|@K4)3Bwb zx*5<%ozPw+G#2c0b+i#bD_KrfnuGaR8#Nl}Tni2Jy?k?{(~1xKI@K-D%K*KStpDQErY{mf>?mMCBmn2&;<$hDo(Hg!f3mxqvg z2fgI2A{vj#c+3UZ$P1!`ePDeeiTkd(DFQmu&qfo4yH)w=`!3p0(#$Wdqg%lHz#bzA zBBd45ZIV_|>x5S#-d@2eTjXqxJ7Nj*>3JnQOYRZPeeuq9FsDqtbaFb~vn^VX7J7Mf zxV}deDK=D+mU(F<;muU(1PA*CEV9ir5t9sNnEltI2qO>Zv2Z-S&zyDkB%0rMyIQ(Z zjZBRR?`73DzO+c*Q!2WPvk>X7KR&Daj<&&VATz8z&YUl)OQKL8Fxgsvu5e73z*}ns zT6_ccW~mGS6nvR^CQ?YSQ(0VKe9V5M>PwBHa9_2JT%Imu|1na%$0dH3NsU(HHjXIS zrN|yM*{93@B07Gd0VNm->{OZW%e9;dHffRJS^Nm$nHGJ@Ur)9foGlIEI@}l`TnG}3 zOMSn{Np0ojJ7QtW<2;@E#eRo}*qR0^2zP8Y3Jx{@vPj(0(BxWzwBwH!pHvl@{k?-{ zWuzW`7(}=Gs_n{1{N{s~<2zZ7f}Y69c+-rP(I$>l=ub+?XYVST5K{7=$S38_UmGV! zRZFyP>Iez9(g}NaylRVZ z;@%F3-6Ra!_O?e#{%Cf=rI-emRczgM-ar!fNLMoY#(}rtprwj7d#jjIpVo?R=vp!f z9IakYtW8+MhOb!n`ose)?5z|%PTBfv-BX1`4^@1CVfC!HC&K*_{B9=I!Zcv^H)~Gb z@m_y&BZOZ}qYf@mB&qtw&`hG)0J%WwZ3fRkYj&8x+8X!)N1BvG-v>qW6t5B4a%<{@ zuGu(RTF88ni!V|0u!%eR(5tded;iXp+A$(6HRocL8w0DyM4f~;E!pQu0wQV5xPpJ6 zE^l8#wg_pW7NaZ6)iH@G92w12Gno(C@A78N?i%nTZ$lTri{D=nemXzle&8(1I8`%} z&R~uE`qyF zs-{=DW;`DChb-~ldH#wKUkF}9UL2ljq84(+V3I3p}2)HyU}GFr`2Ysg&=5c}Pc zCsB1&JmM9JJd)0FO^N2u5EX3b!a0=stclU&a@SL?##nEOOD;J!efB@c?JKge>wS%P zr^R&Kqjfpl0}8XrOI6f{!hQoLINcK~FR}?oJtF^`I zH7(cvx#MpjLBH&iiZ^0P_s$Dd#0w#ig|Hu9kqz1{2U{AwNik!F4IIuymEc=Ac|6`A z*2uTC8&XkA>(ZcwP9yH6PG9$Zs*n-c7w=?7OkDOh0*TzUx|t1za7hwyw_ zPr!l>^mj{8ll<0G)|@+0pRW2Tte9JnmRd%bHN{MPIm{|nXt5#E+~76hbY&DKsNj6* z^t8EYD92C05ApjWD_gtmV!@8TrUHcL@D@@`qgKWH+9&zEnrrEkn&A1LpuQ%avkj!& ziNt5)gHh3g(y2MO#F9picbg1)tTX9wW|8!^FcZ5N_G6Z+`s`vXNy>KH+|{Ls5sIQ@Owju@NHUM&c&D%wGqYo)>YN6j5q5y zqHhht+A8t1D|t;t=Y=ryx>dPamLi)j)|&_$0Y!n@<@MTsup*55Zgka;xOxjWbjk&b zsBhGa-cYwZ#^HhqD9WY`kvo6-CIW$rw&sc$59A_~e&h33J*%mvz3CH7AGr4N%xIKX z66j0%syU9i^rhHD5;s;~&DQAHm4@@%s`E* z;O0)XICz-zal6Bw%Z71z17Hk%2!2#rYTxZUx-d#BGG|>KmX?3{r}oA&e#)Z4cZXU< zQ`UDbh{Noy;ul=cojhB<`0hyEWQ<+HLQIN3T5g4?H+sz*OTAxW5@gv^g) z`#&J2l@7$5Xo9R8`X_E#7Y$D|CwyJK(xNmyg}*0ROmbImln2RS9`rKKCt>^IzB~8k z%W3P+b(mr#Wl&YTwrrtx&22dN1C$|;nAqP6b?z_}vDlY6IiF981-6;4+Ku7MuwErf`zK+p56ixYBq|Ui+x|#`P0F$kC~TN1mde&GYv%zb46U4-> zbyQHmGJF1eWZtIl112yx4g%R@50m}gIdm?JnAOL&evvd@B^|$TwgT^9L63s1pN3Hx zh1JZb;kik>J&_bF|Fx6rwE5xrV3JwYY3Vq8vr4|+QA2pb7(FCJvglfBr`dc3gpVw$ zbP`E5wHo&IXt#G~BLOpF-tkqFh+=Z-pa?Yz<)vzumrv)uX(+9tKWlt29q%df1TE{g z*s8rsJFN3`xowZuMtL=4|=rsnrlIs zvBv(IL`G{rJJwVd`=(z)(@uYG#+;npx^K2NtQU93{E7EV^>jO!Fi;dvB6pL42xYU> zg@FmaanzHWI``VnCyccAgC_+BCb(V_KJ;qdYr;x2*Mk>g7d~r}%=ac>57X9@JFUeg z)w7zL!xxUdnHPC`o@(04#(h;LN%usyw0hF{zp4^@E*)DykS=z@v)0R~DK+N zW`o!6yI0?38S&uu>j&PThgi~)0zA64ZQ1n$fS#%HYuq=_`Uqn$@9}3at{%6O zAC-3O^ov71b2RRtBui1VS#}FQOIaEbgh=BnuR72#@{?yNpK<8jjy9YmbMvcNB^o%4 zm3JRgC>2l zy<{YhvuyL|bNU*D5!Xg($cK#Jkw83ed zd3U?yQ3bVvNcAgU;4C<)&u@+Id6fl|afnTR@P%Hw5LlpLmKu>y@gJ!L4;)%jGe| zF~~unx?b9pM@UA0cfcMX(0keYLrVmKEkORy0C^CooDt{}1QH6u13rI! z0YHF2(}aM25Qw_{Kf?bb^go99e~v4)9f`){Zy%WKG$%DfL4zBnyx zo|frz53uXhkjgFeE_A-}eJRea{^qAp z@gE&0Jd3AtR@f<`?ckaOy|2Oh@wfO}+_!QG^vgRrMty#lZ-ja$-4CG#zw)?`thm-l zH$P;sv|@|mO3kb()`?QMpB&P4XMB(O&~lQ}g3g{6GI3->DxNf^+DZ5FIJhz_N&G%6 zz2rfsl>CA24NWTfQk#H!2~Mn1Km)bLIExE(lDV`Mtnn7V@IYuSNi=cnIy7^|m}>=P zKw!uSCu;)5(r@+?-UX@tiWD2U>W3Wl!MRG+no`?Co~SXM0;}Th}0c4-5u^HPVh7T=D>W7^$seklf!k zgGC`1Wkye5UE!kT|F+nK5?D1pY!zJ%JNr7Tz87O=!Q%l1;XGV3IV6bW>$W}E zza$_Q`nTOZ<&p#YdoPAHy}!C*{*Z8E+2RI?W0-(&(4KDG&u(W)PFw(~AVL|s-Uo;> z4r5R(b{n8Ai10-EzpwvQK`7IU3G_fHg9B#(V9MYy5(EL=<1ns$1}p+di4y`{{uOTj dAL0KW4Ayfj^>F%tVK2j6k~cqk@_$b-{|h+yAZY*q literal 0 HcmV?d00001 diff --git a/Assets/Magic_Spline/Texture/FX_Arrow_7_00006.png.meta b/Assets/Magic_Spline/Texture/FX_Arrow_7_00006.png.meta new file mode 100644 index 00000000..a2561c49 --- /dev/null +++ b/Assets/Magic_Spline/Texture/FX_Arrow_7_00006.png.meta @@ -0,0 +1,140 @@ +fileFormatVersion: 2 +guid: e6f1be8867d4eb246825875f8ab19c1e +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + 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: 2 + 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 + - 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: Windows Store Apps + 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: iPhone + 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: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Piloto Studio/Scripts/Rotator.cs b/Assets/Piloto Studio/Scripts/Rotator.cs index 94d6bc5c..8cd5863c 100644 --- a/Assets/Piloto Studio/Scripts/Rotator.cs +++ b/Assets/Piloto Studio/Scripts/Rotator.cs @@ -1,31 +1,21 @@ using System.Collections; using UnityEngine; -namespace PilotoStudio + +public class Rotator : MonoBehaviour { - public class Rotator : MonoBehaviour - { - public float x = 0f; - public float y = 0f; - public float z = 0f; - - public bool useGlobal; - - - - private void Update() - { - if (!useGlobal) - { - this.transform.Rotate(new Vector3(x, y, z) * Time.deltaTime); - - } - else - { - this.transform.Rotate(new Vector3(x, y, z) * Time.deltaTime, Space.Self); - } - - - } - + public float x = 0f; + public float y = 0f; + public float z = 0f; + void OnEnable() + { + InvokeRepeating("Rotate", 0f, 0.0167f); } -} \ No newline at end of file + void OnDisable() + { + CancelInvoke(); + } + void Rotate() + { + this.transform.localEulerAngles += new Vector3(x,y,z); + } +} diff --git a/Assets/_MrCs/Prefabs/GameManager.prefab b/Assets/_MrCs/Prefabs/GameManager.prefab index b4e023a3..80974426 100644 --- a/Assets/_MrCs/Prefabs/GameManager.prefab +++ b/Assets/_MrCs/Prefabs/GameManager.prefab @@ -95,3 +95,5 @@ MonoBehaviour: allPlayers: [] settleData: gameState: 0 + GuideArrowPre: {fileID: 718552219040796497, guid: 1090ff9efb8eaa94cbdc6dfa4042d3b7, + type: 3} diff --git a/Assets/_MrCs/Scenes/Anhui_Suzhou_Yueshan_Guchengshangyejie_2.unity b/Assets/_MrCs/Scenes/Anhui_Suzhou_Yueshan_Guchengshangyejie_2.unity index 5e9f4903..3cf5cb03 100644 --- a/Assets/_MrCs/Scenes/Anhui_Suzhou_Yueshan_Guchengshangyejie_2.unity +++ b/Assets/_MrCs/Scenes/Anhui_Suzhou_Yueshan_Guchengshangyejie_2.unity @@ -355,32 +355,32 @@ PrefabInstance: - target: {fileID: 3639326941666163144, guid: 7d8cddd7c801d874ea3f8f8d9829e3f4, type: 3} propertyPath: m_LocalScale.x - value: 23.627214 + value: 19.241531 objectReference: {fileID: 0} - target: {fileID: 3639326941666163144, guid: 7d8cddd7c801d874ea3f8f8d9829e3f4, type: 3} propertyPath: m_LocalScale.y - value: 19.655718 + value: 16.007223 objectReference: {fileID: 0} - target: {fileID: 3639326941666163144, guid: 7d8cddd7c801d874ea3f8f8d9829e3f4, type: 3} propertyPath: m_LocalScale.z - value: 23.627214 + value: 19.241531 objectReference: {fileID: 0} - target: {fileID: 3639326941666163144, guid: 7d8cddd7c801d874ea3f8f8d9829e3f4, type: 3} propertyPath: m_LocalPosition.x - value: -4.11 + value: -2.94 objectReference: {fileID: 0} - target: {fileID: 3639326941666163144, guid: 7d8cddd7c801d874ea3f8f8d9829e3f4, type: 3} propertyPath: m_LocalPosition.y - value: 12.4 + value: 10.55 objectReference: {fileID: 0} - target: {fileID: 3639326941666163144, guid: 7d8cddd7c801d874ea3f8f8d9829e3f4, type: 3} propertyPath: m_LocalPosition.z - value: 0.14 + value: -5.92 objectReference: {fileID: 0} - target: {fileID: 3639326941666163144, guid: 7d8cddd7c801d874ea3f8f8d9829e3f4, type: 3} @@ -635,32 +635,32 @@ PrefabInstance: - target: {fileID: 3818840206969601579, guid: 7e6a9da745e339947a72f442a81902cf, type: 3} propertyPath: m_LocalScale.x - value: 2.5 + value: 2.03595 objectReference: {fileID: 0} - target: {fileID: 3818840206969601579, guid: 7e6a9da745e339947a72f442a81902cf, type: 3} propertyPath: m_LocalScale.y - value: 2.5 + value: 2.03595 objectReference: {fileID: 0} - target: {fileID: 3818840206969601579, guid: 7e6a9da745e339947a72f442a81902cf, type: 3} propertyPath: m_LocalScale.z - value: 2.5 + value: 2.03595 objectReference: {fileID: 0} - target: {fileID: 3818840206969601579, guid: 7e6a9da745e339947a72f442a81902cf, type: 3} propertyPath: m_LocalPosition.x - value: -1.63 - objectReference: {fileID: 0} - - target: {fileID: 3818840206969601579, guid: 7e6a9da745e339947a72f442a81902cf, - type: 3} - propertyPath: m_LocalPosition.y value: -0.9 objectReference: {fileID: 0} + - target: {fileID: 3818840206969601579, guid: 7e6a9da745e339947a72f442a81902cf, + type: 3} + propertyPath: m_LocalPosition.y + value: -0.28 + objectReference: {fileID: 0} - target: {fileID: 3818840206969601579, guid: 7e6a9da745e339947a72f442a81902cf, type: 3} propertyPath: m_LocalPosition.z - value: 2.44 + value: -4.05 objectReference: {fileID: 0} - target: {fileID: 3818840206969601579, guid: 7e6a9da745e339947a72f442a81902cf, type: 3} @@ -1665,32 +1665,32 @@ PrefabInstance: - target: {fileID: 125419306367060809, guid: 090339eca154b524aaf54fec0e384750, type: 3} propertyPath: m_LocalScale.x - value: 18.983997 + value: 15.460188 objectReference: {fileID: 0} - target: {fileID: 125419306367060809, guid: 090339eca154b524aaf54fec0e384750, type: 3} propertyPath: m_LocalScale.y - value: 18.983997 + value: 15.460188 objectReference: {fileID: 0} - target: {fileID: 125419306367060809, guid: 090339eca154b524aaf54fec0e384750, type: 3} propertyPath: m_LocalScale.z - value: 18.983997 + value: 15.460188 objectReference: {fileID: 0} - target: {fileID: 125419306367060809, guid: 090339eca154b524aaf54fec0e384750, type: 3} propertyPath: m_LocalPosition.x - value: -0.445 + value: 0.08 objectReference: {fileID: 0} - target: {fileID: 125419306367060809, guid: 090339eca154b524aaf54fec0e384750, type: 3} propertyPath: m_LocalPosition.y - value: 15.4 + value: 12.99 objectReference: {fileID: 0} - target: {fileID: 125419306367060809, guid: 090339eca154b524aaf54fec0e384750, type: 3} propertyPath: m_LocalPosition.z - value: 1.1040003 + value: -5.11 objectReference: {fileID: 0} - target: {fileID: 125419306367060809, guid: 090339eca154b524aaf54fec0e384750, type: 3} @@ -1778,14 +1778,14 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 121847464} serializedVersion: 2 - m_LocalRotation: {x: 0, y: 1, z: 0, w: 0} - m_LocalPosition: {x: -2.1499999, y: 0, z: -5.54} + m_LocalRotation: {x: -0, y: 0.7119563, z: -0, w: 0.7022239} + m_LocalPosition: {x: 6.024127, y: 0, z: 1.1876483} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: - {fileID: 1398400047} m_Father: {fileID: 0} - m_LocalEulerAnglesHint: {x: 0, y: 180, z: 0} + m_LocalEulerAnglesHint: {x: 0, y: 90.789, z: 0} --- !u!1 &123598689 GameObject: m_ObjectHideFlags: 0 @@ -7513,32 +7513,32 @@ PrefabInstance: - target: {fileID: 7793593600290841316, guid: 8ec52b2b76785c84cb412292a8623cd3, type: 3} propertyPath: m_LocalScale.x - value: 12.581999 + value: 10.246528 objectReference: {fileID: 0} - target: {fileID: 7793593600290841316, guid: 8ec52b2b76785c84cb412292a8623cd3, type: 3} propertyPath: m_LocalScale.y - value: 12.582 + value: 10.246529 objectReference: {fileID: 0} - target: {fileID: 7793593600290841316, guid: 8ec52b2b76785c84cb412292a8623cd3, type: 3} propertyPath: m_LocalScale.z - value: 12.582 + value: 10.246529 objectReference: {fileID: 0} - target: {fileID: 7793593600290841316, guid: 8ec52b2b76785c84cb412292a8623cd3, type: 3} propertyPath: m_LocalPosition.x - value: 0.20999996 + value: 0.57 objectReference: {fileID: 0} - target: {fileID: 7793593600290841316, guid: 8ec52b2b76785c84cb412292a8623cd3, type: 3} propertyPath: m_LocalPosition.y - value: 1.1 + value: 1.35 objectReference: {fileID: 0} - target: {fileID: 7793593600290841316, guid: 8ec52b2b76785c84cb412292a8623cd3, type: 3} propertyPath: m_LocalPosition.z - value: 4.7399993 + value: -2.18 objectReference: {fileID: 0} - target: {fileID: 7793593600290841316, guid: 8ec52b2b76785c84cb412292a8623cd3, type: 3} @@ -7707,32 +7707,32 @@ PrefabInstance: - target: {fileID: 4831385450544635514, guid: 4fe71652b0dce254d9f3f5bf19ee354f, type: 3} propertyPath: m_LocalScale.x - value: 10.020991 + value: 8.160894 objectReference: {fileID: 0} - target: {fileID: 4831385450544635514, guid: 4fe71652b0dce254d9f3f5bf19ee354f, type: 3} propertyPath: m_LocalScale.y - value: 10.020991 + value: 8.160894 objectReference: {fileID: 0} - target: {fileID: 4831385450544635514, guid: 4fe71652b0dce254d9f3f5bf19ee354f, type: 3} propertyPath: m_LocalScale.z - value: 10.020991 + value: 8.160894 objectReference: {fileID: 0} - target: {fileID: 4831385450544635514, guid: 4fe71652b0dce254d9f3f5bf19ee354f, type: 3} propertyPath: m_LocalPosition.x - value: -1.1099999 + value: -0.49 objectReference: {fileID: 0} - target: {fileID: 4831385450544635514, guid: 4fe71652b0dce254d9f3f5bf19ee354f, type: 3} propertyPath: m_LocalPosition.y - value: 1.1 + value: 1.35 objectReference: {fileID: 0} - target: {fileID: 4831385450544635514, guid: 4fe71652b0dce254d9f3f5bf19ee354f, type: 3} propertyPath: m_LocalPosition.z - value: 5.39 + value: -1.69 objectReference: {fileID: 0} - target: {fileID: 4831385450544635514, guid: 4fe71652b0dce254d9f3f5bf19ee354f, type: 3} @@ -8255,110 +8255,6 @@ Transform: type: 3} m_PrefabInstance: {fileID: 217159734} m_PrefabAsset: {fileID: 0} ---- !u!1001 &225589527 -PrefabInstance: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_Modification: - serializedVersion: 3 - m_TransformParent: {fileID: 1836419949} - m_Modifications: - - target: {fileID: 6918255146178640376, guid: a3c207951c7b99144bc0ced09879c035, - type: 3} - propertyPath: m_RootOrder - value: 4 - objectReference: {fileID: 0} - - target: {fileID: 6918255146178640376, guid: a3c207951c7b99144bc0ced09879c035, - type: 3} - propertyPath: m_LocalScale.x - value: 2.6521602 - objectReference: {fileID: 0} - - target: {fileID: 6918255146178640376, guid: a3c207951c7b99144bc0ced09879c035, - type: 3} - propertyPath: m_LocalScale.y - value: 2.6521602 - objectReference: {fileID: 0} - - target: {fileID: 6918255146178640376, guid: a3c207951c7b99144bc0ced09879c035, - type: 3} - propertyPath: m_LocalScale.z - value: 2.6521602 - objectReference: {fileID: 0} - - target: {fileID: 6918255146178640376, guid: a3c207951c7b99144bc0ced09879c035, - type: 3} - propertyPath: m_LocalPosition.x - value: -2.49 - objectReference: {fileID: 0} - - target: {fileID: 6918255146178640376, guid: a3c207951c7b99144bc0ced09879c035, - type: 3} - propertyPath: m_LocalPosition.y - value: -0.0999999 - objectReference: {fileID: 0} - - target: {fileID: 6918255146178640376, guid: a3c207951c7b99144bc0ced09879c035, - type: 3} - propertyPath: m_LocalPosition.z - value: -15.22 - objectReference: {fileID: 0} - - target: {fileID: 6918255146178640376, guid: a3c207951c7b99144bc0ced09879c035, - type: 3} - propertyPath: m_LocalRotation.w - value: 0.96021086 - objectReference: {fileID: 0} - - target: {fileID: 6918255146178640376, guid: a3c207951c7b99144bc0ced09879c035, - type: 3} - propertyPath: m_LocalRotation.x - value: -0 - objectReference: {fileID: 0} - - target: {fileID: 6918255146178640376, guid: a3c207951c7b99144bc0ced09879c035, - type: 3} - propertyPath: m_LocalRotation.y - value: 0.27927598 - objectReference: {fileID: 0} - - target: {fileID: 6918255146178640376, guid: a3c207951c7b99144bc0ced09879c035, - type: 3} - propertyPath: m_LocalRotation.z - value: -0 - objectReference: {fileID: 0} - - target: {fileID: 6918255146178640376, guid: a3c207951c7b99144bc0ced09879c035, - type: 3} - propertyPath: m_LocalEulerAnglesHint.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 6918255146178640376, guid: a3c207951c7b99144bc0ced09879c035, - type: 3} - propertyPath: m_LocalEulerAnglesHint.y - value: 32.434 - objectReference: {fileID: 0} - - target: {fileID: 6918255146178640376, guid: a3c207951c7b99144bc0ced09879c035, - type: 3} - propertyPath: m_LocalEulerAnglesHint.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 7730785870802756418, guid: a3c207951c7b99144bc0ced09879c035, - type: 3} - propertyPath: m_Name - value: PA_Snowmanset1_Snowman1 (2) - objectReference: {fileID: 0} - - target: {fileID: 7730785870802756418, guid: a3c207951c7b99144bc0ced09879c035, - type: 3} - propertyPath: m_Layer - value: 3 - objectReference: {fileID: 0} - - target: {fileID: 7730785870802756418, guid: a3c207951c7b99144bc0ced09879c035, - type: 3} - propertyPath: m_StaticEditorFlags - value: 0 - objectReference: {fileID: 0} - m_RemovedComponents: [] - m_RemovedGameObjects: [] - m_AddedGameObjects: [] - m_AddedComponents: [] - m_SourcePrefab: {fileID: 100100000, guid: a3c207951c7b99144bc0ced09879c035, type: 3} ---- !u!4 &225589528 stripped -Transform: - m_CorrespondingSourceObject: {fileID: 6918255146178640376, guid: a3c207951c7b99144bc0ced09879c035, - type: 3} - m_PrefabInstance: {fileID: 225589527} - m_PrefabAsset: {fileID: 0} --- !u!1001 &256835918 PrefabInstance: m_ObjectHideFlags: 0 @@ -8613,7 +8509,7 @@ Transform: m_GameObject: {fileID: 295902225} serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -1.95, y: 10, z: -2.68} + m_LocalPosition: {x: -2.79, y: 10, z: -2.89} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] @@ -8739,32 +8635,32 @@ PrefabInstance: - target: {fileID: 2647004936851811644, guid: 4e9cfe99036e86d4bbfef7790545621f, type: 3} propertyPath: m_LocalScale.x - value: 19.889725 + value: 16.197794 objectReference: {fileID: 0} - target: {fileID: 2647004936851811644, guid: 4e9cfe99036e86d4bbfef7790545621f, type: 3} propertyPath: m_LocalScale.y - value: 19.88972 + value: 16.19779 objectReference: {fileID: 0} - target: {fileID: 2647004936851811644, guid: 4e9cfe99036e86d4bbfef7790545621f, type: 3} propertyPath: m_LocalScale.z - value: 19.889725 + value: 16.197794 objectReference: {fileID: 0} - target: {fileID: 2647004936851811644, guid: 4e9cfe99036e86d4bbfef7790545621f, type: 3} propertyPath: m_LocalPosition.x - value: -4.79 + value: -3.51 objectReference: {fileID: 0} - target: {fileID: 2647004936851811644, guid: 4e9cfe99036e86d4bbfef7790545621f, type: 3} propertyPath: m_LocalPosition.y - value: 9.6 + value: 8.27 objectReference: {fileID: 0} - target: {fileID: 2647004936851811644, guid: 4e9cfe99036e86d4bbfef7790545621f, type: 3} propertyPath: m_LocalPosition.z - value: 4.41 + value: -2.42 objectReference: {fileID: 0} - target: {fileID: 2647004936851811644, guid: 4e9cfe99036e86d4bbfef7790545621f, type: 3} @@ -8955,32 +8851,32 @@ PrefabInstance: - target: {fileID: 538094060322444922, guid: 864a19b01edd6c249a37f1bb036fdc39, type: 3} propertyPath: m_LocalScale.x - value: 21.848843 + value: 17.79326 objectReference: {fileID: 0} - target: {fileID: 538094060322444922, guid: 864a19b01edd6c249a37f1bb036fdc39, type: 3} propertyPath: m_LocalScale.y - value: 21.848843 + value: 17.79326 objectReference: {fileID: 0} - target: {fileID: 538094060322444922, guid: 864a19b01edd6c249a37f1bb036fdc39, type: 3} propertyPath: m_LocalScale.z - value: 21.848843 + value: 17.79326 objectReference: {fileID: 0} - target: {fileID: 538094060322444922, guid: 864a19b01edd6c249a37f1bb036fdc39, type: 3} propertyPath: m_LocalPosition.x - value: 1.84 + value: 1.95 objectReference: {fileID: 0} - target: {fileID: 538094060322444922, guid: 864a19b01edd6c249a37f1bb036fdc39, type: 3} propertyPath: m_LocalPosition.y - value: 9.7 + value: 8.35 objectReference: {fileID: 0} - target: {fileID: 538094060322444922, guid: 864a19b01edd6c249a37f1bb036fdc39, type: 3} propertyPath: m_LocalPosition.z - value: 4.05 + value: -2.75 objectReference: {fileID: 0} - target: {fileID: 538094060322444922, guid: 864a19b01edd6c249a37f1bb036fdc39, type: 3} @@ -9080,32 +8976,32 @@ PrefabInstance: - target: {fileID: 7793593600290841316, guid: 8ec52b2b76785c84cb412292a8623cd3, type: 3} propertyPath: m_LocalScale.x - value: 12.248 + value: 9.974526 objectReference: {fileID: 0} - target: {fileID: 7793593600290841316, guid: 8ec52b2b76785c84cb412292a8623cd3, type: 3} propertyPath: m_LocalScale.y - value: 12.247999 + value: 9.974525 objectReference: {fileID: 0} - target: {fileID: 7793593600290841316, guid: 8ec52b2b76785c84cb412292a8623cd3, type: 3} propertyPath: m_LocalScale.z - value: 12.247998 + value: 9.9745245 objectReference: {fileID: 0} - target: {fileID: 7793593600290841316, guid: 8ec52b2b76785c84cb412292a8623cd3, type: 3} propertyPath: m_LocalPosition.x - value: 2.34 + value: 2.36 objectReference: {fileID: 0} - target: {fileID: 7793593600290841316, guid: 8ec52b2b76785c84cb412292a8623cd3, type: 3} propertyPath: m_LocalPosition.y - value: 5.3 + value: 4.77 objectReference: {fileID: 0} - target: {fileID: 7793593600290841316, guid: 8ec52b2b76785c84cb412292a8623cd3, type: 3} propertyPath: m_LocalPosition.z - value: 6.85 + value: -0.47 objectReference: {fileID: 0} - target: {fileID: 7793593600290841316, guid: 8ec52b2b76785c84cb412292a8623cd3, type: 3} @@ -9546,8 +9442,8 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 389453261} serializedVersion: 2 - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalRotation: {x: -0, y: -0.7022239, z: -0, w: 0.7119563} + m_LocalPosition: {x: 0.5142432, y: 0, z: 3.4136863} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: @@ -9557,7 +9453,7 @@ Transform: - {fileID: 423491702} - {fileID: 1680394496} m_Father: {fileID: 0} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_LocalEulerAnglesHint: {x: 0, y: -89.211, z: 0} --- !u!1 &423491701 GameObject: m_ObjectHideFlags: 0 @@ -9723,7 +9619,7 @@ PrefabInstance: - target: {fileID: 6918255146178640376, guid: a3c207951c7b99144bc0ced09879c035, type: 3} propertyPath: m_LocalPosition.x - value: 1.18 + value: 3.35 objectReference: {fileID: 0} - target: {fileID: 6918255146178640376, guid: a3c207951c7b99144bc0ced09879c035, type: 3} @@ -9733,7 +9629,7 @@ PrefabInstance: - target: {fileID: 6918255146178640376, guid: a3c207951c7b99144bc0ced09879c035, type: 3} propertyPath: m_LocalPosition.z - value: -14.39 + value: -14.01 objectReference: {fileID: 0} - target: {fileID: 6918255146178640376, guid: a3c207951c7b99144bc0ced09879c035, type: 3} @@ -10638,7 +10534,7 @@ Transform: m_GameObject: {fileID: 479164224} serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -1.23, y: 0.1, z: 1.79} + m_LocalPosition: {x: -1.45, y: 0.1, z: 4.13} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] @@ -10669,7 +10565,7 @@ Transform: m_GameObject: {fileID: 484139990} serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -2.1, y: 10, z: 4.25} + m_LocalPosition: {x: -2.85, y: 10, z: 3.85} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] @@ -10738,20 +10634,35 @@ PrefabInstance: propertyPath: m_RootOrder value: 0 objectReference: {fileID: 0} + - target: {fileID: 4311710497124396249, guid: c2966292859fa424391afa0fbf2d506a, + type: 3} + propertyPath: m_LocalScale.x + value: 0.81438 + objectReference: {fileID: 0} + - target: {fileID: 4311710497124396249, guid: c2966292859fa424391afa0fbf2d506a, + type: 3} + propertyPath: m_LocalScale.y + value: 0.81438 + objectReference: {fileID: 0} + - target: {fileID: 4311710497124396249, guid: c2966292859fa424391afa0fbf2d506a, + type: 3} + propertyPath: m_LocalScale.z + value: 0.81438 + objectReference: {fileID: 0} - target: {fileID: 4311710497124396249, guid: c2966292859fa424391afa0fbf2d506a, type: 3} propertyPath: m_LocalPosition.x - value: 0 + value: 0.4 objectReference: {fileID: 0} - target: {fileID: 4311710497124396249, guid: c2966292859fa424391afa0fbf2d506a, type: 3} propertyPath: m_LocalPosition.y - value: 18.8 + value: 15.76 objectReference: {fileID: 0} - target: {fileID: 4311710497124396249, guid: c2966292859fa424391afa0fbf2d506a, type: 3} propertyPath: m_LocalPosition.z - value: 0 + value: -6 objectReference: {fileID: 0} - target: {fileID: 4311710497124396249, guid: c2966292859fa424391afa0fbf2d506a, type: 3} @@ -11882,32 +11793,32 @@ PrefabInstance: - target: {fileID: 2647004936851811644, guid: 4e9cfe99036e86d4bbfef7790545621f, type: 3} propertyPath: m_LocalScale.x - value: 12.174629 + value: 9.914774 objectReference: {fileID: 0} - target: {fileID: 2647004936851811644, guid: 4e9cfe99036e86d4bbfef7790545621f, type: 3} propertyPath: m_LocalScale.y - value: 12.17463 + value: 9.914775 objectReference: {fileID: 0} - target: {fileID: 2647004936851811644, guid: 4e9cfe99036e86d4bbfef7790545621f, type: 3} propertyPath: m_LocalScale.z - value: 12.17463 + value: 9.914775 objectReference: {fileID: 0} - target: {fileID: 2647004936851811644, guid: 4e9cfe99036e86d4bbfef7790545621f, type: 3} propertyPath: m_LocalPosition.x - value: -0.13000001 + value: 0.32 objectReference: {fileID: 0} - target: {fileID: 2647004936851811644, guid: 4e9cfe99036e86d4bbfef7790545621f, type: 3} propertyPath: m_LocalPosition.y - value: 1.1 + value: 1.35 objectReference: {fileID: 0} - target: {fileID: 2647004936851811644, guid: 4e9cfe99036e86d4bbfef7790545621f, type: 3} propertyPath: m_LocalPosition.z - value: 5.9599996 + value: -1.2 objectReference: {fileID: 0} - target: {fileID: 2647004936851811644, guid: 4e9cfe99036e86d4bbfef7790545621f, type: 3} @@ -12184,14 +12095,14 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 605555871} serializedVersion: 2 - m_LocalRotation: {x: 0, y: 1, z: 0, w: 0} - m_LocalPosition: {x: -1.2499999, y: 0, z: 0.8199997} + m_LocalRotation: {x: -0, y: 0.7119563, z: -0, w: 0.7022239} + m_LocalPosition: {x: -0.32288092, y: 0, z: 2.1750896} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: - {fileID: 1836419949} m_Father: {fileID: 0} - m_LocalEulerAnglesHint: {x: 0, y: 180, z: 0} + m_LocalEulerAnglesHint: {x: 0, y: 90.789, z: 0} --- !u!1 &616104601 GameObject: m_ObjectHideFlags: 0 @@ -13867,7 +13778,7 @@ MonoBehaviour: IncludeChildColliders: 0 RuntimeFollower: {fileID: 0} colliderMaxDistance: 100 - lastTimeMaxDistanceCalced: 639001983249245345 + lastTimeMaxDistanceCalced: 639005345020453366 --- !u!1 &679496949 GameObject: m_ObjectHideFlags: 0 @@ -19523,32 +19434,32 @@ PrefabInstance: - target: {fileID: 3495568849372645918, guid: e39da2f1dcd223143b2be0b59624be2f, type: 3} propertyPath: m_LocalScale.x - value: 13.895 + value: 11.31581 objectReference: {fileID: 0} - target: {fileID: 3495568849372645918, guid: e39da2f1dcd223143b2be0b59624be2f, type: 3} propertyPath: m_LocalScale.y - value: 13.895002 + value: 11.315812 objectReference: {fileID: 0} - target: {fileID: 3495568849372645918, guid: e39da2f1dcd223143b2be0b59624be2f, type: 3} propertyPath: m_LocalScale.z - value: 13.895 + value: 11.31581 objectReference: {fileID: 0} - target: {fileID: 3495568849372645918, guid: e39da2f1dcd223143b2be0b59624be2f, type: 3} propertyPath: m_LocalPosition.x - value: -4.41 + value: -3.18 objectReference: {fileID: 0} - target: {fileID: 3495568849372645918, guid: e39da2f1dcd223143b2be0b59624be2f, type: 3} propertyPath: m_LocalPosition.y - value: 11.1 + value: 9.49 objectReference: {fileID: 0} - target: {fileID: 3495568849372645918, guid: e39da2f1dcd223143b2be0b59624be2f, type: 3} propertyPath: m_LocalPosition.z - value: 3.78 + value: -2.99 objectReference: {fileID: 0} - target: {fileID: 3495568849372645918, guid: e39da2f1dcd223143b2be0b59624be2f, type: 3} @@ -20305,38 +20216,6 @@ Transform: type: 3} m_PrefabInstance: {fileID: 828675204} m_PrefabAsset: {fileID: 0} ---- !u!1 &847876771 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 847876772} - m_Layer: 0 - m_Name: GameObject - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &847876772 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 847876771} - serializedVersion: 2 - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -1.85, y: -0.5, z: -3.675} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 1736867292} - m_Father: {fileID: 0} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &855678691 GameObject: m_ObjectHideFlags: 0 @@ -20362,7 +20241,7 @@ Transform: m_GameObject: {fileID: 855678691} serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -1.26, y: 0.1, z: -2.18} + m_LocalPosition: {x: -1.4, y: 0.1, z: -2.51} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] @@ -22846,111 +22725,6 @@ AudioSource: m_PreInfinity: 2 m_PostInfinity: 2 m_RotationOrder: 4 ---- !u!1 &1035588944 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1035588945} - - component: {fileID: 1035588948} - - component: {fileID: 1035588947} - - component: {fileID: 1035588946} - m_Layer: 0 - m_Name: Cube (1) - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &1035588945 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1035588944} - serializedVersion: 2 - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0.13513514, y: 0, z: 0.65584415} - m_LocalScale: {x: 0.7297298, y: 1, z: 0.31168833} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 1736867292} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!65 &1035588946 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1035588944} - m_Material: {fileID: 0} - m_IncludeLayers: - serializedVersion: 2 - m_Bits: 0 - m_ExcludeLayers: - serializedVersion: 2 - m_Bits: 0 - m_LayerOverridePriority: 0 - m_IsTrigger: 0 - m_ProvidesContacts: 0 - m_Enabled: 1 - serializedVersion: 3 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!23 &1035588947 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1035588944} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_StaticShadowCaster: 0 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RayTracingMode: 2 - m_RayTraceProcedural: 0 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_ReceiveGI: 1 - m_PreserveUVs: 0 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 1 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 - m_AdditionalVertexStreams: {fileID: 0} ---- !u!33 &1035588948 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1035588944} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} --- !u!43 &1046167498 Mesh: m_ObjectHideFlags: 0 @@ -23649,32 +23423,32 @@ PrefabInstance: - target: {fileID: 8714341306180131613, guid: 68a2b4ae87876a241a4d65d9032d14fd, type: 3} propertyPath: m_LocalScale.x - value: 19.471258 + value: 15.857003 objectReference: {fileID: 0} - target: {fileID: 8714341306180131613, guid: 68a2b4ae87876a241a4d65d9032d14fd, type: 3} propertyPath: m_LocalScale.y - value: 19.471256 + value: 15.857001 objectReference: {fileID: 0} - target: {fileID: 8714341306180131613, guid: 68a2b4ae87876a241a4d65d9032d14fd, type: 3} propertyPath: m_LocalScale.z - value: 19.471256 + value: 15.857001 objectReference: {fileID: 0} - target: {fileID: 8714341306180131613, guid: 68a2b4ae87876a241a4d65d9032d14fd, type: 3} propertyPath: m_LocalPosition.x - value: -1.62 + value: -0.9 objectReference: {fileID: 0} - target: {fileID: 8714341306180131613, guid: 68a2b4ae87876a241a4d65d9032d14fd, type: 3} propertyPath: m_LocalPosition.y - value: 9.7 + value: 8.35 objectReference: {fileID: 0} - target: {fileID: 8714341306180131613, guid: 68a2b4ae87876a241a4d65d9032d14fd, type: 3} propertyPath: m_LocalPosition.z - value: 6.17 + value: -1.04 objectReference: {fileID: 0} - target: {fileID: 8714341306180131613, guid: 68a2b4ae87876a241a4d65d9032d14fd, type: 3} @@ -26540,32 +26314,32 @@ PrefabInstance: - target: {fileID: 5105620508623565104, guid: 53340baac97bd44419dffef1333ff04c, type: 3} propertyPath: m_LocalScale.x - value: 34.469036 + value: 28.070892 objectReference: {fileID: 0} - target: {fileID: 5105620508623565104, guid: 53340baac97bd44419dffef1333ff04c, type: 3} propertyPath: m_LocalScale.y - value: 34.469032 + value: 28.07089 objectReference: {fileID: 0} - target: {fileID: 5105620508623565104, guid: 53340baac97bd44419dffef1333ff04c, type: 3} propertyPath: m_LocalScale.z - value: 34.469032 + value: 28.07089 objectReference: {fileID: 0} - target: {fileID: 5105620508623565104, guid: 53340baac97bd44419dffef1333ff04c, type: 3} propertyPath: m_LocalPosition.x - value: -1.28 + value: -0.66 objectReference: {fileID: 0} - target: {fileID: 5105620508623565104, guid: 53340baac97bd44419dffef1333ff04c, type: 3} propertyPath: m_LocalPosition.y - value: 9.8 + value: 8.43 objectReference: {fileID: 0} - target: {fileID: 5105620508623565104, guid: 53340baac97bd44419dffef1333ff04c, type: 3} propertyPath: m_LocalPosition.z - value: -1.2 + value: -6.98 objectReference: {fileID: 0} - target: {fileID: 5105620508623565104, guid: 53340baac97bd44419dffef1333ff04c, type: 3} @@ -27413,8 +27187,8 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1398400046} serializedVersion: 2 - m_LocalRotation: {x: -0, y: -1, z: -0, w: 0} - m_LocalPosition: {x: 0, y: -10, z: 0} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -1.02, y: -10, z: -11.75} m_LocalScale: {x: 0.4, y: 0.4, z: 0.4} m_ConstrainProportionsScale: 1 m_Children: @@ -28452,6 +28226,79 @@ Transform: - {fileID: 1866533068156761174} m_Father: {fileID: 8117735096544373184} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1001 &1550229603 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 724252726936952539, guid: 23d92bcafd23cd84c80d578f742aa637, + type: 3} + propertyPath: m_Name + value: "\u5B89\u5FBD\u82CF\u5DDE" + objectReference: {fileID: 0} + - target: {fileID: 724252726936952539, guid: 23d92bcafd23cd84c80d578f742aa637, + type: 3} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3714827713392600281, guid: 23d92bcafd23cd84c80d578f742aa637, + type: 3} + propertyPath: m_LocalPosition.x + value: -3.704 + objectReference: {fileID: 0} + - target: {fileID: 3714827713392600281, guid: 23d92bcafd23cd84c80d578f742aa637, + type: 3} + propertyPath: m_LocalPosition.y + value: -0.5 + objectReference: {fileID: 0} + - target: {fileID: 3714827713392600281, guid: 23d92bcafd23cd84c80d578f742aa637, + type: 3} + propertyPath: m_LocalPosition.z + value: 1.85 + objectReference: {fileID: 0} + - target: {fileID: 3714827713392600281, guid: 23d92bcafd23cd84c80d578f742aa637, + type: 3} + propertyPath: m_LocalRotation.w + value: 0.7071068 + objectReference: {fileID: 0} + - target: {fileID: 3714827713392600281, guid: 23d92bcafd23cd84c80d578f742aa637, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3714827713392600281, guid: 23d92bcafd23cd84c80d578f742aa637, + type: 3} + propertyPath: m_LocalRotation.y + value: 0.7071068 + objectReference: {fileID: 0} + - target: {fileID: 3714827713392600281, guid: 23d92bcafd23cd84c80d578f742aa637, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3714827713392600281, guid: 23d92bcafd23cd84c80d578f742aa637, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3714827713392600281, guid: 23d92bcafd23cd84c80d578f742aa637, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 90 + objectReference: {fileID: 0} + - target: {fileID: 3714827713392600281, guid: 23d92bcafd23cd84c80d578f742aa637, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 23d92bcafd23cd84c80d578f742aa637, type: 3} --- !u!1 &1553261575 GameObject: m_ObjectHideFlags: 0 @@ -28681,7 +28528,7 @@ PrefabInstance: - target: {fileID: 6918255146178640376, guid: a3c207951c7b99144bc0ced09879c035, type: 3} propertyPath: m_LocalPosition.x - value: -5.61 + value: -3.44 objectReference: {fileID: 0} - target: {fileID: 6918255146178640376, guid: a3c207951c7b99144bc0ced09879c035, type: 3} @@ -28691,7 +28538,7 @@ PrefabInstance: - target: {fileID: 6918255146178640376, guid: a3c207951c7b99144bc0ced09879c035, type: 3} propertyPath: m_LocalPosition.z - value: -12.3 + value: -11.92 objectReference: {fileID: 0} - target: {fileID: 6918255146178640376, guid: a3c207951c7b99144bc0ced09879c035, type: 3} @@ -29258,32 +29105,32 @@ PrefabInstance: - target: {fileID: 8907620366790591738, guid: 3842e23a76e877f4481c70913f6603cb, type: 3} propertyPath: m_LocalScale.x - value: 10.737243 + value: 8.744196 objectReference: {fileID: 0} - target: {fileID: 8907620366790591738, guid: 3842e23a76e877f4481c70913f6603cb, type: 3} propertyPath: m_LocalScale.y - value: 10.737244 + value: 8.744196 objectReference: {fileID: 0} - target: {fileID: 8907620366790591738, guid: 3842e23a76e877f4481c70913f6603cb, type: 3} propertyPath: m_LocalScale.z - value: 10.737243 + value: 8.744196 objectReference: {fileID: 0} - target: {fileID: 8907620366790591738, guid: 3842e23a76e877f4481c70913f6603cb, type: 3} propertyPath: m_LocalPosition.x - value: -4.86 + value: -3.51 objectReference: {fileID: 0} - target: {fileID: 8907620366790591738, guid: 3842e23a76e877f4481c70913f6603cb, type: 3} propertyPath: m_LocalPosition.y - value: 8.7 + value: 7.54 objectReference: {fileID: 0} - target: {fileID: 8907620366790591738, guid: 3842e23a76e877f4481c70913f6603cb, type: 3} propertyPath: m_LocalPosition.z - value: 1 + value: -5.19 objectReference: {fileID: 0} - target: {fileID: 8907620366790591738, guid: 3842e23a76e877f4481c70913f6603cb, type: 3} @@ -29575,6 +29422,110 @@ MeshFilter: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1689610350} m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1001 &1696982461 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 1836419949} + m_Modifications: + - target: {fileID: 6918255146178640376, guid: a3c207951c7b99144bc0ced09879c035, + type: 3} + propertyPath: m_RootOrder + value: 5 + objectReference: {fileID: 0} + - target: {fileID: 6918255146178640376, guid: a3c207951c7b99144bc0ced09879c035, + type: 3} + propertyPath: m_LocalScale.x + value: 1.5799985 + objectReference: {fileID: 0} + - target: {fileID: 6918255146178640376, guid: a3c207951c7b99144bc0ced09879c035, + type: 3} + propertyPath: m_LocalScale.y + value: 1.5799983 + objectReference: {fileID: 0} + - target: {fileID: 6918255146178640376, guid: a3c207951c7b99144bc0ced09879c035, + type: 3} + propertyPath: m_LocalScale.z + value: 1.5799985 + objectReference: {fileID: 0} + - target: {fileID: 6918255146178640376, guid: a3c207951c7b99144bc0ced09879c035, + type: 3} + propertyPath: m_LocalPosition.x + value: -4.92 + objectReference: {fileID: 0} + - target: {fileID: 6918255146178640376, guid: a3c207951c7b99144bc0ced09879c035, + type: 3} + propertyPath: m_LocalPosition.y + value: -0.30000007 + objectReference: {fileID: 0} + - target: {fileID: 6918255146178640376, guid: a3c207951c7b99144bc0ced09879c035, + type: 3} + propertyPath: m_LocalPosition.z + value: 9.73 + objectReference: {fileID: 0} + - target: {fileID: 6918255146178640376, guid: a3c207951c7b99144bc0ced09879c035, + type: 3} + propertyPath: m_LocalRotation.w + value: 0.96021086 + objectReference: {fileID: 0} + - target: {fileID: 6918255146178640376, guid: a3c207951c7b99144bc0ced09879c035, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 6918255146178640376, guid: a3c207951c7b99144bc0ced09879c035, + type: 3} + propertyPath: m_LocalRotation.y + value: 0.27927598 + objectReference: {fileID: 0} + - target: {fileID: 6918255146178640376, guid: a3c207951c7b99144bc0ced09879c035, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 6918255146178640376, guid: a3c207951c7b99144bc0ced09879c035, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6918255146178640376, guid: a3c207951c7b99144bc0ced09879c035, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 32.434 + objectReference: {fileID: 0} + - target: {fileID: 6918255146178640376, guid: a3c207951c7b99144bc0ced09879c035, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7730785870802756418, guid: a3c207951c7b99144bc0ced09879c035, + type: 3} + propertyPath: m_Name + value: PA_Snowmanset1_Snowman1 (4) + objectReference: {fileID: 0} + - target: {fileID: 7730785870802756418, guid: a3c207951c7b99144bc0ced09879c035, + type: 3} + propertyPath: m_Layer + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 7730785870802756418, guid: a3c207951c7b99144bc0ced09879c035, + type: 3} + propertyPath: m_StaticEditorFlags + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: a3c207951c7b99144bc0ced09879c035, type: 3} +--- !u!4 &1696982462 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 6918255146178640376, guid: a3c207951c7b99144bc0ced09879c035, + type: 3} + m_PrefabInstance: {fileID: 1696982461} + m_PrefabAsset: {fileID: 0} --- !u!1 &1699866146 GameObject: m_ObjectHideFlags: 0 @@ -30435,113 +30386,6 @@ MonoBehaviour: soundPlayedCustomEvent: willCleanUpDelegatesAfterStop: 1 frames: 178 ---- !u!1 &1736867288 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1736867292} - - component: {fileID: 1736867291} - - component: {fileID: 1736867290} - - component: {fileID: 1736867289} - m_Layer: 0 - m_Name: Cube - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 0 ---- !u!65 &1736867289 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1736867288} - m_Material: {fileID: 0} - m_IncludeLayers: - serializedVersion: 2 - m_Bits: 0 - m_ExcludeLayers: - serializedVersion: 2 - m_Bits: 0 - m_LayerOverridePriority: 0 - m_IsTrigger: 0 - m_ProvidesContacts: 0 - m_Enabled: 1 - serializedVersion: 3 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!23 &1736867290 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1736867288} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_StaticShadowCaster: 0 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RayTracingMode: 2 - m_RayTraceProcedural: 0 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_ReceiveGI: 1 - m_PreserveUVs: 0 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 1 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 - m_AdditionalVertexStreams: {fileID: 0} ---- !u!33 &1736867291 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1736867288} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &1736867292 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1736867288} - serializedVersion: 2 - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 3.7, y: 1, z: 3.85} - m_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 1035588945} - - {fileID: 2126343854} - m_Father: {fileID: 847876772} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1741382582 stripped GameObject: m_CorrespondingSourceObject: {fileID: 8939424390248020864, guid: 1f2e65366c457014ba955a6d98eb94e5, @@ -32246,8 +32090,8 @@ Transform: - {fileID: 509271136} - {fileID: 665424074} - {fileID: 1595431352} - - {fileID: 225589528} - {fileID: 428171530} + - {fileID: 1696982462} - {fileID: 1639342552} - {fileID: 749144215} - {fileID: 31006774} @@ -33122,32 +32966,32 @@ PrefabInstance: - target: {fileID: 4831385450544635514, guid: 4fe71652b0dce254d9f3f5bf19ee354f, type: 3} propertyPath: m_LocalScale.x - value: 11.307 + value: 9.208195 objectReference: {fileID: 0} - target: {fileID: 4831385450544635514, guid: 4fe71652b0dce254d9f3f5bf19ee354f, type: 3} propertyPath: m_LocalScale.y - value: 11.306999 + value: 9.208194 objectReference: {fileID: 0} - target: {fileID: 4831385450544635514, guid: 4fe71652b0dce254d9f3f5bf19ee354f, type: 3} propertyPath: m_LocalScale.z - value: 11.307 + value: 9.208195 objectReference: {fileID: 0} - target: {fileID: 4831385450544635514, guid: 4fe71652b0dce254d9f3f5bf19ee354f, type: 3} propertyPath: m_LocalPosition.x - value: -6.04 + value: -4.48 objectReference: {fileID: 0} - target: {fileID: 4831385450544635514, guid: 4fe71652b0dce254d9f3f5bf19ee354f, type: 3} propertyPath: m_LocalPosition.y - value: 5.3 + value: 4.77 objectReference: {fileID: 0} - target: {fileID: 4831385450544635514, guid: 4fe71652b0dce254d9f3f5bf19ee354f, type: 3} propertyPath: m_LocalPosition.z - value: 6.49 + value: -0.79 objectReference: {fileID: 0} - target: {fileID: 4831385450544635514, guid: 4fe71652b0dce254d9f3f5bf19ee354f, type: 3} @@ -33829,32 +33673,32 @@ PrefabInstance: - target: {fileID: 4831385450544635514, guid: 4fe71652b0dce254d9f3f5bf19ee354f, type: 3} propertyPath: m_LocalScale.x - value: 14.07495 + value: 11.4623575 objectReference: {fileID: 0} - target: {fileID: 4831385450544635514, guid: 4fe71652b0dce254d9f3f5bf19ee354f, type: 3} propertyPath: m_LocalScale.y - value: 14.07495 + value: 11.4623575 objectReference: {fileID: 0} - target: {fileID: 4831385450544635514, guid: 4fe71652b0dce254d9f3f5bf19ee354f, type: 3} propertyPath: m_LocalScale.z - value: 14.07495 + value: 11.4623575 objectReference: {fileID: 0} - target: {fileID: 4831385450544635514, guid: 4fe71652b0dce254d9f3f5bf19ee354f, type: 3} propertyPath: m_LocalPosition.x - value: -4.03 + value: -2.85 objectReference: {fileID: 0} - target: {fileID: 4831385450544635514, guid: 4fe71652b0dce254d9f3f5bf19ee354f, type: 3} propertyPath: m_LocalPosition.y - value: 8.6 + value: 7.46 objectReference: {fileID: 0} - target: {fileID: 4831385450544635514, guid: 4fe71652b0dce254d9f3f5bf19ee354f, type: 3} propertyPath: m_LocalPosition.z - value: -0.19 + value: -6.17 objectReference: {fileID: 0} - target: {fileID: 4831385450544635514, guid: 4fe71652b0dce254d9f3f5bf19ee354f, type: 3} @@ -34696,7 +34540,7 @@ Transform: m_GameObject: {fileID: 2125845074} serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -1.3399999, y: 4.5, z: 1.6099997} + m_LocalPosition: {x: 0.47, y: 4.5, z: 1.6099997} m_LocalScale: {x: 4, y: 0.66622585, z: 3.9871316} m_ConstrainProportionsScale: 1 m_Children: @@ -34707,111 +34551,6 @@ Transform: - {fileID: 1716990657} m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &2126343853 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 2126343854} - - component: {fileID: 2126343857} - - component: {fileID: 2126343856} - - component: {fileID: 2126343855} - m_Layer: 0 - m_Name: Cube (2) - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &2126343854 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2126343853} - serializedVersion: 2 - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 1.6103896} - m_LocalScale: {x: 1, y: 1, z: 1.5974027} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 1736867292} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!65 &2126343855 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2126343853} - m_Material: {fileID: 0} - m_IncludeLayers: - serializedVersion: 2 - m_Bits: 0 - m_ExcludeLayers: - serializedVersion: 2 - m_Bits: 0 - m_LayerOverridePriority: 0 - m_IsTrigger: 0 - m_ProvidesContacts: 0 - m_Enabled: 1 - serializedVersion: 3 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!23 &2126343856 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2126343853} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_StaticShadowCaster: 0 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RayTracingMode: 2 - m_RayTraceProcedural: 0 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_ReceiveGI: 1 - m_PreserveUVs: 0 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 1 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 - m_AdditionalVertexStreams: {fileID: 0} ---- !u!33 &2126343857 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2126343853} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} --- !u!1001 &2130661288 PrefabInstance: m_ObjectHideFlags: 0 @@ -35839,14 +35578,14 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 4316646790139336401} serializedVersion: 2 - m_LocalRotation: {x: 0, y: 1, z: 0, w: 0} - m_LocalPosition: {x: 2.6, y: -4.032973, z: -0.25} + m_LocalRotation: {x: -0, y: 0.7119563, z: -0, w: 0.7022239} + m_LocalPosition: {x: 0.8, y: -4.032973, z: 6.01} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: - {fileID: 1549283049} m_Father: {fileID: 0} - m_LocalEulerAnglesHint: {x: 0, y: 180, z: 0} + m_LocalEulerAnglesHint: {x: 0, y: 90.789, z: 0} --- !u!4 &8202832935499462523 Transform: m_ObjectHideFlags: 0 @@ -35938,4 +35677,4 @@ SceneRoots: - {fileID: 1746743812} - {fileID: 389453262} - {fileID: 2125845078} - - {fileID: 847876772} + - {fileID: 1550229603} diff --git a/Assets/_MrCs/Scenes/Chongqing_Yuzhong_Hongyadong_Xiakexing.unity b/Assets/_MrCs/Scenes/Chongqing_Yuzhong_Hongyadong_Xiakexing.unity index 80da3709..c0f1a3ef 100644 --- a/Assets/_MrCs/Scenes/Chongqing_Yuzhong_Hongyadong_Xiakexing.unity +++ b/Assets/_MrCs/Scenes/Chongqing_Yuzhong_Hongyadong_Xiakexing.unity @@ -40335,7 +40335,7 @@ MonoBehaviour: IncludeChildColliders: 0 RuntimeFollower: {fileID: 0} colliderMaxDistance: 100 - lastTimeMaxDistanceCalced: 638999412584240770 + lastTimeMaxDistanceCalced: 639005412568278652 --- !u!1001 &1803484949 PrefabInstance: m_ObjectHideFlags: 0 diff --git a/Assets/_MrCs/Scenes/Shandong_Langfang_QingzhouTaihuacheng.unity b/Assets/_MrCs/Scenes/Shandong_Langfang_QingzhouTaihuacheng.unity index e3b1be7e..4f944436 100644 --- a/Assets/_MrCs/Scenes/Shandong_Langfang_QingzhouTaihuacheng.unity +++ b/Assets/_MrCs/Scenes/Shandong_Langfang_QingzhouTaihuacheng.unity @@ -4520,7 +4520,7 @@ Transform: m_GameObject: {fileID: 187548279} serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 6.81, y: 0.1, z: 3.49} + m_LocalPosition: {x: 7.49, y: 0.1, z: 1.56} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] @@ -4925,7 +4925,7 @@ Transform: m_GameObject: {fileID: 224353402} serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 10.73, y: 10, z: -1.11} + m_LocalPosition: {x: 10.3, y: 10, z: -0.43} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] @@ -5410,7 +5410,7 @@ PrefabInstance: - target: {fileID: -8679921383154817045, guid: f98ab8abf74faba47915dfdc0f95f55b, type: 3} propertyPath: m_LocalPosition.x - value: 10.41 + value: 9.41 objectReference: {fileID: 0} - target: {fileID: -8679921383154817045, guid: f98ab8abf74faba47915dfdc0f95f55b, type: 3} @@ -5420,7 +5420,7 @@ PrefabInstance: - target: {fileID: -8679921383154817045, guid: f98ab8abf74faba47915dfdc0f95f55b, type: 3} propertyPath: m_LocalPosition.z - value: 15.86 + value: 16.86 objectReference: {fileID: 0} - target: {fileID: -8679921383154817045, guid: f98ab8abf74faba47915dfdc0f95f55b, type: 3} @@ -13832,7 +13832,7 @@ Transform: m_GameObject: {fileID: 577434367} serializedVersion: 2 m_LocalRotation: {x: 0, y: 1, z: 0, w: 0} - m_LocalPosition: {x: 14.77, y: -4.032973, z: 20.72} + m_LocalPosition: {x: 13.77, y: -4.032973, z: 21.72} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: @@ -16325,7 +16325,7 @@ Transform: m_GameObject: {fileID: 793806202} serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 6.05, y: 10, z: -1.67} + m_LocalPosition: {x: 4.61, y: 10, z: -0.44} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] @@ -26710,7 +26710,7 @@ Transform: m_GameObject: {fileID: 1015762382} serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 9.98, y: 10, z: 15.85} + m_LocalPosition: {x: 9.28, y: 10, z: 18.9} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] @@ -26990,7 +26990,7 @@ Transform: m_GameObject: {fileID: 1046302339} serializedVersion: 2 m_LocalRotation: {x: 0, y: 1, z: 0, w: 0} - m_LocalPosition: {x: 10.92, y: 0, z: 21.79} + m_LocalPosition: {x: 9.92, y: 0, z: 22.79} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: @@ -30426,7 +30426,7 @@ Transform: m_GameObject: {fileID: 1249438065} serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 6.77, y: 10, z: 15.21} + m_LocalPosition: {x: 4.62, y: 10, z: 18.66} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] @@ -41674,7 +41674,7 @@ MonoBehaviour: IncludeChildColliders: 0 RuntimeFollower: {fileID: 0} colliderMaxDistance: 100 - lastTimeMaxDistanceCalced: 638999455536035953 + lastTimeMaxDistanceCalced: 639005465778126621 --- !u!1001 &1803484949 PrefabInstance: m_ObjectHideFlags: 0 @@ -42266,7 +42266,7 @@ Transform: m_GameObject: {fileID: 1840121649} serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 6.67, y: 0.1, z: 13.080001} + m_LocalPosition: {x: 6.67, y: 0.1, z: 13.94} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] @@ -44165,7 +44165,7 @@ Transform: m_GameObject: {fileID: 1958196495} serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 8.300001, y: 4.5, z: 7.5} + m_LocalPosition: {x: 7.300001, y: 4.5, z: 8.5} m_LocalScale: {x: 4, y: 0.66622585, z: 3.9871316} m_ConstrainProportionsScale: 1 m_Children: @@ -44723,7 +44723,7 @@ Transform: m_GameObject: {fileID: 2033158670} serializedVersion: 2 m_LocalRotation: {x: 0, y: 1, z: 0, w: 0} - m_LocalPosition: {x: 10.02, y: 0, z: 15.43} + m_LocalPosition: {x: 9.02, y: 0, z: 16.43} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: diff --git a/Assets/_MrCs/Scripts/Manager/GameManager.cs b/Assets/_MrCs/Scripts/Manager/GameManager.cs index 6c591a8f..7e1a4951 100644 --- a/Assets/_MrCs/Scripts/Manager/GameManager.cs +++ b/Assets/_MrCs/Scripts/Manager/GameManager.cs @@ -37,7 +37,7 @@ public enum GameState /// Failur = 3, Settle, - Waiting= 5, + Waiting = 5, } public class GameManager : NetworkBehaviour @@ -54,12 +54,12 @@ public class GameManager : NetworkBehaviour public GameObject damageNumberPre; public GameObject redDamageNumberPre; - + // 怪物ui预制体 public GameObject EnemyUIPre; public GameObject roundPlaceDoorPre; - + #endregion #region 实例化后物体 @@ -68,13 +68,13 @@ public class GameManager : NetworkBehaviour public GameObject blueDoor; #endregion - + // json数据库 private JsonLiteDB DB; - + // 怪物信息集合 public Dictionary> EnemyInfos = new Dictionary>(); - + // 枪械信息集合 public Dictionary> GunInfos = new Dictionary>(); @@ -84,26 +84,26 @@ public class GameManager : NetworkBehaviour public Dictionary EnemyUIList = new Dictionary(); public Dictionary SettleInfos = new Dictionary(); - + public List allPlayers = new List(); - + // 游玩结束时间 [NonSerialized] [SyncVar] public long vistEnd = 0; - + [NonSerialized] [SyncVar] public long vistRoundEnd = 0; // 总游玩时长 - private int vistAllTime = (int)(60*15f); + private int vistAllTime = (int)(60 * 15f); [NonSerialized] [SyncVar] private int roundAllTime; - + [SyncVar] public string settleData = ""; - + [SyncVar] [NonSerialized] public int CurRoundIndex; @@ -117,15 +117,45 @@ public class GameManager : NetworkBehaviour [NonSerialized] [SyncVar] public int RedScore = 0; - + [NonSerialized] [SyncVar] public int RedRoundScore = 0; - + [NonSerialized] [SyncVar] public int BlueRoundScore = 0; + [Header("指引系统")] + public GameObject GuideArrowPre; // 指引箭头预制体 + private GameObject guideArrowInstanceRed; // 指向红门的指引箭头实例 + private GameObject guideArrowInstanceBlue; // 指向蓝门的指引箭头实例 + private GuideArrowPath guideArrowComponentRed; // 红门指引箭头组件 + private GuideArrowPath guideArrowComponentBlue; // 蓝门指引箭头组件 + private bool isGuideArrowActive = false; + + // 优化:使用协程更新路径,避免每帧计算 + private Coroutine pathUpdateCoroutine; + + // 优化:减少更新频率 + private float updatePathInterval = 0.5f; // 路径更新间隔(秒) + private float lastPathUpdateTime = 0f; + + // 优化:简化路径计算 + private Vector3 lastPlayerPosition = Vector3.zero; + private float updatePositionThreshold = 1.0f; // 玩家移动超过这个距离才更新路径 + private int pathSegments = 10; // 路径分段数(使用Lerp插值) + + // 指引系统目标位置 + private Vector3 guideTargetPositionRed = Vector3.zero; + private Vector3 guideTargetPositionBlue = Vector3.zero; + // 是否已初始化指引系统 + private bool isGuideInitialized = false; + // 是否已经同步门位置 + private bool isDoorPositionSynced = false; + // 调试用:强制显示指引 + public bool forceShowGuide = false; + void Awake() { Ins = this; @@ -133,6 +163,12 @@ public class GameManager : NetworkBehaviour void Start() { + // 延迟初始化指引系统,等待网络连接 + CoroutineTaskManager.Instance.WaitSecondTodo(() => + { + InitializeGuideArrow(); + }, 2f); + if (isClient) { UpdateConf(); @@ -140,7 +176,12 @@ public class GameManager : NetworkBehaviour if (isServer) { - CreateDoor(GameLocal.Ins.redDoorPos, GameLocal.Ins.blueDoorPos,GameLocal.Ins.startGameItemPos); + CreateDoor(GameLocal.Ins.redDoorPos, GameLocal.Ins.blueDoorPos, GameLocal.Ins.startGameItemPos); + + CoroutineTaskManager.Instance.WaitSecondTodo(() => + { + StartGuide(); + }, 2f); roundAllTime = vistAllTime / 3; } } @@ -149,30 +190,57 @@ public class GameManager : NetworkBehaviour /// 创建门 /// [Server] - public void CreateDoor(Transform redPos, Transform bluePos,Transform startGamePos) + public void CreateDoor(Transform redPos, Transform bluePos, Transform startGamePos) { SetGameState(GameState.Waiting); - if(!isServer) + if (!isServer) return; + //创建红色门 - redDoor = Instantiate(redDoorPre,redPos.position,Quaternion.identity); + redDoor = Instantiate(redDoorPre, redPos.position, Quaternion.identity); NetworkServer.Spawn(redDoor); - + //创建蓝色门 - blueDoor = Instantiate(blueDoorPre,bluePos.position,Quaternion.identity); + blueDoor = Instantiate(blueDoorPre, bluePos.position, Quaternion.identity); NetworkServer.Spawn(blueDoor); - - //创建开始球 - // GameObject gameStartObj = Instantiate(startGameItemPre,startGamePos.position,Quaternion.identity); - // gameStartObj.transform.eulerAngles = new Vector3(0f,180f,0f); - // NetworkServer.Spawn(gameStartObj); - - //测试枪械 - //GameLocal.Ins.self.GivePistol(); + + // 等待一帧确保物体同步,然后同步门位置 + CoroutineTaskManager.Instance.WaitSecondTodo(() => + { + // 同步门的位置给所有客户端 + RpcSyncDoorPosition(redPos.position, bluePos.position); + Debug.Log("服务器:门位置已同步到客户端"); + + // 服务器端也初始化指引 + CoroutineTaskManager.Instance.WaitSecondTodo(() => + { + StartGuide(); + }, 0.5f); + }, 0.5f); + } + + /// + /// 同步门的位置给所有客户端 + /// + [ClientRpc] + public void RpcSyncDoorPosition(Vector3 redDoorPos, Vector3 blueDoorPos) + { + // 客户端接收门的位置 + guideTargetPositionRed = redDoorPos; + guideTargetPositionBlue = blueDoorPos; + isDoorPositionSynced = true; + Debug.Log("客户端:收到门位置同步,红门: " + guideTargetPositionRed + ",蓝门: " + guideTargetPositionBlue); + + // 如果指引系统已经初始化,立即开始指引 + if (isGuideInitialized) + { + CoroutineTaskManager.Instance.WaitSecondTodo(() => + { + StartGuide(); + }, 0.3f); + } } - - [ClientRpc] public void RpcShowDamageNumber(float damage, Vector3 pos, bool isCritical) { @@ -184,12 +252,12 @@ public class GameManager : NetworkBehaviour if (dmg != null) { dmg.worldPos = pos; - dmg.damageValue = isCritical? damage*2 : damage; + dmg.damageValue = isCritical ? damage * 2 : damage; dmg.OnStartClient(); } Destroy(obj, 10f); } - + [Server] public void GameStart() { @@ -200,6 +268,10 @@ public class GameManager : NetworkBehaviour _curAirdropTime = _airdropTime; ChangeBgmRpc(1); StartAirDrop(); + + // 停止所有客户端的指引 + RpcStopAllGuide(); + // 延迟1s后给所有人发放武器 CoroutineTaskManager.Instance.WaitSecondTodo(() => { @@ -215,9 +287,9 @@ public class GameManager : NetworkBehaviour }, 1f); StartRoundTime(); } - + [TargetRpc] - public void ShowTeamUI(NetworkConnectionToClient conn,int teamId) + public void ShowTeamUI(NetworkConnectionToClient conn, int teamId) { EventDispatcher.TriggerEvent("ChangeTeam", teamId); } @@ -228,20 +300,20 @@ public class GameManager : NetworkBehaviour CurRoundIndex++; CoroutineTaskManager.Instance.WaitSecondTodo(() => { - if(gameState==GameState.Waiting) + if (gameState == GameState.Waiting) return; StopRound(); }, roundAllTime); } - + [Server] public void RegisterPlayer(Player p) { if (!allPlayers.Contains(p)) allPlayers.Add(p); } - - + + // ★ 玩家离开游戏时调用(在Player.OnStopServer里调用) [Server] public void UnRegisterPlayer(Player p) @@ -249,133 +321,138 @@ public class GameManager : NetworkBehaviour if (allPlayers.Contains(p)) allPlayers.Remove(p); } - + // ★ 游戏开始时调用 → 自动分配队伍 - [Server] + [Server] public void AutoAssignTeams() -{ - int redCount = 0; - int blueCount = 0; - - // 统计已选队伍玩家 - foreach (var p in allPlayers) { - if (p.teamType == TeamType.Red) redCount++; - else if (p.teamType == TeamType.Blue) blueCount++; - } + int redCount = 0; + int blueCount = 0; - int totalPlayers = allPlayers.Count; - - // ----------------------------- - // ★ 第一步:强制平衡队伍(如果人数>=2 且某队==0) - // ----------------------------- - if (totalPlayers >= 2) - { - if (redCount == 0 && blueCount > 0) + // 统计已选队伍玩家 + foreach (var p in allPlayers) { - // 需要从蓝队分一半人到红队 - int need = Mathf.Max(1, blueCount / 2); + if (p.teamType == TeamType.Red) redCount++; + else if (p.teamType == TeamType.Blue) blueCount++; + } - foreach (var p in allPlayers) + int totalPlayers = allPlayers.Count; + + // ----------------------------- + // ★ 第一步:强制平衡队伍(如果人数>=2 且某队==0) + // ----------------------------- + if (totalPlayers >= 2) + { + if (redCount == 0 && blueCount > 0) { - if (need <= 0) break; - if (p.teamType == TeamType.Blue) + // 需要从蓝队分一半人到红队 + int need = Mathf.Max(1, blueCount / 2); + + foreach (var p in allPlayers) { - p.teamType = TeamType.Red; - need--; - redCount++; - blueCount--; + if (need <= 0) break; + if (p.teamType == TeamType.Blue) + { + p.teamType = TeamType.Red; + need--; + redCount++; + blueCount--; + } + } + } + else if (blueCount == 0 && redCount > 0) + { + // 需要从红队分一半人到蓝队 + int need = Mathf.Max(1, redCount / 2); + + foreach (var p in allPlayers) + { + if (need <= 0) break; + if (p.teamType == TeamType.Red) + { + p.teamType = TeamType.Blue; + need--; + blueCount++; + redCount--; + } } } } - else if (blueCount == 0 && redCount > 0) - { - // 需要从红队分一半人到蓝队 - int need = Mathf.Max(1, redCount / 2); - - foreach (var p in allPlayers) - { - if (need <= 0) break; - if (p.teamType == TeamType.Red) - { - p.teamType = TeamType.Blue; - need--; - blueCount++; - redCount--; - } - } - } - } - // ----------------------------- - // ★ 第二步:给未分配队伍(NONE)的玩家自动分配 - // ----------------------------- - foreach (var p in allPlayers) - { - if (p.teamType != TeamType.None) - continue; + // ----------------------------- + // ★ 第二步:给未分配队伍(NONE)的玩家自动分配 + // ----------------------------- + foreach (var p in allPlayers) + { + if (p.teamType != TeamType.None) + continue; - if (redCount < blueCount) - { - p.teamType = TeamType.Red; - redCount++; - } - else if (blueCount < redCount) - { - p.teamType = TeamType.Blue; - blueCount++; - } - else - { - // 平局 → 随机 - if (Random.value > 0.5f) + if (redCount < blueCount) { p.teamType = TeamType.Red; redCount++; } - else + else if (blueCount < redCount) { p.teamType = TeamType.Blue; blueCount++; } - } + else + { + // 平局 → 随机 + if (Random.value > 0.5f) + { + p.teamType = TeamType.Red; + redCount++; + } + else + { + p.teamType = TeamType.Blue; + blueCount++; + } + } - // 给队伍分配武器 - GivePistol(p.index); + // 给队伍分配武器 + GivePistol(p.index); + } } -} [Server] public void CheckGameStart() { int curTeamIndex = 0; - bool isStartGame=false; + bool isStartGame = false; foreach (var player in allPlayers) { if (player.teamType != TeamType.None) curTeamIndex++; } - - isStartGame=curTeamIndex >= GameLocal.Ins.addPlayerIndex; + + isStartGame = curTeamIndex >= GameLocal.Ins.addPlayerIndex; if (isStartGame) { - if(gameState== GameState.Playing) + if (gameState == GameState.Playing) return; AutoAssignTeams(); gameState = GameState.Playing; BlueRoundScore = 0; RedRoundScore = 0; + + // 停止所有客户端的指引 + RpcStopAllGuide(); + NetworkServer.Destroy(redDoor); NetworkServer.Destroy(blueDoor); + RpcShowHUD(); MonoSingleton.Instance.WaitSecondTodo(() => { GameStart(); }, 3f, this); - + } - + } @@ -392,10 +469,10 @@ public class GameManager : NetworkBehaviour foreach (var item in NetworkServer.connections.Values) { Player player = item.identity.GetComponent(); - if (player != null&&player.index == index) + if (player != null && player.index == index) { - player.GivePistol(); - player.GiveArmor(); + player.GivePistol(); + player.GiveArmor(); } } } @@ -410,21 +487,6 @@ public class GameManager : NetworkBehaviour public void GameOver() { gameState = GameState.Settle; - // bool isBlue = GameLocal.Ins.self.teamType == TeamType.Blue; - // bool isWin; - // if (isBlue) - // { - // isWin = BlueScore > RedScore; - // } - // RpcShowWin(isBlue); - // if (blueScore >= redScore) - // { - // RpcShowWin(true); - // } - // else - // { - // RpcShowWin(false); - // } } [ClientRpc] @@ -442,28 +504,28 @@ public class GameManager : NetworkBehaviour [Server] public void CreateAirdropPlane(Vector3 startPos, Vector3 endPos) { - GameObject airdropPlane = Instantiate(AirdropPlanePre,startPos,quaternion.identity); + GameObject airdropPlane = Instantiate(AirdropPlanePre, startPos, quaternion.identity); NetworkServer.Spawn(airdropPlane); AirdropPlane airdropPlaneScript = airdropPlane.GetComponent(); airdropPlaneScript.OnSpawn(endPos); } [Server] - public void CreateAirDropItem(int id ,Vector3 startPos) + public void CreateAirDropItem(int id, Vector3 startPos) { - GameObject airdropItem = Instantiate(airdropItems[id],startPos,quaternion.identity); + GameObject airdropItem = Instantiate(airdropItems[id], startPos, quaternion.identity); NetworkServer.Spawn(airdropItem); } - + /// /// 痛击场上所有敌方单位 /// [Command(requiresAuthority = false)] public void DamageAllEnemy() { - + } - + /// /// 更新配置表 /// @@ -497,7 +559,7 @@ public class GameManager : NetworkBehaviour infoList.Add(info.Lvl, info); } } - + Debug.Log("游戏数值更新 -> complete"); } @@ -522,7 +584,7 @@ public class GameManager : NetworkBehaviour [ClientRpc] public void RpcShowHUD() { - HUDPanel.Show(); + HUDPanel.Show(); } [Server] @@ -541,7 +603,7 @@ public class GameManager : NetworkBehaviour } return res; } - + public string GetRoundLessTimeStr() { string res = ""; @@ -581,7 +643,7 @@ public class GameManager : NetworkBehaviour #endregion [TargetRpc] - public void PlaySound2DRPC(NetworkConnection target,string sound) + public void PlaySound2DRPC(NetworkConnection target, string sound) { MasterAudio.PlaySound(sound); } @@ -590,21 +652,21 @@ public class GameManager : NetworkBehaviour { foreach (var item in allPlayers) { - PlaySound2DRPC(item.connectionToClient,sound); + PlaySound2DRPC(item.connectionToClient, sound); } } - + [TargetRpc] - public void PlaySound3DRPC(NetworkConnection target,string sound,Transform pos) + public void PlaySound3DRPC(NetworkConnection target, string sound, Transform pos) { - MasterAudio.PlaySound3DAtTransform(sound,pos); + MasterAudio.PlaySound3DAtTransform(sound, pos); } - public void PlaySound3D(string sound,Transform target) + public void PlaySound3D(string sound, Transform target) { foreach (var item in allPlayers) { - PlaySound3DRPC(item.connectionToClient,sound,target); + PlaySound3DRPC(item.connectionToClient, sound, target); } } @@ -624,18 +686,18 @@ public class GameManager : NetworkBehaviour { _isStartAirdrop = false; } - + void Update() { - if (isServer&& gameState==GameState.Playing&&_isStartAirdrop) + if (isServer && gameState == GameState.Playing && _isStartAirdrop) { //服务器计算剩余时间并同步 //syncRemainingTime = GetLessTimeSeconds(); - _curAirdropTime+=Time.deltaTime; + _curAirdropTime += Time.deltaTime; if (_curAirdropTime >= _airdropTime) { int airdropPosId = Random.Range(0, 4); - int endAirdropPosId =0; + int endAirdropPosId = 0; if (airdropPosId == 0) endAirdropPosId = 1; if (airdropPosId == 1) @@ -644,7 +706,7 @@ public class GameManager : NetworkBehaviour endAirdropPosId = 3; if (airdropPosId == 3) endAirdropPosId = 2; - CreateAirdropPlane(GameLocal.Ins.startPlanePos[airdropPosId].position,GameLocal.Ins.startPlanePos[endAirdropPosId].position); + CreateAirdropPlane(GameLocal.Ins.startPlanePos[airdropPosId].position, GameLocal.Ins.startPlanePos[endAirdropPosId].position); _curAirdropTime = 0; StopAirDrop(); } @@ -657,17 +719,24 @@ public class GameManager : NetworkBehaviour StopRound(); } } + + // 调试:强制显示指引(测试用) + if (forceShowGuide && Input.GetKeyDown(KeyCode.G) && isGuideInitialized && !isGuideArrowActive) + { + Debug.Log("强制显示指引"); + StartGuide(); + } } [Server] public void StartRound() { gameState = GameState.Playing; - ChangeBgmRpc(CurRoundIndex+1); + ChangeBgmRpc(CurRoundIndex + 1); vistRoundEnd = (long)(DateTime.Now.Subtract(new DateTime(1970, 1, 1))).TotalSeconds + roundAllTime; foreach (var item in allPlayers) { - item.HideInvincible(); + item.HideInvincible(); } StartRoundTime(); } @@ -677,15 +746,7 @@ public class GameManager : NetworkBehaviour { gameState = GameState.Waiting; ChangeBgmRpc(0); - //// ★★★ 修改:添加特殊地图规则检查 - //bool shouldEndGameImmediately = CheckIfShouldEndGameImmediately(); - //if (shouldEndGameImmediately) - //{ - // // ★★★ 新增:特定地图第一局结束后直接结算 - // gameState = GameState.Settle; - //} - // else if (CurRoundIndex >= 3) gameState = GameState.Settle; if (BlueRoundScore > RedRoundScore) @@ -696,15 +757,15 @@ public class GameManager : NetworkBehaviour { RedScore += 1; } - if (BlueRoundScore == RedRoundScore&& BlueRoundScore!=0&& RedRoundScore!=0) + if (BlueRoundScore == RedRoundScore && BlueRoundScore != 0 && RedRoundScore != 0) { RedScore += 1; BlueScore += 1; } foreach (var item in allPlayers) { - item.ClearGun(); - + item.ClearGun(); + } MonoSingleton.Instance.WaitSecondTodo(() => { @@ -713,17 +774,11 @@ public class GameManager : NetworkBehaviour RpcPlayerRoundEnd(item.connectionToClient); } }, 1f, this); - //// ★★★ 修改:如果游戏已经结束,直接进入结算 - //if (gameState == GameState.Settle) - //{ - // // ★★★ 新增:直接进入结算流程 - // RpcShowSettle(); - // return; - //} + CreateRoundPlaceDoorPre(); MonoSingleton.Instance.WaitSecondTodo(() => { - if(gameState==GameState.Settle) + if (gameState == GameState.Settle) return; BlueRoundScore = 0; RedRoundScore = 0; @@ -734,58 +789,52 @@ public class GameManager : NetworkBehaviour }, 10f, this); MonoSingleton.Instance.WaitSecondTodo(() => { - if(gameState==GameState.Settle) + if (gameState == GameState.Settle) return; StartRound(); }, 13f, this); } - //// ★★★ 新增:检查是否需要立即结束游戏的方法 - //[Server] - //private bool CheckIfShouldEndGameImmediately() - //{ - // // ★★★ 新增:重庆渝中洪崖洞侠客行十万地图,第一局结束后直接结算 - // return GameLocal.Ins.place == Place.Chongqing_Yuzhong_Hongyadong_Xiakexing_shiwan && CurRoundIndex >= 1; - //} + [TargetRpc] public void RpcPlayerRoundEnd(NetworkConnection target) { EventDispatcher.TriggerEvent("NewRoundStart", - CurRoundIndex==3? BlueScore:BlueRoundScore, - CurRoundIndex==3? RedScore:RedRoundScore, + CurRoundIndex == 3 ? BlueScore : BlueRoundScore, + CurRoundIndex == 3 ? RedScore : RedRoundScore, CurRoundIndex); } - + [TargetRpc] public void RpcPlayerWaitRoundEnd(NetworkConnection target) { GameLocal.Ins.RoundUI.SetActive(false); EventDispatcher.TriggerEvent("NewWaveStart"); } - + public Player GetPlayerByIndex(int index) { return allPlayers.FirstOrDefault(p => p.index == index); } - + #region 回合地图 [Server] public void CreateRoundPlaceDoorPre() { //创建吸收场地黑洞 - var roundPlaceDoor = Instantiate(roundPlaceDoorPre,GameLocal.Ins.roundPlaceDoorPos.position,Quaternion.identity); + var roundPlaceDoor = Instantiate(roundPlaceDoorPre, GameLocal.Ins.roundPlaceDoorPos.position, Quaternion.identity); roundPlaceDoor.transform.eulerAngles = GameLocal.Ins.roundPlaceDoorPos.eulerAngles; NetworkServer.Spawn(roundPlaceDoor); foreach (var player in allPlayers) { PlaceFly(player.connectionToClient, roundPlaceDoor.transform.position); } - + MonoSingleton.Instance.WaitSecondTodo(() => { if (roundPlaceDoor != null) NetworkServer.Destroy(roundPlaceDoor); - if(gameState==GameState.Settle) + if (gameState == GameState.Settle) return; // RPC:通知客户端执行地图升起动画 foreach (var player in allPlayers) @@ -809,7 +858,7 @@ public class GameManager : NetworkBehaviour GameLocal.Ins.AddObject(child, blackHolePos); } } - + [TargetRpc] public void RpcMapRise(NetworkConnection target) { @@ -817,8 +866,8 @@ public class GameManager : NetworkBehaviour } private IEnumerator MapRiseCoroutine() { - GameLocal.Ins.ShowPlace(CurRoundIndex+1); - GameObject newMap = GameLocal.Ins.CurPlace(CurRoundIndex+1); // 新地图预先放在场景里 + GameLocal.Ins.ShowPlace(CurRoundIndex + 1); + GameObject newMap = GameLocal.Ins.CurPlace(CurRoundIndex + 1); // 新地图预先放在场景里 Vector3 startPos = newMap.transform.position; Vector3 endPos = new Vector3(startPos.x, 0f, startPos.z); @@ -842,7 +891,7 @@ public class GameManager : NetworkBehaviour } #endregion - + #region 分数系统 @@ -852,7 +901,7 @@ public class GameManager : NetworkBehaviour /// public void AddRedScore(int score) { - RedRoundScore+=score; + RedRoundScore += score; } /// @@ -861,9 +910,375 @@ public class GameManager : NetworkBehaviour /// public void AddBlueScore(int score) { - BlueRoundScore+=score; + BlueRoundScore += score; } #endregion -} + #region 指引系统(优化版)- 双线版本,使用Vector3.Lerp + + /// + /// 初始化指引箭头(每个客户端独立) + /// + private void InitializeGuideArrow() + { + // 检查预制体是否存在 + if (GuideArrowPre == null) + { + Debug.LogError("GuideArrowPre 预制体未分配!"); + return; + } + + // 实例化两个指引箭头预制体(本地实例,不会网络同步) + guideArrowInstanceRed = Instantiate(GuideArrowPre); + guideArrowInstanceRed.name = "GuideArrow_Red"; + + guideArrowInstanceBlue = Instantiate(GuideArrowPre); + guideArrowInstanceBlue.name = "GuideArrow_Blue"; + + // 获取指引箭头组件 + guideArrowComponentRed = guideArrowInstanceRed.GetComponent(); + guideArrowComponentBlue = guideArrowInstanceBlue.GetComponent(); + + if (guideArrowComponentRed == null || guideArrowComponentBlue == null) + { + Debug.LogError("GuideArrowPre 预制体上没有找到 GuideArrowPath 组件!"); + if (guideArrowInstanceRed != null) Destroy(guideArrowInstanceRed); + if (guideArrowInstanceBlue != null) Destroy(guideArrowInstanceBlue); + guideArrowInstanceRed = null; + guideArrowInstanceBlue = null; + return; + } + + // 初始化玩家位置 + if (GameLocal.Ins.self != null) + { + lastPlayerPosition = GameLocal.Ins.self.transform.position; + } + + isGuideInitialized = true; + Debug.Log("指引系统初始化完成,创建了2个指引箭头,等待门位置同步..."); + + // 如果已经收到门位置同步,立即开始指引 + if (isDoorPositionSynced && guideTargetPositionRed != Vector3.zero && guideTargetPositionBlue != Vector3.zero) + { + CoroutineTaskManager.Instance.WaitSecondTodo(() => + { + StartGuide(); + }, 0.5f); + } + // 如果是客户端,尝试查找网络上的门 + else if (!isServer) + { + CoroutineTaskManager.Instance.WaitSecondTodo(() => + { + TryFindDoorsAndStartGuide(); + }, 1f); + } + } + + /// + /// 尝试查找门并开始指引(客户端使用) + /// + private void TryFindDoorsAndStartGuide() + { + if (isGuideInitialized && !isGuideArrowActive) + { + Vector3[] doorPositions = FindDoorPositions(); + if (doorPositions[0] != Vector3.zero && doorPositions[1] != Vector3.zero) + { + guideTargetPositionRed = doorPositions[0]; + guideTargetPositionBlue = doorPositions[1]; + StartGuide(); + } + else + { + Debug.Log("客户端:未找到两个门,等待门位置同步..."); + } + } + } + + /// + /// 查找门的位置(客户端使用)- 优化版,减少查找频率 + /// + private Vector3[] FindDoorPositions() + { + Vector3[] doorPositions = new Vector3[2] { Vector3.zero, Vector3.zero }; + + // 使用缓存的门对象,避免频繁查找 + if (redDoor != null && redDoor.activeInHierarchy) + { + doorPositions[0] = redDoor.transform.position; + } + else if (blueDoor != null && blueDoor.activeInHierarchy) + { + // 注意:这里需要区分红门和蓝门 + // 假设红门和蓝门都有对应的变量 + } + + // 如果没有缓存,则尝试查找 + if (doorPositions[0] == Vector3.zero) + { + GameObject redDoorObj = GameObject.FindWithTag("RedDoor"); + if (redDoorObj != null) doorPositions[0] = redDoorObj.transform.position; + } + + if (doorPositions[1] == Vector3.zero) + { + GameObject blueDoorObj = GameObject.FindWithTag("BlueDoor"); + if (blueDoorObj != null) doorPositions[1] = blueDoorObj.transform.position; + } + + // 备用查找方案 + if (doorPositions[0] == Vector3.zero || doorPositions[1] == Vector3.zero) + { + GameObject[] allDoors = GameObject.FindGameObjectsWithTag("Door"); + foreach (var door in allDoors) + { + if (door.name.Contains("Red") && doorPositions[0] == Vector3.zero) + { + doorPositions[0] = door.transform.position; + } + else if (door.name.Contains("Blue") && doorPositions[1] == Vector3.zero) + { + doorPositions[1] = door.transform.position; + } + } + } + + return doorPositions; + } + + /// + /// 开始指引(在创建门后调用) + /// + public void StartGuide() + { + if (!isGuideInitialized) + { + Debug.LogWarning("指引系统未初始化,无法开始指引"); + return; + } + + if (GameLocal.Ins.self == null) + { + Debug.LogWarning("玩家对象未找到,无法开始指引"); + return; + } + + // 获取门位置 + Vector3 doorPositionRed = guideTargetPositionRed; + Vector3 doorPositionBlue = guideTargetPositionBlue; + + if (doorPositionRed == Vector3.zero || doorPositionBlue == Vector3.zero) + { + Vector3[] doorPositions = FindDoorPositions(); + if (doorPositions[0] == Vector3.zero || doorPositions[1] == Vector3.zero) + { + Debug.LogWarning("未找到两个门位置,指引无法开始。"); + return; + } + else + { + guideTargetPositionRed = doorPositions[0]; + guideTargetPositionBlue = doorPositions[1]; + } + } + + Debug.Log("开始指引,红门位置: " + guideTargetPositionRed + + ",蓝门位置: " + guideTargetPositionBlue + + ",玩家位置: " + GameLocal.Ins.self.transform.position); + + // 记录初始位置 + lastPlayerPosition = GameLocal.Ins.self.transform.position; + + // 初始计算路径 + UpdateGuidePaths(); + + // 启动路径更新协程 + if (pathUpdateCoroutine != null) + { + StopCoroutine(pathUpdateCoroutine); + } + pathUpdateCoroutine = StartCoroutine(UpdatePathsCoroutine()); + + // 显示指引 + ShowGuideArrow(); + } + + /// + /// 路径更新协程 - 优化性能,减少更新频率 + /// + private IEnumerator UpdatePathsCoroutine() + { + while (isGuideArrowActive && isGuideInitialized) + { + // 检查时间间隔 + if (Time.time - lastPathUpdateTime >= updatePathInterval) + { + UpdateGuidePaths(); + lastPathUpdateTime = Time.time; + } + + // 等待下一帧 + yield return null; + } + } + + /// + /// 更新指引路径 - 使用Vector3.Lerp优化计算 + /// + private void UpdateGuidePaths() + { + if (!isGuideArrowActive || GameLocal.Ins.self == null || !isGuideInitialized) + return; + + // 获取玩家当前位置 + Vector3 currentPlayerPosition = GameLocal.Ins.self.transform.position; + + // 检查玩家是否移动了足够远的距离 + float distanceMoved = Vector3.Distance(currentPlayerPosition, lastPlayerPosition); + + // 如果移动距离小于阈值,且门位置未变化,则跳过更新 + if (distanceMoved < updatePositionThreshold) + { + return; + } + + // 更新玩家位置 + lastPlayerPosition = currentPlayerPosition; + + // 计算两条路径 + List pathToRed = CalculateSimplePath(currentPlayerPosition, guideTargetPositionRed); + List pathToBlue = CalculateSimplePath(currentPlayerPosition, guideTargetPositionBlue); + + // 设置路径 + if (pathToRed != null && pathToRed.Count > 1) + { + guideArrowComponentRed.SetPath(pathToRed); + } + + if (pathToBlue != null && pathToBlue.Count > 1) + { + guideArrowComponentBlue.SetPath(pathToBlue); + } + } + + /// + /// 计算简单路径 - 使用Vector3.Lerp插值 + /// + private List CalculateSimplePath(Vector3 start, Vector3 end) + { + if (start == Vector3.zero || end == Vector3.zero) + return null; + + List path = new List(); + + // 添加起点 + path.Add(start); + + // 使用Vector3.Lerp生成中间点 + for (int i = 1; i < pathSegments; i++) + { + float t = (float)i / pathSegments; + Vector3 point = Vector3.Lerp(start, end, t); + + // 轻微调整高度,形成自然曲线 + float height = Mathf.Sin(t * Mathf.PI) * 0.5f; + point.y += height; + + path.Add(point); + } + + // 添加终点 + path.Add(end); + + return path; + } + + /// + /// 显示指引箭头(本地调用) + /// + public void ShowGuideArrow() + { + if (guideArrowComponentRed != null && guideArrowComponentBlue != null && + GameLocal.Ins.self != null && isGuideInitialized) + { + guideArrowComponentRed.ShowPath(); + guideArrowComponentBlue.ShowPath(); + isGuideArrowActive = true; + Debug.Log("指引箭头已显示(2条线)"); + } + } + + /// + /// 隐藏指引箭头(本地调用) + /// + public void HideGuideArrow() + { + if (guideArrowComponentRed != null && guideArrowComponentBlue != null && isGuideInitialized) + { + guideArrowComponentRed.ClosePath(); + guideArrowComponentBlue.ClosePath(); + isGuideArrowActive = false; + + // 停止协程 + if (pathUpdateCoroutine != null) + { + StopCoroutine(pathUpdateCoroutine); + pathUpdateCoroutine = null; + } + + Debug.Log("指引箭头已隐藏(2条线)"); + } + } + + /// + /// 清理指引箭头实例 + /// + public void CleanupGuideArrow() + { + // 停止协程 + if (pathUpdateCoroutine != null) + { + StopCoroutine(pathUpdateCoroutine); + pathUpdateCoroutine = null; + } + + if (guideArrowInstanceRed != null) + { + Destroy(guideArrowInstanceRed); + guideArrowInstanceRed = null; + } + + if (guideArrowInstanceBlue != null) + { + Destroy(guideArrowInstanceBlue); + guideArrowInstanceBlue = null; + } + + guideArrowComponentRed = null; + guideArrowComponentBlue = null; + isGuideArrowActive = false; + isGuideInitialized = false; + } + + /// + /// RPC调用:停止所有客户端的指引 + /// + [ClientRpc] + public void RpcStopAllGuide() + { + StopGuide(); + } + + /// + /// 停止指引(在游戏开始或删除门时调用) + /// + public void StopGuide() + { + HideGuideArrow(); + } + + #endregion +} \ No newline at end of file diff --git a/Assets/_MrCs/Scripts/Player/Player.cs b/Assets/_MrCs/Scripts/Player/Player.cs index 08123f10..051cceef 100644 --- a/Assets/_MrCs/Scripts/Player/Player.cs +++ b/Assets/_MrCs/Scripts/Player/Player.cs @@ -276,6 +276,8 @@ public class Player : NetworkRoomPlayer,IDamagable teamType = TeamType.Red; GameManager.Ins.GivePistol(index); GameManager.Ins.CheckGameStart(); + GameManager.Ins.CleanupGuideArrow(); + } if (other.tag == "BlueDoor") @@ -284,6 +286,8 @@ public class Player : NetworkRoomPlayer,IDamagable teamType = TeamType.Blue; GameManager.Ins.GivePistol(index); GameManager.Ins.CheckGameStart(); + GameManager.Ins.CleanupGuideArrow(); + } } diff --git a/Assets/_MrCs/Scripts/UI/HUDPanel.cs b/Assets/_MrCs/Scripts/UI/HUDPanel.cs index c56b6c07..2940d859 100644 --- a/Assets/_MrCs/Scripts/UI/HUDPanel.cs +++ b/Assets/_MrCs/Scripts/UI/HUDPanel.cs @@ -191,6 +191,12 @@ public class HUDPanel : MonoBehaviour if (roundIndex == 3) { GameEnd(blueScore, redScore); + Debug.Log("游戏结束,5秒后退出"); + CoroutineTaskManager.Instance.WaitSecondTodo(() => + { + Debug.Log("正在退出游戏..."); + Application.Quit(); + }, 5f); return; } MasterAudio.PlaySound("3.9"); diff --git a/Assets/_Valheim/Prefabs.meta b/Assets/_Valheim/Prefabs.meta new file mode 100644 index 00000000..16f576dd --- /dev/null +++ b/Assets/_Valheim/Prefabs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8bb26b118cc88e443bf430984bd7b57a +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/_Valheim/Prefabs/Pet.meta b/Assets/_Valheim/Prefabs/Pet.meta new file mode 100644 index 00000000..90aa2154 --- /dev/null +++ b/Assets/_Valheim/Prefabs/Pet.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e2ef7877d91af0849828c16edc2a3230 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/_Valheim/Prefabs/Pet/Player.meta b/Assets/_Valheim/Prefabs/Pet/Player.meta new file mode 100644 index 00000000..723f0268 --- /dev/null +++ b/Assets/_Valheim/Prefabs/Pet/Player.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 41d8449cd6ef8c54aa48eeea20e43145 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/_Valheim/Prefabs/Pet/Player/PathGuide.prefab b/Assets/_Valheim/Prefabs/Pet/Player/PathGuide.prefab new file mode 100644 index 00000000..b312541c --- /dev/null +++ b/Assets/_Valheim/Prefabs/Pet/Player/PathGuide.prefab @@ -0,0 +1,172 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &718552219040796497 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 718552219040796499} + - component: {fileID: 718552219040796498} + - component: {fileID: 718552219040796508} + - component: {fileID: -1289911475552001029} + m_Layer: 0 + m_Name: PathGuide + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &718552219040796499 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 718552219040796497} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!120 &718552219040796498 +LineRenderer: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 718552219040796497} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 0 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 0 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: d89e79b4cfdd0ae4e9a7b611c4b172b1, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_Positions: + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 1} + m_Parameters: + serializedVersion: 3 + widthMultiplier: 1 + widthCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + colorGradient: + 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 + numCornerVertices: 0 + numCapVertices: 0 + alignment: 0 + textureMode: 4 + textureScale: {x: 1, y: 1} + shadowBias: 0.5 + generateLightingData: 0 + m_MaskInteraction: 0 + m_UseWorldSpace: 0 + m_Loop: 0 + m_ApplyActiveColorSpace: 0 +--- !u!114 &718552219040796508 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 718552219040796497} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8cdda35296b966646ada44468a5c40c5, type: 3} + m_Name: + m_EditorClassIdentifier: + syncDirection: 0 + syncMode: 0 + syncInterval: 0 +--- !u!114 &-1289911475552001029 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 718552219040796497} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9b91ecbcc199f4492b9a91e820070131, type: 3} + m_Name: + m_EditorClassIdentifier: + sceneId: 0 + _assetId: 4156201627 + serverOnly: 0 + visible: 0 + hasSpawned: 0 diff --git a/Assets/_Valheim/Prefabs/Pet/Player/PathGuide.prefab.meta b/Assets/_Valheim/Prefabs/Pet/Player/PathGuide.prefab.meta new file mode 100644 index 00000000..d3c9df4a --- /dev/null +++ b/Assets/_Valheim/Prefabs/Pet/Player/PathGuide.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 1090ff9efb8eaa94cbdc6dfa4042d3b7 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/_Valheim/Scripts.meta b/Assets/_Valheim/Scripts.meta new file mode 100644 index 00000000..7403e89c --- /dev/null +++ b/Assets/_Valheim/Scripts.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 66f6b66cfef0a194cad6e74200e9f138 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/_Valheim/Scripts/Player.meta b/Assets/_Valheim/Scripts/Player.meta new file mode 100644 index 00000000..07b732fa --- /dev/null +++ b/Assets/_Valheim/Scripts/Player.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ab89cc5a9acefa34db85ad4749b51af8 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/_Valheim/Scripts/Player/GuideArrowPath.cs b/Assets/_Valheim/Scripts/Player/GuideArrowPath.cs new file mode 100644 index 00000000..8be501a8 --- /dev/null +++ b/Assets/_Valheim/Scripts/Player/GuideArrowPath.cs @@ -0,0 +1,102 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class GuideArrowPath : MonoBehaviour +{ + public LayerMask obstacleMask; + public float pathHeight = 0.5f; + + private LineRenderer lineRenderer; + private bool isPathVisible = false; + + void Awake() + { + // 从预制体上获取已存在的LineRenderer组件 + lineRenderer = GetComponent(); + if (lineRenderer == null) + { + Debug.LogError("LineRenderer组件未找到!请确保预制体上已挂载LineRenderer组件"); + return; + } + + // 预制体上已预设LineRenderer属性,这里不再动态设置 + // 如果需要在代码中覆盖预制体设置,可以取消注释以下代码 + /* + lineRenderer.startWidth = 0.1f; + lineRenderer.endWidth = 0.1f; + lineRenderer.material = new Material(Shader.Find("Sprites/Default")); + lineRenderer.startColor = Color.yellow; + lineRenderer.endColor = Color.red; + */ + + lineRenderer.positionCount = 0; + lineRenderer.enabled = false; // 初始禁用 + + Debug.Log("GuideArrowPath 初始化完成,LineRenderer: " + (lineRenderer != null)); + } + + /// + /// 设置路径 + /// + public void SetPath(List pathPoints) + { + if (lineRenderer == null) + { + Debug.LogError("LineRenderer 未找到!"); + return; + } + + if (pathPoints == null || pathPoints.Count < 2) + { + lineRenderer.positionCount = 0; + return; + } + + // 调整路径点高度 + for (int i = 0; i < pathPoints.Count; i++) + { + pathPoints[i] = new Vector3(pathPoints[i].x, pathHeight, pathPoints[i].z); + } + + lineRenderer.positionCount = pathPoints.Count; + lineRenderer.SetPositions(pathPoints.ToArray()); + + Debug.Log("设置路径,点数: " + pathPoints.Count); + } + + /// + /// 显示路径 + /// + public void ShowPath() + { + if (lineRenderer != null) + { + lineRenderer.enabled = true; + isPathVisible = true; + Debug.Log("显示路径,LineRenderer enabled: " + lineRenderer.enabled); + } + } + + /// + /// 关闭路径 + /// + public void ClosePath() + { + if (lineRenderer != null) + { + lineRenderer.enabled = false; + isPathVisible = false; + lineRenderer.positionCount = 0; + Debug.Log("关闭路径"); + } + } + + /// + /// 检查路径是否可见 + /// + public bool IsPathVisible() + { + return isPathVisible && lineRenderer != null && lineRenderer.enabled; + } +} \ No newline at end of file diff --git a/Assets/_Valheim/Scripts/Player/GuideArrowPath.cs.meta b/Assets/_Valheim/Scripts/Player/GuideArrowPath.cs.meta new file mode 100644 index 00000000..bb54d941 --- /dev/null +++ b/Assets/_Valheim/Scripts/Player/GuideArrowPath.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8cdda35296b966646ada44468a5c40c5 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/sucai/Hovl Studio 1.meta b/Assets/sucai/Hovl Studio 1.meta new file mode 100644 index 00000000..5956c2c2 --- /dev/null +++ b/Assets/sucai/Hovl Studio 1.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f252e080092ea5b4dbd7e2a8eb967313 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/sucai/Hovl Studio 1/RPG VFX pack.meta b/Assets/sucai/Hovl Studio 1/RPG VFX pack.meta new file mode 100644 index 00000000..9964b7e1 --- /dev/null +++ b/Assets/sucai/Hovl Studio 1/RPG VFX pack.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 53b5a76f32635a84693329a01b1acca4 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/sucai/Hovl Studio 1/RPG VFX pack/Demo scenes.meta b/Assets/sucai/Hovl Studio 1/RPG VFX pack/Demo scenes.meta new file mode 100644 index 00000000..71639ed6 --- /dev/null +++ b/Assets/sucai/Hovl Studio 1/RPG VFX pack/Demo scenes.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: de80eee5c30f2784f831e7698947df71 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/sucai/Hovl Studio 1/RPG VFX pack/Demo scenes/Demo magic circles Vol 1.meta b/Assets/sucai/Hovl Studio 1/RPG VFX pack/Demo scenes/Demo magic circles Vol 1.meta new file mode 100644 index 00000000..e89a9498 --- /dev/null +++ b/Assets/sucai/Hovl Studio 1/RPG VFX pack/Demo scenes/Demo magic circles Vol 1.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f99c59b5e30a0bb489baddcf6f9b0b1f +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/sucai/Hovl Studio 1/RPG VFX pack/Demo scenes/Demo magic circles Vol 1/CameraHolder.cs b/Assets/sucai/Hovl Studio 1/RPG VFX pack/Demo scenes/Demo magic circles Vol 1/CameraHolder.cs new file mode 100644 index 00000000..b916137a --- /dev/null +++ b/Assets/sucai/Hovl Studio 1/RPG VFX pack/Demo scenes/Demo magic circles Vol 1/CameraHolder.cs @@ -0,0 +1,163 @@ +using System.Collections; +using System.Collections.Generic; +using System.Runtime.Serialization.Formatters; +using System; +using UnityEngine; + +public class CameraHolder : MonoBehaviour +{ + //camera holder + public Transform Holder; + public float currDistance = 5.0f; + public float xRotate = 250.0f; + public float yRotate = 120.0f; + public float yMinLimit = -20f; + public float yMaxLimit = 80f; + public float prevDistance; + private float x = 0.0f; + private float y = 0.0f; + + [Header("GUI")] + private float windowDpi; + public GameObject[] Prefabs; + private int Prefab; + private GameObject Instance; + private float StartColor; + private float HueColor; + public Texture HueTexture; + + void Start() + { + if (Screen.dpi < 1) windowDpi = 1; + if (Screen.dpi < 200) windowDpi = 1; + else windowDpi = Screen.dpi / 200f; + var angles = transform.eulerAngles; + x = angles.y; + y = angles.x; + Counter(0); + } + + private void OnGUI() + { + if (GUI.Button(new Rect(5 * windowDpi, 5 * windowDpi, 110 * windowDpi, 35 * windowDpi), "Previous effect")) + { + Counter(-1); + } + if (GUI.Button(new Rect(120 * windowDpi, 5 * windowDpi, 110 * windowDpi, 35 * windowDpi), "Play again")) + { + Counter(0); + } + if (GUI.Button(new Rect(235 * windowDpi, 5 * windowDpi, 110 * windowDpi, 35 * windowDpi), "Next effect")) + { + Counter(+1); + } + + StartColor = HueColor; + HueColor = GUI.HorizontalSlider(new Rect(5 * windowDpi, 45 * windowDpi, 340 * windowDpi, 35 * windowDpi), HueColor, 0, 1); + GUI.DrawTexture(new Rect(5 * windowDpi, 65 * windowDpi, 340 * windowDpi, 15 * windowDpi), HueTexture, ScaleMode.StretchToFill, false, 0); + if (HueColor != StartColor) + { + int i = 0; + foreach (var ps in particleSystems) + { + var main = ps.main; + Color colorHSV = Color.HSVToRGB(HueColor + H * 0, svList[i].S, svList[i].V); + main.startColor = new Color(colorHSV.r, colorHSV.g, colorHSV.b, svList[i].A); + i++; + } + } + } + + private ParticleSystem[] particleSystems = new ParticleSystem[0]; + private List svList = new List(); + private float H; + + public struct SVA + { + public float S; + public float V; + public float A; + } + + void Counter(int count) + { + Prefab += count; + if (Prefab > Prefabs.Length - 1) + { + Prefab = 0; + } + else if (Prefab < 0) + { + Prefab = Prefabs.Length - 1; + } + if (Instance != null) + { + Destroy(Instance); + } + Instance = Instantiate(Prefabs[Prefab]); + particleSystems = Instance.GetComponentsInChildren(); //Get color from current instance + svList.Clear(); + foreach (var ps in particleSystems) + { + Color baseColor = ps.main.startColor.color; + SVA baseSVA = new SVA(); + Color.RGBToHSV(baseColor, out H, out baseSVA.S, out baseSVA.V); + baseSVA.A = baseColor.a; + svList.Add(baseSVA); + } + } + + void LateUpdate() + { + if (currDistance < 2) + { + currDistance = 2; + } + currDistance -= Input.GetAxis("Mouse ScrollWheel") * 2; + if (Holder && (Input.GetMouseButton(0) || Input.GetMouseButton(1))) + { + var pos = Input.mousePosition; + float dpiScale = 1; + if (Screen.dpi < 1) dpiScale = 1; + if (Screen.dpi < 200) dpiScale = 1; + else dpiScale = Screen.dpi / 200f; + if (pos.x < 380 * dpiScale && Screen.height - pos.y < 250 * dpiScale) return; + Cursor.visible = false; + Cursor.lockState = CursorLockMode.Locked; + x += (float)(Input.GetAxis("Mouse X") * xRotate * 0.02); + y -= (float)(Input.GetAxis("Mouse Y") * yRotate * 0.02); + y = ClampAngle(y, yMinLimit, yMaxLimit); + var rotation = Quaternion.Euler(y, x, 0); + var position = rotation * new Vector3(0, 0, -currDistance) + Holder.position; + transform.rotation = rotation; + transform.position = position; + } + else + { + Cursor.visible = true; + Cursor.lockState = CursorLockMode.None; + } + + if (prevDistance != currDistance) + { + prevDistance = currDistance; + var rot = Quaternion.Euler(y, x, 0); + var po = rot * new Vector3(0, 0, -currDistance) + Holder.position; + transform.rotation = rot; + transform.position = po; + } + } + + static float ClampAngle(float angle, float min, float max) + { + if (angle < -360) + { + angle += 360; + } + if (angle > 360) + { + angle -= 360; + } + return Mathf.Clamp(angle, min, max); + } +} \ No newline at end of file diff --git a/Assets/sucai/Hovl Studio 1/RPG VFX pack/Demo scenes/Demo magic circles Vol 1/CameraHolder.cs.meta b/Assets/sucai/Hovl Studio 1/RPG VFX pack/Demo scenes/Demo magic circles Vol 1/CameraHolder.cs.meta new file mode 100644 index 00000000..8985ccfd --- /dev/null +++ b/Assets/sucai/Hovl Studio 1/RPG VFX pack/Demo scenes/Demo magic circles Vol 1/CameraHolder.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0b99cd4d7484b23488edaed430e3e34f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/sucai/Hovl Studio 1/RPG VFX pack/Demo scenes/Demo track markers.meta b/Assets/sucai/Hovl Studio 1/RPG VFX pack/Demo scenes/Demo track markers.meta new file mode 100644 index 00000000..d152f18e --- /dev/null +++ b/Assets/sucai/Hovl Studio 1/RPG VFX pack/Demo scenes/Demo track markers.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3115d000755584246bd1003ab175d238 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/sucai/Hovl Studio 1/RPG VFX pack/Demo scenes/Demo track markers/RaycastInstance.cs b/Assets/sucai/Hovl Studio 1/RPG VFX pack/Demo scenes/Demo track markers/RaycastInstance.cs new file mode 100644 index 00000000..b0cc9741 --- /dev/null +++ b/Assets/sucai/Hovl Studio 1/RPG VFX pack/Demo scenes/Demo track markers/RaycastInstance.cs @@ -0,0 +1,78 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class RaycastInstance : MonoBehaviour +{ + public Camera Cam; + public GameObject[] Prefabs; + private int Prefab; + private Ray RayMouse; + private GameObject Instance; + private float windowDpi; + + //Double-click protection + private float buttonSaver = 0f; + + void Start() + { + if (Screen.dpi < 1) windowDpi = 1; + if (Screen.dpi < 200) windowDpi = 1; + else windowDpi = Screen.dpi / 200f; + Counter(0); + } + + void Update() + { + if (Input.GetButtonDown("Fire1")) + { + if (Cam != null) + { + RaycastHit hit; + var mousePos = Input.mousePosition; + RayMouse = Cam.ScreenPointToRay(mousePos); + if (Physics.Raycast(RayMouse.origin, RayMouse.direction, out hit, 40)) + { + Instance = Instantiate(Prefabs[Prefab]); + Instance.transform.position = hit.point + hit.normal * 0.01f; + Destroy(Instance, 1.5f); + } + } + else + { + Debug.Log("No camera"); + } + } + + if ((Input.GetKey(KeyCode.A) || Input.GetAxis("Horizontal") < 0) && buttonSaver >= 0.4f)// left button + { + buttonSaver = 0f; + Counter(-1); + } + if ((Input.GetKey(KeyCode.D) || Input.GetAxis("Horizontal") > 0) && buttonSaver >= 0.4f)// right button + { + buttonSaver = 0f; + Counter(+1); + } + buttonSaver += Time.deltaTime; + } + + void OnGUI() + { + GUI.Label(new Rect(10 * windowDpi, 5 * windowDpi, 400 * windowDpi, 20 * windowDpi), "Use the keyboard buttons A/<- and D/-> to change prefabs!"); + GUI.Label(new Rect(10 * windowDpi, 20 * windowDpi, 400 * windowDpi, 20 * windowDpi), "Use left mouse button for instancing!"); + } + + void Counter(int count) + { + Prefab += count; + if (Prefab > Prefabs.Length - 1) + { + Prefab = 0; + } + else if (Prefab < 0) + { + Prefab = Prefabs.Length - 1; + } + } +} diff --git a/Assets/sucai/Hovl Studio 1/RPG VFX pack/Demo scenes/Demo track markers/RaycastInstance.cs.meta b/Assets/sucai/Hovl Studio 1/RPG VFX pack/Demo scenes/Demo track markers/RaycastInstance.cs.meta new file mode 100644 index 00000000..f39ae097 --- /dev/null +++ b/Assets/sucai/Hovl Studio 1/RPG VFX pack/Demo scenes/Demo track markers/RaycastInstance.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d8525fc6b3b62e24e86a37b99d3aec83 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/sucai/Hovl Studio 1/RPG VFX pack/Materials.meta b/Assets/sucai/Hovl Studio 1/RPG VFX pack/Materials.meta new file mode 100644 index 00000000..0710eb97 --- /dev/null +++ b/Assets/sucai/Hovl Studio 1/RPG VFX pack/Materials.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 15f8b14f0e14b3b45a32d03a8c2c8291 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/sucai/Hovl Studio 1/RPG VFX pack/Materials/Shield2bcg 1.mat b/Assets/sucai/Hovl Studio 1/RPG VFX pack/Materials/Shield2bcg 1.mat new file mode 100644 index 00000000..d3799b7b --- /dev/null +++ b/Assets/sucai/Hovl Studio 1/RPG VFX pack/Materials/Shield2bcg 1.mat @@ -0,0 +1,111 @@ +%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: Shield2bcg 1 + m_Shader: {fileID: 4800000, guid: b68b99c2e57cef4419465c63c527201b, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: + - _USEDEPTH_ON + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_LockedProperties: + 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} + - _Flow: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: e6f1be8867d4eb246825875f8ab19c1e, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _Mask: + 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} + - _Noise: + 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} + - _texcoord: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _BumpScale: 1 + - _CullMode: 0 + - _Cutoff: 0.5 + - _Depthpower: 0.15 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _Emission: 2 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossyReflections: 1 + - _InvFade: 3 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Opacity: 1 + - _Parallax: 0.02 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _UVSec: 0 + - _Usecenterglow: 0 + - _Usedepth: 1 + m_Colors: + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _DistortionSpeedXYPowerZ: {r: 0, g: 0, b: 0, a: 0} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _SpeedMainTexUVNoiseUV: {r: 0, g: 0, b: 0, a: 0} + - _SpeedMainTexUVNoiseZW: {r: -1, g: 0, b: 0, a: 0} + - _TintColor: {r: 1, g: 1, b: 1, a: 1} + - _UVDistortionOpacity: {r: -1, g: 0, b: 1, a: 0.4} + m_BuildTextureStacks: [] diff --git a/Assets/sucai/Hovl Studio 1/RPG VFX pack/Materials/Shield2bcg 1.mat.meta b/Assets/sucai/Hovl Studio 1/RPG VFX pack/Materials/Shield2bcg 1.mat.meta new file mode 100644 index 00000000..dc0237d7 --- /dev/null +++ b/Assets/sucai/Hovl Studio 1/RPG VFX pack/Materials/Shield2bcg 1.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d89e79b4cfdd0ae4e9a7b611c4b172b1 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/sucai/Hovl Studio 1/RPG VFX pack/Scripts.meta b/Assets/sucai/Hovl Studio 1/RPG VFX pack/Scripts.meta new file mode 100644 index 00000000..250e3954 --- /dev/null +++ b/Assets/sucai/Hovl Studio 1/RPG VFX pack/Scripts.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0f2f25f2d5435df42adb203274716f86 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/sucai/Hovl Studio 1/RPG VFX pack/Scripts/EGA_EffectSound.cs b/Assets/sucai/Hovl Studio 1/RPG VFX pack/Scripts/EGA_EffectSound.cs new file mode 100644 index 00000000..24e7896e --- /dev/null +++ b/Assets/sucai/Hovl Studio 1/RPG VFX pack/Scripts/EGA_EffectSound.cs @@ -0,0 +1,36 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class EGA_EffectSound : MonoBehaviour +{ + public bool Repeating = true; + public float RepeatTime = 2.0f; + public float StartTime = 0.0f; + public bool RandomVolume; + public float minVolume = .4f; + public float maxVolume = 1f; + private AudioClip clip; + + private AudioSource soundComponent; + + void Start () + { + soundComponent = GetComponent(); + clip = soundComponent.clip; + if (RandomVolume == true) + { + soundComponent.volume = Random.Range(minVolume, maxVolume); + RepeatSound(); + } + if (Repeating == true) + { + InvokeRepeating("RepeatSound", StartTime, RepeatTime); + } + } + + void RepeatSound() + { + soundComponent.PlayOneShot(clip); + } +} diff --git a/Assets/sucai/Hovl Studio 1/RPG VFX pack/Scripts/EGA_EffectSound.cs.meta b/Assets/sucai/Hovl Studio 1/RPG VFX pack/Scripts/EGA_EffectSound.cs.meta new file mode 100644 index 00000000..b5cb2a58 --- /dev/null +++ b/Assets/sucai/Hovl Studio 1/RPG VFX pack/Scripts/EGA_EffectSound.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a79ba5bb0b3780b4a98ce45e779b6441 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/sucai/Hovl Studio 1/RPG VFX pack/Scripts/Hovl_DemoLasers.cs b/Assets/sucai/Hovl Studio 1/RPG VFX pack/Scripts/Hovl_DemoLasers.cs new file mode 100644 index 00000000..a1b041a4 --- /dev/null +++ b/Assets/sucai/Hovl Studio 1/RPG VFX pack/Scripts/Hovl_DemoLasers.cs @@ -0,0 +1,125 @@ +using System.Collections; +using System.Collections.Generic; +using System.Runtime.Serialization.Formatters; +using System; +using UnityEngine; + +public class Hovl_DemoLasers : MonoBehaviour +{ + public GameObject FirePoint; + public Camera Cam; + public float MaxLength; + public GameObject[] Prefabs; + + private Ray RayMouse; + private Vector3 direction; + private Quaternion rotation; + + [Header("GUI")] + private float windowDpi; + + private int Prefab; + private GameObject Instance; + private Hovl_Laser LaserScript; + private Hovl_Laser2 LaserScript2; + + //Double-click protection + private float buttonSaver = 0f; + + void Start () + { + //LaserEndPoint = new Vector3(0, 0, 0); + if (Screen.dpi < 1) windowDpi = 1; + if (Screen.dpi < 200) windowDpi = 1; + else windowDpi = Screen.dpi / 200f; + Counter(0); + } + + void Update() + { + //Enable lazer + if (Input.GetMouseButtonDown(0)) + { + Destroy(Instance); + Instance = Instantiate(Prefabs[Prefab], FirePoint.transform.position, FirePoint.transform.rotation); + Instance.transform.parent = transform; + LaserScript = Instance.GetComponent(); + LaserScript2 = Instance.GetComponent(); + } + + //Disable lazer prefab + if (Input.GetMouseButtonUp(0)) + { + if (LaserScript) LaserScript.DisablePrepare(); + if (LaserScript2) LaserScript2.DisablePrepare(); + Destroy(Instance,1); + } + + //To change lazers + if ((Input.GetKey(KeyCode.A) || Input.GetAxis("Horizontal") < 0) && buttonSaver >= 0.4f)// left button + { + buttonSaver = 0f; + Counter(-1); + } + if ((Input.GetKey(KeyCode.D) || Input.GetAxis("Horizontal") > 0) && buttonSaver >= 0.4f)// right button + { + buttonSaver = 0f; + Counter(+1); + } + buttonSaver += Time.deltaTime; + + + //Current fire point + if (Cam != null) + { + RaycastHit hit; //DELATE THIS IF YOU WANT TO USE LASERS IN 2D + var mousePos = Input.mousePosition; + RayMouse = Cam.ScreenPointToRay(mousePos); + //ADD THIS IF YOU WANT TO USE LASERS IN 2D: RaycastHit2D hit = Physics2D.Raycast(RayMouse.origin, RayMouse.direction, MaxLength); + if (Physics.Raycast(RayMouse.origin, RayMouse.direction, out hit, MaxLength)) //CHANGE THIS IF YOU WANT TO USE LASERRS IN 2D: if (hit.collider != null) + { + RotateToMouseDirection(gameObject, hit.point); + //LaserEndPoint = hit.point; + } + else + { + var pos = RayMouse.GetPoint(MaxLength); + RotateToMouseDirection(gameObject, pos); + //LaserEndPoint = pos; + } + } + else + { + Debug.Log("No camera"); + } + } + + //GUI Text + void OnGUI() + { + GUI.Label(new Rect(10 * windowDpi, 5 * windowDpi, 400 * windowDpi, 20 * windowDpi), "Use the keyboard buttons A/<- and D/-> to change lazers!"); + GUI.Label(new Rect(10 * windowDpi, 20 * windowDpi, 400 * windowDpi, 20 * windowDpi), "Use left mouse button for shooting!"); + } + + //To change prefabs (count - prefab number) + void Counter(int count) + { + Prefab += count; + if (Prefab > Prefabs.Length - 1) + { + Prefab = 0; + } + else if (Prefab < 0) + { + Prefab = Prefabs.Length - 1; + } + } + + //To rotate fire point + void RotateToMouseDirection (GameObject obj, Vector3 destination) + { + direction = destination - obj.transform.position; + rotation = Quaternion.LookRotation(direction); + obj.transform.localRotation = Quaternion.Lerp(obj.transform.rotation, rotation, 1); + } +} diff --git a/Assets/sucai/Hovl Studio 1/RPG VFX pack/Scripts/Hovl_DemoLasers.cs.meta b/Assets/sucai/Hovl Studio 1/RPG VFX pack/Scripts/Hovl_DemoLasers.cs.meta new file mode 100644 index 00000000..d07ba479 --- /dev/null +++ b/Assets/sucai/Hovl Studio 1/RPG VFX pack/Scripts/Hovl_DemoLasers.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 6af44eb64ff318b42a219a7abd31ff20 +timeCreated: 1536001444 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/sucai/Hovl Studio 1/RPG VFX pack/Scripts/Hovl_Laser.cs b/Assets/sucai/Hovl Studio 1/RPG VFX pack/Scripts/Hovl_Laser.cs new file mode 100644 index 00000000..76a2f90f --- /dev/null +++ b/Assets/sucai/Hovl Studio 1/RPG VFX pack/Scripts/Hovl_Laser.cs @@ -0,0 +1,115 @@ +using System.Collections; +using System.Collections.Generic; +using System.Runtime.Serialization.Formatters; +using System; +using UnityEngine; + +public class Hovl_Laser : MonoBehaviour +{ + public GameObject HitEffect; + public float HitOffset = 0; + public bool useLaserRotation = false; + + public float MaxLength; + private LineRenderer Laser; + + public float MainTextureLength = 1f; + public float NoiseTextureLength = 1f; + private Vector4 Length = new Vector4(1,1,1,1); + //private Vector4 LaserSpeed = new Vector4(0, 0, 0, 0); {DISABLED AFTER UPDATE} + //private Vector4 LaserStartSpeed; {DISABLED AFTER UPDATE} + //One activation per shoot + private bool LaserSaver = false; + private bool UpdateSaver = false; + + private ParticleSystem[] Effects; + private ParticleSystem[] Hit; + + void Start () + { + //Get LineRender and ParticleSystem components from current prefab; + Laser = GetComponent(); + Effects = GetComponentsInChildren(); + Hit = HitEffect.GetComponentsInChildren(); + //if (Laser.material.HasProperty("_SpeedMainTexUVNoiseZW")) LaserStartSpeed = Laser.material.GetVector("_SpeedMainTexUVNoiseZW"); + //Save [1] and [3] textures speed + //{ DISABLED AFTER UPDATE} + //LaserSpeed = LaserStartSpeed; + } + + void Update() + { + //if (Laser.material.HasProperty("_SpeedMainTexUVNoiseZW")) Laser.material.SetVector("_SpeedMainTexUVNoiseZW", LaserSpeed); + //SetVector("_TilingMainTexUVNoiseZW", Length); - old code, _TilingMainTexUVNoiseZW no more exist + Laser.material.SetTextureScale("_MainTex", new Vector2(Length[0], Length[1])); + Laser.material.SetTextureScale("_Noise", new Vector2(Length[2], Length[3])); + //To set LineRender position + if (Laser != null && UpdateSaver == false) + { + Laser.SetPosition(0, transform.position); + RaycastHit hit; //DELETE THIS IF YOU WANT USE LASERS IN 2D + //ADD THIS IF YOU WANNT TO USE LASERS IN 2D: RaycastHit2D hit = Physics2D.Raycast(transform.position, transform.forward, MaxLength); + if (Physics.Raycast(transform.position, transform.TransformDirection(Vector3.forward), out hit, MaxLength))//CHANGE THIS IF YOU WANT TO USE LASERRS IN 2D: if (hit.collider != null) + { + //End laser position if collides with object + Laser.SetPosition(1, hit.point); + + HitEffect.transform.position = hit.point + hit.normal * HitOffset; + if (useLaserRotation) + HitEffect.transform.rotation = transform.rotation; + else + HitEffect.transform.LookAt(hit.point + hit.normal); + + foreach (var AllPs in Effects) + { + if (!AllPs.isPlaying) AllPs.Play(); + } + //Texture tiling + Length[0] = MainTextureLength * (Vector3.Distance(transform.position, hit.point)); + Length[2] = NoiseTextureLength * (Vector3.Distance(transform.position, hit.point)); + //Texture speed balancer {DISABLED AFTER UPDATE} + //LaserSpeed[0] = (LaserStartSpeed[0] * 4) / (Vector3.Distance(transform.position, hit.point)); + //LaserSpeed[2] = (LaserStartSpeed[2] * 4) / (Vector3.Distance(transform.position, hit.point)); + } + else + { + //End laser position if doesn't collide with object + var EndPos = transform.position + transform.forward * MaxLength; + Laser.SetPosition(1, EndPos); + HitEffect.transform.position = EndPos; + foreach (var AllPs in Hit) + { + if (AllPs.isPlaying) AllPs.Stop(); + } + //Texture tiling + Length[0] = MainTextureLength * (Vector3.Distance(transform.position, EndPos)); + Length[2] = NoiseTextureLength * (Vector3.Distance(transform.position, EndPos)); + //LaserSpeed[0] = (LaserStartSpeed[0] * 4) / (Vector3.Distance(transform.position, EndPos)); {DISABLED AFTER UPDATE} + //LaserSpeed[2] = (LaserStartSpeed[2] * 4) / (Vector3.Distance(transform.position, EndPos)); {DISABLED AFTER UPDATE} + } + //Insurance against the appearance of a laser in the center of coordinates! + if (Laser.enabled == false && LaserSaver == false) + { + LaserSaver = true; + Laser.enabled = true; + } + } + } + + public void DisablePrepare() + { + if (Laser != null) + { + Laser.enabled = false; + } + UpdateSaver = true; + //Effects can = null in multiply shooting + if (Effects != null) + { + foreach (var AllPs in Effects) + { + if (AllPs.isPlaying) AllPs.Stop(); + } + } + } +} diff --git a/Assets/sucai/Hovl Studio 1/RPG VFX pack/Scripts/Hovl_Laser.cs.meta b/Assets/sucai/Hovl Studio 1/RPG VFX pack/Scripts/Hovl_Laser.cs.meta new file mode 100644 index 00000000..f486517d --- /dev/null +++ b/Assets/sucai/Hovl Studio 1/RPG VFX pack/Scripts/Hovl_Laser.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 7ea4308861e24ac4caa06d26e151d595 +timeCreated: 1536001444 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/sucai/Hovl Studio 1/RPG VFX pack/Scripts/Hovl_Laser2.cs b/Assets/sucai/Hovl Studio 1/RPG VFX pack/Scripts/Hovl_Laser2.cs new file mode 100644 index 00000000..34de9c3d --- /dev/null +++ b/Assets/sucai/Hovl Studio 1/RPG VFX pack/Scripts/Hovl_Laser2.cs @@ -0,0 +1,146 @@ +using System.Collections; +using System.Collections.Generic; +using System.Runtime.Serialization.Formatters; +using System; +using UnityEngine; + +public class Hovl_Laser2 : MonoBehaviour +{ + public float laserScale = 1; + public Color laserColor = new Vector4(1,1,1,1); + public GameObject HitEffect; + public GameObject FlashEffect; + public float HitOffset = 0; + + public float MaxLength; + + private bool UpdateSaver = false; + private ParticleSystem laserPS; + private ParticleSystem[] Flash; + private ParticleSystem[] Hit; + private Material laserMat; + private int particleCount; + private ParticleSystem.Particle[] particles; + private Vector3[] particlesPositions; + private float dissovleTimer = 0; + private bool startDissovle = false; + + void Start() + { + laserPS = GetComponent(); + laserMat = GetComponent().material; + Flash = FlashEffect.GetComponentsInChildren(); + Hit = HitEffect.GetComponentsInChildren(); + laserMat.SetFloat("_Scale", laserScale); + } + + void Update() + { + if (laserPS != null && UpdateSaver == false) + { + //Set start laser point + laserMat.SetVector("_StartPoint", transform.position); + //Set end laser point + RaycastHit hit; + if (Physics.Raycast(transform.position, transform.TransformDirection(Vector3.forward), out hit, MaxLength)) + { + particleCount = Mathf.RoundToInt(hit.distance / (2 * laserScale)); + if (particleCount < hit.distance / (2 * laserScale)) + { + particleCount += 1; + } + particlesPositions = new Vector3[particleCount]; + AddParticles(); + + laserMat.SetFloat("_Distance", hit.distance); + laserMat.SetVector("_EndPoint", hit.point); + if (Hit != null) + { + HitEffect.transform.position = hit.point + hit.normal * HitOffset; + HitEffect.transform.LookAt(hit.point); + foreach (var AllHits in Hit) + { + if (!AllHits.isPlaying) AllHits.Play(); + } + foreach (var AllFlashes in Flash) + { + if (!AllFlashes.isPlaying) AllFlashes.Play(); + } + } + } + else + { + //End laser position if doesn't collide with object + var EndPos = transform.position + transform.forward * MaxLength; + var distance = Vector3.Distance(EndPos, transform.position); + particleCount = Mathf.RoundToInt(distance / (2 * laserScale)); + if (particleCount < distance / (2 * laserScale)) + { + particleCount += 1; + } + particlesPositions = new Vector3[particleCount]; + AddParticles(); + + laserMat.SetFloat("_Distance", distance); + laserMat.SetVector("_EndPoint", EndPos); + if (Hit != null) + { + HitEffect.transform.position = EndPos; + foreach (var AllPs in Hit) + { + if (AllPs.isPlaying) AllPs.Stop(); + } + } + } + } + + if (startDissovle) + { + dissovleTimer += Time.deltaTime; + laserMat.SetFloat("_Dissolve", dissovleTimer*5); + } + } + + void AddParticles() + { + //Old particles settings + /* + var normalDistance = particleCount; + var sh = LaserPS.shape; + sh.radius = normalDistance; + sh.position = new Vector3(0,0, normalDistance); + LaserPS.emission.SetBursts(new[] { new ParticleSystem.Burst(0f, particleCount + 1) }); + */ + + particles = new ParticleSystem.Particle[particleCount]; + + for (int i = 0; i < particleCount; i++) + { + particlesPositions[i] = new Vector3(0f, 0f, 0f) + new Vector3(0f, 0f, i * 2 * laserScale); + particles[i].position = particlesPositions[i]; + particles[i].startSize3D = new Vector3(0.001f, 0.001f, 2 * laserScale); + particles[i].startColor = laserColor; + } + laserPS.SetParticles(particles, particles.Length); + } + + public void DisablePrepare() + { + transform.parent = null; + dissovleTimer = 0; + startDissovle = true; + UpdateSaver = true; + if (Flash != null && Hit != null) + { + foreach (var AllHits in Hit) + { + if (AllHits.isPlaying) AllHits.Stop(); + } + foreach (var AllFlashes in Flash) + { + if (AllFlashes.isPlaying) AllFlashes.Stop(); + } + } + } +} + \ No newline at end of file diff --git a/Assets/sucai/Hovl Studio 1/RPG VFX pack/Scripts/Hovl_Laser2.cs.meta b/Assets/sucai/Hovl Studio 1/RPG VFX pack/Scripts/Hovl_Laser2.cs.meta new file mode 100644 index 00000000..dee827e4 --- /dev/null +++ b/Assets/sucai/Hovl Studio 1/RPG VFX pack/Scripts/Hovl_Laser2.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: b7c107ae524aed749b3de3034023eb9d +timeCreated: 1536001444 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/sucai/Hovl Studio 1/RPG VFX pack/Scripts/ParticleCollisionInstance.cs b/Assets/sucai/Hovl Studio 1/RPG VFX pack/Scripts/ParticleCollisionInstance.cs new file mode 100644 index 00000000..2dc7be48 --- /dev/null +++ b/Assets/sucai/Hovl Studio 1/RPG VFX pack/Scripts/ParticleCollisionInstance.cs @@ -0,0 +1,48 @@ +/*This script created by using docs.unity3d.com/ScriptReference/MonoBehaviour.OnParticleCollision.html*/ +using UnityEngine; +using System.Collections; +using System.Collections.Generic; + +public class ParticleCollisionInstance : MonoBehaviour +{ + public GameObject[] EffectsOnCollision; + public float DestroyTimeDelay = 5; + public bool UseWorldSpacePosition; + public float Offset = 0; + public Vector3 rotationOffset = new Vector3(0,0,0); + public bool useOnlyRotationOffset = true; + public bool UseFirePointRotation; + public bool DestoyMainEffect = true; + private ParticleSystem part; + private List collisionEvents = new List(); + private ParticleSystem ps; + + void Start() + { + part = GetComponent(); + } + void OnParticleCollision(GameObject other) + { + int numCollisionEvents = part.GetCollisionEvents(other, collisionEvents); + for (int i = 0; i < numCollisionEvents; i++) + { + foreach (var effect in EffectsOnCollision) + { + var instance = Instantiate(effect, collisionEvents[i].intersection + collisionEvents[i].normal * Offset, new Quaternion()) as GameObject; + if (!UseWorldSpacePosition) instance.transform.parent = transform; + if (UseFirePointRotation) { instance.transform.LookAt(transform.position); } + else if (rotationOffset != Vector3.zero && useOnlyRotationOffset) { instance.transform.rotation = Quaternion.Euler(rotationOffset); } + else + { + instance.transform.LookAt(collisionEvents[i].intersection + collisionEvents[i].normal); + instance.transform.rotation *= Quaternion.Euler(rotationOffset); + } + Destroy(instance, DestroyTimeDelay); + } + } + if (DestoyMainEffect == true) + { + Destroy(gameObject, DestroyTimeDelay + 0.5f); + } + } +} diff --git a/Assets/sucai/Hovl Studio 1/RPG VFX pack/Scripts/ParticleCollisionInstance.cs.meta b/Assets/sucai/Hovl Studio 1/RPG VFX pack/Scripts/ParticleCollisionInstance.cs.meta new file mode 100644 index 00000000..619f6d8c --- /dev/null +++ b/Assets/sucai/Hovl Studio 1/RPG VFX pack/Scripts/ParticleCollisionInstance.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 1a959a1b0b8414d4fb8a68bdc12d69ed +timeCreated: 1516192333 +licenseType: Store +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/sucai/Hovl Studio/Resources/Scripts.meta b/Assets/sucai/Hovl Studio/Resources/Scripts.meta new file mode 100644 index 00000000..d22fc636 --- /dev/null +++ b/Assets/sucai/Hovl Studio/Resources/Scripts.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 2d8a41eea3de40a4cb6e2cfc61c3a558 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/sucai/Hovl Studio/Resources/Scripts/For demo scenes.meta b/Assets/sucai/Hovl Studio/Resources/Scripts/For demo scenes.meta new file mode 100644 index 00000000..533c4c53 --- /dev/null +++ b/Assets/sucai/Hovl Studio/Resources/Scripts/For demo scenes.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 640cf3e99f9a4a742bb7327f187b2e54 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/sucai/Hovl Studio/Resources/Scripts/For demo scenes/HS_CameraHolder.cs b/Assets/sucai/Hovl Studio/Resources/Scripts/For demo scenes/HS_CameraHolder.cs new file mode 100644 index 00000000..b18a22bc --- /dev/null +++ b/Assets/sucai/Hovl Studio/Resources/Scripts/For demo scenes/HS_CameraHolder.cs @@ -0,0 +1,164 @@ +using System.Collections; +using System.Collections.Generic; +using System.Runtime.Serialization.Formatters; +using System; +using UnityEngine; + +public class HS_CameraHolder : MonoBehaviour +{ + //camera holder + public Transform Holder; + public Vector3 cameraPos = new Vector3(0, 0, 0); + public float currDistance = 5.0f; + public float xRotate = 250.0f; + public float yRotate = 120.0f; + public float yMinLimit = -20f; + public float yMaxLimit = 80f; + public float prevDistance; + private float x = 0.0f; + private float y = 0.0f; + + [Header("GUI")] + private float windowDpi; + public GameObject[] Prefabs; + private int Prefab; + private GameObject Instance; + private float StartColor; + private float HueColor; + public Texture HueTexture; + + void Start() + { + if (Screen.dpi < 1) windowDpi = 1; + if (Screen.dpi < 200) windowDpi = 1; + else windowDpi = Screen.dpi / 200f; + var angles = transform.eulerAngles; + x = angles.y; + y = angles.x; + Counter(0); + } + + private void OnGUI() + { + if (GUI.Button(new Rect(5 * windowDpi, 5 * windowDpi, 110 * windowDpi, 35 * windowDpi), "Previous effect")) + { + Counter(-1); + } + if (GUI.Button(new Rect(120 * windowDpi, 5 * windowDpi, 110 * windowDpi, 35 * windowDpi), "Play again")) + { + Counter(0); + } + if (GUI.Button(new Rect(235 * windowDpi, 5 * windowDpi, 110 * windowDpi, 35 * windowDpi), "Next effect")) + { + Counter(+1); + } + + StartColor = HueColor; + HueColor = GUI.HorizontalSlider(new Rect(5 * windowDpi, 45 * windowDpi, 340 * windowDpi, 35 * windowDpi), HueColor, 0, 1); + GUI.DrawTexture(new Rect(5 * windowDpi, 65 * windowDpi, 340 * windowDpi, 15 * windowDpi), HueTexture, ScaleMode.StretchToFill, false, 0); + if (HueColor != StartColor) + { + int i = 0; + foreach (var ps in particleSystems) + { + var main = ps.main; + Color colorHSV = Color.HSVToRGB(HueColor + H * 0, svList[i].S, svList[i].V); + main.startColor = new Color(colorHSV.r, colorHSV.g, colorHSV.b, svList[i].A); + i++; + } + } + } + + private ParticleSystem[] particleSystems = new ParticleSystem[0]; + private List svList = new List(); + private float H; + + public struct SVA + { + public float S; + public float V; + public float A; + } + + void Counter(int count) + { + Prefab += count; + if (Prefab > Prefabs.Length - 1) + { + Prefab = 0; + } + else if (Prefab < 0) + { + Prefab = Prefabs.Length - 1; + } + if (Instance != null) + { + Destroy(Instance); + } + Instance = Instantiate(Prefabs[Prefab]); + particleSystems = Instance.GetComponentsInChildren(); //Get color from current instance + svList.Clear(); + foreach (var ps in particleSystems) + { + Color baseColor = ps.main.startColor.color; + SVA baseSVA = new SVA(); + Color.RGBToHSV(baseColor, out H, out baseSVA.S, out baseSVA.V); + baseSVA.A = baseColor.a; + svList.Add(baseSVA); + } + } + + void LateUpdate() + { + if (currDistance < 2) + { + currDistance = 2; + } + currDistance -= Input.GetAxis("Mouse ScrollWheel") * 2; + if (Holder && (Input.GetMouseButton(0) || Input.GetMouseButton(1))) + { + var pos = Input.mousePosition; + float dpiScale = 1; + if (Screen.dpi < 1) dpiScale = 1; + if (Screen.dpi < 200) dpiScale = 1; + else dpiScale = Screen.dpi / 200f; + if (pos.x < 380 * dpiScale && Screen.height - pos.y < 250 * dpiScale) return; + Cursor.visible = false; + Cursor.lockState = CursorLockMode.Locked; + x += (float)(Input.GetAxis("Mouse X") * xRotate * 0.02); + y -= (float)(Input.GetAxis("Mouse Y") * yRotate * 0.02); + y = ClampAngle(y, yMinLimit, yMaxLimit); + var rotation = Quaternion.Euler(y, x, 0); + var position = rotation * new Vector3(0, 0, -currDistance) + Holder.position + cameraPos; + transform.rotation = rotation; + transform.position = position; + } + else + { + Cursor.visible = true; + Cursor.lockState = CursorLockMode.None; + } + + if (prevDistance != currDistance) + { + prevDistance = currDistance; + var rot = Quaternion.Euler(y, x, 0); + var po = rot * new Vector3(0, 0, -currDistance) + Holder.position + cameraPos; + transform.rotation = rot; + transform.position = po; + } + } + + static float ClampAngle(float angle, float min, float max) + { + if (angle < -360) + { + angle += 360; + } + if (angle > 360) + { + angle -= 360; + } + return Mathf.Clamp(angle, min, max); + } +} \ No newline at end of file diff --git a/Assets/sucai/Hovl Studio/Resources/Scripts/For demo scenes/HS_CameraHolder.cs.meta b/Assets/sucai/Hovl Studio/Resources/Scripts/For demo scenes/HS_CameraHolder.cs.meta new file mode 100644 index 00000000..9f62e022 --- /dev/null +++ b/Assets/sucai/Hovl Studio/Resources/Scripts/For demo scenes/HS_CameraHolder.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a586cf93dc19b28488308d7488b8de20 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/ProjectSettings/EditorBuildSettings.asset b/ProjectSettings/EditorBuildSettings.asset index eb99eba2..34400c44 100644 --- a/ProjectSettings/EditorBuildSettings.asset +++ b/ProjectSettings/EditorBuildSettings.asset @@ -38,7 +38,7 @@ EditorBuildSettings: - enabled: 0 path: Assets/_MrCs/Scenes/Hunan_Jishou_Qianzhou_Tianhong.unity guid: 37c4b4b78fbae4b42af576fc4f762a1b - - enabled: 0 + - enabled: 1 path: Assets/_MrCs/Scenes/Shandong_Langfang_QingzhouTaihuacheng.unity guid: 9b71fb7b579123d489a56059293aa919 - enabled: 0 @@ -143,7 +143,7 @@ EditorBuildSettings: - enabled: 0 path: Assets/_MrCs/Scenes/Chengdu_Shuangliu_ShengfeiXuexiao.unity guid: 2e05f7f8e45d84e4b91ff22df8f0bf2f - - enabled: 1 + - enabled: 0 path: Assets/_MrCs/Scenes/Chongqing_Yuzhong_Hongyadong_Xiakexing_shiwan.unity guid: 07c056734ffc4754d9cb3a3852898ace m_configObjects: diff --git a/ProjectSettings/ProjectSettings.asset b/ProjectSettings/ProjectSettings.asset index a944ad34..279e238b 100644 --- a/ProjectSettings/ProjectSettings.asset +++ b/ProjectSettings/ProjectSettings.asset @@ -13,7 +13,7 @@ PlayerSettings: useOnDemandResources: 0 accelerometerFrequency: 60 companyName: pineappletech - productName: "\u706B\u529B\u5BF9\u51B3_\u8BD5\u73A9" + productName: "\u706B\u529B\u5BF9\u51B3" defaultCursor: {fileID: 0} cursorHotspot: {x: 0, y: 0} m_SplashScreenBackgroundColor: {r: 0.13725491, g: 0.12156863, b: 0.1254902, a: 1} @@ -163,7 +163,7 @@ PlayerSettings: androidSupportedAspectRatio: 1 androidMaxAspectRatio: 2.1 applicationIdentifier: - Android: com.pineappletech.mrcs.chongqingyuzhonghongyadongxiakexingshiwan + Android: com.pineappletech.mrcs.shangdonglangfangqingzhoutaihuacheng Standalone: com.DefaultCompany.com.unity.template.ar buildNumber: Standalone: 0