diff --git a/Assets/CONTENT/Friendslop/Prefabs/NetworkPlayer.prefab b/Assets/CONTENT/Friendslop/Prefabs/NetworkPlayer.prefab index d9aa925..bfb3b6c 100644 --- a/Assets/CONTENT/Friendslop/Prefabs/NetworkPlayer.prefab +++ b/Assets/CONTENT/Friendslop/Prefabs/NetworkPlayer.prefab @@ -51,6 +51,7 @@ GameObject: - component: {fileID: 1886685762384766033} - component: {fileID: 6442729922619842682} - component: {fileID: 5032171862004131710} + - component: {fileID: 5463195673691487104} m_Layer: 0 m_Name: NetworkPlayer m_TagString: Untagged @@ -291,6 +292,19 @@ MonoBehaviour: m_EditorClassIdentifier: ShowTopMostFoldoutHeaderGroup: 1 itemSocket: {fileID: 5015619352217801696} +--- !u!114 &5463195673691487104 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2724913065371725993} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5e63651da7abbf744bc45585a2133e6f, type: 3} + m_Name: + m_EditorClassIdentifier: + ShowTopMostFoldoutHeaderGroup: 1 --- !u!1 &4726019310047661441 GameObject: m_ObjectHideFlags: 0 diff --git a/Assets/CONTENT/Game/Prefabs/Interaction.meta b/Assets/CONTENT/Game/Prefabs/Interaction.meta new file mode 100644 index 0000000..ffffc4b --- /dev/null +++ b/Assets/CONTENT/Game/Prefabs/Interaction.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 4e01366e581614a4b91cd3efb804691a +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/CONTENT/Game/Prefabs/Interaction/HeavyDragCrate.prefab b/Assets/CONTENT/Game/Prefabs/Interaction/HeavyDragCrate.prefab new file mode 100644 index 0000000..70d6a83 --- /dev/null +++ b/Assets/CONTENT/Game/Prefabs/Interaction/HeavyDragCrate.prefab @@ -0,0 +1,258 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &5225331470301378431 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6263994081241283953} + - component: {fileID: 3440513286429880925} + - component: {fileID: 6739897567601242453} + - component: {fileID: 416908812593322597} + - component: {fileID: 3792544786712207931} + - component: {fileID: 4548792826172284241} + - component: {fileID: 791157199313025935} + - component: {fileID: 5227364662085720870} + - component: {fileID: 171915070508416281} + m_Layer: 0 + m_Name: HeavyDragCrate + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &6263994081241283953 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5225331470301378431} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1.5, y: 1.25, z: 1.5} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &3440513286429880925 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5225331470301378431} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!65 &6739897567601242453 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5225331470301378431} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &416908812593322597 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5225331470301378431} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 1 + 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 &3792544786712207931 +Rigidbody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5225331470301378431} + serializedVersion: 4 + m_Mass: 75 + m_Drag: 0 + m_AngularDrag: 0.05 + m_CenterOfMass: {x: 0, y: 0, z: 0} + m_InertiaTensor: {x: 1, y: 1, z: 1} + m_InertiaRotation: {x: 0, y: 0, z: 0, w: 1} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ImplicitCom: 1 + m_ImplicitTensor: 1 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!114 &4548792826172284241 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5225331470301378431} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d5a57f767e5e46a458fc5d3c628d0cbb, type: 3} + m_Name: + m_EditorClassIdentifier: + GlobalObjectIdHash: 2465462244 + InScenePlacedSourceGlobalObjectIdHash: 0 + DeferredDespawnTick: 0 + Ownership: 1 + AlwaysReplicateAsRoot: 0 + SynchronizeTransform: 1 + m_InScenePlaced: 0 + ActiveSceneSynchronization: 0 + SceneMigrationSynchronization: 0 + SpawnWithObservers: 1 + DontDestroyWithOwner: 0 + AutoObjectParentSync: 1 + SyncOwnerTransformWhenParented: 1 + AllowOwnerToParent: 0 +--- !u!114 &791157199313025935 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5225331470301378431} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e96cb6065543e43c4a752faaa1468eb1, type: 3} + m_Name: + m_EditorClassIdentifier: + ShowTopMostFoldoutHeaderGroup: 1 + NetworkTransformExpanded: 0 + AutoOwnerAuthorityTickOffset: 1 + PositionInterpolationType: 0 + RotationInterpolationType: 0 + ScaleInterpolationType: 0 + PositionLerpSmoothing: 1 + PositionMaxInterpolationTime: 0.1 + RotationLerpSmoothing: 1 + RotationMaxInterpolationTime: 0.1 + ScaleLerpSmoothing: 1 + ScaleMaxInterpolationTime: 0.1 + AuthorityMode: 0 + TickSyncChildren: 0 + UseUnreliableDeltas: 0 + SyncPositionX: 1 + SyncPositionY: 1 + SyncPositionZ: 1 + SyncRotAngleX: 1 + SyncRotAngleY: 1 + SyncRotAngleZ: 1 + SyncScaleX: 1 + SyncScaleY: 1 + SyncScaleZ: 1 + PositionThreshold: 0.001 + RotAngleThreshold: 0.01 + ScaleThreshold: 0.01 + UseQuaternionSynchronization: 0 + UseQuaternionCompression: 0 + UseHalfFloatPrecision: 0 + InLocalSpace: 0 + SwitchTransformSpaceWhenParented: 0 + Interpolate: 1 + SlerpPosition: 0 +--- !u!114 &5227364662085720870 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5225331470301378431} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f6c0be61502bb534f922ebb746851216, type: 3} + m_Name: + m_EditorClassIdentifier: + ShowTopMostFoldoutHeaderGroup: 1 + NetworkRigidbodyBaseExpanded: 0 + UseRigidBodyForMotion: 1 + AutoUpdateKinematicState: 1 + AutoSetKinematicOnDespawn: 1 +--- !u!114 &171915070508416281 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5225331470301378431} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e5e737931b3bc22468ea0fe857062359, type: 3} + m_Name: + m_EditorClassIdentifier: + ShowTopMostFoldoutHeaderGroup: 1 + interactionLabel: Drag heavy crate + maximumInteractionDistance: 3 + weight: 75 + pullStrengthPerPlayer: 50 + maximumDraggers: 2 + dragOffset: {x: 0, y: 1, z: 1.8} + maximumDragSpeed: 3 + minimumSpeedMultiplier: 0.35 + maximumDraggerDistance: 4.5 + keepCurrentHeight: 0 + physicsBody: {fileID: 3792544786712207931} + objectColliders: + - {fileID: 6739897567601242453} + collisionRefreshInterval: 0.25 diff --git a/Assets/CONTENT/Game/Prefabs/Interaction/HeavyDragCrate.prefab.meta b/Assets/CONTENT/Game/Prefabs/Interaction/HeavyDragCrate.prefab.meta new file mode 100644 index 0000000..fb0d695 --- /dev/null +++ b/Assets/CONTENT/Game/Prefabs/Interaction/HeavyDragCrate.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 43c2ed447ed075a4c9bb39cb8b389c0e +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/CONTENT/Game/Prefabs/Interaction/LightDragCrate.prefab b/Assets/CONTENT/Game/Prefabs/Interaction/LightDragCrate.prefab new file mode 100644 index 0000000..4ff164a --- /dev/null +++ b/Assets/CONTENT/Game/Prefabs/Interaction/LightDragCrate.prefab @@ -0,0 +1,258 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &5225331470301378431 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6263994081241283953} + - component: {fileID: 3440513286429880925} + - component: {fileID: 6739897567601242453} + - component: {fileID: 416908812593322597} + - component: {fileID: 3792544786712207931} + - component: {fileID: 4548792826172284241} + - component: {fileID: 791157199313025935} + - component: {fileID: 5227364662085720870} + - component: {fileID: 171915070508416281} + m_Layer: 0 + m_Name: LightDragCrate + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &6263994081241283953 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5225331470301378431} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &3440513286429880925 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5225331470301378431} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!65 &6739897567601242453 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5225331470301378431} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &416908812593322597 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5225331470301378431} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 1 + 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 &3792544786712207931 +Rigidbody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5225331470301378431} + serializedVersion: 4 + m_Mass: 30 + m_Drag: 0 + m_AngularDrag: 0.05 + m_CenterOfMass: {x: 0, y: 0, z: 0} + m_InertiaTensor: {x: 1, y: 1, z: 1} + m_InertiaRotation: {x: 0, y: 0, z: 0, w: 1} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ImplicitCom: 1 + m_ImplicitTensor: 1 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!114 &4548792826172284241 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5225331470301378431} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d5a57f767e5e46a458fc5d3c628d0cbb, type: 3} + m_Name: + m_EditorClassIdentifier: + GlobalObjectIdHash: 1192102892 + InScenePlacedSourceGlobalObjectIdHash: 0 + DeferredDespawnTick: 0 + Ownership: 1 + AlwaysReplicateAsRoot: 0 + SynchronizeTransform: 1 + m_InScenePlaced: 0 + ActiveSceneSynchronization: 0 + SceneMigrationSynchronization: 0 + SpawnWithObservers: 1 + DontDestroyWithOwner: 0 + AutoObjectParentSync: 1 + SyncOwnerTransformWhenParented: 1 + AllowOwnerToParent: 0 +--- !u!114 &791157199313025935 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5225331470301378431} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e96cb6065543e43c4a752faaa1468eb1, type: 3} + m_Name: + m_EditorClassIdentifier: + ShowTopMostFoldoutHeaderGroup: 1 + NetworkTransformExpanded: 0 + AutoOwnerAuthorityTickOffset: 1 + PositionInterpolationType: 0 + RotationInterpolationType: 0 + ScaleInterpolationType: 0 + PositionLerpSmoothing: 1 + PositionMaxInterpolationTime: 0.1 + RotationLerpSmoothing: 1 + RotationMaxInterpolationTime: 0.1 + ScaleLerpSmoothing: 1 + ScaleMaxInterpolationTime: 0.1 + AuthorityMode: 0 + TickSyncChildren: 0 + UseUnreliableDeltas: 0 + SyncPositionX: 1 + SyncPositionY: 1 + SyncPositionZ: 1 + SyncRotAngleX: 1 + SyncRotAngleY: 1 + SyncRotAngleZ: 1 + SyncScaleX: 1 + SyncScaleY: 1 + SyncScaleZ: 1 + PositionThreshold: 0.001 + RotAngleThreshold: 0.01 + ScaleThreshold: 0.01 + UseQuaternionSynchronization: 0 + UseQuaternionCompression: 0 + UseHalfFloatPrecision: 0 + InLocalSpace: 0 + SwitchTransformSpaceWhenParented: 0 + Interpolate: 1 + SlerpPosition: 0 +--- !u!114 &5227364662085720870 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5225331470301378431} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f6c0be61502bb534f922ebb746851216, type: 3} + m_Name: + m_EditorClassIdentifier: + ShowTopMostFoldoutHeaderGroup: 1 + NetworkRigidbodyBaseExpanded: 0 + UseRigidBodyForMotion: 1 + AutoUpdateKinematicState: 1 + AutoSetKinematicOnDespawn: 1 +--- !u!114 &171915070508416281 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5225331470301378431} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e5e737931b3bc22468ea0fe857062359, type: 3} + m_Name: + m_EditorClassIdentifier: + ShowTopMostFoldoutHeaderGroup: 1 + interactionLabel: Drag light crate + maximumInteractionDistance: 3 + weight: 30 + pullStrengthPerPlayer: 50 + maximumDraggers: 2 + dragOffset: {x: 0, y: 1, z: 1.8} + maximumDragSpeed: 3 + minimumSpeedMultiplier: 0.35 + maximumDraggerDistance: 4.5 + keepCurrentHeight: 0 + physicsBody: {fileID: 3792544786712207931} + objectColliders: + - {fileID: 6739897567601242453} + collisionRefreshInterval: 0.25 diff --git a/Assets/CONTENT/Game/Prefabs/Interaction/LightDragCrate.prefab.meta b/Assets/CONTENT/Game/Prefabs/Interaction/LightDragCrate.prefab.meta new file mode 100644 index 0000000..e071c23 --- /dev/null +++ b/Assets/CONTENT/Game/Prefabs/Interaction/LightDragCrate.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 8fce593e28d06e54d83ed63d9e60c3c0 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/CONTENT/Game/Prefabs/Interaction/PhysicalLever.prefab b/Assets/CONTENT/Game/Prefabs/Interaction/PhysicalLever.prefab new file mode 100644 index 0000000..adf29b5 --- /dev/null +++ b/Assets/CONTENT/Game/Prefabs/Interaction/PhysicalLever.prefab @@ -0,0 +1,500 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &1023873631625220400 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7469934142893093605} + - component: {fileID: 2927001865383913474} + - component: {fileID: 8667316428577315048} + - component: {fileID: 1146083900248343034} + m_Layer: 0 + m_Name: Base + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &7469934142893093605 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1023873631625220400} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0.3, z: 0} + m_LocalScale: {x: 0.8, y: 0.6, z: 0.8} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 2407670811493793166} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &2927001865383913474 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1023873631625220400} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!65 &8667316428577315048 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1023873631625220400} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &1146083900248343034 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1023873631625220400} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 1 + 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!1 &1592568415919095802 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7323185562253079591} + m_Layer: 0 + m_Name: LeverPivot + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &7323185562253079591 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1592568415919095802} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0.65, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 413054211318646273} + - {fileID: 9018567234557895278} + m_Father: {fileID: 2407670811493793166} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &3060436709493570404 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 9018567234557895278} + - component: {fileID: 7065961267260340139} + - component: {fileID: 6752593838293933595} + - component: {fileID: 3216989811936523488} + m_Layer: 0 + m_Name: Handle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &9018567234557895278 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3060436709493570404} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 1.35, z: 0} + m_LocalScale: {x: 0.36, y: 0.36, z: 0.36} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 7323185562253079591} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &7065961267260340139 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3060436709493570404} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!135 &6752593838293933595 +SphereCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3060436709493570404} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Radius: 0.5 + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &3216989811936523488 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3060436709493570404} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 1 + 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!1 &6312094898028107579 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 413054211318646273} + - component: {fileID: 9016344377187877216} + - component: {fileID: 6921548535170618678} + - component: {fileID: 8704740599923309004} + m_Layer: 0 + m_Name: Arm + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &413054211318646273 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6312094898028107579} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0.65, z: 0} + m_LocalScale: {x: 0.16, y: 1.3, z: 0.16} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 7323185562253079591} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &9016344377187877216 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6312094898028107579} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!65 &6921548535170618678 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6312094898028107579} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &8704740599923309004 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6312094898028107579} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 1 + 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!1 &8815354352711425077 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2407670811493793166} + - component: {fileID: 8522563728462659335} + - component: {fileID: 1530454800977108524} + - component: {fileID: 2476357789053846530} + m_Layer: 0 + m_Name: PhysicalLever + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2407670811493793166 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8815354352711425077} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 7469934142893093605} + - {fileID: 7323185562253079591} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &8522563728462659335 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8815354352711425077} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d5a57f767e5e46a458fc5d3c628d0cbb, type: 3} + m_Name: + m_EditorClassIdentifier: + GlobalObjectIdHash: 1012607634 + InScenePlacedSourceGlobalObjectIdHash: 0 + DeferredDespawnTick: 0 + Ownership: 1 + AlwaysReplicateAsRoot: 0 + SynchronizeTransform: 1 + m_InScenePlaced: 1 + ActiveSceneSynchronization: 0 + SceneMigrationSynchronization: 0 + SpawnWithObservers: 1 + DontDestroyWithOwner: 0 + AutoObjectParentSync: 1 + SyncOwnerTransformWhenParented: 1 + AllowOwnerToParent: 0 +--- !u!114 &1530454800977108524 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8815354352711425077} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e96cb6065543e43c4a752faaa1468eb1, type: 3} + m_Name: + m_EditorClassIdentifier: + ShowTopMostFoldoutHeaderGroup: 1 + NetworkTransformExpanded: 0 + AutoOwnerAuthorityTickOffset: 1 + PositionInterpolationType: 0 + RotationInterpolationType: 0 + ScaleInterpolationType: 0 + PositionLerpSmoothing: 1 + PositionMaxInterpolationTime: 0.1 + RotationLerpSmoothing: 1 + RotationMaxInterpolationTime: 0.1 + ScaleLerpSmoothing: 1 + ScaleMaxInterpolationTime: 0.1 + AuthorityMode: 0 + TickSyncChildren: 0 + UseUnreliableDeltas: 0 + SyncPositionX: 1 + SyncPositionY: 1 + SyncPositionZ: 1 + SyncRotAngleX: 1 + SyncRotAngleY: 1 + SyncRotAngleZ: 1 + SyncScaleX: 1 + SyncScaleY: 1 + SyncScaleZ: 1 + PositionThreshold: 0.001 + RotAngleThreshold: 0.01 + ScaleThreshold: 0.01 + UseQuaternionSynchronization: 0 + UseQuaternionCompression: 0 + UseHalfFloatPrecision: 0 + InLocalSpace: 0 + SwitchTransformSpaceWhenParented: 0 + Interpolate: 1 + SlerpPosition: 0 +--- !u!114 &2476357789053846530 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8815354352711425077} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 262775fc01b9c8a47a82f30b50d7b12a, type: 3} + m_Name: + m_EditorClassIdentifier: + ShowTopMostFoldoutHeaderGroup: 1 + interactionLabel: Pull lever + maximumInteractionDistance: 3 + leverVisual: {fileID: 7323185562253079591} + neutralLocalEulerAngles: {x: 0, y: 0, z: 0} + localRotationAxis: {x: 1, y: 0, z: 0} + localHandleDirection: {x: 0, y: 1, z: 0} + minimumAngle: -55 + maximumAngle: 55 + movementSpeed: 140 + maximumControlDistance: 4 + returnToRestOnRelease: 0 + restValue: 0 + activationThreshold: 0.85 + deactivationThreshold: 0.15 + leverValueChanged: + m_PersistentCalls: + m_Calls: [] + leverStateChanged: + m_PersistentCalls: + m_Calls: [] diff --git a/Assets/CONTENT/Game/Prefabs/Interaction/PhysicalLever.prefab.meta b/Assets/CONTENT/Game/Prefabs/Interaction/PhysicalLever.prefab.meta new file mode 100644 index 0000000..16d8289 --- /dev/null +++ b/Assets/CONTENT/Game/Prefabs/Interaction/PhysicalLever.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 593b09321d7982e48a7d65a32da0d96a +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/CONTENT/Game/Scripts/Interaction/IPlayerInteractionSession.cs b/Assets/CONTENT/Game/Scripts/Interaction/IPlayerInteractionSession.cs new file mode 100644 index 0000000..51138db --- /dev/null +++ b/Assets/CONTENT/Game/Scripts/Interaction/IPlayerInteractionSession.cs @@ -0,0 +1,46 @@ +using System.Collections.Generic; +using UnityEngine; + +public interface IPlayerInteractionSession +{ + string ReleasePrompt { get; } + bool IsControlledBy(ulong clientId); + void RequestRelease(); +} + +public static class PlayerInteractionSessionRegistry +{ + private static readonly HashSet Sessions = new(); + + [RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.SubsystemRegistration)] + private static void ResetRegistry() => Sessions.Clear(); + + public static void Register(IPlayerInteractionSession session) + { + if (session != null) + Sessions.Add(session); + } + + public static void Unregister(IPlayerInteractionSession session) + { + if (session != null) + Sessions.Remove(session); + } + + public static bool TryGetControlledSession( + ulong clientId, + out IPlayerInteractionSession session) + { + foreach (IPlayerInteractionSession candidate in Sessions) + { + if (candidate != null && candidate.IsControlledBy(clientId)) + { + session = candidate; + return true; + } + } + + session = null; + return false; + } +} diff --git a/Assets/CONTENT/Game/Scripts/Interaction/IPlayerInteractionSession.cs.meta b/Assets/CONTENT/Game/Scripts/Interaction/IPlayerInteractionSession.cs.meta new file mode 100644 index 0000000..64cb645 --- /dev/null +++ b/Assets/CONTENT/Game/Scripts/Interaction/IPlayerInteractionSession.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 766a505389ebff84cb581f905b9736dd \ No newline at end of file diff --git a/Assets/CONTENT/Game/Scripts/Interaction/NetworkCarryableInteractable.cs b/Assets/CONTENT/Game/Scripts/Interaction/NetworkCarryableInteractable.cs index cf0e446..3b9a81d 100644 --- a/Assets/CONTENT/Game/Scripts/Interaction/NetworkCarryableInteractable.cs +++ b/Assets/CONTENT/Game/Scripts/Interaction/NetworkCarryableInteractable.cs @@ -2,7 +2,7 @@ using UnityEngine; public sealed class NetworkCarryableInteractable : NetworkHeldInteractable { - [SerializeField] private Vector3 carryOffset = new(0f, 1.15f, 0.75f); + [SerializeField] private Vector3 carryOffset = new(0f, -0.3f, 1.25f); protected override Vector3 HoldingOffset => carryOffset; protected override string DropPrompt => "Put down"; diff --git a/Assets/CONTENT/Game/Scripts/Interaction/NetworkDraggableInteractable.cs b/Assets/CONTENT/Game/Scripts/Interaction/NetworkDraggableInteractable.cs index 39ee5c7..fb5ab63 100644 --- a/Assets/CONTENT/Game/Scripts/Interaction/NetworkDraggableInteractable.cs +++ b/Assets/CONTENT/Game/Scripts/Interaction/NetworkDraggableInteractable.cs @@ -1,9 +1,282 @@ +using System.Collections.Generic; +using Unity.Netcode; +using Unity.Netcode.Components; using UnityEngine; -public sealed class NetworkDraggableInteractable : NetworkHeldInteractable +[RequireComponent(typeof(Rigidbody), typeof(NetworkRigidbody))] +public sealed class NetworkDraggableInteractable : NetworkInteractable { - [SerializeField] private Vector3 dragOffset = new(0f, 0.35f, 1.8f); + private const ulong NoDragger = ulong.MaxValue; - protected override Vector3 HoldingOffset => dragOffset; - protected override string DropPrompt => "Release"; + [Header("Weight")] + [SerializeField, Min(0.1f)] private float weight = 35f; + [SerializeField, Min(0.1f)] private float pullStrengthPerPlayer = 50f; + [SerializeField, Range(1, 2)] private int maximumDraggers = 2; + + [Header("Dragging")] + [SerializeField] private Vector3 dragOffset = new(0f, 1f, 1.8f); + [SerializeField, Min(0.1f)] private float maximumDragSpeed = 3f; + [SerializeField, Range(0.05f, 1f)] private float minimumSpeedMultiplier = 0.35f; + [SerializeField, Min(0.5f)] private float maximumDraggerDistance = 4.5f; + [SerializeField] private bool keepCurrentHeight; + + [Header("Physics")] + [SerializeField] private Rigidbody physicsBody; + [SerializeField] private Collider[] objectColliders; + [SerializeField, Min(0.05f)] private float collisionRefreshInterval = 0.25f; + + private readonly NetworkVariable firstDraggerClientId = new( + NoDragger, + NetworkVariableReadPermission.Everyone, + NetworkVariableWritePermission.Server); + + private readonly NetworkVariable secondDraggerClientId = new( + NoDragger, + NetworkVariableReadPermission.Everyone, + NetworkVariableWritePermission.Server); + + private readonly HashSet ignoredPlayerColliders = new(); + private float nextCollisionRefreshTime; + + public float Weight => weight; + public int ActiveDraggerCount + { + get + { + int count = firstDraggerClientId.Value == NoDragger ? 0 : 1; + if (secondDraggerClientId.Value != NoDragger) + count++; + return count; + } + } + public int RequiredDraggerCount => Mathf.Max(1, Mathf.CeilToInt(weight / pullStrengthPerPlayer)); + public bool HasEnoughPullStrength => ActiveDraggerCount >= RequiredDraggerCount; + + private bool HasAnyDragger => ActiveDraggerCount > 0; + private bool IsDraggedByLocalPlayer => + NetworkManager != null && IsDragger(NetworkManager.LocalClientId); + + public override string InteractionPrompt + { + get + { + if (IsDraggedByLocalPlayer) + return "Release"; + + int activeDraggers = ActiveDraggerCount; + if (activeDraggers == 0) + return $"{InteractionLabel} ({weight:0.#} kg)"; + + if (activeDraggers < maximumDraggers) + return !HasEnoughPullStrength + ? $"Help drag ({activeDraggers}/{RequiredDraggerCount})" + : $"Join drag ({activeDraggers}/{maximumDraggers})"; + + return HasEnoughPullStrength ? "In use" : "Too heavy"; + } + } + + public override bool IsInteractionAvailable => base.IsInteractionAvailable && + (IsDraggedByLocalPlayer || ActiveDraggerCount < maximumDraggers); + + private void Awake() + { + ResolvePhysicsReferences(); + ApplyWeight(); + } + + private void OnValidate() + { + ResolvePhysicsReferences(); + ApplyWeight(); + } + + public override void OnNetworkSpawn() + { + firstDraggerClientId.OnValueChanged += HandleDraggerChanged; + secondDraggerClientId.OnValueChanged += HandleDraggerChanged; + ApplyDraggingState(); + } + + public override void OnNetworkDespawn() + { + firstDraggerClientId.OnValueChanged -= HandleDraggerChanged; + secondDraggerClientId.OnValueChanged -= HandleDraggerChanged; + RestorePlayerCollisions(); + } + + private void Update() + { + if (!HasAnyDragger || Time.time < nextCollisionRefreshTime) + return; + + nextCollisionRefreshTime = Time.time + collisionRefreshInterval; + IgnoreCollisionsWithPlayers(); + } + + private void FixedUpdate() + { + if (!IsServer || !IsSpawned || physicsBody == null) + return; + + RemoveInvalidDraggers(); + if (!HasEnoughPullStrength || !TryGetCombinedDragTarget(out Vector3 target)) + return; + + if (keepCurrentHeight) + target.y = physicsBody.position.y; + + float totalStrength = ActiveDraggerCount * pullStrengthPerPlayer; + float loadRatio = Mathf.Clamp01(weight / totalStrength); + float speedMultiplier = Mathf.Lerp(1f, minimumSpeedMultiplier, loadRatio); + float movementStep = maximumDragSpeed * speedMultiplier * Time.fixedDeltaTime; + Vector3 nextPosition = Vector3.MoveTowards(physicsBody.position, target, movementStep); + physicsBody.MovePosition(nextPosition); + } + + protected override bool CanInteractOnServer(ulong senderClientId) => + IsDragger(senderClientId) || + ActiveDraggerCount < maximumDraggers; + + protected override void InteractOnServer(ulong senderClientId, NetworkObject playerObject) + { + if (IsDragger(senderClientId)) + RemoveDragger(senderClientId); + else + AddDragger(senderClientId); + } + + private void AddDragger(ulong clientId) + { + if (firstDraggerClientId.Value == NoDragger) + firstDraggerClientId.Value = clientId; + else if (maximumDraggers > 1 && secondDraggerClientId.Value == NoDragger) + secondDraggerClientId.Value = clientId; + } + + private void RemoveDragger(ulong clientId) + { + if (firstDraggerClientId.Value == clientId) + { + firstDraggerClientId.Value = secondDraggerClientId.Value; + secondDraggerClientId.Value = NoDragger; + } + else if (secondDraggerClientId.Value == clientId) + { + secondDraggerClientId.Value = NoDragger; + } + } + + private void RemoveInvalidDraggers() + { + ulong first = firstDraggerClientId.Value; + ulong second = secondDraggerClientId.Value; + + if (first != NoDragger && !IsDraggerValid(first)) + RemoveDragger(first); + + if (second != NoDragger && !IsDraggerValid(second)) + RemoveDragger(second); + } + + private bool IsDraggerValid(ulong clientId) + { + if (!TryGetPlayerObject(clientId, out NetworkObject playerObject)) + return false; + + float maximumDistanceSquared = maximumDraggerDistance * maximumDraggerDistance; + return (playerObject.transform.position - physicsBody.position).sqrMagnitude <= maximumDistanceSquared; + } + + private bool TryGetCombinedDragTarget(out Vector3 target) + { + target = Vector3.zero; + int validTargets = 0; + + AddDragTarget(firstDraggerClientId.Value, ref target, ref validTargets); + AddDragTarget(secondDraggerClientId.Value, ref target, ref validTargets); + + if (validTargets == 0) + return false; + + target /= validTargets; + return true; + } + + private void AddDragTarget(ulong clientId, ref Vector3 target, ref int validTargets) + { + if (clientId == NoDragger || !TryGetPlayerObject(clientId, out NetworkObject playerObject)) + return; + + target += playerObject.transform.TransformPoint(dragOffset); + validTargets++; + } + + private bool IsDragger(ulong clientId) => + firstDraggerClientId.Value == clientId || secondDraggerClientId.Value == clientId; + + private void HandleDraggerChanged(ulong _, ulong __) => ApplyDraggingState(); + + private void ApplyDraggingState() + { + if (physicsBody != null) + { + physicsBody.isKinematic = HasAnyDragger || !IsServer; + physicsBody.linearVelocity = Vector3.zero; + physicsBody.angularVelocity = Vector3.zero; + } + + if (HasAnyDragger) + IgnoreCollisionsWithPlayers(); + else + RestorePlayerCollisions(); + } + + private void ResolvePhysicsReferences() + { + if (physicsBody == null) + physicsBody = GetComponent(); + + if (objectColliders == null || objectColliders.Length == 0) + objectColliders = GetComponentsInChildren(true); + } + + private void ApplyWeight() + { + if (physicsBody != null) + physicsBody.mass = Mathf.Max(0.1f, weight); + } + + private void IgnoreCollisionsWithPlayers() + { + foreach (CharacterController playerCollider in FindObjectsByType( + FindObjectsInactive.Exclude, + FindObjectsSortMode.None)) + { + foreach (Collider objectCollider in objectColliders) + { + if (objectCollider != null && playerCollider != null) + Physics.IgnoreCollision(objectCollider, playerCollider, true); + } + + ignoredPlayerColliders.Add(playerCollider); + } + } + + private void RestorePlayerCollisions() + { + foreach (Collider playerCollider in ignoredPlayerColliders) + { + if (playerCollider == null) + continue; + + foreach (Collider objectCollider in objectColliders) + { + if (objectCollider != null) + Physics.IgnoreCollision(objectCollider, playerCollider, false); + } + } + + ignoredPlayerColliders.Clear(); + } } diff --git a/Assets/CONTENT/Game/Scripts/Interaction/NetworkHeldInteractable.cs b/Assets/CONTENT/Game/Scripts/Interaction/NetworkHeldInteractable.cs index ff2c5c6..8da5490 100644 --- a/Assets/CONTENT/Game/Scripts/Interaction/NetworkHeldInteractable.cs +++ b/Assets/CONTENT/Game/Scripts/Interaction/NetworkHeldInteractable.cs @@ -1,16 +1,23 @@ using System.Collections.Generic; using Unity.Netcode; +using Unity.Netcode.Components; using UnityEngine; +[RequireComponent(typeof(Rigidbody), typeof(NetworkRigidbody))] public abstract class NetworkHeldInteractable : NetworkInteractable { protected const ulong NoHolder = ulong.MaxValue; + private static readonly HashSet SpawnedHeldObjects = new(); [Header("Physics")] [SerializeField] private Rigidbody physicsBody; [SerializeField] private Collider[] objectColliders; [SerializeField, Min(0.05f)] private float collisionRefreshInterval = 0.25f; + [Header("Throw")] + [SerializeField, Min(0f)] private float throwForce = 6f; + [SerializeField, Min(0f)] private float throwUpwardForce = 0.5f; + private readonly NetworkVariable holderClientId = new( NoHolder, NetworkVariableReadPermission.Everyone, @@ -22,9 +29,10 @@ public abstract class NetworkHeldInteractable : NetworkInteractable protected abstract Vector3 HoldingOffset { get; } protected abstract string DropPrompt { get; } - private bool IsHeld => holderClientId.Value != NoHolder; - private bool IsHeldByLocalPlayer => + public bool IsHeld => holderClientId.Value != NoHolder; + public bool IsHeldByLocalPlayer => NetworkManager != null && holderClientId.Value == NetworkManager.LocalClientId; + public string HeldObjectName => InteractionLabel; public override string InteractionPrompt => !IsHeld ? InteractionLabel @@ -46,6 +54,7 @@ public abstract class NetworkHeldInteractable : NetworkInteractable public override void OnNetworkSpawn() { + SpawnedHeldObjects.Add(this); holderClientId.OnValueChanged += HandleHolderChanged; ApplyHoldingState(IsHeld); } @@ -53,6 +62,7 @@ public abstract class NetworkHeldInteractable : NetworkInteractable public override void OnNetworkDespawn() { holderClientId.OnValueChanged -= HandleHolderChanged; + SpawnedHeldObjects.Remove(this); ApplyHoldingState(false); } @@ -69,9 +79,10 @@ public abstract class NetworkHeldInteractable : NetworkInteractable return; } + Transform anchor = ResolveHoldingAnchor(holder); transform.SetPositionAndRotation( - holder.transform.TransformPoint(HoldingOffset), - holder.transform.rotation); + anchor.TransformPoint(HoldingOffset), + anchor.rotation); if (Time.time >= nextCollisionRefreshTime) { @@ -80,8 +91,38 @@ public abstract class NetworkHeldInteractable : NetworkInteractable } } - protected override bool CanInteractOnServer(ulong senderClientId) => - !IsHeld || holderClientId.Value == senderClientId; + public void RequestThrow() + { + if (IsSpawned && IsHeldByLocalPlayer) + RequestThrowServerRpc(); + } + + public static bool TryGetHeldObject( + ulong clientId, + out NetworkHeldInteractable heldObject) + { + foreach (NetworkHeldInteractable candidate in SpawnedHeldObjects) + { + if (candidate != null && candidate.holderClientId.Value == clientId) + { + heldObject = candidate; + return true; + } + } + + heldObject = null; + return false; + } + + protected override bool CanInteractOnServer(ulong senderClientId) + { + if (holderClientId.Value == senderClientId) + return true; + + return !IsHeld && + !TryGetHeldObject(senderClientId, out _) && + !NetworkHandItemInteractable.TryGetHeldItem(senderClientId, out _); + } protected override void InteractOnServer(ulong senderClientId, NetworkObject playerObject) { @@ -91,6 +132,30 @@ public abstract class NetworkHeldInteractable : NetworkInteractable StartHolding(senderClientId); } + [Rpc(SendTo.Server, InvokePermission = RpcInvokePermission.Everyone)] + private void RequestThrowServerRpc(RpcParams rpcParams = default) + { + ulong senderClientId = rpcParams.Receive.SenderClientId; + if (holderClientId.Value != senderClientId || + !TryGetPlayerObject(senderClientId, out NetworkObject playerObject)) + { + return; + } + + FirstPersonCameraController cameraController = + playerObject.GetComponent(); + Vector3 throwDirection = cameraController != null + ? cameraController.AimForward + : playerObject.transform.forward; + Vector3 throwVelocity = throwDirection * throwForce + + Vector3.up * throwUpwardForce; + + StopHolding(); + + if (physicsBody != null) + physicsBody.linearVelocity = throwVelocity; + } + private void StartHolding(ulong clientId) { holderClientId.Value = clientId; @@ -103,6 +168,13 @@ public abstract class NetworkHeldInteractable : NetworkInteractable ApplyHoldingState(false); } + private Transform ResolveHoldingAnchor(NetworkObject holder) + { + FirstPersonCameraController cameraController = + holder.GetComponent(); + return cameraController != null ? cameraController.AimTransform : holder.transform; + } + private void HandleHolderChanged(ulong _, ulong currentHolder) => ApplyHoldingState(currentHolder != NoHolder); @@ -110,9 +182,9 @@ public abstract class NetworkHeldInteractable : NetworkInteractable { if (physicsBody != null) { - physicsBody.isKinematic = isHeld; - if (!isHeld) - physicsBody.linearVelocity = Vector3.zero; + physicsBody.isKinematic = isHeld || !IsServer; + physicsBody.linearVelocity = Vector3.zero; + physicsBody.angularVelocity = Vector3.zero; } if (isHeld) @@ -129,10 +201,8 @@ public abstract class NetworkHeldInteractable : NetworkInteractable { foreach (Collider objectCollider in objectColliders) { - if (objectCollider == null || playerCollider == null) - continue; - - Physics.IgnoreCollision(objectCollider, playerCollider, true); + if (objectCollider != null && playerCollider != null) + Physics.IgnoreCollision(objectCollider, playerCollider, true); } ignoredPlayerColliders.Add(playerCollider); diff --git a/Assets/CONTENT/Game/Scripts/Interaction/NetworkPhysicalLeverInteractable.cs b/Assets/CONTENT/Game/Scripts/Interaction/NetworkPhysicalLeverInteractable.cs new file mode 100644 index 0000000..4d925de --- /dev/null +++ b/Assets/CONTENT/Game/Scripts/Interaction/NetworkPhysicalLeverInteractable.cs @@ -0,0 +1,267 @@ +using Unity.Netcode; +using UnityEngine; +using UnityEngine.Events; + +public sealed class NetworkPhysicalLeverInteractable : + NetworkInteractable, + IPlayerInteractionSession +{ + private const ulong NoController = ulong.MaxValue; + + [Header("Lever visual")] + [SerializeField] private Transform leverVisual; + [SerializeField] private Vector3 neutralLocalEulerAngles; + [SerializeField] private Vector3 localRotationAxis = Vector3.right; + [SerializeField] private Vector3 localHandleDirection = Vector3.up; + [SerializeField, Range(-179f, 179f)] private float minimumAngle = -50f; + [SerializeField, Range(-179f, 179f)] private float maximumAngle = 50f; + [SerializeField, Min(1f)] private float movementSpeed = 180f; + + [Header("Control")] + [SerializeField, Min(0.5f)] private float maximumControlDistance = 4f; + [SerializeField] private bool returnToRestOnRelease; + [SerializeField, Range(0f, 1f)] private float restValue; + + [Header("Activation")] + [SerializeField, Range(0f, 1f)] private float activationThreshold = 0.85f; + [SerializeField, Range(0f, 1f)] private float deactivationThreshold = 0.15f; + [SerializeField] private UnityEvent leverValueChanged; + [SerializeField] private UnityEvent leverStateChanged; + + private readonly NetworkVariable controllingClientId = new( + NoController, + NetworkVariableReadPermission.Everyone, + NetworkVariableWritePermission.Server); + + private readonly NetworkVariable synchronizedValue = new( + 0f, + NetworkVariableReadPermission.Everyone, + NetworkVariableWritePermission.Server); + + private readonly NetworkVariable isActivated = new( + false, + NetworkVariableReadPermission.Everyone, + NetworkVariableWritePermission.Server); + + public float Value => synchronizedValue.Value; + public bool IsActivated => isActivated.Value; + public bool IsControlled => controllingClientId.Value != NoController; + public bool IsControlledByLocalPlayer => + NetworkManager != null && IsControlledBy(NetworkManager.LocalClientId); + public string ReleasePrompt => "[Hold E] Pulling lever"; + + public override string InteractionPrompt => IsControlledByLocalPlayer + ? ReleasePrompt + : IsControlled + ? "Lever in use" + : InteractionLabel; + + public override bool IsInteractionAvailable => + base.IsInteractionAvailable && (!IsControlled || IsControlledByLocalPlayer); + + private Quaternion NeutralLocalRotation => Quaternion.Euler(neutralLocalEulerAngles); + private Vector3 RotationAxis => localRotationAxis.sqrMagnitude > 0.0001f + ? localRotationAxis.normalized + : Vector3.right; + private Vector3 HandleDirection => localHandleDirection.sqrMagnitude > 0.0001f + ? localHandleDirection.normalized + : Vector3.up; + + private void Reset() + { + leverVisual = transform; + neutralLocalEulerAngles = leverVisual.localEulerAngles; + } + + private void OnValidate() + { + if (maximumAngle < minimumAngle) + maximumAngle = minimumAngle; + + deactivationThreshold = Mathf.Min(deactivationThreshold, activationThreshold); + } + + public override void OnNetworkSpawn() + { + PlayerInteractionSessionRegistry.Register(this); + synchronizedValue.OnValueChanged += HandleValueChanged; + isActivated.OnValueChanged += HandleActivationChanged; + ApplyVisual(synchronizedValue.Value); + leverValueChanged?.Invoke(synchronizedValue.Value); + leverStateChanged?.Invoke(isActivated.Value); + } + + public override void OnNetworkDespawn() + { + PlayerInteractionSessionRegistry.Unregister(this); + synchronizedValue.OnValueChanged -= HandleValueChanged; + isActivated.OnValueChanged -= HandleActivationChanged; + } + + private void FixedUpdate() + { + if (!IsServer || !IsSpawned || leverVisual == null) + return; + + if (IsControlled) + { + if (!TryGetPlayerObject(controllingClientId.Value, out NetworkObject playerObject) || + !IsPlayerWithinControlDistance(playerObject)) + { + controllingClientId.Value = NoController; + return; + } + + if (TryCalculateTargetValue(playerObject, out float targetValue)) + MoveTowardsValue(targetValue); + } + else if (returnToRestOnRelease) + { + MoveTowardsValue(restValue); + } + } + + public bool IsControlledBy(ulong clientId) => + controllingClientId.Value == clientId; + + public void RequestRelease() + { + if (IsSpawned && IsControlledByLocalPlayer) + RequestReleaseServerRpc(); + } + + protected override bool CanInteractOnServer(ulong senderClientId) => + !IsControlled || IsControlledBy(senderClientId); + + protected override void InteractOnServer( + ulong senderClientId, + NetworkObject playerObject) + { + controllingClientId.Value = IsControlledBy(senderClientId) + ? NoController + : senderClientId; + } + + [Rpc(SendTo.Server, InvokePermission = RpcInvokePermission.Everyone)] + private void RequestReleaseServerRpc(RpcParams rpcParams = default) + { + if (IsControlledBy(rpcParams.Receive.SenderClientId)) + controllingClientId.Value = NoController; + } + + private bool IsPlayerWithinControlDistance(NetworkObject playerObject) + { + float maximumDistanceSquared = maximumControlDistance * maximumControlDistance; + return (playerObject.transform.position - leverVisual.position).sqrMagnitude <= + maximumDistanceSquared; + } + + private bool TryCalculateTargetValue( + NetworkObject playerObject, + out float targetValue) + { + targetValue = synchronizedValue.Value; + + FirstPersonCameraController cameraController = + playerObject.GetComponent(); + Transform aimTransform = cameraController != null + ? cameraController.AimTransform + : playerObject.transform; + + Transform leverParent = leverVisual.parent; + Quaternion neutralRotation = NeutralLocalRotation; + Vector3 axisWorld = leverParent != null + ? leverParent.TransformDirection(neutralRotation * RotationAxis) + : neutralRotation * RotationAxis; + Vector3 neutralDirectionWorld = leverParent != null + ? leverParent.TransformDirection(neutralRotation * HandleDirection) + : neutralRotation * HandleDirection; + + Ray aimRay = new(aimTransform.position, aimTransform.forward); + Plane movementPlane = new(axisWorld, leverVisual.position); + Vector3 targetPoint; + + if (movementPlane.Raycast(aimRay, out float enter) && enter >= 0f) + { + targetPoint = aimRay.GetPoint(enter); + } + else + { + float distanceAlongRay = Mathf.Max( + 0.25f, + Vector3.Dot(leverVisual.position - aimRay.origin, aimRay.direction)); + targetPoint = aimRay.GetPoint(distanceAlongRay); + } + + Vector3 desiredDirection = Vector3.ProjectOnPlane( + targetPoint - leverVisual.position, + axisWorld); + if (desiredDirection.sqrMagnitude < 0.0001f) + return false; + + float desiredAngle = Vector3.SignedAngle( + neutralDirectionWorld, + desiredDirection.normalized, + axisWorld); + desiredAngle = Mathf.Clamp(desiredAngle, minimumAngle, maximumAngle); + targetValue = Mathf.InverseLerp(minimumAngle, maximumAngle, desiredAngle); + return true; + } + + private void MoveTowardsValue(float targetValue) + { + float angleRange = Mathf.Max(0.01f, maximumAngle - minimumAngle); + float valueStep = movementSpeed / angleRange * Time.fixedDeltaTime; + float nextValue = Mathf.MoveTowards( + synchronizedValue.Value, + Mathf.Clamp01(targetValue), + valueStep); + + if (Mathf.Approximately(nextValue, synchronizedValue.Value)) + return; + + synchronizedValue.Value = nextValue; + UpdateActivationState(nextValue); + } + + private void UpdateActivationState(float currentValue) + { + bool nextState = isActivated.Value; + + if (!nextState && currentValue >= activationThreshold) + nextState = true; + else if (nextState && currentValue <= deactivationThreshold) + nextState = false; + + if (nextState != isActivated.Value) + isActivated.Value = nextState; + } + + private void HandleValueChanged(float _, float currentValue) + { + ApplyVisual(currentValue); + leverValueChanged?.Invoke(currentValue); + } + + private void HandleActivationChanged(bool _, bool currentState) => + leverStateChanged?.Invoke(currentState); + + private void ApplyVisual(float value) + { + if (leverVisual == null) + return; + + float angle = Mathf.Lerp(minimumAngle, maximumAngle, Mathf.Clamp01(value)); + leverVisual.localRotation = NeutralLocalRotation * + Quaternion.AngleAxis(angle, RotationAxis); + } + + [ContextMenu("Preview/Minimum")] + private void PreviewMinimum() => ApplyVisual(0f); + + [ContextMenu("Preview/Rest")] + private void PreviewRest() => ApplyVisual(restValue); + + [ContextMenu("Preview/Maximum")] + private void PreviewMaximum() => ApplyVisual(1f); +} diff --git a/Assets/CONTENT/Game/Scripts/Interaction/NetworkPhysicalLeverInteractable.cs.meta b/Assets/CONTENT/Game/Scripts/Interaction/NetworkPhysicalLeverInteractable.cs.meta new file mode 100644 index 0000000..b617af2 --- /dev/null +++ b/Assets/CONTENT/Game/Scripts/Interaction/NetworkPhysicalLeverInteractable.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 262775fc01b9c8a47a82f30b50d7b12a \ No newline at end of file diff --git a/Assets/CONTENT/Game/Scripts/Items/NetworkHandItemInteractable.cs b/Assets/CONTENT/Game/Scripts/Items/NetworkHandItemInteractable.cs index 9c368df..c87a42d 100644 --- a/Assets/CONTENT/Game/Scripts/Items/NetworkHandItemInteractable.cs +++ b/Assets/CONTENT/Game/Scripts/Items/NetworkHandItemInteractable.cs @@ -92,7 +92,9 @@ public abstract class NetworkHandItemInteractable : NetworkInteractable, IUsable } protected override bool CanInteractOnServer(ulong senderClientId) => - !IsHeld && !TryGetHeldItem(senderClientId, out _); + !IsHeld && + !TryGetHeldItem(senderClientId, out _) && + !NetworkHeldInteractable.TryGetHeldObject(senderClientId, out _); protected override void InteractOnServer(ulong senderClientId, NetworkObject playerObject) { @@ -123,7 +125,12 @@ public abstract class NetworkHandItemInteractable : NetworkInteractable, IUsable return; } - Vector3 throwVelocity = playerObject.transform.forward * throwForce + + FirstPersonCameraController cameraController = + playerObject.GetComponent(); + Vector3 throwDirection = cameraController != null + ? cameraController.AimForward + : playerObject.transform.forward; + Vector3 throwVelocity = throwDirection * throwForce + Vector3.up * throwUpwardForce; holderClientId.Value = NoHolder; diff --git a/Assets/CONTENT/Game/Scripts/Player/FirstPersonCameraController.cs b/Assets/CONTENT/Game/Scripts/Player/FirstPersonCameraController.cs index 6640a8f..4fbd2d3 100644 --- a/Assets/CONTENT/Game/Scripts/Player/FirstPersonCameraController.cs +++ b/Assets/CONTENT/Game/Scripts/Player/FirstPersonCameraController.cs @@ -5,12 +5,20 @@ public sealed class FirstPersonCameraController : NetworkBehaviour, IPlayerSyste { [SerializeField, Range(1f, 89f)] private float verticalLookLimit = 80f; + private readonly NetworkVariable synchronizedPitch = new( + 0f, + NetworkVariableReadPermission.Everyone, + NetworkVariableWritePermission.Owner); + private Camera playerCamera; private AudioListener audioListener; private MeshRenderer playerRenderer; private float pitch; private bool isInitialized; + public Transform AimTransform => playerCamera != null ? playerCamera.transform : transform; + public Vector3 AimForward => AimTransform.forward; + public void Initialize(PlayerFacade facade) { playerCamera = GetComponentInChildren(true); @@ -24,6 +32,9 @@ public sealed class FirstPersonCameraController : NetworkBehaviour, IPlayerSyste bool isLocalPlayer = IsOwner; playerCamera.gameObject.SetActive(isLocalPlayer); + if (!isLocalPlayer) + ApplyCameraPitch(synchronizedPitch.Value); + if (!isLocalPlayer) return; @@ -43,21 +54,48 @@ public sealed class FirstPersonCameraController : NetworkBehaviour, IPlayerSyste Cursor.visible = false; } + public override void OnNetworkSpawn() + { + synchronizedPitch.OnValueChanged += HandleSynchronizedPitchChanged; + + if (isInitialized && !IsOwner) + ApplyCameraPitch(synchronizedPitch.Value); + } + public void ApplyPitch(float pitchDelta) { if (!isInitialized || !IsOwner) return; pitch = Mathf.Clamp(pitch - pitchDelta, -verticalLookLimit, verticalLookLimit); - playerCamera.transform.localRotation = Quaternion.Euler(pitch, 0f, 0f); + ApplyCameraPitch(pitch); + + if (IsSpawned) + synchronizedPitch.Value = pitch; } public override void OnNetworkDespawn() { + synchronizedPitch.OnValueChanged -= HandleSynchronizedPitchChanged; + if (IsOwner) { Cursor.lockState = CursorLockMode.None; Cursor.visible = true; } } + + private void HandleSynchronizedPitchChanged(float _, float currentPitch) + { + if (!IsOwner) + ApplyCameraPitch(currentPitch); + } + + private void ApplyCameraPitch(float currentPitch) + { + pitch = currentPitch; + + if (playerCamera != null) + playerCamera.transform.localRotation = Quaternion.Euler(pitch, 0f, 0f); + } } diff --git a/Assets/CONTENT/Game/Scripts/Player/PlayerCarryController.cs b/Assets/CONTENT/Game/Scripts/Player/PlayerCarryController.cs new file mode 100644 index 0000000..935a0d6 --- /dev/null +++ b/Assets/CONTENT/Game/Scripts/Player/PlayerCarryController.cs @@ -0,0 +1,27 @@ +using Unity.Netcode; +using UnityEngine; +using UnityEngine.InputSystem; + +public sealed class PlayerCarryController : NetworkBehaviour, IPlayerSystem +{ + private bool isInitialized; + + public void Initialize(PlayerFacade facade) + { + isInitialized = true; + } + + private void Update() + { + if (!isInitialized || !IsOwner || Keyboard.current == null) + return; + + if (Keyboard.current.gKey.wasPressedThisFrame && + NetworkHeldInteractable.TryGetHeldObject( + OwnerClientId, + out NetworkHeldInteractable heldObject)) + { + heldObject.RequestThrow(); + } + } +} diff --git a/Assets/CONTENT/Game/Scripts/Player/PlayerCarryController.cs.meta b/Assets/CONTENT/Game/Scripts/Player/PlayerCarryController.cs.meta new file mode 100644 index 0000000..aa0be85 --- /dev/null +++ b/Assets/CONTENT/Game/Scripts/Player/PlayerCarryController.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 5e63651da7abbf744bc45585a2133e6f \ No newline at end of file diff --git a/Assets/CONTENT/Game/Scripts/Player/PlayerInteractionController.cs b/Assets/CONTENT/Game/Scripts/Player/PlayerInteractionController.cs index 98b6a74..b45a3ed 100644 --- a/Assets/CONTENT/Game/Scripts/Player/PlayerInteractionController.cs +++ b/Assets/CONTENT/Game/Scripts/Player/PlayerInteractionController.cs @@ -9,6 +9,8 @@ public sealed class PlayerInteractionController : NetworkBehaviour, IPlayerSyste private Camera playerCamera; private IInteractable focusedInteractable; + private IPlayerInteractionSession activeSession; + private bool activeSessionReleaseRequested; private bool isInitialized; public void Initialize(PlayerFacade facade) @@ -22,6 +24,23 @@ public sealed class PlayerInteractionController : NetworkBehaviour, IPlayerSyste if (!isInitialized || !IsOwner || Keyboard.current == null) return; + if (PlayerInteractionSessionRegistry.TryGetControlledSession( + OwnerClientId, + out activeSession)) + { + focusedInteractable = null; + + if (!Keyboard.current.eKey.isPressed && !activeSessionReleaseRequested) + { + activeSessionReleaseRequested = true; + activeSession.RequestRelease(); + } + + return; + } + + activeSession = null; + activeSessionReleaseRequested = false; focusedInteractable = FindFocusedInteractable(); if (Keyboard.current.eKey.wasPressedThisFrame && @@ -49,9 +68,26 @@ public sealed class PlayerInteractionController : NetworkBehaviour, IPlayerSyste private void OnGUI() { - if (!IsOwner || focusedInteractable == null) + if (!IsOwner) return; + if (activeSession != null) + { + DrawPrompt(activeSession.ReleasePrompt); + return; + } + + if (focusedInteractable == null) + return; + + string prompt = focusedInteractable.IsInteractionAvailable + ? "[E] " + focusedInteractable.InteractionPrompt + : "In use"; + DrawPrompt(prompt); + } + + private static void DrawPrompt(string prompt) + { GUIStyle style = new(GUI.skin.label) { alignment = TextAnchor.MiddleCenter, @@ -59,12 +95,7 @@ public sealed class PlayerInteractionController : NetworkBehaviour, IPlayerSyste normal = { textColor = Color.white } }; - string prompt = focusedInteractable.IsInteractionAvailable - ? "[E] " + focusedInteractable.InteractionPrompt - : "In use"; - Rect area = new(0f, Screen.height * 0.62f, Screen.width, 28f); GUI.Label(area, prompt, style); } } - diff --git a/Assets/CONTENT/Scenes/Factory.unity b/Assets/CONTENT/Scenes/Factory.unity index 23e1bce..4127c43 100644 --- a/Assets/CONTENT/Scenes/Factory.unity +++ b/Assets/CONTENT/Scenes/Factory.unity @@ -1424,6 +1424,11 @@ Transform: - {fileID: 1526513500} m_Father: {fileID: 771257782} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!54 &29078091 stripped +Rigidbody: + m_CorrespondingSourceObject: {fileID: 5633296382699422203, guid: 814d56a483938ef489a23f2e2973989a, type: 3} + m_PrefabInstance: {fileID: 1477036089} + m_PrefabAsset: {fileID: 0} --- !u!1 &35551884 GameObject: m_ObjectHideFlags: 0 @@ -21691,6 +21696,171 @@ MonoBehaviour: m_SelectedFaces: m_SelectedEdges: [] m_SelectedVertices: +--- !u!43 &410975406 +Mesh: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: pb_Mesh288302 + serializedVersion: 11 + m_SubMeshes: + - serializedVersion: 2 + firstByte: 0 + indexCount: 138 + topology: 0 + baseVertex: 0 + firstVertex: 0 + vertexCount: 74 + localAABB: + m_Center: {x: 0, y: -0.000000059604645, z: 0} + m_Extent: {x: 0.17792217, y: 0.101614416, z: 0.17792225} + m_Shapes: + vertices: [] + shapes: [] + channels: [] + fullWeights: [] + m_BindPose: [] + m_BoneNameHashes: + m_RootBoneNameHash: 0 + m_BonesAABB: [] + m_VariableBoneCountWeights: + m_Data: + m_MeshCompression: 0 + m_IsReadable: 1 + m_KeepVertices: 1 + m_KeepIndices: 1 + m_IndexFormat: 0 + m_IndexBuffer: 000001000200030000000200040005000600070004000600080009000a000b0008000a000c000d000e000f000c000e001000110012001300100012001000130014001500160017001800150017001500180019001a001b001c001d001c001b001d001e001c001f0020002100220021002000220023002100240025002600250027002600280029002a0029002b002a001f0021002c0021002d002c001c001e002e001e002f002e00150019003000190031003000110010003200100033003200340035003600350037003600380039003a0039003b003a003c003d003e003c003f003d00160015004000150041004000420028004300280044004300210023004500230046004500390047004800470049004800 + m_VertexData: + serializedVersion: 3 + m_VertexCount: 74 + m_Channels: + - stream: 0 + offset: 0 + format: 0 + dimension: 3 + - stream: 0 + offset: 12 + format: 0 + dimension: 3 + - stream: 0 + offset: 24 + format: 0 + dimension: 4 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 40 + format: 0 + dimension: 2 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + m_DataSize: 3552 + _typelessdata: 0000803280e1513d403136be000000000000803f000000000000803f0000000000000000000080bf00008032403136be3b3136be80e1513d403136be000000000000803f000000000000803f0000000000000000000080bf3b3136be403136be3b3136be80e1513d00000000000000000000803f000000000000803f0000000000000000000080bf3b3136be000000000000803280e1513d00000000000000000000803f000000000000803f0000000000000000000080bf000080320000000000008032007d6ebd00000000000000000000803f000000000000803f0000000000000000000080bf0000803200000000393136be007d6ebd00000000000000000000803f000000000000803f0000000000000000000080bf393136be00000000393136be007d6ebd4031363e000000000000803f000000000000803f0000000000000000000080bf393136be4031363e00008032007d6ebd4031363e000000000000803f000000000000803f0000000000000000000080bf000080324031363e3b31363ec040a3bc00000000000000000000803f000000000000803f0000000000000000000080bf3b31363e0000000000008032c040a3bc00000000000000000000803f000000000000803f0000000000000000000080bf000080320000000000008032c040a3bc4031363e000000000000803f000000000000803f0000000000000000000080bf000080324031363e3b31363ec040a3bc4031363e000000000000803f000000000000803f0000000000000000000080bf3b31363e4031363e3b31363e301bd03d403136be000000000000803f000000000000803f0000000000000000000080bf3b31363e403136be00008032301bd03d403136be000000000000803f000000000000803f0000000000000000000080bf00008032403136be00008032301bd03d00000000000000000000803f000000000000803f0000000000000000000080bf00008032000000003b31363e301bd03d00000000000000000000803f000000000000803f0000000000000000000080bf3b31363e00000000393136be007d6ebd00000000000080bf00000000000000000000000000000000000080bf000080bf00000080007d6ebd393136be007d6ebd403136be000080bf00000000000000000000000000000000000080bf000080bf4031363e007d6ebd393136be401bd0bd403136be000080bf00000000000000000000000000000000000080bf000080bf4031363e401bd0bd393136be401bd0bd4031363e000080bf00000000000000000000000000000000000080bf000080bf403136be401bd0bd393136be007d6ebd4031363e000080bf00000000000000000000000000000000000080bf000080bf403136be007d6ebd00008032007d6ebd403136be0000000000000000000080bf0000803f0000000000000000000080bf00008032007d6ebd3b31363e007d6ebd403136be0000000000000000000080bf0000803f0000000000000000000080bf3b31363e007d6ebd3b31363e401bd0bd403136be0000000000000000000080bf0000803f0000000000000000000080bf3b31363e401bd0bd393136be401bd0bd403136be0000000000000000000080bf0000803f0000000000000000000080bf393136be401bd0bd393136be007d6ebd403136be0000000000000000000080bf0000803f0000000000000000000080bf393136be007d6ebd393136be007d6ebd4031363e00000000000000000000803f000080bf0000000000000000000080bf3931363e007d6ebd393136be401bd0bd4031363e00000000000000000000803f000080bf0000000000000000000080bf3931363e401bd0bd00008032007d6ebd4031363e00000000000000000000803f000080bf0000000000000000000080bf000080b2007d6ebd3b31363e401bd0bd4031363e00000000000000000000803f000080bf0000000000000000000080bf3b3136be401bd0bd3b31363e007d6ebd4031363e00000000000000000000803f000080bf0000000000000000000080bf3b3136be007d6ebd3b31363e007d6ebd4031363e0000803f000000000000000000000000000000000000803f000080bf4031363e007d6ebd3b31363e401bd0bd4031363e0000803f000000000000000000000000000000000000803f000080bf4031363e401bd0bd3b31363e007d6ebd000000000000803f000000000000000000000000000000000000803f000080bf00000000007d6ebd3b31363e401bd0bd403136be0000803f000000000000000000000000000000000000803f000080bf403136be401bd0bd3b31363e007d6ebd403136be0000803f000000000000000000000000000000000000803f000080bf403136be007d6ebd3b31363e007d6ebd000000000000000000000000000080bf0000803f0000000000000000000080bf3b31363e007d6ebd00008032007d6ebd000000000000000000000000000080bf0000803f0000000000000000000080bf00008032007d6ebd3b31363ec040a3bc000000000000000000000000000080bf0000803f0000000000000000000080bf3b31363ec040a3bc00008032c040a3bc000000000000000000000000000080bf0000803f0000000000000000000080bf00008032c040a3bc00008032007d6ebd00000000000080bf00000000000000000000000000000000000080bf000080bf00000000007d6ebd00008032007d6ebd4031363e000080bf00000000000000000000000000000000000080bf000080bf403136be007d6ebd00008032c040a3bc00000000000080bf00000000000000000000000000000000000080bf000080bf00000000c040a3bc00008032c040a3bc4031363e000080bf00000000000000000000000000000000000080bf000080bf403136bec040a3bc3b31363ec040a3bc4031363e0000803f000000000000000000000000000000000000803f000080bf4031363ec040a3bc3b31363ec040a3bc000000000000803f000000000000000000000000000000000000803f000080bf00000000c040a3bc00008032c040a3bc4031363e00000000000000000000803f000080bf0000000000000000000080bf000080b2c040a3bc3b31363ec040a3bc4031363e00000000000000000000803f000080bf0000000000000000000080bf3b3136bec040a3bc0000803280e1513d403136be0000000000000000000080bf0000803f0000000000000000000080bf0000803280e1513d3b3136be80e1513d403136be0000000000000000000080bf0000803f0000000000000000000080bf3b3136be80e1513d3b3136be80e1513d403136be000080bf4f2a92b4000000000000000000000000000080bf000080bf4031363e8de1513d3b3136be80e1513d00000000000080bf4f2a92b4000000000000000000000000000080bf000080bf000000008de1513d00008032007d6ebd000000000000803f000000000000000000000000000000000000803f000080bf00000000007d6ebd00008032007d6ebd403136be0000803f000000000000000000000000000000000000803f000080bf403136be007d6ebd0000803280e1513d000000000000803f000000000000000000000000000000000000803f000080bf0000000080e1513d0000803280e1513d403136be0000803f000000000000000000000000000000000000803f000080bf403136be80e1513d393136be007d6ebd0000000000000000000000000000803f000080bf0000000000000000000080bf3931363e007d6ebd00008032007d6ebd0000000000000000000000000000803f000080bf0000000000000000000080bf000080b2007d6ebd3b3136be80e1513d0000000000000000000000000000803f000080bf0000000000000000000080bf3b31363e80e1513d0000803280e1513d0000000000000000000000000000803f000080bf0000000000000000000080bf000080b280e1513d393136be401bd0bd4031363e00000000000080bf00000000000080bf0000000000000000000080bf3931363e4031363e3b31363e401bd0bd403136be00000000000080bf00000000000080bf0000000000000000000080bf3b3136be403136be3b31363e401bd0bd4031363e00000000000080bf00000000000080bf0000000000000000000080bf3b3136be4031363e393136be401bd0bd403136be00000000000080bf00000000000080bf0000000000000000000080bf3931363e403136be3b31363e301bd03d403136be0000000000000000000080bf0000803f0000000000000000000080bf3b31363e301bd03d00008032301bd03d403136be0000000000000000000080bf0000803f0000000000000000000080bf00008032301bd03d00008032007d6ebd403136be000080bf00000000000000000000000000000000000080bf000080bf4031363e007d6ebd00008032301bd03d403136be000080bf00000000000000000000000000000000000080bf000080bf4031363e301bd03d00008032301bd03d00000000000080bf00000000000000000000000000000000000080bf000080bf00000000301bd03d3b31363e301bd03d000000000000803f000000000000000000000000000000000000803f000080bf00000000301bd03d3b31363e301bd03d403136be0000803f000000000000000000000000000000000000803f000080bf403136be301bd03d3b31363e007d6ebd0000000000000000000000000000803f000080bf0000000000000000000080bf3b3136be007d6ebd00008032301bd03d0000000000000000000000000000803f000080bf0000000000000000000080bf000080b2301bd03d3b31363e301bd03d0000000000000000000000000000803f000080bf0000000000000000000080bf3b3136be301bd03d + m_CompressedMesh: + m_Vertices: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_UV: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Normals: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Tangents: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Weights: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_NormalSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_TangentSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_FloatColors: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_BoneIndices: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_Triangles: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_UVInfo: 0 + m_LocalAABB: + m_Center: {x: 0, y: -0.000000059604645, z: 0} + m_Extent: {x: 0.17792217, y: 0.101614416, z: 0.17792225} + m_MeshUsageFlags: 0 + m_CookingOptions: 30 + m_BakedConvexCollisionMesh: + m_BakedTriangleCollisionMesh: + 'm_MeshMetrics[0]': 1 + 'm_MeshMetrics[1]': 1 + m_MeshOptimizationFlags: 1 + m_StreamData: + serializedVersion: 2 + offset: 0 + size: 0 + path: --- !u!43 &423306039 Mesh: m_ObjectHideFlags: 0 @@ -22547,6 +22717,171 @@ Transform: m_Children: [] m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: -90, y: 0, z: 0} +--- !u!43 &477881300 +Mesh: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: pb_Mesh274118 + serializedVersion: 11 + m_SubMeshes: + - serializedVersion: 2 + firstByte: 0 + indexCount: 240 + topology: 0 + baseVertex: 0 + firstVertex: 0 + vertexCount: 114 + localAABB: + m_Center: {x: 0.000000022351742, y: -0.000000014901161, z: 0} + m_Extent: {x: 0.23294654, y: 0.41744506, z: 0.2380414} + m_Shapes: + vertices: [] + shapes: [] + channels: [] + fullWeights: [] + m_BindPose: [] + m_BoneNameHashes: + m_RootBoneNameHash: 0 + m_BonesAABB: [] + m_VariableBoneCountWeights: + m_Data: + m_MeshCompression: 0 + m_IsReadable: 1 + m_KeepVertices: 1 + m_KeepIndices: 1 + m_IndexFormat: 0 + m_IndexBuffer: 00000100020003000100000004000100030005000100040006000100050007000100060008000100070002000100080009000a000b000b000a000c000c000a000d000d000a000e000e000a000f000f000a00100010000a00110011000a0009001200130014001500120014001600170018001700190018001a001b001c001b001d001c001e001f0020001e0021001f002200230024002200240025002600270028002600290027002a002b002c002a002d002b002e002f0030002f00310030001500140032001500320033003300320034003300340035003600180037001800190037003800360039003600370039001d003a001c001d003b003a003b003c003a003b003d003c003e003f0040003e00400041003f001e0020003f00200040004200430023002200420023004400430045004500430042004600470048004800470049004900470026002800490026004a004b004c004a004c004d004b002a002c004c004b002c004e00300031004e0031004f0050004e004f0050004f0051005200530054005300550054005600570058005700590058005a005b005c005b005d005c005e005f0060005f00610060006200630064006300650064006600670068006700690068006a006b006c006b006d006c006e006f0070006f0071007000 + m_VertexData: + serializedVersion: 3 + m_VertexCount: 114 + m_Channels: + - stream: 0 + offset: 0 + format: 0 + dimension: 3 + - stream: 0 + offset: 12 + format: 0 + dimension: 3 + - stream: 0 + offset: 24 + format: 0 + dimension: 4 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 40 + format: 0 + dimension: 2 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + m_DataSize: 5472 + _typelessdata: dfab283e5cbbd5be425c2c3e00000000000080bf00000000000080bf0000000000000000000080bfdfab28be425c2c3efccff9335cbbd5be0000000000000000000080bf00000000000080bf0000000000000000000080bffccff9b3000000008c896e3e5cbbd5be0000000000000000000080bf00000000000080bf0000000000000000000080bf8c896ebe00000000fccfe5335cbbd5be20c1733e00000000000080bf00000000000080bf0000000000000000000080bffccfe5b320c1733ecfab28be5cbbd5be425c2c3e00000000000080bf00000000000080bf0000000000000000000080bfcfab283e425c2c3e7c896ebe5cbbd5be0000b0b200000000000080bf00000000000080bf0000000000000000000080bf7c896e3e0000b0b2d0ab28be5cbbd5be415c2cbe00000000000080bf00000000000080bf0000000000000000000080bfd0ab283e415c2cbefccffd335cbbd5be20c173be00000000000080bf00000000000080bf0000000000000000000080bffccffdb320c173beddab283e5cbbd5be445c2cbe00000000000080bf00000000000080bf0000000000000000000080bfddab28be445c2cbe8b896e3e5abbd53e00000000de5e09340000803f4fbb5e330000803fde5e09b44fbb5e9c000080bf87896e3edbf4b9b288648d325bbbd53e00000000de5e09340000803f4fbb5e330000803fde5e09b44fbb5e9c000080bfacae1eb3dbf4b9b2dbab283e5abbd53e405c2c3ede5e09340000803f4fbb5e330000803fde5e09b44fbb5e9c000080bfd7ab283e3f5c2c3e88648d325bbbd53e20c1733e774542340000803f000000000000803f774542b400000000000080bfb0b17db320c1733ed8ab28be59bbd53e405c2c3e7845c2b40000803f000000000000803f7845c23400000000000080bfceab28be405c2c3e89896ebe59bbd53e00000000de5e89b40000803f52bbde330000803fde5e893400000000000080bf82896ebeddf439b3d8ab28be59bbd53e405c2cbede5e89b40000803f52bbdeb30000803fde5e893400000000000080bfd1ab28be3d5c2cbe88648d325bbbd53e20c173be7845c2b40000803f000000000000803f7845c23400000000000080bf8cde333420c173bedbab283e5abbd53e405c2cbe774542340000803f000000000000803f774542b400000000000080bfd6ab283e405c2cbedfab283e5cbbd5be425c2c3e1566363faf34a0321ca1333f1ca133bf67b204b21466363f000080bf30bfc03d5abbd5be8c896e3e5cbbd5be000000000000803f4fd0a133ac1d8ab3ad1d8a33852e03330000803f000080bfa737b3bd5abbd5be89896e3eb80c343e000000005ec6683f1817d53ef52e94b2a9ca8dbddce31a3eda6e7c3f000080bfa437b3bdbc0c343ee1ab283eb80c343e405c2c3ef5b7253f1892d63e74fb223fdbd023bff7b11ebe98ae403f000080bf2bbfc03dbc0c343efccfe5335cbbd5be20c1733ebc7d50b3c2719e310000803f000080bf682106b17dfe0ab3000080bff106be3d5cbbd5bedfab283e5cbbd5be425c2c3e1566363faf34a0321ca1333f1ca133bf69b204321566363f000080bf4d4ab0bd5cbbd5bea57ee533b80c343e20c1733e112b95b3b515d83e6d15683fb2027cbf804023be76ff973d000080bff106be3db80c343ee1ab283eb80c343e405c2c3ef5b7253f1892d63e74fb223ff0f43dbfd3481f3ee7ee263f000080bf524ab0bdb80c343ecfab28be5cbbd5be425c2c3e136636bf5c5c45b31da1333f1da133bfd178a332136636bf000080bf234ab03d5bbbd5befccfe5335cbbd5be20c1733ebc7d50b3c2719e310000803f000080bf682106317efe0ab3000080bf1907bebd5bbbd5bed2ab28beb70c343e405c2c3eefb725bf1d92d63e77fb223ff5f43dbfca481fbee2ee26bf000080bf2a4ab03dba0c343ea57ee533b80c343e20c1733e112b95b3b515d83e6d15683fb1027cbf7e40233e86ff97bd000080bf1907bebdbb0c343e82896ebeb80c343e000000005cc668bf2017d53e00000000bcca8dbde9e31abeda6e7cbf000080bfb437b33db90c343ecfab28be5cbbd5be425c2c3e136636bf5c5c45b31da1333f1ca133bfcd78a3b2146636bf000080bf2abfc0bd5bbbd5bed2ab28beb70c343e405c2c3eefb725bf1d92d63e77fb223fe1d023bff6b11e3e94ae40bf000080bf24bfc0bdb80c343e7c896ebe5cbbd5be0000b0b2000080bf4fd021b4ac1d8ab200000000822e8333000080bf000080bfb237b33d5bbbd5be82896ebeb80c343e000000005cc668bf2017d53e00000000bdca8d3deae31a3eda6e7cbf000080bfa637b3bdbc0c343ed2ab28beb70c343e405c2cbef2b725bf1a92d63e75fb22bfdfd0233fedb11ebe96ae40bf000080bf30bfc03dbb0c343ed0ab28be5cbbd5be415c2cbe136636bf90e542b31da133bf1ea1333f536ea132136636bf000080bf34bfc03d5abbd5be7c896ebe5cbbd5be0000b0b2000080bf4fd021b4ac1d8ab200000000842e83b3000080bf000080bf9e37b3bd5abbd5bea57ee533b80c343e20c173be112b15b3b415d83e6d1568bfb2027c3f7e4023be82ff97bd000080bf0f07be3db80c343ed0ab28be5cbbd5be415c2cbe136636bf90e542b31da133bf1da1333f546ea1b2136636bf000080bf2e4ab0bd5cbbd5bed2ab28beb70c343e405c2cbef2b725bf1a92d63e75fb22bff1f43d3fce481f3ee5ee26bf000080bf324ab0bdb70c343efccffd335cbbd5be20c173be7efe8ab3501f6132000080bf0000803f9493beb17efe8ab3000080bf1007be3d5cbbd5bee1ab283eb80c343e405c2cbef4b7253f1892d63e74fb22bff0f43d3fd7481fbee8ee263f000080bf4a4ab03dbb0c343efccffd335cbbd5be20c173be7efe8ab3501f6132000080bf0000803f9493be317efe8ab3000080bff706bebd5bbbd5bea57ee533b80c343e20c173be112b15b3b415d83e6d1568bfb2027c3f8040233e7aff973d000080bff806bebdbb0c343eddab283e5cbbd5be445c2cbe1366363ff9d50c331da133bf1ea1333f504e69b21366363f000080bf3f4ab03d5bbbd5be8c896e3e5cbbd5be000000000000803f4fd0a133ac1d8ab3ad1d8a33842e03b30000803f000080bfa837b33d5abbd5beddab283e5cbbd5be445c2cbe1366363ff9d50c331da133bf1da1333f4e4e69321366363f000080bf34bfc0bd5abbd5be89896e3eb80c343e000000005ec6683f1817d53ef52e94b2b3ca8d3ddce31abeda6e7c3f000080bfa637b33dbc0c343ee1ab283eb80c343e405c2cbef4b7253f1892d63e74fb22bfdcd0233ffab11e3e98ae403f000080bf2abfc0bdbc0c343e5912003ed1808b3e000000000000803f9a4e3ab53eba46b200000000c10997b40000803f000080bff47140bdd2808b3ef21eb53dd1808b3e0015b93ddbb1363f6e2b7ab40954333f0a5433bf533fce33dab1363f000080bf1bf94e3dd2808b3e8c896e3e41fbbc3e000000003fd02a3f04ae3ebf5a9904b399735cbec67b45beda12753f000080bfa737b3bd43fbbc3edfab283e41fbbc3e425c2c3e2759f23e6e963fbfede1ed3ed50d03bfa536483e9423563f000080bf30bfc03d43fbbc3ee03bfe33d0808b3e60df023ecffd3cb414fd7b340000803f000080bf9a51d5b313be2db4000080bf5b0d4c3dd0808b3ef21eb53dd1808b3e0015b93ddbb1363f6e2b7ab40954333f085433bf5e2ed0b3dcb1363f000080bf5d4d3dbdd1808b3efccfe53341fbbc3e20c1733ea6e304b3d48040bf79c1283f0cf173bf19bb4c3e6d8a693e000080bff106be3d41fbbc3edfab283e41fbbc3e425c2c3e2759f23e6e963fbfede1ed3e8ede53bffaec49be5588063f000080bf4d4ab0bd41fbbc3ec11eb5bdd1808b3e0015b93dd7b136bf712bfab30d54333f0e5433bf422e5033d8b136bf000080bff54c3d3dd2808b3ee03bfe33d0808b3e60df023ecffd3cb414fd7b340000803f000080bf9a51d53313be2db4000080bfa40d4cbdd1808b3ecfab28be41fbbc3e425c2c3e2159f2be71963fbfe4e1ed3e8ede53bff2ec493e568806bf000080bf234ab03d42fbbc3efccfe53341fbbc3e20c1733ea6e304b3d48040bf79c1283f0bf173bf18bb4cbe738a69be000080bf1907bebd42fbbc3e7c896ebe41fbbc3e0000b0b23dd02abf06ae3ebfb2bf2534bd735cbed37b453ed71275bf000080bfb237b33d42fbbc3e491200bed1808b3e00000000000080bffde2adb4ea25d334832ccfb422f80c34000080bf000080bff271403dd1808b3ec11eb5bdd1808b3e0015b93dd7b136bf712bfab30d54333f0e5433bf3c3f4eb3d7b136bf000080bf2cf94ebdd1808b3ecfab28be41fbbc3e425c2c3e2159f2be71963fbfe4e1ed3ed20d03bf9d3648be962356bf000080bf2abfc0bd42fbbc3e491200bed1808b3e00000000000080bffde2adb4ea25d334832ccfb423f80cb4000080bf000080bfe37140bdd2808b3ed11eb5bdd1808b3e0015b9bddbb136bf162761b4095433bf0a54333f629fb933dab136bf000080bf2df94e3dd2808b3ed0ab28be41fbbc3e415c2cbe2659f2be6e963fbfede1edbed50d033fa536483e942356bf000080bf34bfc03d43fbbc3e7c896ebe41fbbc3e0000b0b23dd02abf06ae3ebfb2bf25349b735c3ed07b45bed81275bf000080bf9e37b3bd43fbbc3efccffd3341fbbc3e20c173be795547b3d48040bf79c128bf0bf1733f18bb4c3e728a69be000080bf1007be3d41fbbc3ee03bfe33d0808b3e60df02be4297c9b2e6caa334000080bf0000803f5fa80ab47bfe0ab3000080bf9a0d4c3dd0808b3ed0ab28be41fbbc3e415c2cbe2659f2be6e963fbfede1edbe8dde533ff5ec49be558806bf000080bf2e4ab0bd41fbbc3ed11eb5bdd1808b3e0015b9bddbb136bf162761b4095433bf0954333ffe5cbbb3dcb136bf000080bf1c4d3dbdd1808b3eddab283e41fbbc3e445c2cbe2759f23e6c963fbfeee1edbe8ede533ff8ec493e5588063f000080bf3f4ab03d42fbbc3ef21eb53dd1808b3e0015b9bddbb1363f6e2b7ab4095433bf0954333f712ed033dcb1363f000080bf544d3d3dd2808b3ee03bfe33d0808b3e60df02be4297c9b2e6caa334000080bf0000803f5ea80a347afe0ab3000080bf630d4cbdd1808b3efccffd3341fbbc3e20c173be795547b3d48040bf79c128bf0cf1733f16bb4cbe6b8a693e000080bff706bebd42fbbc3e5912003ed1808b3e000000000000803f9a4e3ab53eba46b200000000c20997340000803f000080bff671403dd2808b3ef21eb53dd1808b3e0015b9bddbb1363f6e2b7ab4095433bf0a54333f513fceb3dab1363f000080bf19f94ebdd2808b3e8c896e3e41fbbc3e000000003fd02a3f04ae3ebf5a9904b39e735c3ec67b453eda12753f000080bfa837b33d43fbbc3eddab283e41fbbc3e445c2cbe2759f23e6c963fbfeee1edbed70d033fa13648be9423563f000080bf34bfc0bd43fbbc3e8c896e3e41fbbc3e00000000ff3f6d3f125f99346f56c0be7156c03e145f992800406d3f000080bfb337b33d3ffbbc3eddab283e41fbbc3e445c2cbeff3f6d3f843231357256c0be7256c03e8532b128ff3f6d3f000080bf2abfc0bd3ffbbc3e8b896e3e5abbd53e00000000ff3f6d3f843231357256c0be7256c03e8532b128ff3f6d3f000080bfb237b33d58bbd53edbab283e5abbd53e405c2cbeff3f6d3fc0da8a357656c0be7656c03ec0da0a29ff3f6d3f000080bf24bfc0bd58bbd53edfab283e41fbbc3e425c2c3e00406d3fac74b8356c56c03e6c56c0be0000000000406d3f000080bf28bfc03d37fbbc3e8c896e3e41fbbc3e0000000000406d3f70cc5e357156c03e7156c0be70ccdea800406d3f000080bfb037b3bd37fbbc3edbab283e5abbd53e405c2c3e00406d3f70cc5e357156c03e7156c0be70ccdea800406d3f000080bf27bfc03d50bbd53e8b896e3e5abbd53e00000000ff3f6d3f125f99347656c03e7656c0be125f19a8ff3f6d3f000080bfaf37b3bd50bbd53eddab283e41fbbc3e445c2cbef892c73effa7b83543c06bbf43c06b3fffa73829f892c73e000080bf354ab03d37fbbc3efccffd3341fbbc3e20c173befa92c73ea560933542c06bbf43c06b3f00000000fb92c73e000080bf0207bebd37fbbc3edbab283e5abbd53e405c2cbefa92c73ea560933542c06bbf43c06b3f00000000fb92c73e000080bf354ab03d50bbd53e88648d325bbbd53e20c173befd92c73e96325c3542c06bbf42c06b3f9632dc28fd92c73e000080bf0e07bebd51bbd53efccffd3341fbbc3e20c173befd92c7be97325cb542c06bbf42c06b3f00000000fd92c7be000080bf2407be3d47fbbc3ed0ab28be41fbbc3e415c2cbefe92c7be930349b542c06bbf42c06b3f00000000fe92c7be000080bf1b4ab0bd47fbbc3e88648d325bbbd53e20c173befe92c7be930349b542c06bbf42c06b3f00000000fe92c7be000080bf1707be3d61bbd53ed8ab28be59bbd53e405c2cbeff92c7be8fd435b542c06bbf42c06b3f00000000ff92c7be000080bf2b4ab0bd5fbbd53ed0ab28be41fbbc3e415c2cbe00406dbfb19911b66b56c0be6c56c03eb29991a901406dbf000080bf32bfc03d51fbbc3e7c896ebe41fbbc3e0000b0b2ff3f6dbf641240b67156c0be7256c03e0000000000406dbf000080bfa037b3bd51fbbc3ed8ab28be59bbd53e405c2cbeff3f6dbf641240b67156c0be7256c03e0000000000406dbf000080bf2abfc03d69bbd53e89896ebe59bbd53e00000000fe3f6dbf188b6eb67756c0be7856c03e198bee29fe3f6dbf000080bfad37b3bd69bbd53e7c896ebe41fbbc3e0000b0b200406dbffaf481b66b56c03e6b56c0be0000000000406dbf000080bfa537b33d5dfbbc3ecfab28be41fbbc3e425c2c3eff3f6dbf107550b67156c03e7156c0be1075d029ff3f6dbf000080bf35bfc0bd5dfbbc3e89896ebe59bbd53e00000000ff3f6dbf107550b67156c03e7156c0be1075d029ff3f6dbf000080bfad37b33d75bbd53ed8ab28be59bbd53e405c2c3efe3f6dbf2b001db67756c03e7756c0be2b009d29fe3f6dbf000080bf2abfc0bd75bbd53ecfab28be41fbbc3e425c2c3efc92c7be0ae209b542c06b3f42c06bbf00000000fc92c7be000080bf194ab03d45fbbc3efccfe53341fbbc3e20c1733efd92c7bef1f126b542c06b3f42c06bbf00000000fd92c7be000080bf2107bebd45fbbc3ed8ab28be59bbd53e405c2c3efd92c7bef1f126b542c06b3f42c06bbf00000000fd92c7be000080bf2b4ab03d5dbbd53e88648d325bbbd53e20c1733efe92c7bed80144b542c06b3f42c06bbf00000000fe92c7be000080bf1607bebd5fbbd53efccfe53341fbbc3e20c1733efb92c73ed501443543c06b3f43c06bbfd501c4a8fb92c73e000080bf0607be3d3cfbbc3edfab283e41fbbc3e425c2c3efc92c73e6cb66e3542c06b3f42c06bbf00000000fc92c73e000080bf394ab0bd3cfbbc3e88648d325bbbd53e20c1733efc92c73e6cb66e3542c06b3f42c06bbf00000000fc92c73e000080bf1107be3d56bbd53edbab283e5abbd53e405c2c3efe92c73e82b58c3542c06b3f42c06bbf82b50c29fe92c73e000080bf334ab0bd55bbd53e + m_CompressedMesh: + m_Vertices: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_UV: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Normals: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Tangents: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Weights: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_NormalSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_TangentSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_FloatColors: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_BoneIndices: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_Triangles: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_UVInfo: 0 + m_LocalAABB: + m_Center: {x: 0.000000022351742, y: -0.000000014901161, z: 0} + m_Extent: {x: 0.23294654, y: 0.41744506, z: 0.2380414} + m_MeshUsageFlags: 0 + m_CookingOptions: 30 + m_BakedConvexCollisionMesh: + m_BakedTriangleCollisionMesh: + 'm_MeshMetrics[0]': 1.4446633 + 'm_MeshMetrics[1]': 1 + m_MeshOptimizationFlags: 1 + m_StreamData: + serializedVersion: 2 + offset: 0 + size: 0 + path: --- !u!1 &485290107 GameObject: m_ObjectHideFlags: 0 @@ -28111,6 +28446,11 @@ GameObject: - component: {fileID: 592238526} - component: {fileID: 592238525} - component: {fileID: 592238524} + - component: {fileID: 592238530} + - component: {fileID: 592238533} + - component: {fileID: 592238532} + - component: {fileID: 592238531} + - component: {fileID: 592238534} m_Layer: 0 m_Name: Scrap-1 m_TagString: Untagged @@ -28137,9 +28477,9 @@ MeshCollider: m_ProvidesContacts: 0 m_Enabled: 1 serializedVersion: 5 - m_Convex: 0 + m_Convex: 1 m_CookingOptions: 30 - m_Mesh: {fileID: 782558222} + m_Mesh: {fileID: 1553446195} --- !u!33 &592238525 MeshFilter: m_ObjectHideFlags: 10 @@ -28147,7 +28487,7 @@ MeshFilter: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 592238523} - m_Mesh: {fileID: 782558222} + m_Mesh: {fileID: 1553446195} --- !u!23 &592238526 MeshRenderer: m_ObjectHideFlags: 0 @@ -28968,7 +29308,7 @@ MonoBehaviour: m_AreaError: 15 m_PreserveMeshAssetOnDestroy: 0 assetGuid: - m_Mesh: {fileID: 782558222} + m_Mesh: {fileID: 1553446195} m_VersionIndex: 3420 m_IsSelectable: 1 m_SelectedFaces: @@ -28989,6 +29329,143 @@ Transform: m_Children: [] m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &592238530 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 592238523} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d5a57f767e5e46a458fc5d3c628d0cbb, type: 3} + m_Name: + m_EditorClassIdentifier: + GlobalObjectIdHash: 106320073 + InScenePlacedSourceGlobalObjectIdHash: 0 + DeferredDespawnTick: 0 + Ownership: 1 + AlwaysReplicateAsRoot: 0 + SynchronizeTransform: 1 + m_InScenePlaced: 1 + ActiveSceneSynchronization: 0 + SceneMigrationSynchronization: 0 + SpawnWithObservers: 1 + DontDestroyWithOwner: 0 + AutoObjectParentSync: 1 + SyncOwnerTransformWhenParented: 1 + AllowOwnerToParent: 0 +--- !u!54 &592238531 +Rigidbody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 592238523} + serializedVersion: 4 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0.05 + m_CenterOfMass: {x: 0, y: 0, z: 0} + m_InertiaTensor: {x: 1, y: 1, z: 1} + m_InertiaRotation: {x: 0, y: 0, z: 0, w: 1} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ImplicitCom: 1 + m_ImplicitTensor: 1 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!114 &592238532 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 592238523} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fad79bb3d620ffb46b527a9e361c28ae, type: 3} + m_Name: + m_EditorClassIdentifier: + ShowTopMostFoldoutHeaderGroup: 1 + interactionLabel: Interact + maximumInteractionDistance: 3 + physicsBody: {fileID: 592238531} + objectColliders: [] + collisionRefreshInterval: 0.25 + throwForce: 6 + throwUpwardForce: 0.5 + carryOffset: {x: 0, y: -0.3, z: 1.25} +--- !u!114 &592238533 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 592238523} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e96cb6065543e43c4a752faaa1468eb1, type: 3} + m_Name: + m_EditorClassIdentifier: + ShowTopMostFoldoutHeaderGroup: 1 + NetworkTransformExpanded: 0 + AutoOwnerAuthorityTickOffset: 1 + PositionInterpolationType: 0 + RotationInterpolationType: 0 + ScaleInterpolationType: 0 + PositionLerpSmoothing: 1 + PositionMaxInterpolationTime: 0.1 + RotationLerpSmoothing: 1 + RotationMaxInterpolationTime: 0.1 + ScaleLerpSmoothing: 1 + ScaleMaxInterpolationTime: 0.1 + AuthorityMode: 0 + TickSyncChildren: 0 + UseUnreliableDeltas: 0 + SyncPositionX: 1 + SyncPositionY: 1 + SyncPositionZ: 1 + SyncRotAngleX: 1 + SyncRotAngleY: 1 + SyncRotAngleZ: 1 + SyncScaleX: 1 + SyncScaleY: 1 + SyncScaleZ: 1 + PositionThreshold: 0.001 + RotAngleThreshold: 0.01 + ScaleThreshold: 0.01 + UseQuaternionSynchronization: 0 + UseQuaternionCompression: 0 + UseHalfFloatPrecision: 0 + InLocalSpace: 0 + SwitchTransformSpaceWhenParented: 0 + Interpolate: 1 + SlerpPosition: 0 +--- !u!114 &592238534 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 592238523} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f6c0be61502bb534f922ebb746851216, type: 3} + m_Name: + m_EditorClassIdentifier: + ShowTopMostFoldoutHeaderGroup: 1 + NetworkRigidbodyBaseExpanded: 0 + UseRigidBodyForMotion: 1 + AutoUpdateKinematicState: 1 + AutoSetKinematicOnDespawn: 1 --- !u!43 &598809241 Mesh: m_ObjectHideFlags: 0 @@ -32349,171 +32826,6 @@ Mesh: offset: 0 size: 0 path: ---- !u!43 &782558222 -Mesh: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: pb_Mesh-101388 - serializedVersion: 11 - m_SubMeshes: - - serializedVersion: 2 - firstByte: 0 - indexCount: 144 - topology: 0 - baseVertex: 0 - firstVertex: 0 - vertexCount: 95 - localAABB: - m_Center: {x: 0.000000059604645, y: -0.000000059604645, z: 0} - m_Extent: {x: 0.18879586, y: 0.22353202, z: 0.18194556} - m_Shapes: - vertices: [] - shapes: [] - channels: [] - fullWeights: [] - m_BindPose: [] - m_BoneNameHashes: - m_RootBoneNameHash: 0 - m_BonesAABB: [] - m_VariableBoneCountWeights: - m_Data: - m_MeshCompression: 0 - m_IsReadable: 1 - m_KeepVertices: 1 - m_KeepIndices: 1 - m_IndexFormat: 0 - m_IndexBuffer: 000001000200030000000200040005000600070004000600080009000a000b0008000a000c000d000e000f000c000e00100011001200100013001100140015001600140017001500180019001a0018001b0019001c001d001e001c001f001d00200021002200230020002200240025002600270024002600280029002a002b0028002a002c002d002e002f002c002e00300031003200300033003100340035003600340037003500380039003a0038003b0039003c003d003e003c003f003d004000410042004300400042004400420045004600440045004700480049004a00470049004b004c004d004e004b004d004f00500051004f005200500053005400550053005600540057005800590057005a0058005b005c005d005b005e005c00 - m_VertexData: - serializedVersion: 3 - m_VertexCount: 95 - m_Channels: - - stream: 0 - offset: 0 - format: 0 - dimension: 3 - - stream: 0 - offset: 12 - format: 0 - dimension: 3 - - stream: 0 - offset: 24 - format: 0 - dimension: 4 - - stream: 0 - offset: 0 - format: 0 - dimension: 0 - - stream: 0 - offset: 40 - format: 0 - dimension: 2 - - stream: 0 - offset: 0 - format: 0 - dimension: 0 - - stream: 0 - offset: 0 - format: 0 - dimension: 0 - - stream: 0 - offset: 0 - format: 0 - dimension: 0 - - stream: 0 - offset: 0 - format: 0 - dimension: 0 - - stream: 0 - offset: 0 - format: 0 - dimension: 0 - - stream: 0 - offset: 0 - format: 0 - dimension: 0 - - stream: 0 - offset: 0 - format: 0 - dimension: 0 - - stream: 0 - offset: 0 - format: 0 - dimension: 0 - - stream: 0 - offset: 0 - format: 0 - dimension: 0 - m_DataSize: 4560 - _typelessdata: 00e778bc1083f33de0d28dbdb0d742bed53a543f1555a6beb31a793fe5706b3ef5b2893c000080bf3cf1253ea7b13f3f20d020be1083f33d80c6f1bd000000000000803f000000000000803f00000000933945b6000080bfd08ba83c2c33333fd8ef35be1083f33d004dd43cb0d742bed53a543f1555a6beb31a793fe5706b3ef5b2893c000080bf00000000630e583f00d1e6bb90e5643e80d9023db0d7c2beaa75283f155526bfcb9b5d3f9f29003f260ca437000080bfcc08363e4e99593f00d1e6bb90e5643e80d9023d0488aabe1a64523f5358c33e55566d3f6ee7bf3e4525013b000080bfcc08363e4e99593fd8ef35be1083f33d004dd43ca97c04bfa125553f540d4a3e0f6c593f9c24073f9855ae37000080bf00000000630e583fb8af05be1083f33d2017193e0488aabe1a64523f5358c33e55566d3f6ee7bf3e4525013b000080bf627e403dc5b1773f00d1e6bb1083f33df04f3a3e6a2d18be94a24f3ffed4103fe5ce7b3f848c383e44f69c36000080bf84432e3e0000803f1063123e1083f33d80c6f1bd0c4d373ed500413fd399b1bea84d793f7b7f68be3297143c000080bfc6baa33e3c33333f00e778bc1083f33de0d28dbd233b5bbe350a303fd39931bf4b6d743f1734983e9bee2537000080bf3cf1253ea7b13f3f00d1e6bb90e5643e80d9023d0c4d373ed500413fd399b1bea84d793f7b7f68be3297143c000080bfcc08363e4e99593f1063123e1083f33d60d9023d4f75123f75f7513f0000000075f7513f4f7512bf731eebb7000080bfc6baa33ea299593f1063123e1083f33d60d9023d70da133fd3fd313e70da133faa5c193fb539bd3e2ad635bf0000803fc6baa33ea299593f00d1e6bb90e5643e80d9023dbe3ffe3ec43f363fbe3ffe3e0cf8513f787412bfab3cebb7000080bfcc08363e4e99593f00d1e6bb1083f33df04f3a3e70da133fd3fd313e70da133faa5c193fb539bd3e2ad635bf0000803f84432e3e0000803fe026673d4096583d20d3a73d0295283fb581babe0295283faed0f73ef403603f94a81a380000803fa4306a3e9c66663f20d020beb07139be60d9023dc0d771bd23f972bfdd2536be10817fbf50cc7e3dd8d024ba000080bfac8f993e379e593f60a518bd804924be80c6f1bdc0d771bd23f972bfdd2536be10817fbf50cc7e3dd8d024ba000080bf24fa383e3e21333f00d1e6bb98e564be80d9023d548d83be988268bf2519a9becf6c76bf55b48a3e43a37d3b000080bfd195183ef7c5593fb05341beb07139be506a10bec82e0e3eae6f7dbf81cbd0bc24857dbff1290ebe01e523bb000080bf68d0a93e24582d3f403e3bbe006626bef04f3a3e33dc3ebe946075bf56aa2f3e30457bbf54e9433e0f33273b000080bfa4fca63e19f17f3f00d1e6bb98e564be80d9023d33dc3ebe946075bf56aa2f3e30457bbf54e9433e0f33273b000080bfd195183ef7c5593f00d1e6bbb07139bef04f3a3e4568cfbdf31075bf0ba88a3ec1917ebfdb32d83d1458a93a000080bfad8f193e0000803f20d020beb07139be60d9023d22028bbe36b075bf2d09943da74f76bfcb828b3ede3f7f3b000080bfac8f993e379e593f00d1e6bb98e564be80d9023d2f45aa3d5e7171bfc4133cbe12057fbf31feb2bd62020cbb000080bfd195183ef7c5593f1063123eb07139be80c6f1bd2f45aa3d5e7171bfc4133cbe12057fbf31feb2bd62020cbb000080bf000000002532333f1063123eb07139be60d9023d755f8b3e2c5576bf00000000845476bf165f8bbefa7995bb000080bf000000005c97593f60a518bd804924be80c6f1bd76f3d8bd908d6cbfc413bcbea2597ebf6f1fe83de63db93a000080bf24fa383e3e21333f00d1e6bbb07139bef04f3a3ec47a063e89d776bfc47a063e23a47dbf9ea50abecfa159bb000080bfad8f193e0000803f1063123eb07139be60d9023dc47a063e89d776bfc47a063e23a47dbf9ea50abecfa159bb000080bf000000005c97593f1063123eb07139be20d3a73d00000000000080bf00000000ffff7fbf00000000055bb7b9000080bf00000000c463663f00d1e6bb98e564be80d9023dc47a863e12af6dbfc47a863e383e76bf54fc8bbe361596bb000080bfd195183ef7c5593f403e3bbe006626bef04f3a3e242a9c3e5f0f643e0832543f3f4870bf95c8ba3a92a3b03e000080bfe905ad3e81e4373f00d1e6bbb07139bef04f3a3e60f36f3d5dc20d3fa1a3543f74607fbf7927763a85ce8e3d000080bf668b283e1a34333f00d1e6bb80c0febc20d3a73d242a9c3e5f0f643e0832543f3f4870bf95c8ba3a92a3b03e000080bf5471173e105c593f20d020bea0c0febcf04f3a3eee2a0d3f6dd5ddbd6fc0533f541055bfb02280bb4de90d3f000080bf5cfe9f3e4d8a593f20d020bea0c0febcf04f3a3ecc90f43dc490f4bd391f553fd9637dbf9408403b5ad1113e000080bf5cfe9f3e4d8a593f00d1e6bb80c0febc20d3a73d415bf83e3a5bf8be76443a3f434f55bf10467fbba58a0d3f000080bf5471173e105c593f00d1e6bb1083f33df04f3a3ecc90f43dc490f4bd391f553fd9637dbf9408403b5ad1113e000080bf668b283e0000803fb8af05be1083f33d2017193eb6257cbeb0257c3efcf96f3f5f8877bf01d3813b829382be000080bfbbd88f3eebde7f3f00d1e6bbb07139bef04f3a3e00008033000080b378443a3fd1ff7fbf51791a3b388fb033000080bf668b283e1a34333f1063123eb07139be20d3a73d3e5bf83e375bf8be77443a3f444f55bf00477fbba38a0d3f000080bf00000000dc05333f1063123ea0c0febcf04f3a3e00008033000080b378443a3fd1ff7fbf51791a3b388fb033000080bf90d0883ccda9593f00d1e6bb80c0febc20d3a73d3a5bf8be335bf83e7a443a3f827a54bfd275d83b93c70ebf000080bf5471173e105c593f00d1e6bb80c0febc20d3a73dd0fa233d28e8f7bc0015383fc09a7fbf660a21baf995633d000080bf5471173e105c593f1063123ea0c0febcf04f3a3efef402bf8bfbc53e8b6f443f479b54bf5141d83bc5960ebf000080bf90d0883ccda9593fe026673d4096583d20d3a73dd0fa233d28e8f7bc0015383fc09a7fbf660a21baf995633d000080bf94b5ae3de2e16e3f00d1e6bb1083f33df04f3a3e5874173f90f8e4be75ba2b3fba6b40bf27f7a4bb47d8283f000080bf668b283e0000803fb853413e00d99a3cf04f3abe88b19b3c280db6bef8496ebf32e77f3f481540bccde3cb3c000080bfea55c23ebacc633f60a518bd804924be80c6f1bd88b19b3c280db6bef8496ebf32e77f3f481540bccde3cb3c000080bfe20e193e9881373f204301bd80c0febce0dd34be5d96933de804d4beae4968bf68fc7e3fe57190bc357db23d000080bfbb39233e1cc7563f1063123eb07139be80c6f1bd327b0bbd691598be434a74bfbdd87f3fb31f8abb8eb40cbd000080bfd08fa83ef69d323f1063123e1083f33d80c6f1bd29523ebec040093fa3ba51bf8d257a3f466a6f3cb23459be000080bfd08fa83ee4f27e3f204301bd80c0febce0dd34be29523ebec040093fa3ba51bf8d257a3f466a6f3cb23459be000080bfbb39233e1cc7563f00e778bc1083f33de0d28dbd557d75be5e0f153f89df46bf0dc5753ff2b8bd3c44cd8ebe000080bf98fd2b3e0000803fb853413e00d99a3cf04f3abefd2607be45e4fa3ebd955cbfd9377d3f171c083c124f16be000080bfea55c23ebacc633f204301bd80c0febce0dd34be1767e2bd88dac1bd7b1d63bfc9077e3f8c1eb83a5a8afdbd000080bfbb39233e1cc7563fb05341beb07139be506a10be1767e2bd88dac1bd7b1d63bfc9077e3f8c1eb83a5a8afdbd000080bf000000000a4b313f20d020bea0c0febc80c6f1bdbb1fd3beccf1633e352762bfe9be683fe40c1e3ddb4cd4be000080bf48d2f53caf2b583f60a518bd804924be80c6f1bd5fd8433e2ae6d2bec11364bf5858793fd99805bda58c653e000080bfe20e193e9881373f00e778bc1083f33de0d28dbd705734bcf212923ec04958bf86f37f3f4de329bc006487bc000080bf98fd2b3e0000803f20d020bea0c0febc80c6f1bd705734bcf212923ec04958bf86f37f3f4de329bc006487bc000080bf48d2f53caf2b583f20d020be1083f33d80c6f1bd5692a63e00000000c31272bffed7713f845732bde569a63e000080bf48d2f53c26567e3f204301bd80c0febce0dd34becdd7b1bef212123fbe803ebfee826a3f52e3163df476ccbe000080bfbb39233e1cc7563f1063123eb07139be20d3a73d0000803f0000000000000000000000007b64233afdff7f3f000080bf9b5f883ee52b333f1063123eb07139be60d9023d0000803f000000000000000000000000c871233afdff7f3f000080bff9a85d3ef02d333f1063123ea0c0febc60d9023d0000803f0000000000000000000000007b64233afdff7f3f000080bff9a85d3ee893593f1063123ea0c0febcf04f3a3e0000803f0000000000000000000000002c57233afdff7f3f000080bfd075bb3ec88d593f1063123ea0c0febcf04f3a3effc1de3e967cb33e9b7cb33ed86b373f358328bf82836cbe0000803fd075bb3ec88d593f1063123e1083f33d60d9023dffc1de3e967cb33e9b7cb33ed86b373f358328bf82836cbe0000803ff9a85d3ee1f97f3fe026673d4096583d20d3a73d03f804be967c333f9b7c333ffb1f7c3fceaf183c003d313e0000803f58518b3e11466f3f1063123eb07139be60d9023d3eec793fafc4e4bdc695d63d489bdabdf9e384b994897e3f000080bff9a85d3ef02d333f1063123eb07139be80c6f1bd9a87793fafc464be000000006d12163903b1233afdff7f3f000080bfa4cc883d1034333fb853413e00d99a3cf04f3abe3eec793fafc4e4bdc695d63d489bdabdf9e384b994897e3f000080bf00000000334d663f1063123ea0c0febc60d9023de3507a3f00000000c695563eb89556be7f0bb1bad3507a3f000080bff9a85d3ee893593f1063123ea0c0febc60d9023dd706773f6e2a053e712a053e57bd08be234351b912b57d3f000080bff9a85d3ee893593fb853413e00d99a3cf04f3abeae0d6e3f6e2a853e712a853e55a889be45f2fabac092763f000080bf00000000334d663f1063123e1083f33d80c6f1bdd706773f6e2a053e712a053e57bd08be234351b912b57d3f000080bfa4cc883d0000803f1063123e1083f33d60d9023d0000803f0000000000000000000000007e3c233afdff7f3f000080bff9a85d3ee1f97f3f20d020bea0c0febc80c6f1bd5a1678bf6099323e6599323e4ab933be2d67173cdf037cbf000080bf6664993eb377593f20d020beb07139be60d9023d5a1678bf6099323e6599323e4ab933be2d67173cdf037cbf000080bf6664193e7b06333fc88504be80c0febc80f51d3d406378bfda422f3ede422f3ebc4d30be634c133ca92a7cbf000080bf2027113e5ad6593fb05341beb07139be506a10be74c977bfe7ef353eecef353ee12437be65841b3c4ddc7bbf000080bf42fca53eec97323f20d020be1083f33d80c6f1bdcf5c76bfa6a120bea8e99f3c0db8a0bc1ae884bbd9f27fbf000080bf6664993ef3c27f3fc88504be80c0febc80f51d3dcf5c76bfa6a120bea8e99f3c0db8a0bc1ae884bbd9f27fbf000080bf2027113e5ad6593fd8ef35be1083f33d004dd43c0d9e70bfa6a1a0be6ce809beb628163e977071bc5c347dbf000080bf2ba8203e3e3a7f3f20d020bea0c0febc80c6f1bd911b7cbf00000000d6e2313ef4e031bea130153ce5187cbf000080bf6664993eb377593fc88504be80c0febc80f51d3d63d576bfd529403e1cdf3fbe47e73f3e955691bc5f6c7bbf000080bf2027113e5ad6593f403e3bbe006626bef04f3a3e63d576bfd529403e1cdf3fbe47e73f3e955691bc5f6c7bbf000080bf00eaaf3a9d22373f20d020bea0c0febcf04f3a3ea4d376bf27ef413e113d3ebe9a4b3e3e366490bc11807bbf000080bf00000000c52b593f20d020beb07139be60d9023d22d776bf83643e3e278141beab82413eef4892bc87587bbf000080bf6664193e7b06333fd8ef35be1083f33d004dd43c19896bbf183223bd8cadaa3d58eeb8bd3184063b21f47ebf000080bf2ba8203e3e3a7f3f20d020bea0c0febcf04f3a3e19896bbf183223bd8cadaa3d58eeb8bd3184063b21f47ebf000080bf00000000c52b593fb8af05be1083f33d2017193e2c7d68bf44ec703ef847b13ea1bfb3be0534b83cdba26fbf000080bfa821fe3c0000803fc88504be80c0febc80f51d3d06956ebfa842a1be64e237bea4d1473e0b0096bcf4087bbf000080bf2027113e5ad6593f - m_CompressedMesh: - m_Vertices: - m_NumItems: 0 - m_Range: 0 - m_Start: 0 - m_Data: - m_BitSize: 0 - m_UV: - m_NumItems: 0 - m_Range: 0 - m_Start: 0 - m_Data: - m_BitSize: 0 - m_Normals: - m_NumItems: 0 - m_Range: 0 - m_Start: 0 - m_Data: - m_BitSize: 0 - m_Tangents: - m_NumItems: 0 - m_Range: 0 - m_Start: 0 - m_Data: - m_BitSize: 0 - m_Weights: - m_NumItems: 0 - m_Data: - m_BitSize: 0 - m_NormalSigns: - m_NumItems: 0 - m_Data: - m_BitSize: 0 - m_TangentSigns: - m_NumItems: 0 - m_Data: - m_BitSize: 0 - m_FloatColors: - m_NumItems: 0 - m_Range: 0 - m_Start: 0 - m_Data: - m_BitSize: 0 - m_BoneIndices: - m_NumItems: 0 - m_Data: - m_BitSize: 0 - m_Triangles: - m_NumItems: 0 - m_Data: - m_BitSize: 0 - m_UVInfo: 0 - m_LocalAABB: - m_Center: {x: 0.000000059604645, y: -0.000000059604645, z: 0} - m_Extent: {x: 0.18879586, y: 0.22353202, z: 0.18194556} - m_MeshUsageFlags: 0 - m_CookingOptions: 30 - m_BakedConvexCollisionMesh: - m_BakedTriangleCollisionMesh: - 'm_MeshMetrics[0]': 5.845267 - 'm_MeshMetrics[1]': 1 - m_MeshOptimizationFlags: 1 - m_StreamData: - serializedVersion: 2 - offset: 0 - size: 0 - path: --- !u!1 &784216375 GameObject: m_ObjectHideFlags: 0 @@ -37883,6 +38195,11 @@ GameObject: - component: {fileID: 890089410} - component: {fileID: 890089409} - component: {fileID: 890089408} + - component: {fileID: 890089414} + - component: {fileID: 890089418} + - component: {fileID: 890089417} + - component: {fileID: 890089416} + - component: {fileID: 890089419} m_Layer: 0 m_Name: Scrap-2 m_TagString: Untagged @@ -37909,9 +38226,9 @@ MeshCollider: m_ProvidesContacts: 0 m_Enabled: 1 serializedVersion: 5 - m_Convex: 0 + m_Convex: 1 m_CookingOptions: 30 - m_Mesh: {fileID: 1559364138} + m_Mesh: {fileID: 410975406} --- !u!33 &890089409 MeshFilter: m_ObjectHideFlags: 10 @@ -37919,7 +38236,7 @@ MeshFilter: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 890089407} - m_Mesh: {fileID: 1559364138} + m_Mesh: {fileID: 410975406} --- !u!23 &890089410 MeshRenderer: m_ObjectHideFlags: 0 @@ -38664,7 +38981,7 @@ MonoBehaviour: m_AreaError: 15 m_PreserveMeshAssetOnDestroy: 0 assetGuid: - m_Mesh: {fileID: 1559364138} + m_Mesh: {fileID: 410975406} m_VersionIndex: 1174 m_IsSelectable: 1 m_SelectedFaces: @@ -38685,6 +39002,143 @@ Transform: m_Children: [] m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &890089414 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 890089407} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d5a57f767e5e46a458fc5d3c628d0cbb, type: 3} + m_Name: + m_EditorClassIdentifier: + GlobalObjectIdHash: 4121506571 + InScenePlacedSourceGlobalObjectIdHash: 0 + DeferredDespawnTick: 0 + Ownership: 1 + AlwaysReplicateAsRoot: 0 + SynchronizeTransform: 1 + m_InScenePlaced: 1 + ActiveSceneSynchronization: 0 + SceneMigrationSynchronization: 0 + SpawnWithObservers: 1 + DontDestroyWithOwner: 0 + AutoObjectParentSync: 1 + SyncOwnerTransformWhenParented: 1 + AllowOwnerToParent: 0 +--- !u!54 &890089416 +Rigidbody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 890089407} + serializedVersion: 4 + m_Mass: 35 + m_Drag: 0 + m_AngularDrag: 0.05 + m_CenterOfMass: {x: 0, y: 0, z: 0} + m_InertiaTensor: {x: 1, y: 1, z: 1} + m_InertiaRotation: {x: 0, y: 0, z: 0, w: 1} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ImplicitCom: 1 + m_ImplicitTensor: 1 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!114 &890089417 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 890089407} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fad79bb3d620ffb46b527a9e361c28ae, type: 3} + m_Name: + m_EditorClassIdentifier: + ShowTopMostFoldoutHeaderGroup: 1 + interactionLabel: Interact + maximumInteractionDistance: 3 + physicsBody: {fileID: 890089416} + objectColliders: [] + collisionRefreshInterval: 0.25 + throwForce: 6 + throwUpwardForce: 0.5 + carryOffset: {x: 0, y: -0.3, z: 1.25} +--- !u!114 &890089418 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 890089407} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e96cb6065543e43c4a752faaa1468eb1, type: 3} + m_Name: + m_EditorClassIdentifier: + ShowTopMostFoldoutHeaderGroup: 1 + NetworkTransformExpanded: 0 + AutoOwnerAuthorityTickOffset: 1 + PositionInterpolationType: 0 + RotationInterpolationType: 0 + ScaleInterpolationType: 0 + PositionLerpSmoothing: 1 + PositionMaxInterpolationTime: 0.1 + RotationLerpSmoothing: 1 + RotationMaxInterpolationTime: 0.1 + ScaleLerpSmoothing: 1 + ScaleMaxInterpolationTime: 0.1 + AuthorityMode: 0 + TickSyncChildren: 0 + UseUnreliableDeltas: 0 + SyncPositionX: 1 + SyncPositionY: 1 + SyncPositionZ: 1 + SyncRotAngleX: 1 + SyncRotAngleY: 1 + SyncRotAngleZ: 1 + SyncScaleX: 1 + SyncScaleY: 1 + SyncScaleZ: 1 + PositionThreshold: 0.001 + RotAngleThreshold: 0.01 + ScaleThreshold: 0.01 + UseQuaternionSynchronization: 0 + UseQuaternionCompression: 0 + UseHalfFloatPrecision: 0 + InLocalSpace: 0 + SwitchTransformSpaceWhenParented: 0 + Interpolate: 1 + SlerpPosition: 0 +--- !u!114 &890089419 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 890089407} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f6c0be61502bb534f922ebb746851216, type: 3} + m_Name: + m_EditorClassIdentifier: + ShowTopMostFoldoutHeaderGroup: 1 + NetworkRigidbodyBaseExpanded: 0 + UseRigidBodyForMotion: 1 + AutoUpdateKinematicState: 1 + AutoSetKinematicOnDespawn: 1 --- !u!1 &890284490 GameObject: m_ObjectHideFlags: 0 @@ -47563,6 +48017,11 @@ GameObject: - component: {fileID: 1058020525} - component: {fileID: 1058020524} - component: {fileID: 1058020523} + - component: {fileID: 1058020532} + - component: {fileID: 1058020529} + - component: {fileID: 1058020531} + - component: {fileID: 1058020530} + - component: {fileID: 1058020533} m_Layer: 0 m_Name: Rocket-Back-Standart m_TagString: Untagged @@ -47577,7 +48036,7 @@ MeshCollider: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1058020522} - m_Material: {fileID: 0} + m_Material: {fileID: 1824198666} m_IncludeLayers: serializedVersion: 2 m_Bits: 0 @@ -47589,9 +48048,9 @@ MeshCollider: m_ProvidesContacts: 0 m_Enabled: 1 serializedVersion: 5 - m_Convex: 0 + m_Convex: 1 m_CookingOptions: 30 - m_Mesh: {fileID: 1629898770} + m_Mesh: {fileID: 477881300} --- !u!33 &1058020524 MeshFilter: m_ObjectHideFlags: 10 @@ -47599,7 +48058,7 @@ MeshFilter: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1058020522} - m_Mesh: {fileID: 1629898770} + m_Mesh: {fileID: 477881300} --- !u!23 &1058020525 MeshRenderer: m_ObjectHideFlags: 0 @@ -49087,7 +49546,7 @@ MonoBehaviour: m_AreaError: 15 m_PreserveMeshAssetOnDestroy: 0 assetGuid: - m_Mesh: {fileID: 1629898770} + m_Mesh: {fileID: 477881300} m_VersionIndex: 3642 m_IsSelectable: 1 m_SelectedFaces: @@ -49108,6 +49567,149 @@ Transform: m_Children: [] m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1058020529 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1058020522} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d5a57f767e5e46a458fc5d3c628d0cbb, type: 3} + m_Name: + m_EditorClassIdentifier: + GlobalObjectIdHash: 577255225 + InScenePlacedSourceGlobalObjectIdHash: 0 + DeferredDespawnTick: 0 + Ownership: 1 + AlwaysReplicateAsRoot: 0 + SynchronizeTransform: 1 + m_InScenePlaced: 1 + ActiveSceneSynchronization: 0 + SceneMigrationSynchronization: 0 + SpawnWithObservers: 1 + DontDestroyWithOwner: 0 + AutoObjectParentSync: 1 + SyncOwnerTransformWhenParented: 1 + AllowOwnerToParent: 0 +--- !u!114 &1058020530 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1058020522} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f6c0be61502bb534f922ebb746851216, type: 3} + m_Name: + m_EditorClassIdentifier: + ShowTopMostFoldoutHeaderGroup: 1 + NetworkRigidbodyBaseExpanded: 0 + UseRigidBodyForMotion: 1 + AutoUpdateKinematicState: 1 + AutoSetKinematicOnDespawn: 1 +--- !u!114 &1058020531 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1058020522} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e96cb6065543e43c4a752faaa1468eb1, type: 3} + m_Name: + m_EditorClassIdentifier: + ShowTopMostFoldoutHeaderGroup: 1 + NetworkTransformExpanded: 0 + AutoOwnerAuthorityTickOffset: 1 + PositionInterpolationType: 0 + RotationInterpolationType: 0 + ScaleInterpolationType: 0 + PositionLerpSmoothing: 1 + PositionMaxInterpolationTime: 0.1 + RotationLerpSmoothing: 1 + RotationMaxInterpolationTime: 0.1 + ScaleLerpSmoothing: 1 + ScaleMaxInterpolationTime: 0.1 + AuthorityMode: 0 + TickSyncChildren: 0 + UseUnreliableDeltas: 0 + SyncPositionX: 1 + SyncPositionY: 1 + SyncPositionZ: 1 + SyncRotAngleX: 1 + SyncRotAngleY: 1 + SyncRotAngleZ: 1 + SyncScaleX: 1 + SyncScaleY: 1 + SyncScaleZ: 1 + PositionThreshold: 0.001 + RotAngleThreshold: 0.01 + ScaleThreshold: 0.01 + UseQuaternionSynchronization: 0 + UseQuaternionCompression: 0 + UseHalfFloatPrecision: 0 + InLocalSpace: 0 + SwitchTransformSpaceWhenParented: 0 + Interpolate: 1 + SlerpPosition: 0 +--- !u!54 &1058020532 +Rigidbody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1058020522} + serializedVersion: 4 + m_Mass: 75 + m_Drag: 0 + m_AngularDrag: 0.05 + m_CenterOfMass: {x: 0, y: 0, z: 0} + m_InertiaTensor: {x: 1, y: 1, z: 1} + m_InertiaRotation: {x: 0, y: 0, z: 0, w: 1} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ImplicitCom: 1 + m_ImplicitTensor: 1 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!114 &1058020533 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1058020522} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e5e737931b3bc22468ea0fe857062359, type: 3} + m_Name: + m_EditorClassIdentifier: + ShowTopMostFoldoutHeaderGroup: 1 + interactionLabel: Interact + maximumInteractionDistance: 3 + weight: 75 + pullStrengthPerPlayer: 50 + maximumDraggers: 2 + dragOffset: {x: 0, y: 1, z: 1.8} + maximumDragSpeed: 3 + minimumSpeedMultiplier: 0.35 + maximumDraggerDistance: 4.5 + keepCurrentHeight: 0 + physicsBody: {fileID: 1058020532} + objectColliders: + - {fileID: 1058020523} + collisionRefreshInterval: 0.25 --- !u!43 &1075175960 Mesh: m_ObjectHideFlags: 0 @@ -74145,6 +74747,75 @@ Mesh: offset: 0 size: 0 path: +--- !u!1001 &1404423013 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 2407670811493793166, guid: 593b09321d7982e48a7d65a32da0d96a, type: 3} + propertyPath: m_LocalPosition.x + value: -2.2578073 + objectReference: {fileID: 0} + - target: {fileID: 2407670811493793166, guid: 593b09321d7982e48a7d65a32da0d96a, type: 3} + propertyPath: m_LocalPosition.y + value: -0.0000014305115 + objectReference: {fileID: 0} + - target: {fileID: 2407670811493793166, guid: 593b09321d7982e48a7d65a32da0d96a, type: 3} + propertyPath: m_LocalPosition.z + value: -2.083104 + objectReference: {fileID: 0} + - target: {fileID: 2407670811493793166, guid: 593b09321d7982e48a7d65a32da0d96a, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2407670811493793166, guid: 593b09321d7982e48a7d65a32da0d96a, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2407670811493793166, guid: 593b09321d7982e48a7d65a32da0d96a, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2407670811493793166, guid: 593b09321d7982e48a7d65a32da0d96a, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2407670811493793166, guid: 593b09321d7982e48a7d65a32da0d96a, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2407670811493793166, guid: 593b09321d7982e48a7d65a32da0d96a, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2407670811493793166, guid: 593b09321d7982e48a7d65a32da0d96a, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8522563728462659335, guid: 593b09321d7982e48a7d65a32da0d96a, type: 3} + propertyPath: m_InScenePlaced + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8522563728462659335, guid: 593b09321d7982e48a7d65a32da0d96a, type: 3} + propertyPath: GlobalObjectIdHash + value: 142077079 + objectReference: {fileID: 0} + - target: {fileID: 8522563728462659335, guid: 593b09321d7982e48a7d65a32da0d96a, type: 3} + propertyPath: InScenePlacedSourceGlobalObjectIdHash + value: 3431110216 + objectReference: {fileID: 0} + - target: {fileID: 8815354352711425077, guid: 593b09321d7982e48a7d65a32da0d96a, type: 3} + propertyPath: m_Name + value: PhysicalLever + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 593b09321d7982e48a7d65a32da0d96a, type: 3} --- !u!1 &1427542466 GameObject: m_ObjectHideFlags: 0 @@ -78743,6 +79414,10 @@ PrefabInstance: serializedVersion: 3 m_TransformParent: {fileID: 0} m_Modifications: + - target: {fileID: 32730300719699172, guid: 814d56a483938ef489a23f2e2973989a, type: 3} + propertyPath: physicsBody + value: + objectReference: {fileID: 29078091} - target: {fileID: 1224744003078846777, guid: 814d56a483938ef489a23f2e2973989a, type: 3} propertyPath: m_InScenePlaced value: 1 @@ -78882,25 +79557,25 @@ Transform: - {fileID: 958165239} m_Father: {fileID: 17735660} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!43 &1559364138 +--- !u!43 &1553446195 Mesh: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_Name: pb_Mesh-114110 + m_Name: pb_Mesh273772 serializedVersion: 11 m_SubMeshes: - serializedVersion: 2 firstByte: 0 - indexCount: 138 + indexCount: 144 topology: 0 baseVertex: 0 firstVertex: 0 - vertexCount: 74 + vertexCount: 95 localAABB: - m_Center: {x: 0, y: -0.000000059604645, z: 0} - m_Extent: {x: 0.17792217, y: 0.101614416, z: 0.17792225} + m_Center: {x: 0.000000059604645, y: -0.000000059604645, z: 0} + m_Extent: {x: 0.18879586, y: 0.22353202, z: 0.18194556} m_Shapes: vertices: [] shapes: [] @@ -78917,10 +79592,10 @@ Mesh: m_KeepVertices: 1 m_KeepIndices: 1 m_IndexFormat: 0 - m_IndexBuffer: 000001000200030000000200040005000600070004000600080009000a000b0008000a000c000d000e000f000c000e001000110012001300100012001000130014001500160017001800150017001500180019001a001b001c001d001c001b001d001e001c001f0020002100220021002000220023002100240025002600250027002600280029002a0029002b002a001f0021002c0021002d002c001c001e002e001e002f002e00150019003000190031003000110010003200100033003200340035003600350037003600380039003a0039003b003a003c003d003e003c003f003d00160015004000150041004000420028004300280044004300210023004500230046004500390047004800470049004800 + m_IndexBuffer: 000001000200030000000200040005000600070004000600080009000a000b0008000a000c000d000e000f000c000e00100011001200100013001100140015001600140017001500180019001a0018001b0019001c001d001e001c001f001d00200021002200230020002200240025002600270024002600280029002a002b0028002a002c002d002e002f002c002e00300031003200300033003100340035003600340037003500380039003a0038003b0039003c003d003e003c003f003d004000410042004300400042004400420045004600440045004700480049004a00470049004b004c004d004e004b004d004f00500051004f005200500053005400550053005600540057005800590057005a0058005b005c005d005b005e005c00 m_VertexData: serializedVersion: 3 - m_VertexCount: 74 + m_VertexCount: 95 m_Channels: - stream: 0 offset: 0 @@ -78978,8 +79653,8 @@ Mesh: offset: 0 format: 0 dimension: 0 - m_DataSize: 3552 - _typelessdata: 0000803280e1513d403136be000000000000803f000000000000803f0000000000000000000080bf00008032403136be3b3136be80e1513d403136be000000000000803f000000000000803f0000000000000000000080bf3b3136be403136be3b3136be80e1513d00000000000000000000803f000000000000803f0000000000000000000080bf3b3136be000000000000803280e1513d00000000000000000000803f000000000000803f0000000000000000000080bf000080320000000000008032007d6ebd00000000000000000000803f000000000000803f0000000000000000000080bf0000803200000000393136be007d6ebd00000000000000000000803f000000000000803f0000000000000000000080bf393136be00000000393136be007d6ebd4031363e000000000000803f000000000000803f0000000000000000000080bf393136be4031363e00008032007d6ebd4031363e000000000000803f000000000000803f0000000000000000000080bf000080324031363e3b31363ec040a3bc00000000000000000000803f000000000000803f0000000000000000000080bf3b31363e0000000000008032c040a3bc00000000000000000000803f000000000000803f0000000000000000000080bf000080320000000000008032c040a3bc4031363e000000000000803f000000000000803f0000000000000000000080bf000080324031363e3b31363ec040a3bc4031363e000000000000803f000000000000803f0000000000000000000080bf3b31363e4031363e3b31363e301bd03d403136be000000000000803f000000000000803f0000000000000000000080bf3b31363e403136be00008032301bd03d403136be000000000000803f000000000000803f0000000000000000000080bf00008032403136be00008032301bd03d00000000000000000000803f000000000000803f0000000000000000000080bf00008032000000003b31363e301bd03d00000000000000000000803f000000000000803f0000000000000000000080bf3b31363e00000000393136be007d6ebd00000000000080bf00000000000000000000000000000000000080bf000080bf00000080007d6ebd393136be007d6ebd403136be000080bf00000000000000000000000000000000000080bf000080bf4031363e007d6ebd393136be401bd0bd403136be000080bf00000000000000000000000000000000000080bf000080bf4031363e401bd0bd393136be401bd0bd4031363e000080bf00000000000000000000000000000000000080bf000080bf403136be401bd0bd393136be007d6ebd4031363e000080bf00000000000000000000000000000000000080bf000080bf403136be007d6ebd00008032007d6ebd403136be0000000000000000000080bf0000803f0000000000000000000080bf00008032007d6ebd3b31363e007d6ebd403136be0000000000000000000080bf0000803f0000000000000000000080bf3b31363e007d6ebd3b31363e401bd0bd403136be0000000000000000000080bf0000803f0000000000000000000080bf3b31363e401bd0bd393136be401bd0bd403136be0000000000000000000080bf0000803f0000000000000000000080bf393136be401bd0bd393136be007d6ebd403136be0000000000000000000080bf0000803f0000000000000000000080bf393136be007d6ebd393136be007d6ebd4031363e00000000000000000000803f000080bf0000000000000000000080bf3931363e007d6ebd393136be401bd0bd4031363e00000000000000000000803f000080bf0000000000000000000080bf3931363e401bd0bd00008032007d6ebd4031363e00000000000000000000803f000080bf0000000000000000000080bf000080b2007d6ebd3b31363e401bd0bd4031363e00000000000000000000803f000080bf0000000000000000000080bf3b3136be401bd0bd3b31363e007d6ebd4031363e00000000000000000000803f000080bf0000000000000000000080bf3b3136be007d6ebd3b31363e007d6ebd4031363e0000803f000000000000000000000000000000000000803f000080bf4031363e007d6ebd3b31363e401bd0bd4031363e0000803f000000000000000000000000000000000000803f000080bf4031363e401bd0bd3b31363e007d6ebd000000000000803f000000000000000000000000000000000000803f000080bf00000000007d6ebd3b31363e401bd0bd403136be0000803f000000000000000000000000000000000000803f000080bf403136be401bd0bd3b31363e007d6ebd403136be0000803f000000000000000000000000000000000000803f000080bf403136be007d6ebd3b31363e007d6ebd000000000000000000000000000080bf0000803f0000000000000000000080bf3b31363e007d6ebd00008032007d6ebd000000000000000000000000000080bf0000803f0000000000000000000080bf00008032007d6ebd3b31363ec040a3bc000000000000000000000000000080bf0000803f0000000000000000000080bf3b31363ec040a3bc00008032c040a3bc000000000000000000000000000080bf0000803f0000000000000000000080bf00008032c040a3bc00008032007d6ebd00000000000080bf00000000000000000000000000000000000080bf000080bf00000000007d6ebd00008032007d6ebd4031363e000080bf00000000000000000000000000000000000080bf000080bf403136be007d6ebd00008032c040a3bc00000000000080bf00000000000000000000000000000000000080bf000080bf00000000c040a3bc00008032c040a3bc4031363e000080bf00000000000000000000000000000000000080bf000080bf403136bec040a3bc3b31363ec040a3bc4031363e0000803f000000000000000000000000000000000000803f000080bf4031363ec040a3bc3b31363ec040a3bc000000000000803f000000000000000000000000000000000000803f000080bf00000000c040a3bc00008032c040a3bc4031363e00000000000000000000803f000080bf0000000000000000000080bf000080b2c040a3bc3b31363ec040a3bc4031363e00000000000000000000803f000080bf0000000000000000000080bf3b3136bec040a3bc0000803280e1513d403136be0000000000000000000080bf0000803f0000000000000000000080bf0000803280e1513d3b3136be80e1513d403136be0000000000000000000080bf0000803f0000000000000000000080bf3b3136be80e1513d3b3136be80e1513d403136be000080bf4f2a92b4000000000000000000000000000080bf000080bf4031363e8de1513d3b3136be80e1513d00000000000080bf4f2a92b4000000000000000000000000000080bf000080bf000000008de1513d00008032007d6ebd000000000000803f000000000000000000000000000000000000803f000080bf00000000007d6ebd00008032007d6ebd403136be0000803f000000000000000000000000000000000000803f000080bf403136be007d6ebd0000803280e1513d000000000000803f000000000000000000000000000000000000803f000080bf0000000080e1513d0000803280e1513d403136be0000803f000000000000000000000000000000000000803f000080bf403136be80e1513d393136be007d6ebd0000000000000000000000000000803f000080bf0000000000000000000080bf3931363e007d6ebd00008032007d6ebd0000000000000000000000000000803f000080bf0000000000000000000080bf000080b2007d6ebd3b3136be80e1513d0000000000000000000000000000803f000080bf0000000000000000000080bf3b31363e80e1513d0000803280e1513d0000000000000000000000000000803f000080bf0000000000000000000080bf000080b280e1513d393136be401bd0bd4031363e00000000000080bf00000000000080bf0000000000000000000080bf3931363e4031363e3b31363e401bd0bd403136be00000000000080bf00000000000080bf0000000000000000000080bf3b3136be403136be3b31363e401bd0bd4031363e00000000000080bf00000000000080bf0000000000000000000080bf3b3136be4031363e393136be401bd0bd403136be00000000000080bf00000000000080bf0000000000000000000080bf3931363e403136be3b31363e301bd03d403136be0000000000000000000080bf0000803f0000000000000000000080bf3b31363e301bd03d00008032301bd03d403136be0000000000000000000080bf0000803f0000000000000000000080bf00008032301bd03d00008032007d6ebd403136be000080bf00000000000000000000000000000000000080bf000080bf4031363e007d6ebd00008032301bd03d403136be000080bf00000000000000000000000000000000000080bf000080bf4031363e301bd03d00008032301bd03d00000000000080bf00000000000000000000000000000000000080bf000080bf00000000301bd03d3b31363e301bd03d000000000000803f000000000000000000000000000000000000803f000080bf00000000301bd03d3b31363e301bd03d403136be0000803f000000000000000000000000000000000000803f000080bf403136be301bd03d3b31363e007d6ebd0000000000000000000000000000803f000080bf0000000000000000000080bf3b3136be007d6ebd00008032301bd03d0000000000000000000000000000803f000080bf0000000000000000000080bf000080b2301bd03d3b31363e301bd03d0000000000000000000000000000803f000080bf0000000000000000000080bf3b3136be301bd03d + m_DataSize: 4560 + _typelessdata: 00e778bc1083f33de0d28dbdb0d742bed53a543f1555a6beb31a793fe5706b3ef5b2893c000080bf3cf1253ea7b13f3f20d020be1083f33d80c6f1bd000000000000803f000000000000803f00000000933945b6000080bfd08ba83c2c33333fd8ef35be1083f33d004dd43cb0d742bed53a543f1555a6beb31a793fe5706b3ef5b2893c000080bf00000000630e583f00d1e6bb90e5643e80d9023db0d7c2beaa75283f155526bfcb9b5d3f9f29003f260ca437000080bfcc08363e4e99593f00d1e6bb90e5643e80d9023d0488aabe1a64523f5358c33e55566d3f6ee7bf3e4525013b000080bfcc08363e4e99593fd8ef35be1083f33d004dd43ca97c04bfa125553f540d4a3e0f6c593f9c24073f9855ae37000080bf00000000630e583fb8af05be1083f33d2017193e0488aabe1a64523f5358c33e55566d3f6ee7bf3e4525013b000080bf627e403dc5b1773f00d1e6bb1083f33df04f3a3e6a2d18be94a24f3ffed4103fe5ce7b3f848c383e44f69c36000080bf84432e3e0000803f1063123e1083f33d80c6f1bd0c4d373ed500413fd399b1bea84d793f7b7f68be3297143c000080bfc6baa33e3c33333f00e778bc1083f33de0d28dbd233b5bbe350a303fd39931bf4b6d743f1734983e9bee2537000080bf3cf1253ea7b13f3f00d1e6bb90e5643e80d9023d0c4d373ed500413fd399b1bea84d793f7b7f68be3297143c000080bfcc08363e4e99593f1063123e1083f33d60d9023d4f75123f75f7513f0000000075f7513f4f7512bf731eebb7000080bfc6baa33ea299593f1063123e1083f33d60d9023d70da133fd3fd313e70da133faa5c193fb539bd3e2ad635bf0000803fc6baa33ea299593f00d1e6bb90e5643e80d9023dbe3ffe3ec43f363fbe3ffe3e0cf8513f787412bfab3cebb7000080bfcc08363e4e99593f00d1e6bb1083f33df04f3a3e70da133fd3fd313e70da133faa5c193fb539bd3e2ad635bf0000803f84432e3e0000803fe026673d4096583d20d3a73d0295283fb581babe0295283faed0f73ef403603f94a81a380000803fa4306a3e9c66663f20d020beb07139be60d9023dc0d771bd23f972bfdd2536be10817fbf50cc7e3dd8d024ba000080bfac8f993e379e593f60a518bd804924be80c6f1bdc0d771bd23f972bfdd2536be10817fbf50cc7e3dd8d024ba000080bf24fa383e3e21333f00d1e6bb98e564be80d9023d548d83be988268bf2519a9becf6c76bf55b48a3e43a37d3b000080bfd195183ef7c5593fb05341beb07139be506a10bec82e0e3eae6f7dbf81cbd0bc24857dbff1290ebe01e523bb000080bf68d0a93e24582d3f403e3bbe006626bef04f3a3e33dc3ebe946075bf56aa2f3e30457bbf54e9433e0f33273b000080bfa4fca63e19f17f3f00d1e6bb98e564be80d9023d33dc3ebe946075bf56aa2f3e30457bbf54e9433e0f33273b000080bfd195183ef7c5593f00d1e6bbb07139bef04f3a3e4568cfbdf31075bf0ba88a3ec1917ebfdb32d83d1458a93a000080bfad8f193e0000803f20d020beb07139be60d9023d22028bbe36b075bf2d09943da74f76bfcb828b3ede3f7f3b000080bfac8f993e379e593f00d1e6bb98e564be80d9023d2f45aa3d5e7171bfc4133cbe12057fbf31feb2bd62020cbb000080bfd195183ef7c5593f1063123eb07139be80c6f1bd2f45aa3d5e7171bfc4133cbe12057fbf31feb2bd62020cbb000080bf000000002532333f1063123eb07139be60d9023d755f8b3e2c5576bf00000000845476bf165f8bbefa7995bb000080bf000000005c97593f60a518bd804924be80c6f1bd76f3d8bd908d6cbfc413bcbea2597ebf6f1fe83de63db93a000080bf24fa383e3e21333f00d1e6bbb07139bef04f3a3ec47a063e89d776bfc47a063e23a47dbf9ea50abecfa159bb000080bfad8f193e0000803f1063123eb07139be60d9023dc47a063e89d776bfc47a063e23a47dbf9ea50abecfa159bb000080bf000000005c97593f1063123eb07139be20d3a73d00000000000080bf00000000ffff7fbf00000000055bb7b9000080bf00000000c463663f00d1e6bb98e564be80d9023dc47a863e12af6dbfc47a863e383e76bf54fc8bbe361596bb000080bfd195183ef7c5593f403e3bbe006626bef04f3a3e242a9c3e5f0f643e0832543f3f4870bf95c8ba3a92a3b03e000080bfe905ad3e81e4373f00d1e6bbb07139bef04f3a3e60f36f3d5dc20d3fa1a3543f74607fbf7927763a85ce8e3d000080bf668b283e1a34333f00d1e6bb80c0febc20d3a73d242a9c3e5f0f643e0832543f3f4870bf95c8ba3a92a3b03e000080bf5471173e105c593f20d020bea0c0febcf04f3a3eee2a0d3f6dd5ddbd6fc0533f541055bfb02280bb4de90d3f000080bf5cfe9f3e4d8a593f20d020bea0c0febcf04f3a3ecc90f43dc490f4bd391f553fd9637dbf9408403b5ad1113e000080bf5cfe9f3e4d8a593f00d1e6bb80c0febc20d3a73d415bf83e3a5bf8be76443a3f434f55bf10467fbba58a0d3f000080bf5471173e105c593f00d1e6bb1083f33df04f3a3ecc90f43dc490f4bd391f553fd9637dbf9408403b5ad1113e000080bf668b283e0000803fb8af05be1083f33d2017193eb6257cbeb0257c3efcf96f3f5f8877bf01d3813b829382be000080bfbbd88f3eebde7f3f00d1e6bbb07139bef04f3a3e00008033000080b378443a3fd1ff7fbf51791a3b388fb033000080bf668b283e1a34333f1063123eb07139be20d3a73d3e5bf83e375bf8be77443a3f444f55bf00477fbba38a0d3f000080bf00000000dc05333f1063123ea0c0febcf04f3a3e00008033000080b378443a3fd1ff7fbf51791a3b388fb033000080bf90d0883ccda9593f00d1e6bb80c0febc20d3a73d3a5bf8be335bf83e7a443a3f827a54bfd275d83b93c70ebf000080bf5471173e105c593f00d1e6bb80c0febc20d3a73dd0fa233d28e8f7bc0015383fc09a7fbf660a21baf995633d000080bf5471173e105c593f1063123ea0c0febcf04f3a3efef402bf8bfbc53e8b6f443f479b54bf5141d83bc5960ebf000080bf90d0883ccda9593fe026673d4096583d20d3a73dd0fa233d28e8f7bc0015383fc09a7fbf660a21baf995633d000080bf94b5ae3de2e16e3f00d1e6bb1083f33df04f3a3e5874173f90f8e4be75ba2b3fba6b40bf27f7a4bb47d8283f000080bf668b283e0000803fb853413e00d99a3cf04f3abe88b19b3c280db6bef8496ebf32e77f3f481540bccde3cb3c000080bfea55c23ebacc633f60a518bd804924be80c6f1bd88b19b3c280db6bef8496ebf32e77f3f481540bccde3cb3c000080bfe20e193e9881373f204301bd80c0febce0dd34be5d96933de804d4beae4968bf68fc7e3fe57190bc357db23d000080bfbb39233e1cc7563f1063123eb07139be80c6f1bd327b0bbd691598be434a74bfbdd87f3fb31f8abb8eb40cbd000080bfd08fa83ef69d323f1063123e1083f33d80c6f1bd29523ebec040093fa3ba51bf8d257a3f466a6f3cb23459be000080bfd08fa83ee4f27e3f204301bd80c0febce0dd34be29523ebec040093fa3ba51bf8d257a3f466a6f3cb23459be000080bfbb39233e1cc7563f00e778bc1083f33de0d28dbd557d75be5e0f153f89df46bf0dc5753ff2b8bd3c44cd8ebe000080bf98fd2b3e0000803fb853413e00d99a3cf04f3abefd2607be45e4fa3ebd955cbfd9377d3f171c083c124f16be000080bfea55c23ebacc633f204301bd80c0febce0dd34be1767e2bd88dac1bd7b1d63bfc9077e3f8c1eb83a5a8afdbd000080bfbb39233e1cc7563fb05341beb07139be506a10be1767e2bd88dac1bd7b1d63bfc9077e3f8c1eb83a5a8afdbd000080bf000000000a4b313f20d020bea0c0febc80c6f1bdbb1fd3beccf1633e352762bfe9be683fe40c1e3ddb4cd4be000080bf48d2f53caf2b583f60a518bd804924be80c6f1bd5fd8433e2ae6d2bec11364bf5858793fd99805bda58c653e000080bfe20e193e9881373f00e778bc1083f33de0d28dbd705734bcf212923ec04958bf86f37f3f4de329bc006487bc000080bf98fd2b3e0000803f20d020bea0c0febc80c6f1bd705734bcf212923ec04958bf86f37f3f4de329bc006487bc000080bf48d2f53caf2b583f20d020be1083f33d80c6f1bd5692a63e00000000c31272bffed7713f845732bde569a63e000080bf48d2f53c26567e3f204301bd80c0febce0dd34becdd7b1bef212123fbe803ebfee826a3f52e3163df476ccbe000080bfbb39233e1cc7563f1063123eb07139be20d3a73d0000803f0000000000000000000000007b64233afdff7f3f000080bf9b5f883ee52b333f1063123eb07139be60d9023d0000803f000000000000000000000000c871233afdff7f3f000080bff9a85d3ef02d333f1063123ea0c0febc60d9023d0000803f0000000000000000000000007b64233afdff7f3f000080bff9a85d3ee893593f1063123ea0c0febcf04f3a3e0000803f0000000000000000000000002c57233afdff7f3f000080bfd075bb3ec88d593f1063123ea0c0febcf04f3a3effc1de3e967cb33e9b7cb33ed86b373f358328bf82836cbe0000803fd075bb3ec88d593f1063123e1083f33d60d9023dffc1de3e967cb33e9b7cb33ed86b373f358328bf82836cbe0000803ff9a85d3ee1f97f3fe026673d4096583d20d3a73d03f804be967c333f9b7c333ffb1f7c3fceaf183c003d313e0000803f58518b3e11466f3f1063123eb07139be60d9023d3eec793fafc4e4bdc695d63d489bdabdf9e384b994897e3f000080bff9a85d3ef02d333f1063123eb07139be80c6f1bd9a87793fafc464be000000006d12163903b1233afdff7f3f000080bfa4cc883d1034333fb853413e00d99a3cf04f3abe3eec793fafc4e4bdc695d63d489bdabdf9e384b994897e3f000080bf00000000334d663f1063123ea0c0febc60d9023de3507a3f00000000c695563eb89556be7f0bb1bad3507a3f000080bff9a85d3ee893593f1063123ea0c0febc60d9023dd706773f6e2a053e712a053e57bd08be234351b912b57d3f000080bff9a85d3ee893593fb853413e00d99a3cf04f3abeae0d6e3f6e2a853e712a853e55a889be45f2fabac092763f000080bf00000000334d663f1063123e1083f33d80c6f1bdd706773f6e2a053e712a053e57bd08be234351b912b57d3f000080bfa4cc883d0000803f1063123e1083f33d60d9023d0000803f0000000000000000000000007e3c233afdff7f3f000080bff9a85d3ee1f97f3f20d020bea0c0febc80c6f1bd5a1678bf6099323e6599323e4ab933be2d67173cdf037cbf000080bf6664993eb377593f20d020beb07139be60d9023d5a1678bf6099323e6599323e4ab933be2d67173cdf037cbf000080bf6664193e7b06333fc88504be80c0febc80f51d3d406378bfda422f3ede422f3ebc4d30be634c133ca92a7cbf000080bf2027113e5ad6593fb05341beb07139be506a10be74c977bfe7ef353eecef353ee12437be65841b3c4ddc7bbf000080bf42fca53eec97323f20d020be1083f33d80c6f1bdcf5c76bfa6a120bea8e99f3c0db8a0bc1ae884bbd9f27fbf000080bf6664993ef3c27f3fc88504be80c0febc80f51d3dcf5c76bfa6a120bea8e99f3c0db8a0bc1ae884bbd9f27fbf000080bf2027113e5ad6593fd8ef35be1083f33d004dd43c0d9e70bfa6a1a0be6ce809beb628163e977071bc5c347dbf000080bf2ba8203e3e3a7f3f20d020bea0c0febc80c6f1bd911b7cbf00000000d6e2313ef4e031bea130153ce5187cbf000080bf6664993eb377593fc88504be80c0febc80f51d3d63d576bfd529403e1cdf3fbe47e73f3e955691bc5f6c7bbf000080bf2027113e5ad6593f403e3bbe006626bef04f3a3e63d576bfd529403e1cdf3fbe47e73f3e955691bc5f6c7bbf000080bf00eaaf3a9d22373f20d020bea0c0febcf04f3a3ea4d376bf27ef413e113d3ebe9a4b3e3e366490bc11807bbf000080bf00000000c52b593f20d020beb07139be60d9023d22d776bf83643e3e278141beab82413eef4892bc87587bbf000080bf6664193e7b06333fd8ef35be1083f33d004dd43c19896bbf183223bd8cadaa3d58eeb8bd3184063b21f47ebf000080bf2ba8203e3e3a7f3f20d020bea0c0febcf04f3a3e19896bbf183223bd8cadaa3d58eeb8bd3184063b21f47ebf000080bf00000000c52b593fb8af05be1083f33d2017193e2c7d68bf44ec703ef847b13ea1bfb3be0534b83cdba26fbf000080bfa821fe3c0000803fc88504be80c0febc80f51d3d06956ebfa842a1be64e237bea4d1473e0b0096bcf4087bbf000080bf2027113e5ad6593f m_CompressedMesh: m_Vertices: m_NumItems: 0 @@ -79033,13 +79708,13 @@ Mesh: m_BitSize: 0 m_UVInfo: 0 m_LocalAABB: - m_Center: {x: 0, y: -0.000000059604645, z: 0} - m_Extent: {x: 0.17792217, y: 0.101614416, z: 0.17792225} + m_Center: {x: 0.000000059604645, y: -0.000000059604645, z: 0} + m_Extent: {x: 0.18879586, y: 0.22353202, z: 0.18194556} m_MeshUsageFlags: 0 m_CookingOptions: 30 m_BakedConvexCollisionMesh: m_BakedTriangleCollisionMesh: - 'm_MeshMetrics[0]': 1 + 'm_MeshMetrics[0]': 5.845267 'm_MeshMetrics[1]': 1 m_MeshOptimizationFlags: 1 m_StreamData: @@ -82982,171 +83657,6 @@ MonoBehaviour: m_SelectedFaces: m_SelectedEdges: [] m_SelectedVertices: ---- !u!43 &1629898770 -Mesh: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: pb_Mesh-176398 - serializedVersion: 11 - m_SubMeshes: - - serializedVersion: 2 - firstByte: 0 - indexCount: 240 - topology: 0 - baseVertex: 0 - firstVertex: 0 - vertexCount: 114 - localAABB: - m_Center: {x: 0.000000022351742, y: -0.000000014901161, z: 0} - m_Extent: {x: 0.23294654, y: 0.41744506, z: 0.2380414} - m_Shapes: - vertices: [] - shapes: [] - channels: [] - fullWeights: [] - m_BindPose: [] - m_BoneNameHashes: - m_RootBoneNameHash: 0 - m_BonesAABB: [] - m_VariableBoneCountWeights: - m_Data: - m_MeshCompression: 0 - m_IsReadable: 1 - m_KeepVertices: 1 - m_KeepIndices: 1 - m_IndexFormat: 0 - m_IndexBuffer: 00000100020003000100000004000100030005000100040006000100050007000100060008000100070002000100080009000a000b000b000a000c000c000a000d000d000a000e000e000a000f000f000a00100010000a00110011000a0009001200130014001500120014001600170018001700190018001a001b001c001b001d001c001e001f0020001e0021001f002200230024002200240025002600270028002600290027002a002b002c002a002d002b002e002f0030002f00310030001500140032001500320033003300320034003300340035003600180037001800190037003800360039003600370039001d003a001c001d003b003a003b003c003a003b003d003c003e003f0040003e00400041003f001e0020003f00200040004200430023002200420023004400430045004500430042004600470048004800470049004900470026002800490026004a004b004c004a004c004d004b002a002c004c004b002c004e00300031004e0031004f0050004e004f0050004f0051005200530054005300550054005600570058005700590058005a005b005c005b005d005c005e005f0060005f00610060006200630064006300650064006600670068006700690068006a006b006c006b006d006c006e006f0070006f0071007000 - m_VertexData: - serializedVersion: 3 - m_VertexCount: 114 - m_Channels: - - stream: 0 - offset: 0 - format: 0 - dimension: 3 - - stream: 0 - offset: 12 - format: 0 - dimension: 3 - - stream: 0 - offset: 24 - format: 0 - dimension: 4 - - stream: 0 - offset: 0 - format: 0 - dimension: 0 - - stream: 0 - offset: 40 - format: 0 - dimension: 2 - - stream: 0 - offset: 0 - format: 0 - dimension: 0 - - stream: 0 - offset: 0 - format: 0 - dimension: 0 - - stream: 0 - offset: 0 - format: 0 - dimension: 0 - - stream: 0 - offset: 0 - format: 0 - dimension: 0 - - stream: 0 - offset: 0 - format: 0 - dimension: 0 - - stream: 0 - offset: 0 - format: 0 - dimension: 0 - - stream: 0 - offset: 0 - format: 0 - dimension: 0 - - stream: 0 - offset: 0 - format: 0 - dimension: 0 - - stream: 0 - offset: 0 - format: 0 - dimension: 0 - m_DataSize: 5472 - _typelessdata: dfab283e5cbbd5be425c2c3e00000000000080bf00000000000080bf0000000000000000000080bfdfab28be425c2c3efccff9335cbbd5be0000000000000000000080bf00000000000080bf0000000000000000000080bffccff9b3000000008c896e3e5cbbd5be0000000000000000000080bf00000000000080bf0000000000000000000080bf8c896ebe00000000fccfe5335cbbd5be20c1733e00000000000080bf00000000000080bf0000000000000000000080bffccfe5b320c1733ecfab28be5cbbd5be425c2c3e00000000000080bf00000000000080bf0000000000000000000080bfcfab283e425c2c3e7c896ebe5cbbd5be0000b0b200000000000080bf00000000000080bf0000000000000000000080bf7c896e3e0000b0b2d0ab28be5cbbd5be415c2cbe00000000000080bf00000000000080bf0000000000000000000080bfd0ab283e415c2cbefccffd335cbbd5be20c173be00000000000080bf00000000000080bf0000000000000000000080bffccffdb320c173beddab283e5cbbd5be445c2cbe00000000000080bf00000000000080bf0000000000000000000080bfddab28be445c2cbe8b896e3e5abbd53e00000000de5e09340000803f4fbb5e330000803fde5e09b44fbb5e9c000080bf87896e3edbf4b9b288648d325bbbd53e00000000de5e09340000803f4fbb5e330000803fde5e09b44fbb5e9c000080bfacae1eb3dbf4b9b2dbab283e5abbd53e405c2c3ede5e09340000803f4fbb5e330000803fde5e09b44fbb5e9c000080bfd7ab283e3f5c2c3e88648d325bbbd53e20c1733e774542340000803f000000000000803f774542b400000000000080bfb0b17db320c1733ed8ab28be59bbd53e405c2c3e7845c2b40000803f000000000000803f7845c23400000000000080bfceab28be405c2c3e89896ebe59bbd53e00000000de5e89b40000803f52bbde330000803fde5e893400000000000080bf82896ebeddf439b3d8ab28be59bbd53e405c2cbede5e89b40000803f52bbdeb30000803fde5e893400000000000080bfd1ab28be3d5c2cbe88648d325bbbd53e20c173be7845c2b40000803f000000000000803f7845c23400000000000080bf8cde333420c173bedbab283e5abbd53e405c2cbe774542340000803f000000000000803f774542b400000000000080bfd6ab283e405c2cbedfab283e5cbbd5be425c2c3e1566363faf34a0321ca1333f1ca133bf67b204b21466363f000080bf30bfc03d5abbd5be8c896e3e5cbbd5be000000000000803f4fd0a133ac1d8ab3ad1d8a33852e03330000803f000080bfa737b3bd5abbd5be89896e3eb80c343e000000005ec6683f1817d53ef52e94b2a9ca8dbddce31a3eda6e7c3f000080bfa437b3bdbc0c343ee1ab283eb80c343e405c2c3ef5b7253f1892d63e74fb223fdbd023bff7b11ebe98ae403f000080bf2bbfc03dbc0c343efccfe5335cbbd5be20c1733ebc7d50b3c2719e310000803f000080bf682106b17dfe0ab3000080bff106be3d5cbbd5bedfab283e5cbbd5be425c2c3e1566363faf34a0321ca1333f1ca133bf69b204321566363f000080bf4d4ab0bd5cbbd5bea57ee533b80c343e20c1733e112b95b3b515d83e6d15683fb2027cbf804023be76ff973d000080bff106be3db80c343ee1ab283eb80c343e405c2c3ef5b7253f1892d63e74fb223ff0f43dbfd3481f3ee7ee263f000080bf524ab0bdb80c343ecfab28be5cbbd5be425c2c3e136636bf5c5c45b31da1333f1da133bfd178a332136636bf000080bf234ab03d5bbbd5befccfe5335cbbd5be20c1733ebc7d50b3c2719e310000803f000080bf682106317efe0ab3000080bf1907bebd5bbbd5bed2ab28beb70c343e405c2c3eefb725bf1d92d63e77fb223ff5f43dbfca481fbee2ee26bf000080bf2a4ab03dba0c343ea57ee533b80c343e20c1733e112b95b3b515d83e6d15683fb1027cbf7e40233e86ff97bd000080bf1907bebdbb0c343e82896ebeb80c343e000000005cc668bf2017d53e00000000bcca8dbde9e31abeda6e7cbf000080bfb437b33db90c343ecfab28be5cbbd5be425c2c3e136636bf5c5c45b31da1333f1ca133bfcd78a3b2146636bf000080bf2abfc0bd5bbbd5bed2ab28beb70c343e405c2c3eefb725bf1d92d63e77fb223fe1d023bff6b11e3e94ae40bf000080bf24bfc0bdb80c343e7c896ebe5cbbd5be0000b0b2000080bf4fd021b4ac1d8ab200000000822e8333000080bf000080bfb237b33d5bbbd5be82896ebeb80c343e000000005cc668bf2017d53e00000000bdca8d3deae31a3eda6e7cbf000080bfa637b3bdbc0c343ed2ab28beb70c343e405c2cbef2b725bf1a92d63e75fb22bfdfd0233fedb11ebe96ae40bf000080bf30bfc03dbb0c343ed0ab28be5cbbd5be415c2cbe136636bf90e542b31da133bf1ea1333f536ea132136636bf000080bf34bfc03d5abbd5be7c896ebe5cbbd5be0000b0b2000080bf4fd021b4ac1d8ab200000000842e83b3000080bf000080bf9e37b3bd5abbd5bea57ee533b80c343e20c173be112b15b3b415d83e6d1568bfb2027c3f7e4023be82ff97bd000080bf0f07be3db80c343ed0ab28be5cbbd5be415c2cbe136636bf90e542b31da133bf1da1333f546ea1b2136636bf000080bf2e4ab0bd5cbbd5bed2ab28beb70c343e405c2cbef2b725bf1a92d63e75fb22bff1f43d3fce481f3ee5ee26bf000080bf324ab0bdb70c343efccffd335cbbd5be20c173be7efe8ab3501f6132000080bf0000803f9493beb17efe8ab3000080bf1007be3d5cbbd5bee1ab283eb80c343e405c2cbef4b7253f1892d63e74fb22bff0f43d3fd7481fbee8ee263f000080bf4a4ab03dbb0c343efccffd335cbbd5be20c173be7efe8ab3501f6132000080bf0000803f9493be317efe8ab3000080bff706bebd5bbbd5bea57ee533b80c343e20c173be112b15b3b415d83e6d1568bfb2027c3f8040233e7aff973d000080bff806bebdbb0c343eddab283e5cbbd5be445c2cbe1366363ff9d50c331da133bf1ea1333f504e69b21366363f000080bf3f4ab03d5bbbd5be8c896e3e5cbbd5be000000000000803f4fd0a133ac1d8ab3ad1d8a33842e03b30000803f000080bfa837b33d5abbd5beddab283e5cbbd5be445c2cbe1366363ff9d50c331da133bf1da1333f4e4e69321366363f000080bf34bfc0bd5abbd5be89896e3eb80c343e000000005ec6683f1817d53ef52e94b2b3ca8d3ddce31abeda6e7c3f000080bfa637b33dbc0c343ee1ab283eb80c343e405c2cbef4b7253f1892d63e74fb22bfdcd0233ffab11e3e98ae403f000080bf2abfc0bdbc0c343e5912003ed1808b3e000000000000803f9a4e3ab53eba46b200000000c10997b40000803f000080bff47140bdd2808b3ef21eb53dd1808b3e0015b93ddbb1363f6e2b7ab40954333f0a5433bf533fce33dab1363f000080bf1bf94e3dd2808b3e8c896e3e41fbbc3e000000003fd02a3f04ae3ebf5a9904b399735cbec67b45beda12753f000080bfa737b3bd43fbbc3edfab283e41fbbc3e425c2c3e2759f23e6e963fbfede1ed3ed50d03bfa536483e9423563f000080bf30bfc03d43fbbc3ee03bfe33d0808b3e60df023ecffd3cb414fd7b340000803f000080bf9a51d5b313be2db4000080bf5b0d4c3dd0808b3ef21eb53dd1808b3e0015b93ddbb1363f6e2b7ab40954333f085433bf5e2ed0b3dcb1363f000080bf5d4d3dbdd1808b3efccfe53341fbbc3e20c1733ea6e304b3d48040bf79c1283f0cf173bf19bb4c3e6d8a693e000080bff106be3d41fbbc3edfab283e41fbbc3e425c2c3e2759f23e6e963fbfede1ed3e8ede53bffaec49be5588063f000080bf4d4ab0bd41fbbc3ec11eb5bdd1808b3e0015b93dd7b136bf712bfab30d54333f0e5433bf422e5033d8b136bf000080bff54c3d3dd2808b3ee03bfe33d0808b3e60df023ecffd3cb414fd7b340000803f000080bf9a51d53313be2db4000080bfa40d4cbdd1808b3ecfab28be41fbbc3e425c2c3e2159f2be71963fbfe4e1ed3e8ede53bff2ec493e568806bf000080bf234ab03d42fbbc3efccfe53341fbbc3e20c1733ea6e304b3d48040bf79c1283f0bf173bf18bb4cbe738a69be000080bf1907bebd42fbbc3e7c896ebe41fbbc3e0000b0b23dd02abf06ae3ebfb2bf2534bd735cbed37b453ed71275bf000080bfb237b33d42fbbc3e491200bed1808b3e00000000000080bffde2adb4ea25d334832ccfb422f80c34000080bf000080bff271403dd1808b3ec11eb5bdd1808b3e0015b93dd7b136bf712bfab30d54333f0e5433bf3c3f4eb3d7b136bf000080bf2cf94ebdd1808b3ecfab28be41fbbc3e425c2c3e2159f2be71963fbfe4e1ed3ed20d03bf9d3648be962356bf000080bf2abfc0bd42fbbc3e491200bed1808b3e00000000000080bffde2adb4ea25d334832ccfb423f80cb4000080bf000080bfe37140bdd2808b3ed11eb5bdd1808b3e0015b9bddbb136bf162761b4095433bf0a54333f629fb933dab136bf000080bf2df94e3dd2808b3ed0ab28be41fbbc3e415c2cbe2659f2be6e963fbfede1edbed50d033fa536483e942356bf000080bf34bfc03d43fbbc3e7c896ebe41fbbc3e0000b0b23dd02abf06ae3ebfb2bf25349b735c3ed07b45bed81275bf000080bf9e37b3bd43fbbc3efccffd3341fbbc3e20c173be795547b3d48040bf79c128bf0bf1733f18bb4c3e728a69be000080bf1007be3d41fbbc3ee03bfe33d0808b3e60df02be4297c9b2e6caa334000080bf0000803f5fa80ab47bfe0ab3000080bf9a0d4c3dd0808b3ed0ab28be41fbbc3e415c2cbe2659f2be6e963fbfede1edbe8dde533ff5ec49be558806bf000080bf2e4ab0bd41fbbc3ed11eb5bdd1808b3e0015b9bddbb136bf162761b4095433bf0954333ffe5cbbb3dcb136bf000080bf1c4d3dbdd1808b3eddab283e41fbbc3e445c2cbe2759f23e6c963fbfeee1edbe8ede533ff8ec493e5588063f000080bf3f4ab03d42fbbc3ef21eb53dd1808b3e0015b9bddbb1363f6e2b7ab4095433bf0954333f712ed033dcb1363f000080bf544d3d3dd2808b3ee03bfe33d0808b3e60df02be4297c9b2e6caa334000080bf0000803f5ea80a347afe0ab3000080bf630d4cbdd1808b3efccffd3341fbbc3e20c173be795547b3d48040bf79c128bf0cf1733f16bb4cbe6b8a693e000080bff706bebd42fbbc3e5912003ed1808b3e000000000000803f9a4e3ab53eba46b200000000c20997340000803f000080bff671403dd2808b3ef21eb53dd1808b3e0015b9bddbb1363f6e2b7ab4095433bf0a54333f513fceb3dab1363f000080bf19f94ebdd2808b3e8c896e3e41fbbc3e000000003fd02a3f04ae3ebf5a9904b39e735c3ec67b453eda12753f000080bfa837b33d43fbbc3eddab283e41fbbc3e445c2cbe2759f23e6c963fbfeee1edbed70d033fa13648be9423563f000080bf34bfc0bd43fbbc3e8c896e3e41fbbc3e00000000ff3f6d3f125f99346f56c0be7156c03e145f992800406d3f000080bfb337b33d3ffbbc3eddab283e41fbbc3e445c2cbeff3f6d3f843231357256c0be7256c03e8532b128ff3f6d3f000080bf2abfc0bd3ffbbc3e8b896e3e5abbd53e00000000ff3f6d3f843231357256c0be7256c03e8532b128ff3f6d3f000080bfb237b33d58bbd53edbab283e5abbd53e405c2cbeff3f6d3fc0da8a357656c0be7656c03ec0da0a29ff3f6d3f000080bf24bfc0bd58bbd53edfab283e41fbbc3e425c2c3e00406d3fac74b8356c56c03e6c56c0be0000000000406d3f000080bf28bfc03d37fbbc3e8c896e3e41fbbc3e0000000000406d3f70cc5e357156c03e7156c0be70ccdea800406d3f000080bfb037b3bd37fbbc3edbab283e5abbd53e405c2c3e00406d3f70cc5e357156c03e7156c0be70ccdea800406d3f000080bf27bfc03d50bbd53e8b896e3e5abbd53e00000000ff3f6d3f125f99347656c03e7656c0be125f19a8ff3f6d3f000080bfaf37b3bd50bbd53eddab283e41fbbc3e445c2cbef892c73effa7b83543c06bbf43c06b3fffa73829f892c73e000080bf354ab03d37fbbc3efccffd3341fbbc3e20c173befa92c73ea560933542c06bbf43c06b3f00000000fb92c73e000080bf0207bebd37fbbc3edbab283e5abbd53e405c2cbefa92c73ea560933542c06bbf43c06b3f00000000fb92c73e000080bf354ab03d50bbd53e88648d325bbbd53e20c173befd92c73e96325c3542c06bbf42c06b3f9632dc28fd92c73e000080bf0e07bebd51bbd53efccffd3341fbbc3e20c173befd92c7be97325cb542c06bbf42c06b3f00000000fd92c7be000080bf2407be3d47fbbc3ed0ab28be41fbbc3e415c2cbefe92c7be930349b542c06bbf42c06b3f00000000fe92c7be000080bf1b4ab0bd47fbbc3e88648d325bbbd53e20c173befe92c7be930349b542c06bbf42c06b3f00000000fe92c7be000080bf1707be3d61bbd53ed8ab28be59bbd53e405c2cbeff92c7be8fd435b542c06bbf42c06b3f00000000ff92c7be000080bf2b4ab0bd5fbbd53ed0ab28be41fbbc3e415c2cbe00406dbfb19911b66b56c0be6c56c03eb29991a901406dbf000080bf32bfc03d51fbbc3e7c896ebe41fbbc3e0000b0b2ff3f6dbf641240b67156c0be7256c03e0000000000406dbf000080bfa037b3bd51fbbc3ed8ab28be59bbd53e405c2cbeff3f6dbf641240b67156c0be7256c03e0000000000406dbf000080bf2abfc03d69bbd53e89896ebe59bbd53e00000000fe3f6dbf188b6eb67756c0be7856c03e198bee29fe3f6dbf000080bfad37b3bd69bbd53e7c896ebe41fbbc3e0000b0b200406dbffaf481b66b56c03e6b56c0be0000000000406dbf000080bfa537b33d5dfbbc3ecfab28be41fbbc3e425c2c3eff3f6dbf107550b67156c03e7156c0be1075d029ff3f6dbf000080bf35bfc0bd5dfbbc3e89896ebe59bbd53e00000000ff3f6dbf107550b67156c03e7156c0be1075d029ff3f6dbf000080bfad37b33d75bbd53ed8ab28be59bbd53e405c2c3efe3f6dbf2b001db67756c03e7756c0be2b009d29fe3f6dbf000080bf2abfc0bd75bbd53ecfab28be41fbbc3e425c2c3efc92c7be0ae209b542c06b3f42c06bbf00000000fc92c7be000080bf194ab03d45fbbc3efccfe53341fbbc3e20c1733efd92c7bef1f126b542c06b3f42c06bbf00000000fd92c7be000080bf2107bebd45fbbc3ed8ab28be59bbd53e405c2c3efd92c7bef1f126b542c06b3f42c06bbf00000000fd92c7be000080bf2b4ab03d5dbbd53e88648d325bbbd53e20c1733efe92c7bed80144b542c06b3f42c06bbf00000000fe92c7be000080bf1607bebd5fbbd53efccfe53341fbbc3e20c1733efb92c73ed501443543c06b3f43c06bbfd501c4a8fb92c73e000080bf0607be3d3cfbbc3edfab283e41fbbc3e425c2c3efc92c73e6cb66e3542c06b3f42c06bbf00000000fc92c73e000080bf394ab0bd3cfbbc3e88648d325bbbd53e20c1733efc92c73e6cb66e3542c06b3f42c06bbf00000000fc92c73e000080bf1107be3d56bbd53edbab283e5abbd53e405c2c3efe92c73e82b58c3542c06b3f42c06bbf82b50c29fe92c73e000080bf334ab0bd55bbd53e - m_CompressedMesh: - m_Vertices: - m_NumItems: 0 - m_Range: 0 - m_Start: 0 - m_Data: - m_BitSize: 0 - m_UV: - m_NumItems: 0 - m_Range: 0 - m_Start: 0 - m_Data: - m_BitSize: 0 - m_Normals: - m_NumItems: 0 - m_Range: 0 - m_Start: 0 - m_Data: - m_BitSize: 0 - m_Tangents: - m_NumItems: 0 - m_Range: 0 - m_Start: 0 - m_Data: - m_BitSize: 0 - m_Weights: - m_NumItems: 0 - m_Data: - m_BitSize: 0 - m_NormalSigns: - m_NumItems: 0 - m_Data: - m_BitSize: 0 - m_TangentSigns: - m_NumItems: 0 - m_Data: - m_BitSize: 0 - m_FloatColors: - m_NumItems: 0 - m_Range: 0 - m_Start: 0 - m_Data: - m_BitSize: 0 - m_BoneIndices: - m_NumItems: 0 - m_Data: - m_BitSize: 0 - m_Triangles: - m_NumItems: 0 - m_Data: - m_BitSize: 0 - m_UVInfo: 0 - m_LocalAABB: - m_Center: {x: 0.000000022351742, y: -0.000000014901161, z: 0} - m_Extent: {x: 0.23294654, y: 0.41744506, z: 0.2380414} - m_MeshUsageFlags: 0 - m_CookingOptions: 30 - m_BakedConvexCollisionMesh: - m_BakedTriangleCollisionMesh: - 'm_MeshMetrics[0]': 1.4446633 - 'm_MeshMetrics[1]': 1 - m_MeshOptimizationFlags: 1 - m_StreamData: - serializedVersion: 2 - offset: 0 - size: 0 - path: --- !u!43 &1633368937 Mesh: m_ObjectHideFlags: 0 @@ -93956,6 +94466,19 @@ Mesh: offset: 0 size: 0 path: +--- !u!134 &1824198666 +PhysicsMaterial: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + serializedVersion: 2 + m_DynamicFriction: 0.6 + m_StaticFriction: 0.6 + m_Bounciness: 0 + m_FrictionCombine: 0 + m_BounceCombine: 0 --- !u!1 &1824869033 GameObject: m_ObjectHideFlags: 0 @@ -111729,6 +112252,83 @@ Mesh: offset: 0 size: 0 path: +--- !u!1001 &3678782071432778941 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 171915070508416281, guid: 8fce593e28d06e54d83ed63d9e60c3c0, type: 3} + propertyPath: maximumDraggers + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 3792544786712207931, guid: 8fce593e28d06e54d83ed63d9e60c3c0, type: 3} + propertyPath: m_Mass + value: 30 + objectReference: {fileID: 0} + - target: {fileID: 4548792826172284241, guid: 8fce593e28d06e54d83ed63d9e60c3c0, type: 3} + propertyPath: m_InScenePlaced + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4548792826172284241, guid: 8fce593e28d06e54d83ed63d9e60c3c0, type: 3} + propertyPath: GlobalObjectIdHash + value: 2433392156 + objectReference: {fileID: 0} + - target: {fileID: 4548792826172284241, guid: 8fce593e28d06e54d83ed63d9e60c3c0, type: 3} + propertyPath: InScenePlacedSourceGlobalObjectIdHash + value: 996686708 + objectReference: {fileID: 0} + - target: {fileID: 5225331470301378431, guid: 8fce593e28d06e54d83ed63d9e60c3c0, type: 3} + propertyPath: m_Name + value: LightDragCrate_Test + objectReference: {fileID: 0} + - target: {fileID: 6263994081241283953, guid: 8fce593e28d06e54d83ed63d9e60c3c0, type: 3} + propertyPath: m_LocalPosition.x + value: -5.62 + objectReference: {fileID: 0} + - target: {fileID: 6263994081241283953, guid: 8fce593e28d06e54d83ed63d9e60c3c0, type: 3} + propertyPath: m_LocalPosition.y + value: 0.6 + objectReference: {fileID: 0} + - target: {fileID: 6263994081241283953, guid: 8fce593e28d06e54d83ed63d9e60c3c0, type: 3} + propertyPath: m_LocalPosition.z + value: -1.2 + objectReference: {fileID: 0} + - target: {fileID: 6263994081241283953, guid: 8fce593e28d06e54d83ed63d9e60c3c0, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 6263994081241283953, guid: 8fce593e28d06e54d83ed63d9e60c3c0, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6263994081241283953, guid: 8fce593e28d06e54d83ed63d9e60c3c0, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6263994081241283953, guid: 8fce593e28d06e54d83ed63d9e60c3c0, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6263994081241283953, guid: 8fce593e28d06e54d83ed63d9e60c3c0, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6263994081241283953, guid: 8fce593e28d06e54d83ed63d9e60c3c0, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6263994081241283953, guid: 8fce593e28d06e54d83ed63d9e60c3c0, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 8fce593e28d06e54d83ed63d9e60c3c0, type: 3} --- !u!1001 &5594360807126823161 PrefabInstance: m_ObjectHideFlags: 0 @@ -111818,3 +112418,5 @@ SceneRoots: - {fileID: 348696995} - {fileID: 84803019} - {fileID: 1275624065} + - {fileID: 3678782071432778941} + - {fileID: 1404423013} diff --git a/Assets/DefaultNetworkPrefabs.asset b/Assets/DefaultNetworkPrefabs.asset index 3ce4f3e..1ad56a9 100644 --- a/Assets/DefaultNetworkPrefabs.asset +++ b/Assets/DefaultNetworkPrefabs.asset @@ -29,3 +29,18 @@ MonoBehaviour: SourcePrefabToOverride: {fileID: 0} SourceHashToOverride: 0 OverridingTargetPrefab: {fileID: 0} + - Override: 0 + Prefab: {fileID: 5225331470301378431, guid: 8fce593e28d06e54d83ed63d9e60c3c0, type: 3} + SourcePrefabToOverride: {fileID: 0} + SourceHashToOverride: 0 + OverridingTargetPrefab: {fileID: 0} + - Override: 0 + Prefab: {fileID: 5225331470301378431, guid: 43c2ed447ed075a4c9bb39cb8b389c0e, type: 3} + SourcePrefabToOverride: {fileID: 0} + SourceHashToOverride: 0 + OverridingTargetPrefab: {fileID: 0} + - Override: 0 + Prefab: {fileID: 8815354352711425077, guid: 593b09321d7982e48a7d65a32da0d96a, type: 3} + SourcePrefabToOverride: {fileID: 0} + SourceHashToOverride: 0 + OverridingTargetPrefab: {fileID: 0}