diff --git a/Assets/BossRoom/Prefabs/Game/BreakablePot.prefab b/Assets/BossRoom/Prefabs/Game/BreakablePot.prefab index addd6553c..bb4eb3677 100644 --- a/Assets/BossRoom/Prefabs/Game/BreakablePot.prefab +++ b/Assets/BossRoom/Prefabs/Game/BreakablePot.prefab @@ -79,6 +79,10 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: eb44a31731a459546bdf01f1af48173c, type: 3} m_Name: m_EditorClassIdentifier: + m_MaxHealth: {fileID: 0} + m_NetworkHealthState: {fileID: 0} + m_Collider: {fileID: 8991873088713291135} + m_SpecialDamageFlags: 0 --- !u!136 &8991873088713291135 CapsuleCollider: m_ObjectHideFlags: 0 @@ -106,6 +110,7 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_BrokenPrefab: {fileID: 1001931975397017578, guid: 03e282e700b05664daab32d4e7965212, type: 3} + m_PrebrokenPrefab: {fileID: 3819967873106414044, guid: 98dce1da5a97464448a4290ecfd75607, type: 3} m_BrokenPrefabPos: {fileID: 1927651668276376163} m_UnbrokenGameObjects: - {fileID: 598843305552521647} diff --git a/Assets/BossRoom/Prefabs/Game/PrebrokenPot.prefab b/Assets/BossRoom/Prefabs/Game/PrebrokenPot.prefab new file mode 100644 index 000000000..5dd9ca1c9 --- /dev/null +++ b/Assets/BossRoom/Prefabs/Game/PrebrokenPot.prefab @@ -0,0 +1,1501 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &66303186089374811 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5458133907834033678} + - component: {fileID: 7481698198884611047} + - component: {fileID: 2641154801991110853} + - component: {fileID: 2246942814461049833} + - component: {fileID: 8353240937041908650} + m_Layer: 11 + m_Name: pot_piece08 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &5458133907834033678 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 66303186089374811} + m_LocalRotation: {x: 0.3918307, y: 0.58957285, z: -0.5875016, w: 0.39206442} + m_LocalPosition: {x: -2.05, y: 0.27, z: 2.34} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4298981077115546758} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &7481698198884611047 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 66303186089374811} + m_Mesh: {fileID: -8790288514584621761, guid: db0a9d52f0048274e8dc5e5e35234608, type: 3} +--- !u!23 &2641154801991110853 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 66303186089374811} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: de7d8b0cdceac8140b98a459d9533db4, 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!54 &2246942814461049833 +Rigidbody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 66303186089374811} + serializedVersion: 2 + m_Mass: 20 + m_Drag: 5 + m_AngularDrag: 0.2 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!65 &8353240937041908650 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 66303186089374811} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1.2695205, y: 0.9948707, z: 0.80508816} + m_Center: {x: 0.000003427267, y: 0.0000015795238, z: 0.009239842} +--- !u!1 &626617251687284837 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4840208095126010290} + - component: {fileID: 9093055254233314029} + - component: {fileID: 5854601049604866603} + - component: {fileID: 1359653621668125018} + - component: {fileID: 2173680061222608190} + m_Layer: 11 + m_Name: pot_piece12 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4840208095126010290 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 626617251687284837} + m_LocalRotation: {x: -0.62715566, y: 0.32745266, z: 0.32455313, w: 0.6277865} + m_LocalPosition: {x: -0.07526227, y: 1.3352183, z: 0.84986967} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4298981077115546758} + m_RootOrder: 11 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &9093055254233314029 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 626617251687284837} + m_Mesh: {fileID: -691436908355518311, guid: db0a9d52f0048274e8dc5e5e35234608, type: 3} +--- !u!23 &5854601049604866603 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 626617251687284837} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: de7d8b0cdceac8140b98a459d9533db4, 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!54 &1359653621668125018 +Rigidbody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 626617251687284837} + serializedVersion: 2 + m_Mass: 20 + m_Drag: 5 + m_AngularDrag: 0.2 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!65 &2173680061222608190 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 626617251687284837} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 0.22679946, y: 0.72139406, z: 0.6260479} + m_Center: {x: -0.00000028312206, y: 0.0000025480997, z: -0.000003993512} +--- !u!1 &779990603739769201 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2481416907397599416} + - component: {fileID: 8689935456774865591} + - component: {fileID: 4137397398616922739} + - component: {fileID: 3620164065107890742} + - component: {fileID: 6118590827027520873} + m_Layer: 11 + m_Name: pot_piece11 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2481416907397599416 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 779990603739769201} + m_LocalRotation: {x: 0.7525151, y: 0.6470926, z: 0.011230556, w: -0.12192703} + m_LocalPosition: {x: 0.838, y: 1.268, z: -0.27} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4298981077115546758} + m_RootOrder: 10 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &8689935456774865591 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 779990603739769201} + m_Mesh: {fileID: -602463797987563594, guid: db0a9d52f0048274e8dc5e5e35234608, type: 3} +--- !u!23 &4137397398616922739 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 779990603739769201} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: de7d8b0cdceac8140b98a459d9533db4, 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!54 &3620164065107890742 +Rigidbody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 779990603739769201} + serializedVersion: 2 + m_Mass: 20 + m_Drag: 5 + m_AngularDrag: 0.2 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!65 &6118590827027520873 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 779990603739769201} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 0.22698769, y: 0.7472497, z: 0.63165593} + m_Center: {x: -0.0000004172325, y: -0.0000021308672, z: -0.0000056326408} +--- !u!1 &1856187408422501578 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7949466035382293960} + - component: {fileID: 7409280303206901799} + - component: {fileID: 3301411126658991999} + - component: {fileID: 4299516945667798934} + - component: {fileID: 2697371822114952569} + m_Layer: 11 + m_Name: pot_piece06 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &7949466035382293960 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1856187408422501578} + m_LocalRotation: {x: -0.6861431, y: 0.17090295, z: -0.17090334, w: -0.68614286} + m_LocalPosition: {x: -3.88, y: 0.21, z: 2.73} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4298981077115546758} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &7409280303206901799 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1856187408422501578} + m_Mesh: {fileID: 2345647215611306575, guid: db0a9d52f0048274e8dc5e5e35234608, type: 3} +--- !u!23 &3301411126658991999 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1856187408422501578} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: de7d8b0cdceac8140b98a459d9533db4, 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!54 &4299516945667798934 +Rigidbody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1856187408422501578} + serializedVersion: 2 + m_Mass: 20 + m_Drag: 5 + m_AngularDrag: 0.2 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!65 &2697371822114952569 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1856187408422501578} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 0.42383552, y: 0.80080247, z: 1.0675453} + m_Center: {x: 0.054933406, y: 0.0000023692855, z: -0.0000016689299} +--- !u!1 &3291010561794215276 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2012242214331071094} + - component: {fileID: 7862529493251679997} + - component: {fileID: 497366947416081935} + - component: {fileID: 3114857141250273840} + - component: {fileID: 8931942906494898693} + m_Layer: 11 + m_Name: pot_piece02 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2012242214331071094 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3291010561794215276} + m_LocalRotation: {x: 0.69084716, y: 0.05119547, z: 0.0064575397, w: 0.7211571} + m_LocalPosition: {x: -0.7138806, y: -0.18956596, z: 0.20467362} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4298981077115546758} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &7862529493251679997 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3291010561794215276} + m_Mesh: {fileID: 4859068268846493302, guid: db0a9d52f0048274e8dc5e5e35234608, type: 3} +--- !u!23 &497366947416081935 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3291010561794215276} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: de7d8b0cdceac8140b98a459d9533db4, 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!54 &3114857141250273840 +Rigidbody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3291010561794215276} + serializedVersion: 2 + m_Mass: 20 + m_Drag: 5 + m_AngularDrag: 0.2 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!65 &8931942906494898693 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3291010561794215276} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 0.5657971, y: 0.3637293, z: 0.8767269} + m_Center: {x: -0.0000038594007, y: -0.000000007450577, z: -0.0000000745049} +--- !u!1 &3819967873106414044 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4298981077115546758} + m_Layer: 11 + m_Name: PrebrokenPot + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4298981077115546758 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3819967873106414044} + m_LocalRotation: {x: 0.000000021855694, y: 0.00000011920929, z: -2.6054018e-15, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 8899492098429732406} + - {fileID: 2012242214331071094} + - {fileID: 5164759079719225659} + - {fileID: 5574171499694738271} + - {fileID: 531997661596267667} + - {fileID: 7949466035382293960} + - {fileID: 8665476585389810643} + - {fileID: 5458133907834033678} + - {fileID: 5455845342843591556} + - {fileID: 5677825393655980087} + - {fileID: 2481416907397599416} + - {fileID: 4840208095126010290} + - {fileID: 3091085711087213161} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: -90, y: 0, z: 0} +--- !u!1 &4283111154641845164 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8665476585389810643} + - component: {fileID: 2044741504478864478} + - component: {fileID: 3678766909064873983} + - component: {fileID: 491915774021599599} + - component: {fileID: 4977744074390077771} + m_Layer: 11 + m_Name: pot_piece07 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &8665476585389810643 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4283111154641845164} + m_LocalRotation: {x: -0.56944644, y: -0.7510657, z: -0.22564892, w: 0.2464013} + m_LocalPosition: {x: -1.4894372, y: 0.6584253, z: 0.46739826} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4298981077115546758} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &2044741504478864478 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4283111154641845164} + m_Mesh: {fileID: 6863941254589058698, guid: db0a9d52f0048274e8dc5e5e35234608, type: 3} +--- !u!23 &3678766909064873983 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4283111154641845164} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: de7d8b0cdceac8140b98a459d9533db4, 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!54 &491915774021599599 +Rigidbody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4283111154641845164} + serializedVersion: 2 + m_Mass: 20 + m_Drag: 5 + m_AngularDrag: 0.2 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!65 &4977744074390077771 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4283111154641845164} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 0.64211416, y: 1.6091908, z: 0.7452115} + m_Center: {x: 0.00787212, y: -0.000001668931, z: 0.009240662} +--- !u!1 &4744293319907584793 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8899492098429732406} + - component: {fileID: 5938514619474300823} + - component: {fileID: 1291334648874194765} + - component: {fileID: 3991125652798702747} + - component: {fileID: 4194466041920328229} + m_Layer: 11 + m_Name: pot_piece01 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &8899492098429732406 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4744293319907584793} + m_LocalRotation: {x: -0.70078707, y: 0.1309757, z: 0.104141705, w: 0.6934676} + m_LocalPosition: {x: 0.22853018, y: 0.37013617, z: -1.0725956} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4298981077115546758} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &5938514619474300823 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4744293319907584793} + m_Mesh: {fileID: -887000900412231616, guid: db0a9d52f0048274e8dc5e5e35234608, type: 3} +--- !u!23 &1291334648874194765 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4744293319907584793} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: de7d8b0cdceac8140b98a459d9533db4, 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!54 &3991125652798702747 +Rigidbody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4744293319907584793} + serializedVersion: 2 + m_Mass: 20 + m_Drag: 5 + m_AngularDrag: 0.2 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!65 &4194466041920328229 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4744293319907584793} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 0.81895995, y: 0.70327693, z: 0.7123425} + m_Center: {x: 0.0000039041042, y: 0.00000005960466, z: 0.00000026822204} +--- !u!1 &4907596954709399147 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5574171499694738271} + - component: {fileID: 5854988008389517738} + - component: {fileID: 5866586867625600856} + - component: {fileID: 8859008552002595943} + - component: {fileID: 2026952309060783084} + m_Layer: 11 + m_Name: pot_piece04 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &5574171499694738271 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4907596954709399147} + m_LocalRotation: {x: 0.7055175, y: 0.06959158, z: -0.07025086, w: 0.7017599} + m_LocalPosition: {x: -0.6898399, y: 0.26537433, z: 2.2515619} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4298981077115546758} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &5854988008389517738 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4907596954709399147} + m_Mesh: {fileID: 5009517835660070029, guid: db0a9d52f0048274e8dc5e5e35234608, type: 3} +--- !u!23 &5866586867625600856 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4907596954709399147} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: de7d8b0cdceac8140b98a459d9533db4, 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!54 &8859008552002595943 +Rigidbody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4907596954709399147} + serializedVersion: 2 + m_Mass: 20 + m_Drag: 5 + m_AngularDrag: 0.2 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!65 &2026952309060783084 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4907596954709399147} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1.243263, y: 0.36409062, z: 0.57807946} + m_Center: {x: 0, y: -0.0000022277247, z: -0.02363358} +--- !u!1 &5653320252013540528 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5455845342843591556} + - component: {fileID: 7013858636539584415} + - component: {fileID: 8642089325100314179} + - component: {fileID: 1186164593536044138} + - component: {fileID: 1740314939818159347} + m_Layer: 11 + m_Name: pot_piece09 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &5455845342843591556 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5653320252013540528} + m_LocalRotation: {x: 0.7159055, y: 0.63792276, z: -0.108839735, w: -0.26208368} + m_LocalPosition: {x: -1.331, y: 0.471, z: -0.246} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4298981077115546758} + m_RootOrder: 8 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &7013858636539584415 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5653320252013540528} + m_Mesh: {fileID: 1168943561987326565, guid: db0a9d52f0048274e8dc5e5e35234608, type: 3} +--- !u!23 &8642089325100314179 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5653320252013540528} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: de7d8b0cdceac8140b98a459d9533db4, 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!54 &1186164593536044138 +Rigidbody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5653320252013540528} + serializedVersion: 2 + m_Mass: 20 + m_Drag: 5 + m_AngularDrag: 0.2 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!65 &1740314939818159347 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5653320252013540528} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 0.9576051, y: 0.89734405, z: 0.7308911} + m_Center: {x: 0.0000031739473, y: 0.000000044703476, z: 0.009240006} +--- !u!1 &6198356426125310627 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5164759079719225659} + - component: {fileID: 8922414933557601429} + - component: {fileID: 2194790127901408687} + - component: {fileID: 1443776321429212935} + - component: {fileID: 6008355838966496702} + m_Layer: 11 + m_Name: pot_piece03 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &5164759079719225659 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6198356426125310627} + m_LocalRotation: {x: 0.7063665, y: -0.029180042, z: 0.029056013, w: 0.7066476} + m_LocalPosition: {x: -0.15321764, y: 0.1664648, z: 1.3876858} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4298981077115546758} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &8922414933557601429 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6198356426125310627} + m_Mesh: {fileID: 6733441740428423097, guid: db0a9d52f0048274e8dc5e5e35234608, type: 3} +--- !u!23 &2194790127901408687 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6198356426125310627} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: de7d8b0cdceac8140b98a459d9533db4, 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!54 &1443776321429212935 +Rigidbody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6198356426125310627} + serializedVersion: 2 + m_Mass: 20 + m_Drag: 5 + m_AngularDrag: 0.2 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!65 &6008355838966496702 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6198356426125310627} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 0.7987268, y: 1.1158249, z: 0.41721863} + m_Center: {x: 0.0000018030405, y: -0.0000020563614, z: -0.04218236} +--- !u!1 &7165812281295723621 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 531997661596267667} + - component: {fileID: 6344770021552691602} + - component: {fileID: 3524468530441116643} + - component: {fileID: 1770991734915717029} + - component: {fileID: 2581310706648202374} + m_Layer: 11 + m_Name: pot_piece05 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &531997661596267667 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7165812281295723621} + m_LocalRotation: {x: 0.70418584, y: -0.061396983, z: 0.0647287, w: 0.7043884} + m_LocalPosition: {x: -1.1448253, y: 0.3389577, z: 1.516074} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4298981077115546758} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &6344770021552691602 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7165812281295723621} + m_Mesh: {fileID: -4493465532372287473, guid: db0a9d52f0048274e8dc5e5e35234608, type: 3} +--- !u!23 &3524468530441116643 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7165812281295723621} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: de7d8b0cdceac8140b98a459d9533db4, 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!54 &1770991734915717029 +Rigidbody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7165812281295723621} + serializedVersion: 2 + m_Mass: 20 + m_Drag: 5 + m_AngularDrag: 0.2 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!65 &2581310706648202374 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7165812281295723621} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 0.56042826, y: 1.1158249, z: 0.6771287} + m_Center: {x: 0.022007868, y: -0.0000019669542, z: 0.0000030696415} +--- !u!1 &7694797854293649211 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5677825393655980087} + - component: {fileID: 526771668471644754} + - component: {fileID: 6971620660049860367} + - component: {fileID: 4079772804892219942} + - component: {fileID: 3261059812242224546} + m_Layer: 11 + m_Name: pot_piece10 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &5677825393655980087 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7694797854293649211} + m_LocalRotation: {x: 0.6175655, y: 0.61395794, z: 0.34571537, w: 0.34949878} + m_LocalPosition: {x: 0.17628735, y: 0.7569564, z: 1.2194252} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4298981077115546758} + m_RootOrder: 9 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &526771668471644754 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7694797854293649211} + m_Mesh: {fileID: -1344347783940285978, guid: db0a9d52f0048274e8dc5e5e35234608, type: 3} +--- !u!23 &6971620660049860367 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7694797854293649211} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: de7d8b0cdceac8140b98a459d9533db4, 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!54 &4079772804892219942 +Rigidbody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7694797854293649211} + serializedVersion: 2 + m_Mass: 20 + m_Drag: 5 + m_AngularDrag: 0.2 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!65 &3261059812242224546 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7694797854293649211} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 0.6082166, y: 1.3344221, z: 1.1953827} + m_Center: {x: -0.03870055, y: -0.0000003576281, z: -0.0000006258482} +--- !u!1 &8282957045265043060 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3091085711087213161} + - component: {fileID: 368743233850110152} + - component: {fileID: 3351502410581883633} + - component: {fileID: 5819900865074285397} + - component: {fileID: 39860821747564883} + m_Layer: 11 + m_Name: pot_piece13 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &3091085711087213161 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8282957045265043060} + m_LocalRotation: {x: 0.7192199, y: -0.006813022, z: 0.024471255, w: 0.694318} + m_LocalPosition: {x: 0.14514527, y: -0.78588134, z: 0.63757527} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4298981077115546758} + m_RootOrder: 12 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &368743233850110152 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8282957045265043060} + m_Mesh: {fileID: -3733426986887866111, guid: db0a9d52f0048274e8dc5e5e35234608, type: 3} +--- !u!23 &3351502410581883633 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8282957045265043060} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: de7d8b0cdceac8140b98a459d9533db4, 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!54 &5819900865074285397 +Rigidbody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8282957045265043060} + serializedVersion: 2 + m_Mass: 20 + m_Drag: 5 + m_AngularDrag: 0.2 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!65 &39860821747564883 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8282957045265043060} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 0.22699758, y: 1.1682104, z: 0.71389276} + m_Center: {x: -0.0000005289912, y: 0.0000005066397, z: 0.0000026822113} diff --git a/Assets/BossRoom/Prefabs/Game/PrebrokenPot.prefab.meta b/Assets/BossRoom/Prefabs/Game/PrebrokenPot.prefab.meta new file mode 100644 index 000000000..f8a7f208d --- /dev/null +++ b/Assets/BossRoom/Prefabs/Game/PrebrokenPot.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 98dce1da5a97464448a4290ecfd75607 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/BossRoom/Scripts/Client/Game/Character/ClientInputSender.cs b/Assets/BossRoom/Scripts/Client/Game/Character/ClientInputSender.cs index 069f6b8ff..88af89842 100644 --- a/Assets/BossRoom/Scripts/Client/Game/Character/ClientInputSender.cs +++ b/Assets/BossRoom/Scripts/Client/Game/Character/ClientInputSender.cs @@ -99,7 +99,6 @@ private struct ActionRequest public override void NetworkStart() { - // TODO Don't use NetworkBehaviour for just NetworkStart [GOMPS-81] if (!IsClient || !IsOwner) { enabled = false; diff --git a/Assets/BossRoom/Scripts/Client/Game/Entity/ClientBreakableVisualization.cs b/Assets/BossRoom/Scripts/Client/Game/Entity/ClientBreakableVisualization.cs index c53e69316..af2530a39 100644 --- a/Assets/BossRoom/Scripts/Client/Game/Entity/ClientBreakableVisualization.cs +++ b/Assets/BossRoom/Scripts/Client/Game/Entity/ClientBreakableVisualization.cs @@ -12,6 +12,9 @@ public class ClientBreakableVisualization : NetworkBehaviour [SerializeField] private GameObject m_BrokenPrefab; + [SerializeField][Tooltip("If set, will be used instead of BrokenPrefab when new players join, skipping transition effects.")] + private GameObject m_PrebrokenPrefab; + [SerializeField] [Tooltip("We use this transform's position and rotation when creating the prefab. (Defaults to self)")] private Transform m_BrokenPrefabPos; @@ -36,8 +39,7 @@ public override void NetworkStart() if (m_NetState.IsBroken.Value == true) { - //todo: don't dramatically break on entry to scene, if already broken. - PerformBreak(); + PerformBreak(true); } } @@ -47,7 +49,7 @@ private void OnBreakableStateChanged(bool wasBroken, bool isBroken) { if (!wasBroken && isBroken) { - PerformBreak(); + PerformBreak(false); } else if (wasBroken && !isBroken) { @@ -63,7 +65,7 @@ private void OnDestroy() } } - private void PerformBreak() + private void PerformBreak(bool onStart) { foreach (var gameObject in m_UnbrokenGameObjects) { @@ -74,8 +76,11 @@ private void PerformBreak() if (m_CurrentBrokenVisualization) Destroy(m_CurrentBrokenVisualization); // just a safety check, should be null when we get here - if (m_BrokenPrefab) - m_CurrentBrokenVisualization = Instantiate(m_BrokenPrefab, m_BrokenPrefabPos.position, m_BrokenPrefabPos.rotation, transform); + GameObject brokenPrefab = (onStart && m_PrebrokenPrefab != null) ? m_PrebrokenPrefab : m_BrokenPrefab; + if (brokenPrefab) + { + m_CurrentBrokenVisualization = Instantiate(brokenPrefab, m_BrokenPrefabPos.position, m_BrokenPrefabPos.rotation, transform); + } } private void PerformUnbreak() diff --git a/Assets/BossRoom/Scripts/Client/Game/Entity/ClientSpawnerVisualization.cs b/Assets/BossRoom/Scripts/Client/Game/Entity/ClientSpawnerVisualization.cs deleted file mode 100644 index d866f1952..000000000 --- a/Assets/BossRoom/Scripts/Client/Game/Entity/ClientSpawnerVisualization.cs +++ /dev/null @@ -1,56 +0,0 @@ -using MLAPI; -using UnityEngine; - -namespace BossRoom -{ - public class ClientSpawnerVisualization : NetworkBehaviour - { - [SerializeField] - NetworkHealthState m_NetworkHealthState; - - // TODO: Integrate visuals (GOMPS-123) - [SerializeField] - Animator m_Animator; - - public override void NetworkStart() - { - if (!IsClient) - { - enabled = false; - return; - } - - m_NetworkHealthState.HitPointsDepleted += SpawnerHitPointsDepleted; - m_NetworkHealthState.HitPointsReplenished += SpawnerHitPointsReplenished; - m_NetworkHealthState.HitPoints.OnValueChanged += HitPointsChanged; - } - - void OnDestroy() - { - if (m_NetworkHealthState != null) - { - m_NetworkHealthState.HitPointsDepleted -= SpawnerHitPointsDepleted; - m_NetworkHealthState.HitPointsReplenished -= SpawnerHitPointsReplenished; - m_NetworkHealthState.HitPoints.OnValueChanged -= HitPointsChanged; - } - } - - void SpawnerHitPointsDepleted() - { - // TODO: Integrate visuals (GOMPS-123) - } - - void SpawnerHitPointsReplenished() - { - // TODO: Integrate visuals (GOMPS-123) - } - - void HitPointsChanged(int previousValue, int newValue) - { - if (previousValue > newValue && newValue > 0) - { - // received a hit - } - } - } -} diff --git a/Assets/BossRoom/Scripts/Client/Game/Entity/ClientSpawnerVisualization.cs.meta b/Assets/BossRoom/Scripts/Client/Game/Entity/ClientSpawnerVisualization.cs.meta deleted file mode 100644 index 801c8e057..000000000 --- a/Assets/BossRoom/Scripts/Client/Game/Entity/ClientSpawnerVisualization.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 65e25a152b731564ebb6096eb5e9f0ed -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/BossRoom/Scripts/Client/Game/State/ClientPostGameState.cs b/Assets/BossRoom/Scripts/Client/Game/State/ClientPostGameState.cs index fe2d98919..5537c6831 100644 --- a/Assets/BossRoom/Scripts/Client/Game/State/ClientPostGameState.cs +++ b/Assets/BossRoom/Scripts/Client/Game/State/ClientPostGameState.cs @@ -20,7 +20,7 @@ protected override void Start() //containing that information). //In the meantime, we just set "UserRequested" to suppress the Disconnected error popup. var portalGO = GameObject.FindGameObjectWithTag("GameNetPortal"); - portalGO.GetComponent().DisconnectReason.SetDisconnectReason(DisconnectReasonType.UserRequested); + portalGO.GetComponent().DisconnectReason.SetDisconnectReason(ConnectStatus.UserRequestedDisconnect); } public override void NetworkStart() diff --git a/Assets/BossRoom/Scripts/Client/Net/ClientGameNetPortal.cs b/Assets/BossRoom/Scripts/Client/Net/ClientGameNetPortal.cs index f52090f00..5172aebca 100644 --- a/Assets/BossRoom/Scripts/Client/Net/ClientGameNetPortal.cs +++ b/Assets/BossRoom/Scripts/Client/Net/ClientGameNetPortal.cs @@ -42,6 +42,7 @@ void Start() m_Portal.NetworkReadied += OnNetworkReady; m_Portal.ConnectFinished += OnConnectFinished; + m_Portal.DisconnectReasonReceived += OnDisconnectReasonReceived; m_Portal.NetManager.OnClientDisconnectCallback += OnDisconnectOrTimeout; } @@ -51,6 +52,7 @@ void OnDestroy() { m_Portal.NetworkReadied -= OnNetworkReady; m_Portal.ConnectFinished -= OnConnectFinished; + m_Portal.DisconnectReasonReceived -= OnDisconnectReasonReceived; if( m_Portal.NetManager != null ) { @@ -61,8 +63,6 @@ void OnDestroy() private void OnNetworkReady() { - DisconnectReason.Clear(); - if (!m_Portal.NetManager.IsClient) { enabled = false; @@ -82,7 +82,7 @@ private void OnNetworkReady() private void OnSceneLoaded(Scene scene, LoadSceneMode mode) { - m_Portal.C2SSceneChanged(SceneManager.GetActiveScene().buildIndex); + m_Portal.ClientToServerSceneChanged(SceneManager.GetActiveScene().buildIndex); } /// @@ -92,7 +92,7 @@ private void OnUserDisconnectRequest() { if( m_Portal.NetManager.IsClient ) { - DisconnectReason.SetDisconnectReason(DisconnectReasonType.UserRequested); + DisconnectReason.SetDisconnectReason(ConnectStatus.UserRequestedDisconnect); m_Portal.NetManager.StopClient(); } } @@ -103,9 +103,20 @@ private void OnConnectFinished(ConnectStatus status) //on failure, we must raise an event so that the UI layer can display something. Debug.Log("RecvConnectFinished Got status: " + status); + if( status != ConnectStatus.Success ) + { + //this indicates a game level failure, rather than a network failure. See note in ServerGameNetPortal. + DisconnectReason.SetDisconnectReason(status); + } + ConnectFinished?.Invoke(status); } + private void OnDisconnectReasonReceived(ConnectStatus status) + { + DisconnectReason.SetDisconnectReason(status); + } + private void OnDisconnectOrTimeout(ulong clientID) { // we could also check whether the disconnect was us or the host, but the "interesting" question is whether @@ -125,7 +136,7 @@ private void OnDisconnectOrTimeout(ulong clientID) if( !DisconnectReason.HasTransitionReason ) { //disconnect that happened for some other reason than user UI interaction--should display a message. - DisconnectReason.SetDisconnectReason(DisconnectReasonType.Disconnect); + DisconnectReason.SetDisconnectReason(ConnectStatus.GenericDisconnect); } SceneManager.LoadScene("MainMenu"); } @@ -212,10 +223,12 @@ public static bool StartClientRelayMode(GameNetPortal portal, string roomKey, ou private static void ConnectClient(GameNetPortal portal) { var clientGuid = ClientPrefs.GetGuid(); - //var payload = $"client_guid={clientGuid}\n"; //minimal format where key=value pairs are separated by newlines. - //payload += $"client_scene={UnityEngine.SceneManagement.SceneManager.GetActiveScene().buildIndex}\n"; - //payload += $"player_name={portal.PlayerName}\n"; - var payload = JsonUtility.ToJson(new ConnectionPayload() {clientGUID = clientGuid, clientScene = SceneManager.GetActiveScene().buildIndex, playerName = portal.PlayerName}); + var payload = JsonUtility.ToJson(new ConnectionPayload() + { + clientGUID = clientGuid, + clientScene = SceneManager.GetActiveScene().buildIndex, + playerName = portal.PlayerName + }); var payloadBytes = System.Text.Encoding.UTF8.GetBytes(payload); @@ -223,7 +236,7 @@ private static void ConnectClient(GameNetPortal portal) portal.NetManager.NetworkConfig.ClientConnectionBufferTimeout = k_TimeoutDuration; //and...we're off! MLAPI will establish a socket connection to the host. - // If the socket connection fails, we'll hear back by [???] (FIXME: GOMPS-79, need to handle transport layer failures too). + // If the socket connection fails, we'll hear back by getting an OnClientDisconnect callback for ourselves (TODO-FIXME:MLAPI GOMPS-79, provide feedback for different transport failures). // If the socket connection succeeds, we'll get our RecvConnectFinished invoked. This is where game-layer failures will be reported. portal.NetManager.StartClient(); } diff --git a/Assets/BossRoom/Scripts/Client/Net/DisconnectReason.cs b/Assets/BossRoom/Scripts/Client/Net/DisconnectReason.cs index 57c7228db..c31996ee1 100644 --- a/Assets/BossRoom/Scripts/Client/Net/DisconnectReason.cs +++ b/Assets/BossRoom/Scripts/Client/Net/DisconnectReason.cs @@ -4,17 +4,6 @@ namespace BossRoom.Client { - /// - /// enum that records additional context for why a user was disconnected. The primary use case for this - /// is to allow the MainMenu to display an appropriate message after a disconnect event. - /// - public enum DisconnectReasonType - { - Undefined, //no reason has been set. - UserRequested, //user explicitly requested a disconnect. - Disconnect, //client unexpectedly lost connection with host. - } - /// /// This class provides some additional context for the connection managed by the ClientGameNetPortal. If a disconnect occurrs, or is expected to occur, client /// code can set the reason why here. Then subsequent code can interrogate this class to get the disconnect reason, and display appropriate information to @@ -25,29 +14,30 @@ public class DisconnectReason /// /// When a disconnect is detected (or expected), set this to provide some context for why it occurred. /// - public void SetDisconnectReason( DisconnectReasonType reason) + public void SetDisconnectReason( ConnectStatus reason) { //using an explicit setter here rather than the auto-property, to make the code locations where disconnect information is set more obvious. + Debug.Assert(reason != ConnectStatus.Success); Reason = reason; } /// /// The reason why a disconnect occurred, or Undefined if not set. /// - public DisconnectReasonType Reason { get; private set; } = DisconnectReasonType.Undefined; + public ConnectStatus Reason { get; private set; } = ConnectStatus.Undefined; /// /// Clear the DisconnectReason, returning it to Undefined. /// public void Clear() { - Reason = DisconnectReasonType.Undefined; + Reason = ConnectStatus.Undefined; } /// /// Has a TransitionReason already be set? (The TransitionReason provides context for why someone transition back to the MainMenu, and is a one-use item /// that is unset as soon as it is read). /// - public bool HasTransitionReason => Reason != DisconnectReasonType.Undefined; + public bool HasTransitionReason => Reason != ConnectStatus.Undefined; } } diff --git a/Assets/BossRoom/Scripts/Client/UI/MainMenuUI.cs b/Assets/BossRoom/Scripts/Client/UI/MainMenuUI.cs index cb5cf4e97..bf8527089 100644 --- a/Assets/BossRoom/Scripts/Client/UI/MainMenuUI.cs +++ b/Assets/BossRoom/Scripts/Client/UI/MainMenuUI.cs @@ -34,10 +34,9 @@ void Start() m_ClientNetPortal.NetworkTimedOut += OnNetworkTimeout; m_ClientNetPortal.ConnectFinished += OnConnectFinished; - if (m_ClientNetPortal.DisconnectReason.Reason == DisconnectReasonType.Disconnect ) - { - m_ResponsePopup.SetupNotifierDisplay("Disconnected From Host", "The connection to the Host was lost", false, true ); - } + //any disconnect reason set? Show it to the user here. + ConnectStatusToMessage(m_ClientNetPortal.DisconnectReason.Reason, false); + m_ClientNetPortal.DisconnectReason.Clear(); } public void OnHostClicked() @@ -101,14 +100,38 @@ private string PostProcessIpInput(string ipInput) /// private void OnConnectFinished(ConnectStatus status) { - if (status != ConnectStatus.Success) - { - m_ResponsePopup.SetupNotifierDisplay("Connection Failed", "Something went wrong", false, true); - } - else + ConnectStatusToMessage(status, true); + } + + /// + /// Takes a ConnectStatus and shows an appropriate message to the user. This can be called on: (1) successful connect, + /// (2) failed connect, (3) disconnect. + /// + /// pass true if this is being called in response to a connect finishing. + private void ConnectStatusToMessage(ConnectStatus status, bool connecting) + { + switch(status) { - //Here we want to display that the connection was successful before we load in game. - m_ResponsePopup.SetupNotifierDisplay("Success!", "Joining Now", false, false); + case ConnectStatus.Undefined: + case ConnectStatus.UserRequestedDisconnect: + break; + case ConnectStatus.ServerFull: + m_ResponsePopup.SetupNotifierDisplay("Connection Failed", "The Host is full and cannot accept any additional connections", false, true); + break; + case ConnectStatus.Success: + if(connecting) { m_ResponsePopup.SetupNotifierDisplay("Success!", "Joining Now", false, true); } + break; + case ConnectStatus.LoggedInAgain: + m_ResponsePopup.SetupNotifierDisplay("Connection Failed", "You have logged in elsewhere using the same account", false, true); + break; + case ConnectStatus.GenericDisconnect: + var title = connecting ? "Connection Failed" : "Disconnected From Host"; + var text = connecting ? "Something went wrong" : "The connection to the host was lost"; + m_ResponsePopup.SetupNotifierDisplay(title, text, false, true); + break; + default: + Debug.LogWarning($"New ConnectStatus {status} has been added, but no connect message defined for it."); + break; } } diff --git a/Assets/BossRoom/Scripts/Server/Game/Action/MeleeAction.cs b/Assets/BossRoom/Scripts/Server/Game/Action/MeleeAction.cs index e8865b133..251bf9cc2 100644 --- a/Assets/BossRoom/Scripts/Server/Game/Action/MeleeAction.cs +++ b/Assets/BossRoom/Scripts/Server/Game/Action/MeleeAction.cs @@ -46,7 +46,10 @@ public override bool Start() } // snap to face the right direction - m_Parent.transform.forward = Data.Direction; + if( Data.Direction != Vector3.zero ) + { + m_Parent.transform.forward = Data.Direction; + } m_Parent.NetState.RecvDoActionClientRPC(Data); return true; diff --git a/Assets/BossRoom/Scripts/Server/Game/State/ServerCharSelectState.cs b/Assets/BossRoom/Scripts/Server/Game/State/ServerCharSelectState.cs index 1b1be2a7e..42af92d27 100644 --- a/Assets/BossRoom/Scripts/Server/Game/State/ServerCharSelectState.cs +++ b/Assets/BossRoom/Scripts/Server/Game/State/ServerCharSelectState.cs @@ -26,7 +26,13 @@ private void OnClientChangedSeat(ulong clientId, int newSeatIdx, bool lockedIn) { int idx = FindLobbyPlayerIdx(clientId); if (idx == -1) - throw new System.Exception($"OnClientChangedSeat: client ID {clientId} is not a lobby player and cannot change seats!"); + { + //TODO-FIXME:MLAPI See note about MLAPI issue 745 in WaitToSeatNowPlayer. + //while this workaround is in place, we must simply ignore these update requests from the client. + //throw new System.Exception($"OnClientChangedSeat: client ID {clientId} is not a lobby player and cannot change seats!"); + return; + } + if (CharSelectData.IsLobbyClosed.Value) { @@ -119,7 +125,7 @@ private void CloseLobbyIfReady() SaveLobbyResults(); // Delay a few seconds to give the UI time to react, then switch scenes - StartCoroutine(CoroEndLobby()); + StartCoroutine(WaitToEndLobby()); } private void SaveLobbyResults() @@ -134,7 +140,7 @@ private void SaveLobbyResults() GameStateRelay.SetRelayObject(lobbyResults); } - private IEnumerator CoroEndLobby() + private IEnumerator WaitToEndLobby() { yield return new WaitForSeconds(3); MLAPI.SceneManagement.NetworkSceneManager.SwitchScene("BossRoom"); @@ -183,6 +189,16 @@ public override void NetworkStart() private void OnClientConnected(ulong clientId) { + StartCoroutine(WaitToSeatNewPlayer(clientId)); + } + + private IEnumerator WaitToSeatNewPlayer(ulong clientId) + { + //TODO-FIXME:MLAPI We are receiving NetworkVar updates too early on the client when doing this immediately on client connection, + //causing the NetworkList of lobby players to get out of sync. + //tracking MLAPI issue: https://github.com/Unity-Technologies/com.unity.multiplayer.mlapi/issues/745 + //When issue is resolved, we should be able to call SeatNewPlayer directly in the client connection callback. + yield return new WaitForSeconds(2.5f); SeatNewPlayer(clientId); } diff --git a/Assets/BossRoom/Scripts/Server/Net/ServerGameNetPortal.cs b/Assets/BossRoom/Scripts/Server/Net/ServerGameNetPortal.cs index 7f7b3f982..71aa22062 100644 --- a/Assets/BossRoom/Scripts/Server/Net/ServerGameNetPortal.cs +++ b/Assets/BossRoom/Scripts/Server/Net/ServerGameNetPortal.cs @@ -1,4 +1,5 @@ using System; +using System.Collections; using System.Collections.Generic; using UnityEngine; using MLAPI.SceneManagement; @@ -107,6 +108,19 @@ private void OnNetworkReady() private void OnClientDisconnect(ulong clientId) { m_ClientSceneMap.Remove(clientId); + if( m_ClientIDToGuid.TryGetValue(clientId, out var guid ) ) + { + m_ClientIDToGuid.Remove(clientId); + + if( m_ClientData[guid].m_ClientID == clientId ) + { + //be careful to only remove the ClientData if it is associated with THIS clientId; in a case where a new connection + //for the same GUID kicks the old connection, this could get complicated. In a game that fully supported the reconnect flow, + //we would NOT remove ClientData here, but instead time it out after a certain period, since the whole point of it is + //to remember client information on a per-guid basis after the connection has been lost. + m_ClientData.Remove(guid); + } + } if( clientId == m_Portal.NetManager.LocalClientId ) { @@ -233,23 +247,80 @@ private void ApprovalCheck(byte[] connectionData, ulong clientId, MLAPI.NetworkM var connectionPayload = JsonUtility.FromJson(payload); // https://docs.unity3d.com/2020.2/Documentation/Manual/JSONSerialization.html int clientScene = connectionPayload.clientScene; - m_ClientSceneMap[clientId] = clientScene; + //a nice addition in the future will be to support rejoining the game and getting your same character back. This will require tracking a map of the GUID + //to the player's owned character object, and cleaning that object on a timer, rather than doing so immediately when a connection is lost. + Debug.Log("Host ApprovalCheck: connecting client GUID: " + connectionPayload.clientGUID); - //TODO: GOMPS-78. We'll need to save our client guid so that we can handle reconnect. - Debug.Log("host ApprovalCheck: client guid was: " + connectionPayload.clientGUID); + //TODO: GOMPS-78. We are saving the GUID, but we have more to do to fully support a reconnect flow (where you get your same character back after disconnect/reconnect). - //Populate our dictionaries with the playerData - m_ClientIDToGuid[clientId] = connectionPayload.clientGUID; - m_ClientData[connectionPayload.clientGUID] = new PlayerData(connectionPayload.playerName, clientId); + ConnectStatus gameReturnStatus = ConnectStatus.Success; + + //Test for Duplicate Login. + if( m_ClientData.ContainsKey(connectionPayload.clientGUID)) + { + if( Debug.isDebugBuild ) + { + Debug.Log($"Client GUID {connectionPayload.clientGUID} already exists. Because this is a debug build, we will still accept the connection"); + while( m_ClientData.ContainsKey(connectionPayload.clientGUID)) { connectionPayload.clientGUID += "_Secondary"; } + } + else + { + ulong oldClientId = m_ClientData[connectionPayload.clientGUID].m_ClientID; + StartCoroutine(WaitToDisconnectClient(oldClientId, ConnectStatus.LoggedInAgain)); + } + } - //TODO: GOMPS-79 handle different error cases. + //Test for over-capacity Login. + if( m_ClientData.Count >= CharSelectData.k_MaxLobbyPlayers ) + { + gameReturnStatus = ConnectStatus.ServerFull; + } + + //Populate our dictionaries with the playerData + if( gameReturnStatus == ConnectStatus.Success ) + { + m_ClientSceneMap[clientId] = clientScene; + m_ClientIDToGuid[clientId] = connectionPayload.clientGUID; + m_ClientData[connectionPayload.clientGUID] = new PlayerData(connectionPayload.playerName, clientId); + } callback(false, 0, true, null, null); - //FIXME_DMW: it is weird to do this after the callback, but the custom message won't be delivered if we call it beforehand. - //This creates an "honor system" scenario where it is up to the client to politely leave on failure. Probably - //we should add a NetManager.DisconnectClient call directly below this line, when we are rejecting the connection. - m_Portal.S2CConnectResult(clientId, ConnectStatus.Success); + //TODO:MLAPI: this must be done after the callback for now. In the future we expect MLAPI to allow us to return more information as part of + //the approval callback, so that we can provide more context on a reject. In the meantime we must provide the extra information ourselves, + //and then manually close down the connection. + m_Portal.ServerToClientConnectResult(clientId, gameReturnStatus); + if(gameReturnStatus != ConnectStatus.Success ) + { + //TODO-FIXME:MLAPI Issue #796. We should be able to send a reason and disconnect without a coroutine delay. + StartCoroutine(WaitToDisconnectClient(clientId, gameReturnStatus)); + } + } + + private IEnumerator WaitToDisconnectClient(ulong clientId, ConnectStatus reason) + { + m_Portal.ServerToClientSetDisconnectReason(clientId, reason); + + // TODO fix once this is solved: Issue 796 Unity-Technologies/com.unity.multiplayer.mlapi#796 + // this wait is a workaround to give the client time to receive the above RPC before closing the connection + yield return new WaitForSeconds(0); + + BootClient(clientId); + } + + /// + /// This method will summarily remove a player connection, as well as its controlled object. + /// + /// the ID of the client to boot. + public void BootClient(ulong clientId) + { + var netObj = MLAPI.Spawning.NetworkSpawnManager.GetPlayerNetworkObject(clientId); + if( netObj ) + { + //TODO-FIXME:MLAPI Issue #795. Should not need to explicitly despawn player objects. + netObj.Despawn(true); + } + m_Portal.NetManager.DisconnectClient(clientId); } /// @@ -263,4 +334,3 @@ private void ServerStartedHandler() } } - diff --git a/Assets/BossRoom/Scripts/Shared/Net/GameNetPortal.cs b/Assets/BossRoom/Scripts/Shared/Net/GameNetPortal.cs index 29e937811..57513a9eb 100644 --- a/Assets/BossRoom/Scripts/Shared/Net/GameNetPortal.cs +++ b/Assets/BossRoom/Scripts/Shared/Net/GameNetPortal.cs @@ -10,10 +10,12 @@ namespace BossRoom { public enum ConnectStatus { - Success, //client successfully connected. This may also be a successful reconnect. - ServerFull, //can't join, server is already at capacity. - MatchStarted, //can't join, match is already in progress. - Unknown, //can't join, reason unknown. + Undefined, + Success, //client successfully connected. This may also be a successful reconnect. + ServerFull, //can't join, server is already at capacity. + LoggedInAgain, //logged in on a separate client, causing this one to be kicked out. + UserRequestedDisconnect, //Intentional Disconnect triggered by the user. + GenericDisconnect, //server disconnected, but no specific reason given. } public enum OnlineMode @@ -67,11 +69,21 @@ public class GameNetPortal : MonoBehaviour /// public event Action ConnectFinished; + /// + /// This event relays a ConnectStatus sent from the server to the client. The server will invoke this to provide extra + /// context about an upcoming network Disconnect. + /// + public event Action DisconnectReasonReceived; + /// /// raised when a client has changed scenes. Returns the ClientID and the new scene the client has entered, by index. /// public event Action ClientSceneChanged; + /// + /// This fires in response to GameNetPortal.RequestDisconnect. It's a local signal (not from the network), indicating that + /// the user has requested a disconnect. + /// public event Action UserDisconnectRequested; public NetworkManager NetManager { get; private set; } @@ -91,6 +103,14 @@ void Start() //we expect NetworkManager will expose an event like this itself. NetManager.OnServerStarted += OnNetworkReady; NetManager.OnClientConnectedCallback += ClientNetworkReadyWrapper; + + //we register these without knowing whether we're a client or host. This is because certain messages can be sent super-early, + //before we even get our ClientConnected event (if acting as a client). It should be harmless to have server handlers registered + //on the client, because (a) nobody will be sending us these messages and (b) even if they did, nobody is listening for those + //server message events on the client anyway. + //TODO-FIXME:MLAPI Issue 799. We shouldn't really have to worry about getting messages before our ClientConnected callback. + RegisterClientMessageHandlers(); + RegisterServerMessageHandlers(); } private void OnDestroy() @@ -100,6 +120,9 @@ private void OnDestroy() NetManager.OnServerStarted -= OnNetworkReady; NetManager.OnClientConnectedCallback -= ClientNetworkReadyWrapper; } + + UnregisterClientMessageHandlers(); + UnregisterServerMessageHandlers(); } @@ -113,7 +136,7 @@ private void ClientNetworkReadyWrapper(ulong clientId) private void RegisterClientMessageHandlers() { - MLAPI.Messaging.CustomMessagingManager.RegisterNamedMessageHandler("S2C_ConnectResult", (senderClientId, stream) => + MLAPI.Messaging.CustomMessagingManager.RegisterNamedMessageHandler("ServerToClientConnectResult", (senderClientId, stream) => { using (var reader = PooledNetworkReader.Get(stream)) { @@ -122,11 +145,21 @@ private void RegisterClientMessageHandlers() ConnectFinished?.Invoke(status); } }); + + MLAPI.Messaging.CustomMessagingManager.RegisterNamedMessageHandler("ServerToClientSetDisconnectReason", (senderClientId, stream) => + { + using (var reader = PooledNetworkReader.Get(stream)) + { + ConnectStatus status = (ConnectStatus)reader.ReadInt32(); + + DisconnectReasonReceived?.Invoke(status); + } + }); } private void RegisterServerMessageHandlers() { - MLAPI.Messaging.CustomMessagingManager.RegisterNamedMessageHandler("C2S_SceneChanged", (senderClientId, stream) => + MLAPI.Messaging.CustomMessagingManager.RegisterNamedMessageHandler("ClientToServerSceneChanged", (senderClientId, stream) => { using (var reader = PooledNetworkReader.Get(stream)) { @@ -138,6 +171,17 @@ private void RegisterServerMessageHandlers() }); } + private void UnregisterClientMessageHandlers() + { + MLAPI.Messaging.CustomMessagingManager.UnregisterNamedMessageHandler("ServerToClientConnectResult"); + MLAPI.Messaging.CustomMessagingManager.UnregisterNamedMessageHandler("ServerToClientSetDisconnectReason"); + } + + private void UnregisterServerMessageHandlers() + { + MLAPI.Messaging.CustomMessagingManager.UnregisterNamedMessageHandler("ClientToServerSceneChanged"); + } + /// /// This method runs when NetworkManager has started up (following a succesful connect on the client, or directly after StartHost is invoked @@ -145,14 +189,6 @@ private void RegisterServerMessageHandlers() /// private void OnNetworkReady() { - if (NetManager.IsClient) - { - RegisterClientMessageHandlers(); - } - if (NetManager.IsServer) - { - RegisterServerMessageHandlers(); - } if (NetManager.IsHost) { //special host code. This is what kicks off the flow that happens on a regular client @@ -216,7 +252,7 @@ public void StartRelayHost(string roomName) /// /// id of the client to send to /// the status to pass to the client - public void S2CConnectResult(ulong netId, ConnectStatus status) + public void ServerToClientConnectResult(ulong netId, ConnectStatus status) { using (var buffer = PooledNetworkBuffer.Get()) @@ -224,12 +260,29 @@ public void S2CConnectResult(ulong netId, ConnectStatus status) using (var writer = PooledNetworkWriter.Get(buffer)) { writer.WriteInt32((int)status); - MLAPI.Messaging.CustomMessagingManager.SendNamedMessage("S2C_ConnectResult", netId, buffer, NetworkChannel.Internal); + MLAPI.Messaging.CustomMessagingManager.SendNamedMessage("ServerToClientConnectResult", netId, buffer, NetworkChannel.Internal); + } + } + } + + /// + /// Sends a DisconnectReason to the indicated client. This should only be done on the server, prior to disconnecting the client. + /// + /// id of the client to send to + /// The reason for the upcoming disconnect. + public void ServerToClientSetDisconnectReason(ulong netId, ConnectStatus status) + { + using (var buffer = PooledNetworkBuffer.Get()) + { + using (var writer = PooledNetworkWriter.Get(buffer)) + { + writer.WriteInt32((int)status); + MLAPI.Messaging.CustomMessagingManager.SendNamedMessage("ServerToClientSetDisconnectReason", netId, buffer, NetworkChannel.Internal); } } } - public void C2SSceneChanged(int newScene) + public void ClientToServerSceneChanged(int newScene) { if(NetManager.IsHost) { @@ -242,7 +295,7 @@ public void C2SSceneChanged(int newScene) using (var writer = PooledNetworkWriter.Get(buffer)) { writer.WriteInt32(newScene); - MLAPI.Messaging.CustomMessagingManager.SendNamedMessage("C2S_SceneChanged", NetManager.ServerClientId, buffer, NetworkChannel.Internal); + MLAPI.Messaging.CustomMessagingManager.SendNamedMessage("ClientToServerSceneChanged", NetManager.ServerClientId, buffer, NetworkChannel.Internal); } } } diff --git a/Assets/BossRoom/VFX/Shaders/Prewarming.shadervariants b/Assets/BossRoom/VFX/Shaders/Prewarming.shadervariants index 1d3f30e83..8facc58d5 100644 --- a/Assets/BossRoom/VFX/Shaders/Prewarming.shadervariants +++ b/Assets/BossRoom/VFX/Shaders/Prewarming.shadervariants @@ -11,6 +11,8 @@ ShaderVariantCollection: - first: {fileID: 69, guid: 0000000000000000f000000000000000, type: 0} second: variants: + - keywords: BILLBOARD_FACE_CAMERA_POS DIRECTIONAL LIGHTPROBE_SH SOFTPARTICLES_ON + passType: 0 - keywords: BILLBOARD_FACE_CAMERA_POS DIRECTIONAL LIGHTPROBE_SH SOFTPARTICLES_ON UNITY_HDR_ON passType: 0 @@ -26,6 +28,8 @@ ShaderVariantCollection: - first: {fileID: 74, guid: 0000000000000000f000000000000000, type: 0} second: variants: + - keywords: BILLBOARD_FACE_CAMERA_POS LIGHTPROBE_SH SOFTPARTICLES_ON + passType: 0 - keywords: BILLBOARD_FACE_CAMERA_POS LIGHTPROBE_SH SOFTPARTICLES_ON UNITY_HDR_ON passType: 0 - first: {fileID: 64, guid: 0000000000000000f000000000000000, type: 0} @@ -37,6 +41,8 @@ ShaderVariantCollection: - first: {fileID: 62, guid: 0000000000000000f000000000000000, type: 0} second: variants: + - keywords: BILLBOARD_FACE_CAMERA_POS SOFTPARTICLES_ON UNITY_HDR_ON + passType: 0 - keywords: BILLBOARD_FACE_CAMERA_POS SOFTPARTICLES_ON UNITY_HDR_ON _ALPHATEST_ON passType: 0 - first: {fileID: 10770, guid: 0000000000000000f000000000000000, type: 0} @@ -48,6 +54,8 @@ ShaderVariantCollection: passType: 0 - keywords: BILLBOARD_FACE_CAMERA_POS SOFTPARTICLES_ON UNITY_HDR_ON VERTEXLIGHT_ON passType: 0 + - keywords: UNITY_UI_ALPHACLIP + passType: 0 - first: {fileID: 19, guid: 0000000000000000f000000000000000, type: 0} second: variants: @@ -60,6 +68,8 @@ ShaderVariantCollection: - first: {fileID: 65, guid: 0000000000000000f000000000000000, type: 0} second: variants: + - keywords: BILLBOARD_FACE_CAMERA_POS DIRECTIONAL LIGHTPROBE_SH SOFTPARTICLES_ON + passType: 0 - keywords: BILLBOARD_FACE_CAMERA_POS DIRECTIONAL LIGHTPROBE_SH SOFTPARTICLES_ON UNITY_HDR_ON passType: 0 @@ -79,6 +89,30 @@ ShaderVariantCollection: - first: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} second: variants: + - keywords: DIRECTIONAL LIGHTPROBE_SH + passType: 4 + - keywords: DIRECTIONAL LIGHTPROBE_SH _ALPHABLEND_ON + passType: 4 + - keywords: BILLBOARD_FACE_CAMERA_POS DIRECTIONAL LIGHTPROBE_SH UNITY_HDR_ON + _ALPHABLEND_ON + passType: 4 + - keywords: BILLBOARD_FACE_CAMERA_POS LIGHTPROBE_SH SOFTPARTICLES_ON UNITY_HDR_ON + _ALPHABLEND_ON + passType: 4 + - keywords: BILLBOARD_FACE_CAMERA_POS LIGHTPROBE_SH POINT SOFTPARTICLES_ON + UNITY_HDR_ON _ALPHABLEND_ON + passType: 4 + - keywords: DIRECTIONAL INSTANCING_ON LIGHTPROBE_SH _METALLICGLOSSMAP _NORMALMAP + passType: 4 + - keywords: DIRECTIONAL + passType: 5 + - keywords: BILLBOARD_FACE_CAMERA_POS DIRECTIONAL UNITY_HDR_ON _ALPHABLEND_ON + passType: 5 + - keywords: BILLBOARD_FACE_CAMERA_POS POINT SOFTPARTICLES_ON UNITY_HDR_ON _ALPHABLEND_ON + passType: 5 + - keywords: BILLBOARD_FACE_CAMERA_POS DIRECTIONAL UNITY_HDR_ON _METALLICGLOSSMAP + _NORMALMAP + passType: 5 - keywords: passType: 8 - keywords: _EMISSION @@ -89,13 +123,20 @@ ShaderVariantCollection: - keywords: BILLBOARD_FACE_CAMERA_POS LIGHTPROBE_SH POINT SHADOWS_CUBE SHADOWS_SOFT SOFTPARTICLES_ON UNITY_HDR_ON _EMISSION passType: 8 - - keywords: _ALPHATEST_ON _EMISSION + - keywords: INSTANCING_ON _ALPHATEST_ON _EMISSION passType: 8 - - keywords: DIRECTIONAL LIGHTPROBE_SH SHADOWS_DEPTH SHADOWS_SOFT SHADOWS_SPLIT_SPHERES - SOFTPARTICLES_ON UNITY_HDR_ON _ALPHATEST_ON _EMISSION + - keywords: DIRECTIONAL INSTANCING_ON LIGHTPROBE_SH SHADOWS_DEPTH SHADOWS_SOFT + SHADOWS_SPLIT_SPHERES SOFTPARTICLES_ON UNITY_HDR_ON _ALPHATEST_ON _EMISSION + passType: 8 + - keywords: BILLBOARD_FACE_CAMERA_POS INSTANCING_ON LIGHTPROBE_SH POINT SHADOWS_CUBE + SHADOWS_SOFT SOFTPARTICLES_ON UNITY_HDR_ON _ALPHATEST_ON _EMISSION + passType: 8 + - keywords: _ALPHABLEND_ON passType: 8 - keywords: BILLBOARD_FACE_CAMERA_POS LIGHTPROBE_SH POINT SHADOWS_CUBE SHADOWS_SOFT - SOFTPARTICLES_ON UNITY_HDR_ON _ALPHATEST_ON _EMISSION + SOFTPARTICLES_ON UNITY_HDR_ON _ALPHABLEND_ON + passType: 8 + - keywords: INSTANCING_ON SHADOWS_DEPTH _METALLICGLOSSMAP passType: 8 - keywords: _METALLICGLOSSMAP _NORMALMAP passType: 8 @@ -104,23 +145,34 @@ ShaderVariantCollection: - keywords: DIRECTIONAL LIGHTPROBE_SH SHADOWS_DEPTH SHADOWS_SOFT SHADOWS_SPLIT_SPHERES SOFTPARTICLES_ON UNITY_HDR_ON _METALLICGLOSSMAP _NORMALMAP passType: 8 + - keywords: INSTANCING_ON _METALLICGLOSSMAP _NORMALMAP + passType: 8 - keywords: BILLBOARD_FACE_CAMERA_POS LIGHTPROBE_SH POINT SHADOWS_CUBE SHADOWS_SOFT SOFTPARTICLES_ON UNITY_HDR_ON _METALLICGLOSSMAP _NORMALMAP passType: 8 - keywords: BILLBOARD_FACE_CAMERA_POS LIGHTPROBE_SH POINT SHADOWS_CUBE SHADOWS_SOFT SOFTPARTICLES_ON UNITY_HDR_ON _EMISSION _METALLICGLOSSMAP _NORMALMAP passType: 8 + - keywords: BILLBOARD_FACE_CAMERA_POS INSTANCING_ON LIGHTPROBE_SH POINT SHADOWS_CUBE + SHADOWS_SOFT SOFTPARTICLES_ON UNITY_HDR_ON _METALLICGLOSSMAP _NORMALMAP + passType: 8 - keywords: BILLBOARD_FACE_CAMERA_POS LIGHTPROBE_SH SOFTPARTICLES_ON UNITY_HDR_ON passType: 10 - keywords: BILLBOARD_FACE_CAMERA_POS LIGHTPROBE_SH SOFTPARTICLES_ON UNITY_HDR_ON _EMISSION passType: 10 - - keywords: BILLBOARD_FACE_CAMERA_POS LIGHTPROBE_SH SOFTPARTICLES_ON UNITY_HDR_ON - _ALPHATEST_ON _EMISSION + - keywords: BILLBOARD_FACE_CAMERA_POS INSTANCING_ON LIGHTPROBE_SH SOFTPARTICLES_ON + UNITY_HDR_ON _ALPHATEST_ON _EMISSION passType: 10 - keywords: BILLBOARD_FACE_CAMERA_POS LIGHTPROBE_SH SOFTPARTICLES_ON UNITY_HDR_ON _METALLICGLOSSMAP _NORMALMAP passType: 10 + - keywords: BILLBOARD_FACE_CAMERA_POS INSTANCING_ON LIGHTPROBE_SH SOFTPARTICLES_ON + _METALLICGLOSSMAP _NORMALMAP + passType: 10 + - keywords: BILLBOARD_FACE_CAMERA_POS INSTANCING_ON LIGHTPROBE_SH SOFTPARTICLES_ON + UNITY_HDR_ON _METALLICGLOSSMAP _NORMALMAP + passType: 10 - first: {fileID: 6, guid: 0000000000000000f000000000000000, type: 0} second: variants: @@ -133,8 +185,26 @@ ShaderVariantCollection: variants: - keywords: BILLBOARD_FACE_CAMERA_POS UNITY_HDR_ON passType: 0 + - keywords: BILLBOARD_FACE_CAMERA_POS SOFTPARTICLES_ON _SUNDISK_SIMPLE + passType: 0 + - keywords: BILLBOARD_FACE_CAMERA_POS UNITY_HDR_ON _SUNDISK_SIMPLE + passType: 0 - keywords: BILLBOARD_FACE_CAMERA_POS SOFTPARTICLES_ON UNITY_HDR_ON _SUNDISK_SIMPLE passType: 0 + - first: {fileID: 210, guid: 0000000000000000f000000000000000, type: 0} + second: + variants: + - keywords: BILLBOARD_FACE_CAMERA_POS LIGHTPROBE_SH POINT SOFTPARTICLES_ON + UNITY_HDR_ON _ALPHABLEND_ON _DISSOLVETYPE_CUSTOM _DISSOLVETYPE_UV _DISSOLVE_UV + _DISTYPE_DISSOLVETEXRED _FADING_ON _INVERTDISSOLVE_ON _KEYWORD0_ON + passType: 4 + - keywords: BILLBOARD_FACE_CAMERA_POS LIGHTPROBE_SH POINT SOFTPARTICLES_ON + UNITY_HDR_ON VERTEXLIGHT_ON _ALPHABLEND_ON _DISSOLVETYPE_CUSTOM _DISSOLVETYPE_UV + _DISSOLVE_UV _DISTYPE_DISSOLVETEXRED _FADING_ON _INVERTDISSOLVE_ON _KEYWORD0_ON + passType: 4 + - keywords: PROCEDURAL_INSTANCING_ON _ALPHABLEND_ON _DISSOLVETYPE_CUSTOM _DISSOLVETYPE_UV + _DISSOLVE_UV _DISTYPE_DISSOLVETEXRED _FADING_ON _INVERTDISSOLVE_ON _KEYWORD0_ON + passType: 8 - first: {fileID: 211, guid: 0000000000000000f000000000000000, type: 0} second: variants: @@ -144,6 +214,9 @@ ShaderVariantCollection: - keywords: BILLBOARD_FACE_CAMERA_POS LIGHTPROBE_SH POINT SOFTPARTICLES_ON UNITY_HDR_ON _ALPHABLEND_ON passType: 4 + - keywords: BILLBOARD_FACE_CAMERA_POS LIGHTPROBE_SH SOFTPARTICLES_ON UNITY_HDR_ON + VERTEXLIGHT_ON _ALPHABLEND_ON + passType: 4 - keywords: BILLBOARD_FACE_CAMERA_POS LIGHTPROBE_SH POINT SOFTPARTICLES_ON UNITY_HDR_ON VERTEXLIGHT_ON _ALPHABLEND_ON passType: 4 @@ -153,6 +226,18 @@ ShaderVariantCollection: - keywords: BILLBOARD_FACE_CAMERA_POS LIGHTPROBE_SH POINT PROCEDURAL_INSTANCING_ON SOFTPARTICLES_ON UNITY_HDR_ON VERTEXLIGHT_ON _ALPHABLEND_ON _COLOROVERLAY_ON passType: 4 + - keywords: _FADING_ON + passType: 4 + - keywords: PROCEDURAL_INSTANCING_ON SOFTPARTICLES_ON _FADING_ON + passType: 4 + - keywords: _ALPHABLEND_ON _EMISSION _FADING_ON + passType: 4 + - keywords: PROCEDURAL_INSTANCING_ON SOFTPARTICLES_ON _ALPHABLEND_ON _EMISSION + _FADING_ON + passType: 4 + - keywords: BILLBOARD_FACE_CAMERA_POS DIRECTIONAL LIGHTPROBE_SH PROCEDURAL_INSTANCING_ON + UNITY_HDR_ON _ALPHABLEND_ON _EMISSION _FADING_ON + passType: 4 - keywords: BILLBOARD_FACE_CAMERA_POS LIGHTPROBE_SH PROCEDURAL_INSTANCING_ON SOFTPARTICLES_ON UNITY_HDR_ON _ALPHABLEND_ON _EMISSION _FADING_ON passType: 4 @@ -168,6 +253,8 @@ ShaderVariantCollection: passType: 8 - keywords: PROCEDURAL_INSTANCING_ON _ALPHABLEND_ON _EMISSION _FADING_ON passType: 8 + - keywords: PROCEDURAL_INSTANCING_ON + passType: 13 - first: {fileID: 9000, guid: 0000000000000000f000000000000000, type: 0} second: variants: @@ -208,6 +295,8 @@ ShaderVariantCollection: variants: - keywords: passType: 0 + - keywords: BILLBOARD_FACE_CAMERA_POS + passType: 0 - keywords: BILLBOARD_FACE_CAMERA_POS SOFTPARTICLES_ON passType: 0 - keywords: BILLBOARD_FACE_CAMERA_POS SOFTPARTICLES_ON UNITY_HDR_ON @@ -238,6 +327,9 @@ ShaderVariantCollection: variants: - keywords: BILLBOARD_FACE_CAMERA_POS SOFTPARTICLES_ON UNITY_HDR_ON _ALPHATEST_ON passType: 0 + - keywords: BILLBOARD_FACE_CAMERA_POS SHADOWS_CUBE SHADOWS_SOFT SOFTPARTICLES_ON + UNITY_HDR_ON _ALPHATEST_ON + passType: 0 - keywords: BILLBOARD_FACE_CAMERA_POS SHADOWS_SCREEN SHADOWS_SOFT SHADOWS_SPLIT_SPHERES SOFTPARTICLES_ON UNITY_HDR_ON _ALPHATEST_ON passType: 0 @@ -252,44 +344,40 @@ ShaderVariantCollection: - first: {fileID: 4800000, guid: 41c49b64d906a384cab2d953a43231e3, type: 3} second: variants: - - keywords: BILLBOARD_FACE_CAMERA_POS LIGHTPROBE_SH SOFTPARTICLES_ON UNITY_HDR_ON - _NORMALMAP - passType: 4 - keywords: BILLBOARD_FACE_CAMERA_POS DIRECTIONAL LIGHTPROBE_SH SOFTPARTICLES_ON UNITY_HDR_ON _NORMALMAP passType: 4 - keywords: BILLBOARD_FACE_CAMERA_POS DIRECTIONAL LIGHTPROBE_SH SHADOWS_SCREEN SHADOWS_SOFT SHADOWS_SPLIT_SPHERES SOFTPARTICLES_ON UNITY_HDR_ON _NORMALMAP passType: 4 + - keywords: BILLBOARD_FACE_CAMERA_POS DIRECTIONAL LIGHTPROBE_SH SOFTPARTICLES_ON + UNITY_HDR_ON _EMISSION _NORMALMAP + passType: 4 - keywords: BILLBOARD_FACE_CAMERA_POS DIRECTIONAL LIGHTPROBE_SH SHADOWS_SCREEN SHADOWS_SOFT SHADOWS_SPLIT_SPHERES SOFTPARTICLES_ON UNITY_HDR_ON _EMISSION _NORMALMAP passType: 4 - - keywords: _NORMALMAP + - keywords: INSTANCING_ON SHADOWS_DEPTH passType: 8 - - keywords: _EMISSION _NORMALMAP + - keywords: INSTANCING_ON SHADOWS_CUBE passType: 8 - - keywords: DIRECTIONAL LIGHTPROBE_SH SHADOWS_DEPTH SHADOWS_SOFT SHADOWS_SPLIT_SPHERES - SOFTPARTICLES_ON UNITY_HDR_ON _NORMALMAP - passType: 8 - - keywords: DIRECTIONAL LIGHTPROBE_SH SHADOWS_DEPTH SHADOWS_SOFT SHADOWS_SPLIT_SPHERES - SOFTPARTICLES_ON UNITY_HDR_ON _EMISSION _NORMALMAP + - keywords: INSTANCING_ON _NORMALMAP passType: 8 - - keywords: BILLBOARD_FACE_CAMERA_POS SHADOWS_DEPTH SHADOWS_SPLIT_SPHERES SOFTPARTICLES_ON - UNITY_HDR_ON _NORMALMAP + - keywords: INSTANCING_ON _EMISSION _NORMALMAP passType: 8 - - keywords: BILLBOARD_FACE_CAMERA_POS LIGHTPROBE_SH POINT SHADOWS_CUBE SHADOWS_SOFT + - keywords: BILLBOARD_FACE_CAMERA_POS INSTANCING_ON SHADOWS_DEPTH SHADOWS_SPLIT_SPHERES SOFTPARTICLES_ON UNITY_HDR_ON _NORMALMAP passType: 8 - - keywords: BILLBOARD_FACE_CAMERA_POS SHADOWS_DEPTH SHADOWS_SPLIT_SPHERES SOFTPARTICLES_ON - UNITY_HDR_ON _EMISSION _NORMALMAP - passType: 8 - - keywords: BILLBOARD_FACE_CAMERA_POS LIGHTPROBE_SH POINT SHADOWS_CUBE SHADOWS_SOFT - SOFTPARTICLES_ON UNITY_HDR_ON _EMISSION _NORMALMAP + - keywords: BILLBOARD_FACE_CAMERA_POS INSTANCING_ON LIGHTPROBE_SH POINT SHADOWS_CUBE + SHADOWS_SOFT SOFTPARTICLES_ON UNITY_HDR_ON _EMISSION _NORMALMAP passType: 8 - first: {fileID: 4800000, guid: 81af42a93ade3dd46a9b583d4eec76d6, type: 3} second: variants: + - keywords: + passType: 0 + - keywords: BILLBOARD_FACE_CAMERA_POS SOFTPARTICLES_ON + passType: 0 - keywords: BILLBOARD_FACE_CAMERA_POS SOFTPARTICLES_ON UNITY_HDR_ON passType: 0 - first: {fileID: 4800000, guid: c1e1d3119c6fd4646aea0b4b74cacc1a, type: 3} @@ -321,6 +409,9 @@ ShaderVariantCollection: - keywords: BILLBOARD_FACE_CAMERA_POS DIRECTIONAL LIGHTPROBE_SH SOFTPARTICLES_ON UNITY_HDR_ON VERTEXLIGHT_ON _SWITCH_ALPHA_ON _USE_ALPHA_ON passType: 4 + - keywords: BILLBOARD_FACE_CAMERA_POS LIGHTPROBE_SH POINT SOFTPARTICLES_ON + UNITY_HDR_ON VERTEXLIGHT_ON _SWITCH_ALPHA_ON _USE_ALPHA_ON + passType: 4 - keywords: BILLBOARD_FACE_CAMERA_POS POINT SOFTPARTICLES_ON UNITY_HDR_ON _SWITCH_ALPHA_ON passType: 5 - keywords: BILLBOARD_FACE_CAMERA_POS POINT SOFTPARTICLES_ON UNITY_HDR_ON _SWITCH_ALPHA_ON @@ -332,6 +423,9 @@ ShaderVariantCollection: - first: {fileID: 4800000, guid: 537e4fafa9661eb4aa1223442d96ed08, type: 3} second: variants: + - keywords: BILLBOARD_FACE_CAMERA_POS DIRECTIONAL ETC1_EXTERNAL_ALPHA LIGHTPROBE_SH + SOFTPARTICLES_ON UNITY_HDR_ON + passType: 4 - keywords: BILLBOARD_FACE_CAMERA_POS ETC1_EXTERNAL_ALPHA LIGHTPROBE_SH POINT SOFTPARTICLES_ON UNITY_HDR_ON passType: 4 @@ -350,24 +444,35 @@ ShaderVariantCollection: - first: {fileID: 4800000, guid: 76af2de2914fe504581efd439de00102, type: 3} second: variants: + - keywords: DIRECTIONAL LIGHTPROBE_SH + passType: 4 + - keywords: BILLBOARD_FACE_CAMERA_POS DIRECTIONAL LIGHTPROBE_SH SOFTPARTICLES_ON + UNITY_HDR_ON + passType: 4 + - keywords: DIRECTIONAL + passType: 5 + - keywords: BILLBOARD_FACE_CAMERA_POS POINT SOFTPARTICLES_ON UNITY_HDR_ON + passType: 5 + - keywords: BILLBOARD_FACE_CAMERA_POS POINT SHADOWS_CUBE SHADOWS_SOFT SOFTPARTICLES_ON + UNITY_HDR_ON + passType: 5 - keywords: passType: 8 + - keywords: BILLBOARD_FACE_CAMERA_POS SHADOWS_DEPTH SHADOWS_SPLIT_SPHERES SOFTPARTICLES_ON + UNITY_HDR_ON + passType: 8 - keywords: BILLBOARD_FACE_CAMERA_POS LIGHTPROBE_SH POINT SHADOWS_CUBE SHADOWS_SOFT SOFTPARTICLES_ON UNITY_HDR_ON passType: 8 - first: {fileID: 4800000, guid: a6bfc36e57bbc80459d4fa05df336432, type: 3} second: variants: - - keywords: - passType: 4 - keywords: DIRECTIONAL passType: 4 - - keywords: - passType: 5 - keywords: POINT passType: 5 - keywords: - passType: 11 + passType: 8 - first: {fileID: 4800000, guid: d7640629310e79646af0f46eb55ae466, type: 3} second: variants: @@ -376,11 +481,21 @@ ShaderVariantCollection: - first: {fileID: 4800000, guid: f75014305794b3948a3c6d5ccd550e05, type: 3} second: variants: + - keywords: + passType: 0 + - keywords: BILLBOARD_FACE_CAMERA_POS SOFTPARTICLES_ON + passType: 0 - keywords: BILLBOARD_FACE_CAMERA_POS SOFTPARTICLES_ON UNITY_HDR_ON passType: 0 + - keywords: BILLBOARD_FACE_CAMERA_POS FXAA_LOW SOFTPARTICLES_ON UNITY_HDR_ON + passType: 0 - first: {fileID: 4800000, guid: 382151503e2a43a4ebb7366d1632731d, type: 3} second: variants: + - keywords: + passType: 0 + - keywords: BILLBOARD_FACE_CAMERA_POS SOFTPARTICLES_ON + passType: 0 - keywords: BILLBOARD_FACE_CAMERA_POS BLOOM_LOW COLOR_GRADING_LDR_2D SOFTPARTICLES_ON UNITY_HDR_ON passType: 0 @@ -406,40 +521,50 @@ ShaderVariantCollection: - first: {fileID: 4800000, guid: 19584968e8d53424c9ce71b2c72d64f4, type: 3} second: variants: + - keywords: DIRECTIONAL LIGHTPROBE_SH _HASTEXTUREDISSOLVE_ON _STEPSUBTRACT_ON + _VERTEXAOPACITY_ON + passType: 4 + - keywords: DIRECTIONAL LIGHTPROBE_SH VERTEXLIGHT_ON _HASTEXTUREDISSOLVE_ON + _STEPSUBTRACT_ON _VERTEXAOPACITY_ON + passType: 4 - keywords: BILLBOARD_FACE_CAMERA_POS LIGHTPROBE_SH SOFTPARTICLES_ON UNITY_HDR_ON _HASTEXTUREDISSOLVE_ON _STEPSUBTRACT_ON _VERTEXAOPACITY_ON passType: 4 - keywords: BILLBOARD_FACE_CAMERA_POS DIRECTIONAL LIGHTPROBE_SH SOFTPARTICLES_ON UNITY_HDR_ON _HASTEXTUREDISSOLVE_ON _STEPSUBTRACT_ON _VERTEXAOPACITY_ON passType: 4 - - keywords: BILLBOARD_FACE_CAMERA_POS LIGHTPROBE_SH POINT SOFTPARTICLES_ON - UNITY_HDR_ON _HASTEXTUREDISSOLVE_ON _STEPSUBTRACT_ON _VERTEXAOPACITY_ON - passType: 4 - - keywords: BILLBOARD_FACE_CAMERA_POS LIGHTPROBE_SH SOFTPARTICLES_ON UNITY_HDR_ON - VERTEXLIGHT_ON _HASTEXTUREDISSOLVE_ON _STEPSUBTRACT_ON _VERTEXAOPACITY_ON - passType: 4 - keywords: BILLBOARD_FACE_CAMERA_POS DIRECTIONAL LIGHTPROBE_SH SOFTPARTICLES_ON UNITY_HDR_ON VERTEXLIGHT_ON _HASTEXTUREDISSOLVE_ON _STEPSUBTRACT_ON _VERTEXAOPACITY_ON passType: 4 - keywords: BILLBOARD_FACE_CAMERA_POS LIGHTPROBE_SH POINT SOFTPARTICLES_ON UNITY_HDR_ON VERTEXLIGHT_ON _HASTEXTUREDISSOLVE_ON _STEPSUBTRACT_ON _VERTEXAOPACITY_ON passType: 4 + - keywords: DIRECTIONAL LIGHTPROBE_SH _HASFLOWEFFECT_ON _HASMASK_ON _HASTEXTUREDISSOLVE_ON + _STEPSUBTRACT_ON _VERTEXAOPACITY_ON + passType: 4 + - keywords: DIRECTIONAL LIGHTPROBE_SH VERTEXLIGHT_ON _HASFLOWEFFECT_ON _HASMASK_ON + _HASTEXTUREDISSOLVE_ON _STEPSUBTRACT_ON _VERTEXAOPACITY_ON + passType: 4 - keywords: BILLBOARD_FACE_CAMERA_POS POINT SOFTPARTICLES_ON UNITY_HDR_ON _HASTEXTUREDISSOLVE_ON _STEPSUBTRACT_ON _VERTEXAOPACITY_ON passType: 5 - keywords: BILLBOARD_FACE_CAMERA_POS POINT SOFTPARTICLES_ON UNITY_HDR_ON VERTEXLIGHT_ON _HASTEXTUREDISSOLVE_ON _STEPSUBTRACT_ON _VERTEXAOPACITY_ON passType: 5 + - keywords: POINT _HASFLOWEFFECT_ON _HASMASK_ON _HASTEXTUREDISSOLVE_ON _STEPSUBTRACT_ON + _VERTEXAOPACITY_ON + passType: 5 + - first: {fileID: 4800000, guid: 4968826cd1690d448bd993e9859e8d20, type: 3} + second: + variants: + - keywords: + passType: 8 - first: {fileID: 4800000, guid: e98b6ae7301185b48b6dee05ea1ff2d6, type: 3} second: variants: - - keywords: BILLBOARD_FACE_CAMERA_POS LIGHTPROBE_SH POINT SOFTPARTICLES_ON - UNITY_HDR_ON _DISSOLVETYPE_CUSTOM _DISSOLVETYPE_UV _DISSOLVE_UV _DISTYPE_DISSOLVETEXRED - _INVERTDISSOLVE_ON _KEYWORD0_ON - passType: 4 - keywords: BILLBOARD_FACE_CAMERA_POS LIGHTPROBE_SH POINT SOFTPARTICLES_ON UNITY_HDR_ON VERTEXLIGHT_ON _DISSOLVETYPE_CUSTOM _DISSOLVETYPE_UV _DISSOLVE_UV - _DISTYPE_DISSOLVETEXRED _INVERTDISSOLVE_ON _KEYWORD0_ON + _DISTYPE_ALPHA _INVERTDISSOLVE_ON _KEYWORD0_ON passType: 4 - first: {fileID: 4800000, guid: 7ad194cbe7d006f4bace915156972026, type: 3} second: @@ -449,11 +574,19 @@ ShaderVariantCollection: - first: {fileID: 4800000, guid: 4bf4cff0d0bac3d43894e2e8839feb40, type: 3} second: variants: + - keywords: + passType: 0 + - keywords: BILLBOARD_FACE_CAMERA_POS SOFTPARTICLES_ON + passType: 0 - keywords: BILLBOARD_FACE_CAMERA_POS SOFTPARTICLES_ON UNITY_HDR_ON passType: 0 - first: {fileID: 4800000, guid: 1ceafe4dae085734190c6d13802572bf, type: 3} second: variants: + - keywords: DIRECTIONAL LIGHTPROBE_SH + passType: 4 + - keywords: DIRECTIONAL LIGHTPROBE_SH VERTEXLIGHT_ON + passType: 4 - keywords: BILLBOARD_FACE_CAMERA_POS LIGHTPROBE_SH SOFTPARTICLES_ON UNITY_HDR_ON passType: 4 - keywords: BILLBOARD_FACE_CAMERA_POS LIGHTPROBE_SH POINT SOFTPARTICLES_ON @@ -462,6 +595,9 @@ ShaderVariantCollection: - keywords: BILLBOARD_FACE_CAMERA_POS LIGHTPROBE_SH POINT SOFTPARTICLES_ON UNITY_HDR_ON VERTEXLIGHT_ON passType: 4 + - keywords: BILLBOARD_FACE_CAMERA_POS LIGHTPROBE_SH POINT SOFTPARTICLES_ON + UNITY_HDR_ON _SWITCH_ALPHA_ON + passType: 4 - keywords: BILLBOARD_FACE_CAMERA_POS LIGHTPROBE_SH SOFTPARTICLES_ON UNITY_HDR_ON _USE_ALPHA_ON passType: 4 @@ -474,8 +610,12 @@ ShaderVariantCollection: - keywords: BILLBOARD_FACE_CAMERA_POS LIGHTPROBE_SH POINT SOFTPARTICLES_ON UNITY_HDR_ON _SWITCH_ALPHA_ON _USE_ALPHA_ON passType: 4 + - keywords: POINT + passType: 5 - keywords: BILLBOARD_FACE_CAMERA_POS POINT SOFTPARTICLES_ON UNITY_HDR_ON passType: 5 + - keywords: BILLBOARD_FACE_CAMERA_POS POINT SOFTPARTICLES_ON UNITY_HDR_ON _SWITCH_ALPHA_ON + passType: 5 - keywords: BILLBOARD_FACE_CAMERA_POS POINT SOFTPARTICLES_ON UNITY_HDR_ON _USE_ALPHA_ON passType: 5 - keywords: BILLBOARD_FACE_CAMERA_POS POINT SOFTPARTICLES_ON UNITY_HDR_ON _SWITCH_ALPHA_ON @@ -484,15 +624,9 @@ ShaderVariantCollection: - first: {fileID: 4800000, guid: 2f164a9060379bc45a8027b25f032300, type: 3} second: variants: - - keywords: BILLBOARD_FACE_CAMERA_POS LIGHTPROBE_SH SOFTPARTICLES_ON UNITY_HDR_ON - _DISSOLVETYPE_SLIDER _DISSOLVETYPE_UV _DISSOLVE_UV _DISTYPE_UV - passType: 4 - keywords: BILLBOARD_FACE_CAMERA_POS LIGHTPROBE_SH POINT SOFTPARTICLES_ON UNITY_HDR_ON _DISSOLVETYPE_SLIDER _DISSOLVETYPE_UV _DISSOLVE_UV _DISTYPE_UV passType: 4 - - keywords: BILLBOARD_FACE_CAMERA_POS LIGHTPROBE_SH SOFTPARTICLES_ON UNITY_HDR_ON - VERTEXLIGHT_ON _DISSOLVETYPE_SLIDER _DISSOLVETYPE_UV _DISSOLVE_UV _DISTYPE_UV - passType: 4 - keywords: BILLBOARD_FACE_CAMERA_POS LIGHTPROBE_SH POINT SOFTPARTICLES_ON UNITY_HDR_ON VERTEXLIGHT_ON _DISSOLVETYPE_SLIDER _DISSOLVETYPE_UV _DISSOLVE_UV _DISTYPE_UV @@ -513,22 +647,30 @@ ShaderVariantCollection: - first: {fileID: 4800000, guid: 9fb3cd21d974e4a4e9f7c4a85213bf5b, type: 3} second: variants: - - keywords: DIRECTIONAL LIGHTPROBE_SH - passType: 4 - - keywords: DIRECTIONAL LIGHTPROBE_SH VERTEXLIGHT_ON - passType: 4 - - keywords: BILLBOARD_FACE_CAMERA_POS LIGHTPROBE_SH SOFTPARTICLES_ON UNITY_HDR_ON - passType: 4 - keywords: BILLBOARD_FACE_CAMERA_POS LIGHTPROBE_SH POINT SOFTPARTICLES_ON UNITY_HDR_ON passType: 4 - - keywords: BILLBOARD_FACE_CAMERA_POS LIGHTPROBE_SH POINT SOFTPARTICLES_ON - UNITY_HDR_ON VERTEXLIGHT_ON - passType: 4 - keywords: BILLBOARD_FACE_CAMERA_POS POINT SOFTPARTICLES_ON UNITY_HDR_ON passType: 5 - - keywords: BILLBOARD_FACE_CAMERA_POS POINT SOFTPARTICLES_ON UNITY_HDR_ON VERTEXLIGHT_ON + - first: {fileID: 4800000, guid: 11053485e6f23bf4c84a5962f5f67116, type: 3} + second: + variants: + - keywords: + passType: 1 + - keywords: + passType: 2 + - keywords: + passType: 4 + - keywords: passType: 5 + - keywords: + passType: 6 + - keywords: + passType: 7 + - keywords: + passType: 10 + - keywords: + passType: 11 - first: {fileID: 4800000, guid: 143bf507d0b743947992b1ed3d1a0d1f, type: 3} second: variants: @@ -547,5 +689,5 @@ ShaderVariantCollection: passType: 0 - keywords: BILLBOARD_FACE_CAMERA_POS SOFTPARTICLES_ON passType: 0 - - keywords: BILLBOARD_FACE_CAMERA_POS SOFTPARTICLES_ON UNITY_HDR_ON VERTEXLIGHT_ON + - keywords: BILLBOARD_FACE_CAMERA_POS SOFTPARTICLES_ON UNITY_HDR_ON passType: 0