From 69a0a752be3ad6cb605ab3c61db8aeb0fbd39bd7 Mon Sep 17 00:00:00 2001 From: Marro64 Date: Thu, 1 Jan 2026 20:44:34 +0100 Subject: [PATCH] Successful sync test --- Assets/Scenes/PacMan.unity | 2160 ++++++++++++----- Assets/Scripts/BonusFruit.cs | 13 +- Assets/Scripts/GameManager.cs | 15 +- Assets/Scripts/Ghost.cs | 4 +- Assets/Scripts/GridMover.cs | 10 +- Assets/Scripts/NetworkManager.asset | 230 +- Assets/Scripts/NetworkManager.cs | 401 ++- Assets/Scripts/SyncedObject.cs | 7 +- Assets/Test stuff.meta | 8 + Assets/Test stuff/ColoredTexture.controller | 109 + .../Test stuff/ColoredTexture.controller.meta | 8 + Assets/Test stuff/GreenTexture.anim | 206 ++ Assets/Test stuff/GreenTexture.anim.meta | 8 + Assets/Test stuff/RedTexture.anim | 206 ++ Assets/Test stuff/RedTexture.anim.meta | 8 + Assets/Test stuff/TestBall.asset | 394 +++ Assets/Test stuff/TestBall.asset.meta | 8 + Assets/Test stuff/TestBall.cs | 107 + Assets/Test stuff/TestBall.cs.meta | 11 + 19 files changed, 3173 insertions(+), 740 deletions(-) create mode 100644 Assets/Test stuff.meta create mode 100644 Assets/Test stuff/ColoredTexture.controller create mode 100644 Assets/Test stuff/ColoredTexture.controller.meta create mode 100644 Assets/Test stuff/GreenTexture.anim create mode 100644 Assets/Test stuff/GreenTexture.anim.meta create mode 100644 Assets/Test stuff/RedTexture.anim create mode 100644 Assets/Test stuff/RedTexture.anim.meta create mode 100644 Assets/Test stuff/TestBall.asset create mode 100644 Assets/Test stuff/TestBall.asset.meta create mode 100644 Assets/Test stuff/TestBall.cs create mode 100644 Assets/Test stuff/TestBall.cs.meta diff --git a/Assets/Scenes/PacMan.unity b/Assets/Scenes/PacMan.unity index b40358d..7c34f61 100644 --- a/Assets/Scenes/PacMan.unity +++ b/Assets/Scenes/PacMan.unity @@ -654,6 +654,37 @@ PrefabInstance: m_AddedGameObjects: [] m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 00a825a5aeafee94789192f61cbb3a5a, type: 3} +--- !u!1 &29433775 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 29433776} + m_Layer: 0 + m_Name: Loading screen + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &29433776 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 29433775} + 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: 1961479820} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1001 &32949209 PrefabInstance: m_ObjectHideFlags: 0 @@ -1243,110 +1274,6 @@ PrefabInstance: m_AddedGameObjects: [] m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 00a825a5aeafee94789192f61cbb3a5a, type: 3} ---- !u!1 &49515935 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 49515936} - - component: {fileID: 49515939} - - component: {fileID: 49515938} - - component: {fileID: 49515937} - m_Layer: 0 - m_Name: Skip level button - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &49515936 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 49515935} - serializedVersion: 2 - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0.265, y: 0.789, z: 0.296} - m_LocalScale: {x: 0.08076144, y: 0.08076144, z: 0.08076144} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 2146786255} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &49515937 -MonoBehaviour: - m_ObjectHideFlags: 2 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 49515935} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 45115577ef41a5b4ca741ed302693907, type: 3} - m_Name: - m_EditorClassIdentifier: - interactTextPlacement: {fileID: 0} - interactText: Skip level - interactTextGO: {fileID: 0} - proximity: 2 - SynchronizePosition: 0 - AllowCollisionOwnershipTransfer: 0 - Reliable: 0 - _syncMethod: 2 - serializedProgramAsset: {fileID: 11400000, guid: 3473403fe88c8134e8be431c33461470, type: 2} - programSource: {fileID: 11400000, guid: b729fe1256b57ed45adc7743d16599bf, type: 2} - serializedPublicVariablesBytesString: Ai8AAAAAATIAAABWAFIAQwAuAFUAZABvAG4ALgBDAG8AbQBtAG8AbgAuAFUAZABvAG4AVgBhAHIAaQBhAGIAbABlAFQAYQBiAGwAZQAsACAAVgBSAEMALgBVAGQAbwBuAC4AQwBvAG0AbQBvAG4AAAAAAAYBAAAAAAAAACcBBAAAAHQAeQBwAGUAAWgAAABTAHkAcwB0AGUAbQAuAEMAbwBsAGwAZQBjAHQAaQBvAG4AcwAuAEcAZQBuAGUAcgBpAGMALgBMAGkAcwB0AGAAMQBbAFsAVgBSAEMALgBVAGQAbwBuAC4AQwBvAG0AbQBvAG4ALgBJAG4AdABlAHIAZgBhAGMAZQBzAC4ASQBVAGQAbwBuAFYAYQByAGkAYQBiAGwAZQAsACAAVgBSAEMALgBVAGQAbwBuAC4AQwBvAG0AbQBvAG4AXQBdACwAIABtAHMAYwBvAHIAbABpAGIAAQEJAAAAVgBhAHIAaQBhAGIAbABlAHMALwEAAAABaAAAAFMAeQBzAHQAZQBtAC4AQwBvAGwAbABlAGMAdABpAG8AbgBzAC4ARwBlAG4AZQByAGkAYwAuAEwAaQBzAHQAYAAxAFsAWwBWAFIAQwAuAFUAZABvAG4ALgBDAG8AbQBtAG8AbgAuAEkAbgB0AGUAcgBmAGEAYwBlAHMALgBJAFUAZABvAG4AVgBhAHIAaQBhAGIAbABlACwAIABWAFIAQwAuAFUAZABvAG4ALgBDAG8AbQBtAG8AbgBdAF0ALAAgAG0AcwBjAG8AcgBsAGkAYgABAAAABgEAAAAAAAAAAi8CAAAAAUkAAABWAFIAQwAuAFUAZABvAG4ALgBDAG8AbQBtAG8AbgAuAFUAZABvAG4AVgBhAHIAaQBhAGIAbABlAGAAMQBbAFsAUwB5AHMAdABlAG0ALgBJAG4AdAAzADIALAAgAG0AcwBjAG8AcgBsAGkAYgBdAF0ALAAgAFYAUgBDAC4AVQBkAG8AbgAuAEMAbwBtAG0AbwBuAAIAAAAGAgAAAAAAAAAnAQQAAAB0AHkAcABlAAEXAAAAUwB5AHMAdABlAG0ALgBTAHQAcgBpAG4AZwAsACAAbQBzAGMAbwByAGwAaQBiACcBCgAAAFMAeQBtAGIAbwBsAE4AYQBtAGUAAR8AAABfAF8AXwBVAGQAbwBuAFMAaABhAHIAcABCAGUAaABhAHYAaQBvAHUAcgBWAGUAcgBzAGkAbwBuAF8AXwBfACcBBAAAAHQAeQBwAGUAARYAAABTAHkAcwB0AGUAbQAuAEkAbgB0ADMAMgAsACAAbQBzAGMAbwByAGwAaQBiABcBBQAAAFYAYQBsAHUAZQACAAAABwUHBQcF - publicVariablesUnityEngineObjects: [] - publicVariablesSerializationDataFormat: 0 ---- !u!114 &49515938 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 49515935} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 3d9af496212c74a45a7b915169e465af, type: 3} - m_Name: - m_EditorClassIdentifier: - serializationData: - SerializedFormat: 2 - SerializedBytes: - ReferencedUnityObjects: [] - SerializedBytesString: - Prefab: {fileID: 0} - PrefabModificationsReferencedUnityObjects: [] - PrefabModifications: [] - SerializationNodes: [] - _udonSharpBackingUdonBehaviour: {fileID: 49515937} - customEventReceiver: {fileID: 174205108} - eventName: SkipLevelButtonPressed ---- !u!135 &49515939 -SphereCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 49515935} - m_Material: {fileID: 0} - m_IncludeLayers: - serializedVersion: 2 - m_Bits: 0 - m_ExcludeLayers: - serializedVersion: 2 - m_Bits: 0 - m_LayerOverridePriority: 0 - m_IsTrigger: 1 - m_ProvidesContacts: 0 - m_Enabled: 1 - serializedVersion: 3 - m_Radius: 0.5 - m_Center: {x: 0, y: 0, z: 0} --- !u!4 &53629142 stripped Transform: m_CorrespondingSourceObject: {fileID: 1315692994360949719, guid: 00a825a5aeafee94789192f61cbb3a5a, type: 3} @@ -3884,6 +3811,37 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} +--- !u!1 &147662345 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 147662346} + m_Layer: 0 + m_Name: Include target player + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &147662346 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 147662345} + 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: 1961479820} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1001 &149029597 PrefabInstance: m_ObjectHideFlags: 0 @@ -9633,6 +9591,111 @@ PrefabInstance: m_AddedGameObjects: [] m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 9fbd72f5bc3c5434a87ab8539789c584, type: 3} +--- !u!1 &312606796 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 312606797} + - component: {fileID: 312606800} + - component: {fileID: 312606799} + - component: {fileID: 312606798} + m_Layer: 0 + m_Name: End + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &312606797 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 312606796} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.542, y: 0, z: 0.348} + m_LocalScale: {x: 0.01, y: 0.01, z: 0.01} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1003947896} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!135 &312606798 +SphereCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 312606796} + 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 &312606799 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 312606796} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &312606800 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 312606796} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} --- !u!1001 &312707109 PrefabInstance: m_ObjectHideFlags: 0 @@ -10026,6 +10089,113 @@ Transform: m_CorrespondingSourceObject: {fileID: 1315692994360949719, guid: 00a825a5aeafee94789192f61cbb3a5a, type: 3} m_PrefabInstance: {fileID: 2056934289} m_PrefabAsset: {fileID: 0} +--- !u!1 &332716162 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 332716163} + - component: {fileID: 332716166} + - component: {fileID: 332716165} + - component: {fileID: 332716164} + m_Layer: 0 + m_Name: Debug panel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &332716163 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 332716162} + serializedVersion: 2 + m_LocalRotation: {x: 0.6625488, y: 0.24704081, z: 0.24704081, w: -0.6625487} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.13525, y: 0.13525, z: 0.13525} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1572932994} + m_Father: {fileID: 696593979} + m_LocalEulerAnglesHint: {x: 270, y: 0, z: -40.897} +--- !u!64 &332716164 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 332716162} + 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: 5 + m_Convex: 0 + m_CookingOptions: 30 + m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &332716165 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 332716162} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &332716166 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 332716162} + m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} --- !u!4 &333720322 stripped Transform: m_CorrespondingSourceObject: {fileID: 1315692994360949719, guid: 00a825a5aeafee94789192f61cbb3a5a, type: 3} @@ -13242,7 +13412,7 @@ Transform: m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 2129311453} + m_Father: {fileID: 1961479820} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &458412320 stripped GameObject: @@ -13604,12 +13774,12 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 462506944} serializedVersion: 2 - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 2129311453} + m_Father: {fileID: 1961479820} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1001 &462753108 PrefabInstance: @@ -20122,6 +20292,40 @@ Transform: m_CorrespondingSourceObject: {fileID: 1315692994360949719, guid: 00a825a5aeafee94789192f61cbb3a5a, type: 3} m_PrefabInstance: {fileID: 867713315} m_PrefabAsset: {fileID: 0} +--- !u!1 &696593978 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 696593979} + m_Layer: 0 + m_Name: Network test + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &696593979 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 696593978} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -3.323, y: 0.972, z: 3.216} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 332716163} + - {fileID: 1003947896} + - {fileID: 1200574208} + m_Father: {fileID: 1203813883} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1001 &697998654 PrefabInstance: m_ObjectHideFlags: 0 @@ -23212,292 +23416,6 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: a79412bf624eb994fa04fb74977f55fb, type: 3} m_Name: m_EditorClassIdentifier: - clip: {fileID: 7400000, guid: f877d45bda044f4479e2b0b57c574eed, type: 2} - root: {fileID: 2084589242} - gameObjectsToAnimate: - - {fileID: 384558790} - - {fileID: 1592985534} - - {fileID: 1407423078} - - {fileID: 262522556} - - {fileID: 63452431} - - {fileID: 2073183852} - - {fileID: 2088338284} - - {fileID: 640882336} - - {fileID: 1646318726} - - {fileID: 1157790585} - - {fileID: 792390074} - - {fileID: 288600748} - - {fileID: 1813519264} - - {fileID: 12410353} - - {fileID: 373624398} - - {fileID: 1359317613} - - {fileID: 1450661849} - - {fileID: 898924360} - - {fileID: 432789898} - - {fileID: 1013412424} - - {fileID: 1630553613} - - {fileID: 964869677} - - {fileID: 375811579} - - {fileID: 1012677329} - - {fileID: 1224883461} - - {fileID: 1461652112} - - {fileID: 886294625} - - {fileID: 1480961489} - - {fileID: 368148040} - - {fileID: 1492609792} - - {fileID: 861664300} - - {fileID: 662519967} - - {fileID: 1403247891} - - {fileID: 1408697865} - - {fileID: 320926302} - - {fileID: 1409553861} - - {fileID: 2084543857} - - {fileID: 731734338} - - {fileID: 1523820053} - - {fileID: 494316711} - - {fileID: 1284734172} - - {fileID: 1436844926} - - {fileID: 226050919} - - {fileID: 928828676} - - {fileID: 1018471261} - - {fileID: 1789285490} - - {fileID: 23555871} - - {fileID: 116499013} - - {fileID: 1660323413} - - {fileID: 1872793936} - - {fileID: 460557384} - - {fileID: 469754757} - - {fileID: 458412320} - - {fileID: 506282319} - - {fileID: 1930326098} - - {fileID: 2022638675} - - {fileID: 586473939} - - {fileID: 2030213517} - - {fileID: 608565729} - - {fileID: 1403072542} - - {fileID: 1014819380} - - {fileID: 216673818} - - {fileID: 1540720859} - - {fileID: 239878090} - - {fileID: 1472000832} - - {fileID: 1245947246} - - {fileID: 975039010} - - {fileID: 1448214290} - - {fileID: 2127324635} - - {fileID: 425537129} - - {fileID: 1016727381} - - {fileID: 691019952} - - {fileID: 2076415671} - - {fileID: 264590563} - - {fileID: 1054174558} - - {fileID: 1671835895} - - {fileID: 574277901} - - {fileID: 1666862952} - - {fileID: 1121189810} - - {fileID: 186210445} - - {fileID: 565973941} - - {fileID: 1101791360} - - {fileID: 174620009} - - {fileID: 1674127583} - - {fileID: 493859819} - - {fileID: 1641368407} - - {fileID: 2059559262} - - {fileID: 714774601} - - {fileID: 1691550372} - - {fileID: 12806648} - - {fileID: 1001223344} - - {fileID: 722252150} - - {fileID: 382621515} - - {fileID: 1764384754} - - {fileID: 1320931654} - - {fileID: 509895551} - - {fileID: 66035346} - - {fileID: 1714954706} - - {fileID: 1002272347} - - {fileID: 1418273771} - - {fileID: 817541382} - - {fileID: 68892790} - - {fileID: 1043999781} - - {fileID: 336464697} - - {fileID: 129397887} - - {fileID: 1105164428} - - {fileID: 382176038} - - {fileID: 1409872996} - - {fileID: 1739858803} - - {fileID: 490295004} - - {fileID: 118005947} - - {fileID: 1684733109} - - {fileID: 41877761} - - {fileID: 272715091} - - {fileID: 965427538} - - {fileID: 1732257397} - - {fileID: 2134745656} - - {fileID: 547436616} - - {fileID: 1503721137} - - {fileID: 101965524} - - {fileID: 266994985} - - {fileID: 1679011168} - - {fileID: 93019363} - - {fileID: 35748394} - - {fileID: 1700908653} - - {fileID: 599279658} - - {fileID: 250690438} - - {fileID: 651702244} - - {fileID: 1907811645} - - {fileID: 810792676} - - {fileID: 1250709928} - - {fileID: 2085977474} - - {fileID: 170484130} - - {fileID: 92273494} - - {fileID: 1401728108} - - {fileID: 1513461730} - - {fileID: 600150920} - - {fileID: 1898242099} - - {fileID: 531808328} - - {fileID: 1392857499} - - {fileID: 2022004417} - - {fileID: 2032335686} - - {fileID: 129595475} - - {fileID: 753990521} - - {fileID: 1019722791} - - {fileID: 1959872132} - - {fileID: 675308624} - - {fileID: 1667137329} - - {fileID: 491430531} - - {fileID: 446225078} - - {fileID: 1934033480} - - {fileID: 1035439} - - {fileID: 413396680} - - {fileID: 1731318006} - - {fileID: 1750297875} - - {fileID: 1167828454} - - {fileID: 1892808599} - - {fileID: 696573218} - - {fileID: 1485745523} - - {fileID: 987882440} - - {fileID: 1368462246} - - {fileID: 964231232} - - {fileID: 15486003} - - {fileID: 1607899565} - - {fileID: 2145578061} - - {fileID: 2041053342} - - {fileID: 33280975} - - {fileID: 996376306} - - {fileID: 829876041} - - {fileID: 577460230} - - {fileID: 941641801} - - {fileID: 2011150341} - - {fileID: 266575271} - - {fileID: 828733077} - - {fileID: 1430474353} - - {fileID: 1883312318} - - {fileID: 248913371} - - {fileID: 2084765740} - - {fileID: 1981441952} - - {fileID: 1137161690} - - {fileID: 801875338} - - {fileID: 784630501} - - {fileID: 2096701984} - - {fileID: 1011488092} - - {fileID: 1991173131} - - {fileID: 241926282} - - {fileID: 401269542} - - {fileID: 1214273987} - - {fileID: 402520084} - - {fileID: 878033320} - - {fileID: 1461788303} - - {fileID: 512239945} - - {fileID: 1667763306} - - {fileID: 1677783801} - - {fileID: 2139540675} - - {fileID: 247362666} - - {fileID: 478379422} - - {fileID: 1274682598} - - {fileID: 491618446} - - {fileID: 994389313} - - {fileID: 895241793} - - {fileID: 1926530751} - - {fileID: 1523555363} - - {fileID: 600156745} - - {fileID: 1346564541} - - {fileID: 744528487} - - {fileID: 398313923} - - {fileID: 605744601} - - {fileID: 878252278} - - {fileID: 1406998372} - - {fileID: 494263341} - - {fileID: 236177420} - - {fileID: 2035537415} - - {fileID: 1842640473} - - {fileID: 473032851} - - {fileID: 1262980631} - - {fileID: 526478938} - - {fileID: 546976213} - - {fileID: 1364254242} - - {fileID: 754909600} - - {fileID: 2138572675} - - {fileID: 193939075} - - {fileID: 1758634005} - - {fileID: 830231825} - - {fileID: 102650802} - - {fileID: 1674579401} - - {fileID: 1855384639} - - {fileID: 1435261731} - - {fileID: 1625340280} - - {fileID: 280211219} - - {fileID: 520393905} - - {fileID: 618800992} - - {fileID: 530442186} - - {fileID: 1530560594} - - {fileID: 1573700151} - - {fileID: 1283389278} - - {fileID: 77074288} - - {fileID: 1518047589} - - {fileID: 1394104185} - - {fileID: 551362171} - - {fileID: 805185634} - - {fileID: 1855782601} - - {fileID: 409824098} - - {fileID: 832030569} - - {fileID: 2053597328} - - {fileID: 659175847} - - {fileID: 1184758208} - - {fileID: 2028366766} - - {fileID: 580910587} - - {fileID: 1623207626} - - {fileID: 1678168463} - - {fileID: 1488117259} - - {fileID: 1688033234} - - {fileID: 999276534} - - {fileID: 2078862350} - - {fileID: 857863772} - - {fileID: 261757687} - - {fileID: 75009022} - - {fileID: 245945659} - - {fileID: 265710114} - - {fileID: 2066618606} - - {fileID: 1060552069} - - {fileID: 863387954} - - {fileID: 1635955160} - - {fileID: 1551317024} - - {fileID: 527136483} - - {fileID: 1992253055} - - {fileID: 1156762256} - - {fileID: 46738779} - - {fileID: 567012245} - - {fileID: 1977846720} - - {fileID: 140466951} - - {fileID: 973113514} - - {fileID: 2063054470} - - {fileID: 573616886} - - {fileID: 1528725311} - - {fileID: 672012583} - - {fileID: 1953094368} - - {fileID: 1393768951} - - {fileID: 1200105218} - - {fileID: 633759679} - - {fileID: 905219922} - recorder: {fileID: 0} --- !u!1001 &786407051 PrefabInstance: m_ObjectHideFlags: 0 @@ -24434,13 +24352,13 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 810856531} serializedVersion: 2 - m_LocalRotation: {x: -0.3260441, y: -0.63910687, z: -0.60571325, w: 0.34401923} - m_LocalPosition: {x: -1.0937335, y: 1.0491457, z: 0.6079998} - m_LocalScale: {x: 0.13524517, y: 0.13524519, z: 0.1352452} + m_LocalRotation: {x: -0.60571325, y: 0.34401923, z: 0.3260441, w: 0.63910687} + m_LocalPosition: {x: 1.0937335, y: 1.0491457, z: 3.6420002} + m_LocalScale: {x: 0.13524519, y: 0.13524519, z: 0.13524523} m_ConstrainProportionsScale: 0 m_Children: - {fileID: 653732755} - m_Father: {fileID: 2146786255} + m_Father: {fileID: 1203813883} m_LocalEulerAnglesHint: {x: -86.927, y: 56.585, z: 0} --- !u!1 &811840790 GameObject: @@ -24529,6 +24447,7 @@ MonoBehaviour: - {fileID: 1910438138} - {fileID: 1407423087} - {fileID: 1541737191} + DebugImageToIndicateOwner: {fileID: 0} --- !u!1 &817541382 stripped GameObject: m_CorrespondingSourceObject: {fileID: 4099390335584803315, guid: 00a825a5aeafee94789192f61cbb3a5a, type: 3} @@ -27466,7 +27385,6 @@ Transform: m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: - - {fileID: 1203813883} - {fileID: 2146786255} m_Father: {fileID: 1170168279} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} @@ -29086,6 +29004,111 @@ Transform: m_Children: [] m_Father: {fileID: 1438618203} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &992156375 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 992156376} + - component: {fileID: 992156379} + - component: {fileID: 992156378} + - component: {fileID: 992156377} + m_Layer: 0 + m_Name: Start + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &992156376 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 992156375} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.468, y: 0, z: -0.498} + m_LocalScale: {x: 0.01, y: 0.01, z: 0.01} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1003947896} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!135 &992156377 +SphereCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 992156375} + 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 &992156378 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 992156375} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &992156379 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 992156375} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} --- !u!1001 &992461014 PrefabInstance: m_ObjectHideFlags: 0 @@ -29517,7 +29540,6 @@ Transform: m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: - - {fileID: 1359627184} - {fileID: 1321513926} - {fileID: 979503863} - {fileID: 1983089941} @@ -29608,6 +29630,40 @@ Transform: m_CorrespondingSourceObject: {fileID: 1315692994360949719, guid: 00a825a5aeafee94789192f61cbb3a5a, type: 3} m_PrefabInstance: {fileID: 1099070979} m_PrefabAsset: {fileID: 0} +--- !u!1 &1003947895 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1003947896} + m_Layer: 0 + m_Name: Graph thingy + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1003947896 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1003947895} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: -0.333, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 992156376} + - {fileID: 312606797} + - {fileID: 1156754001} + m_Father: {fileID: 696593979} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1001 &1006088012 PrefabInstance: m_ObjectHideFlags: 0 @@ -33266,6 +33322,161 @@ Transform: m_CorrespondingSourceObject: {fileID: 1315692994360949719, guid: 00a825a5aeafee94789192f61cbb3a5a, type: 3} m_PrefabInstance: {fileID: 605003398} m_PrefabAsset: {fileID: 0} +--- !u!1 &1106884485 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1106884486} + - component: {fileID: 1106884490} + - component: {fileID: 1106884489} + - component: {fileID: 1106884488} + - component: {fileID: 1106884487} + m_Layer: 0 + m_Name: Sync + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1106884486 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1106884485} + 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: 1977714697} + m_Father: {fileID: 1525632479} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 320, y: -0} + m_SizeDelta: {x: 200, y: 150} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!95 &1106884487 +Animator: + serializedVersion: 5 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1106884485} + m_Enabled: 1 + m_Avatar: {fileID: 0} + m_Controller: {fileID: 9100000, guid: 72593807222e776478e455c600f7ccf9, type: 2} + m_CullingMode: 0 + m_UpdateMode: 0 + m_ApplyRootMotion: 0 + m_LinearVelocityBlending: 0 + m_StabilizeFeet: 0 + m_WarningMessage: + m_HasTransformHierarchy: 1 + m_AllowConstantClipSamplingOptimization: 1 + m_KeepAnimatorStateOnDisable: 0 + m_WriteDefaultValuesOnDisable: 0 +--- !u!114 &1106884488 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1106884485} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1106884489} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1156754005} + m_TargetAssemblyTypeName: + m_MethodName: SendCustomEvent + m_Mode: 5 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: SyncButtonPressed + m_BoolArgument: 0 + m_CallState: 2 +--- !u!114 &1106884489 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1106884485} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 2100000, guid: 35630e38b4e5ffb40b44ec5348b4333f, type: 2} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1106884490 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1106884485} + m_CullTransparentMesh: 1 --- !u!4 &1107305708 stripped Transform: m_CorrespondingSourceObject: {fileID: 561101371242997875, guid: 9fbd72f5bc3c5434a87ab8539789c584, type: 3} @@ -34893,6 +35104,163 @@ Transform: m_CorrespondingSourceObject: {fileID: 1315692994360949719, guid: 00a825a5aeafee94789192f61cbb3a5a, type: 3} m_PrefabInstance: {fileID: 416809517} m_PrefabAsset: {fileID: 0} +--- !u!1 &1156754000 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1156754001} + - component: {fileID: 1156754004} + - component: {fileID: 1156754003} + - component: {fileID: 1156754002} + - component: {fileID: 1156754006} + - component: {fileID: 1156754005} + m_Layer: 0 + m_Name: Ball + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1156754001 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1156754000} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.426, y: 0, z: -0.468} + m_LocalScale: {x: 0.05, y: 0.05, z: 0.05} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1003947896} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!135 &1156754002 +SphereCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1156754000} + 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 &1156754003 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1156754000} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1156754004 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1156754000} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!114 &1156754005 +MonoBehaviour: + m_ObjectHideFlags: 2 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1156754000} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 45115577ef41a5b4ca741ed302693907, type: 3} + m_Name: + m_EditorClassIdentifier: + interactTextPlacement: {fileID: 0} + interactText: Use + interactTextGO: {fileID: 0} + proximity: 2 + SynchronizePosition: 0 + AllowCollisionOwnershipTransfer: 0 + Reliable: 0 + _syncMethod: 2 + serializedProgramAsset: {fileID: 11400000, guid: 8968388b0e4fe434fb8da62328c108a0, type: 2} + programSource: {fileID: 11400000, guid: 1845851c6c8f8254baa6b40646c66d59, type: 2} + serializedPublicVariablesBytesString: Ai8AAAAAATIAAABWAFIAQwAuAFUAZABvAG4ALgBDAG8AbQBtAG8AbgAuAFUAZABvAG4AVgBhAHIAaQBhAGIAbABlAFQAYQBiAGwAZQAsACAAVgBSAEMALgBVAGQAbwBuAC4AQwBvAG0AbQBvAG4AAAAAAAYBAAAAAAAAACcBBAAAAHQAeQBwAGUAAWgAAABTAHkAcwB0AGUAbQAuAEMAbwBsAGwAZQBjAHQAaQBvAG4AcwAuAEcAZQBuAGUAcgBpAGMALgBMAGkAcwB0AGAAMQBbAFsAVgBSAEMALgBVAGQAbwBuAC4AQwBvAG0AbQBvAG4ALgBJAG4AdABlAHIAZgBhAGMAZQBzAC4ASQBVAGQAbwBuAFYAYQByAGkAYQBiAGwAZQAsACAAVgBSAEMALgBVAGQAbwBuAC4AQwBvAG0AbQBvAG4AXQBdACwAIABtAHMAYwBvAHIAbABpAGIAAQEJAAAAVgBhAHIAaQBhAGIAbABlAHMALwEAAAABaAAAAFMAeQBzAHQAZQBtAC4AQwBvAGwAbABlAGMAdABpAG8AbgBzAC4ARwBlAG4AZQByAGkAYwAuAEwAaQBzAHQAYAAxAFsAWwBWAFIAQwAuAFUAZABvAG4ALgBDAG8AbQBtAG8AbgAuAEkAbgB0AGUAcgBmAGEAYwBlAHMALgBJAFUAZABvAG4AVgBhAHIAaQBhAGIAbABlACwAIABWAFIAQwAuAFUAZABvAG4ALgBDAG8AbQBtAG8AbgBdAF0ALAAgAG0AcwBjAG8AcgBsAGkAYgABAAAABgEAAAAAAAAAAi8CAAAAAUkAAABWAFIAQwAuAFUAZABvAG4ALgBDAG8AbQBtAG8AbgAuAFUAZABvAG4AVgBhAHIAaQBhAGIAbABlAGAAMQBbAFsAUwB5AHMAdABlAG0ALgBJAG4AdAAzADIALAAgAG0AcwBjAG8AcgBsAGkAYgBdAF0ALAAgAFYAUgBDAC4AVQBkAG8AbgAuAEMAbwBtAG0AbwBuAAIAAAAGAgAAAAAAAAAnAQQAAAB0AHkAcABlAAEXAAAAUwB5AHMAdABlAG0ALgBTAHQAcgBpAG4AZwAsACAAbQBzAGMAbwByAGwAaQBiACcBCgAAAFMAeQBtAGIAbwBsAE4AYQBtAGUAAR8AAABfAF8AXwBVAGQAbwBuAFMAaABhAHIAcABCAGUAaABhAHYAaQBvAHUAcgBWAGUAcgBzAGkAbwBuAF8AXwBfACcBBAAAAHQAeQBwAGUAARYAAABTAHkAcwB0AGUAbQAuAEkAbgB0ADMAMgAsACAAbQBzAGMAbwByAGwAaQBiABcBBQAAAFYAYQBsAHUAZQACAAAABwUHBQcF + publicVariablesUnityEngineObjects: [] + publicVariablesSerializationDataFormat: 0 +--- !u!114 &1156754006 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1156754000} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0980d82a15346eb45b49fd33db0ffee9, type: 3} + m_Name: + m_EditorClassIdentifier: + serializationData: + SerializedFormat: 2 + SerializedBytes: + ReferencedUnityObjects: [] + SerializedBytesString: + Prefab: {fileID: 0} + PrefabModificationsReferencedUnityObjects: [] + PrefabModifications: [] + SerializationNodes: [] + _udonSharpBackingUdonBehaviour: {fileID: 1156754005} + networkManager: {fileID: 1200574210} + start: {fileID: 992156376} + end: {fileID: 312606797} --- !u!1 &1156762256 GameObject: m_ObjectHideFlags: 0 @@ -35442,7 +35810,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 1 + m_IsActive: 0 --- !u!4 &1170168279 Transform: m_ObjectHideFlags: 0 @@ -35451,8 +35819,8 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1170168278} serializedVersion: 2 - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: -0} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.27173358, y: -6.62, z: 24.25} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: @@ -35464,7 +35832,7 @@ Transform: - {fileID: 934262201} - {fileID: 723443144} - {fileID: 811840791} - m_Father: {fileID: 0} + m_Father: {fileID: 1203813883} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1001 &1173475478 PrefabInstance: @@ -36256,6 +36624,89 @@ PrefabInstance: m_AddedGameObjects: [] m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 00a825a5aeafee94789192f61cbb3a5a, type: 3} +--- !u!1 &1200574207 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1200574208} + - component: {fileID: 1200574210} + - component: {fileID: 1200574209} + m_Layer: 0 + m_Name: NetworkManager + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1200574208 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1200574207} + 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: 696593979} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1200574209 +MonoBehaviour: + m_ObjectHideFlags: 2 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1200574207} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 45115577ef41a5b4ca741ed302693907, type: 3} + m_Name: + m_EditorClassIdentifier: + interactTextPlacement: {fileID: 0} + interactText: Use + interactTextGO: {fileID: 0} + proximity: 2 + SynchronizePosition: 0 + AllowCollisionOwnershipTransfer: 0 + Reliable: 0 + _syncMethod: 2 + serializedProgramAsset: {fileID: 11400000, guid: 37b60ab207700554ba5c119f63c3c7bd, type: 2} + programSource: {fileID: 11400000, guid: a327a0e472dbf694a8e2b23bf0ce90d0, type: 2} + serializedPublicVariablesBytesString: Ai8AAAAAATIAAABWAFIAQwAuAFUAZABvAG4ALgBDAG8AbQBtAG8AbgAuAFUAZABvAG4AVgBhAHIAaQBhAGIAbABlAFQAYQBiAGwAZQAsACAAVgBSAEMALgBVAGQAbwBuAC4AQwBvAG0AbQBvAG4AAAAAAAYBAAAAAAAAACcBBAAAAHQAeQBwAGUAAWgAAABTAHkAcwB0AGUAbQAuAEMAbwBsAGwAZQBjAHQAaQBvAG4AcwAuAEcAZQBuAGUAcgBpAGMALgBMAGkAcwB0AGAAMQBbAFsAVgBSAEMALgBVAGQAbwBuAC4AQwBvAG0AbQBvAG4ALgBJAG4AdABlAHIAZgBhAGMAZQBzAC4ASQBVAGQAbwBuAFYAYQByAGkAYQBiAGwAZQAsACAAVgBSAEMALgBVAGQAbwBuAC4AQwBvAG0AbQBvAG4AXQBdACwAIABtAHMAYwBvAHIAbABpAGIAAQEJAAAAVgBhAHIAaQBhAGIAbABlAHMALwEAAAABaAAAAFMAeQBzAHQAZQBtAC4AQwBvAGwAbABlAGMAdABpAG8AbgBzAC4ARwBlAG4AZQByAGkAYwAuAEwAaQBzAHQAYAAxAFsAWwBWAFIAQwAuAFUAZABvAG4ALgBDAG8AbQBtAG8AbgAuAEkAbgB0AGUAcgBmAGEAYwBlAHMALgBJAFUAZABvAG4AVgBhAHIAaQBhAGIAbABlACwAIABWAFIAQwAuAFUAZABvAG4ALgBDAG8AbQBtAG8AbgBdAF0ALAAgAG0AcwBjAG8AcgBsAGkAYgABAAAABgEAAAAAAAAAAi8CAAAAAUkAAABWAFIAQwAuAFUAZABvAG4ALgBDAG8AbQBtAG8AbgAuAFUAZABvAG4AVgBhAHIAaQBhAGIAbABlAGAAMQBbAFsAUwB5AHMAdABlAG0ALgBJAG4AdAAzADIALAAgAG0AcwBjAG8AcgBsAGkAYgBdAF0ALAAgAFYAUgBDAC4AVQBkAG8AbgAuAEMAbwBtAG0AbwBuAAIAAAAGAgAAAAAAAAAnAQQAAAB0AHkAcABlAAEXAAAAUwB5AHMAdABlAG0ALgBTAHQAcgBpAG4AZwAsACAAbQBzAGMAbwByAGwAaQBiACcBCgAAAFMAeQBtAGIAbwBsAE4AYQBtAGUAAR8AAABfAF8AXwBVAGQAbwBuAFMAaABhAHIAcABCAGUAaABhAHYAaQBvAHUAcgBWAGUAcgBzAGkAbwBuAF8AXwBfACcBBAAAAHQAeQBwAGUAARYAAABTAHkAcwB0AGUAbQAuAEkAbgB0ADMAMgAsACAAbQBzAGMAbwByAGwAaQBiABcBBQAAAFYAYQBsAHUAZQACAAAABwUHBQcF + publicVariablesUnityEngineObjects: [] + publicVariablesSerializationDataFormat: 0 +--- !u!114 &1200574210 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1200574207} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ac984c07ae3e9674a850c3916be56ca3, type: 3} + m_Name: + m_EditorClassIdentifier: + serializationData: + SerializedFormat: 2 + SerializedBytes: + ReferencedUnityObjects: [] + SerializedBytesString: + Prefab: {fileID: 0} + PrefabModificationsReferencedUnityObjects: [] + PrefabModifications: [] + SerializationNodes: [] + _udonSharpBackingUdonBehaviour: {fileID: 1200574209} + syncedObjects: + - {fileID: 1156754006} + DebugImageToIndicateOwner: {fileID: 1745114900} --- !u!1 &1203813879 GameObject: m_ObjectHideFlags: 0 @@ -36359,8 +36810,11 @@ Transform: m_LocalPosition: {x: -0.27173358, y: 6.62, z: -24.25} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 934262201} + m_Children: + - {fileID: 810856535} + - {fileID: 696593979} + - {fileID: 1170168279} + m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1206027441 GameObject: @@ -40588,37 +41042,6 @@ Transform: m_CorrespondingSourceObject: {fileID: 1315692994360949719, guid: 00a825a5aeafee94789192f61cbb3a5a, type: 3} m_PrefabInstance: {fileID: 569105155} m_PrefabAsset: {fileID: 0} ---- !u!1 &1359627183 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1359627184} - m_Layer: 0 - m_Name: Pacman sends pre-move early - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &1359627184 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1359627183} - 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: 1002127288} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!4 &1363707131 stripped Transform: m_CorrespondingSourceObject: {fileID: 7480337843116735563, guid: 2079ab708ebf5c441906133787c4d33b, type: 3} @@ -45408,6 +45831,83 @@ Transform: m_CorrespondingSourceObject: {fileID: 1315692994360949719, guid: 00a825a5aeafee94789192f61cbb3a5a, type: 3} m_PrefabInstance: {fileID: 1413883346} m_PrefabAsset: {fileID: 0} +--- !u!1 &1525632478 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1525632479} + - component: {fileID: 1525632481} + - component: {fileID: 1525632480} + m_Layer: 0 + m_Name: General + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1525632479 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1525632478} + 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: 1745114896} + - {fileID: 1106884486} + m_Father: {fileID: 1572932994} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 500, y: -100} + m_SizeDelta: {x: 1000, y: 200} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1525632480 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1525632478} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 2100000, guid: 35630e38b4e5ffb40b44ec5348b4333f, type: 2} + m_Color: {r: 1, g: 1, b: 1, a: 0.392} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 0.1 +--- !u!222 &1525632481 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1525632478} + m_CullTransparentMesh: 1 --- !u!1001 &1527753055 PrefabInstance: m_ObjectHideFlags: 0 @@ -47257,6 +47757,122 @@ PrefabInstance: m_AddedGameObjects: [] m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 00a825a5aeafee94789192f61cbb3a5a, type: 3} +--- !u!1 &1572932993 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1572932994} + - component: {fileID: 1572932998} + - component: {fileID: 1572932997} + - component: {fileID: 1572932996} + - component: {fileID: 1572932995} + m_Layer: 0 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1572932994 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1572932993} + m_LocalRotation: {x: 0.70710695, y: 0.000000059604645, z: 0.000000029802322, w: 0.7071067} + m_LocalPosition: {x: 0, y: 0, z: -0.0022669022} + m_LocalScale: {x: 0.01, y: 0.009999996, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1525632479} + m_Father: {fileID: 332716163} + m_LocalEulerAnglesHint: {x: 3.073, y: 56.585, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0.0007750988, y: 0.16006559} + m_SizeDelta: {x: 1000, y: 1000} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1572932995 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1572932993} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -1533785930, guid: 661092b4961be7145bfbe56e1e62337b, type: 3} + m_Name: + m_EditorClassIdentifier: + AllowFocusView: 1 +--- !u!114 &1572932996 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1572932993} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &1572932997 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1572932993} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 0 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 800, y: 600} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 + m_PresetInfoIsWorld: 1 +--- !u!223 &1572932998 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1572932993} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 2 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_VertexColorAlwaysGammaSpace: 0 + m_AdditionalShaderChannelsFlag: 25 + m_UpdateRectTransformForStandalone: 0 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 --- !u!1 &1573700151 stripped GameObject: m_CorrespondingSourceObject: {fileID: 4099390335584803315, guid: 00a825a5aeafee94789192f61cbb3a5a, type: 3} @@ -48872,18 +49488,9 @@ PrefabInstance: - targetCorrespondingSourceObject: {fileID: -8679921383154817045, guid: 4a3e3ccd3b6d1e34fb8a64aa23d418ff, type: 3} insertIndex: -1 addedObject: {fileID: 1696851446} - - targetCorrespondingSourceObject: {fileID: -8679921383154817045, guid: 4a3e3ccd3b6d1e34fb8a64aa23d418ff, type: 3} - insertIndex: -1 - addedObject: {fileID: 1934195469} - - targetCorrespondingSourceObject: {fileID: -8679921383154817045, guid: 4a3e3ccd3b6d1e34fb8a64aa23d418ff, type: 3} - insertIndex: -1 - addedObject: {fileID: 49515936} - targetCorrespondingSourceObject: {fileID: -8679921383154817045, guid: 4a3e3ccd3b6d1e34fb8a64aa23d418ff, type: 3} insertIndex: -1 addedObject: {fileID: 1219781429} - - targetCorrespondingSourceObject: {fileID: -8679921383154817045, guid: 4a3e3ccd3b6d1e34fb8a64aa23d418ff, type: 3} - insertIndex: -1 - addedObject: {fileID: 810856535} m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 4a3e3ccd3b6d1e34fb8a64aa23d418ff, type: 3} --- !u!4 &1632628526 stripped @@ -51744,6 +52351,161 @@ PrefabInstance: m_AddedGameObjects: [] m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 00a825a5aeafee94789192f61cbb3a5a, type: 3} +--- !u!1 &1745114895 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1745114896} + - component: {fileID: 1745114899} + - component: {fileID: 1745114898} + - component: {fileID: 1745114897} + - component: {fileID: 1745114900} + m_Layer: 0 + m_Name: Up + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1745114896 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1745114895} + 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: 1789303416} + m_Father: {fileID: 1525632479} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -120, y: 0} + m_SizeDelta: {x: 600, y: 150} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1745114897 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1745114895} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1745114898} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1156754005} + m_TargetAssemblyTypeName: + m_MethodName: SendCustomEvent + m_Mode: 5 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: UpButtonPressed + m_BoolArgument: 0 + m_CallState: 2 +--- !u!114 &1745114898 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1745114895} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 2100000, guid: 35630e38b4e5ffb40b44ec5348b4333f, type: 2} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1745114899 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1745114895} + m_CullTransparentMesh: 1 +--- !u!95 &1745114900 +Animator: + serializedVersion: 5 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1745114895} + m_Enabled: 1 + m_Avatar: {fileID: 0} + m_Controller: {fileID: 9100000, guid: 72593807222e776478e455c600f7ccf9, type: 2} + m_CullingMode: 0 + m_UpdateMode: 0 + m_ApplyRootMotion: 0 + m_LinearVelocityBlending: 0 + m_StabilizeFeet: 0 + m_WarningMessage: + m_HasTransformHierarchy: 1 + m_AllowConstantClipSamplingOptimization: 1 + m_KeepAnimatorStateOnDisable: 0 + m_WriteDefaultValuesOnDisable: 0 --- !u!1 &1746688986 GameObject: m_ObjectHideFlags: 0 @@ -52066,14 +52828,8 @@ MonoBehaviour: useAssignedLayers: 0 DynamicPrefabs: [] DynamicMaterials: - - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} - - {fileID: 2541243872366204002, guid: 7168d13094fcae94b81e672d1f4ab73f, type: 2} - - {fileID: 10758, guid: 0000000000000000f000000000000000, type: 0} - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} - {fileID: 2100000, guid: db2b6d76bdd134244912a5c1c9971804, type: 2} - - {fileID: 2100000, guid: a3869014ba4893d409f150224856180a, type: 2} - - {fileID: 2100000, guid: fc67956adbc95584ba3ae3b18d1e430d, type: 2} - - {fileID: 2100000, guid: ae0c7562e66fca1469f7ee603e462581, type: 2} LightMapsNear: [] LightMapsFar: [] LightMode: 0 @@ -52139,10 +52895,6 @@ MonoBehaviour: ID: 13 SerializedTypeNames: - VRC.Udon.UdonBehaviour - - gameObject: {fileID: 1934195468} - ID: 14 - SerializedTypeNames: - - VRC.Udon.UdonBehaviour - gameObject: {fileID: 1311215814} ID: 17 SerializedTypeNames: @@ -53276,10 +54028,6 @@ MonoBehaviour: ID: 300 SerializedTypeNames: - VRC.Udon.UdonBehaviour - - gameObject: {fileID: 49515935} - ID: 301 - SerializedTypeNames: - - VRC.Udon.UdonBehaviour - gameObject: {fileID: 586011047} ID: 302 SerializedTypeNames: @@ -53288,6 +54036,14 @@ MonoBehaviour: ID: 303 SerializedTypeNames: - VRC.Udon.UdonBehaviour + - gameObject: {fileID: 1156754000} + ID: 304 + SerializedTypeNames: + - VRC.Udon.UdonBehaviour + - gameObject: {fileID: 1200574207} + ID: 305 + SerializedTypeNames: + - VRC.Udon.UdonBehaviour portraitCameraPositionOffset: {x: 0, y: 0, z: 0} portraitCameraRotationOffset: {x: 0, y: 1, z: 0, w: -0.00000004371139} PlayerPersistence: [] @@ -53300,13 +54056,13 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1749838339} serializedVersion: 2 - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: -0.27, y: 7.15, z: -20.9} + m_LocalRotation: {x: -0, y: -0.35037515, z: -0, w: 0.9366095} + m_LocalPosition: {x: -2.509, y: 7.15, z: -22.271} 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} + m_LocalEulerAnglesHint: {x: 0, y: -41.021, z: 0} --- !u!114 &1749838343 MonoBehaviour: m_ObjectHideFlags: 2 @@ -54673,6 +55429,140 @@ Transform: m_CorrespondingSourceObject: {fileID: 1315692994360949719, guid: 00a825a5aeafee94789192f61cbb3a5a, type: 3} m_PrefabInstance: {fileID: 1081197497} m_PrefabAsset: {fileID: 0} +--- !u!1 &1789303415 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1789303416} + - component: {fileID: 1789303418} + - component: {fileID: 1789303417} + m_Layer: 0 + m_Name: Text (TMP) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1789303416 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1789303415} + 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: 1745114896} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1789303417 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1789303415} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: Up + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4281479730 + m_fontColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 72 + m_fontSizeBase: 72 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!222 &1789303418 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1789303415} + m_CullTransparentMesh: 1 --- !u!1001 &1789751918 PrefabInstance: m_ObjectHideFlags: 0 @@ -56792,6 +57682,7 @@ Transform: - {fileID: 712073434} - {fileID: 106401850} - {fileID: 851913432} + - {fileID: 1961479820} - {fileID: 2129311453} - {fileID: 2142346958} - {fileID: 1002127288} @@ -56880,6 +57771,37 @@ Transform: m_CorrespondingSourceObject: {fileID: 1315692994360949719, guid: 00a825a5aeafee94789192f61cbb3a5a, type: 3} m_PrefabInstance: {fileID: 1385180615} m_PrefabAsset: {fileID: 0} +--- !u!1 &1897221840 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1897221841} + m_Layer: 0 + m_Name: Endianess + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1897221841 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1897221840} + 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: 1961479820} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1898242099 stripped GameObject: m_CorrespondingSourceObject: {fileID: 4099390335584803315, guid: 00a825a5aeafee94789192f61cbb3a5a, type: 3} @@ -57574,110 +58496,6 @@ Transform: m_CorrespondingSourceObject: {fileID: 1315692994360949719, guid: 00a825a5aeafee94789192f61cbb3a5a, type: 3} m_PrefabInstance: {fileID: 2063979430} m_PrefabAsset: {fileID: 0} ---- !u!1 &1934195468 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1934195469} - - component: {fileID: 1934195472} - - component: {fileID: 1934195471} - - component: {fileID: 1934195470} - m_Layer: 0 - m_Name: Start demo button - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &1934195469 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1934195468} - serializedVersion: 2 - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0.265, y: 0.789, z: 0.223} - m_LocalScale: {x: 0.08076144, y: 0.08076144, z: 0.08076144} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 2146786255} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &1934195470 -MonoBehaviour: - m_ObjectHideFlags: 2 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1934195468} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 45115577ef41a5b4ca741ed302693907, type: 3} - m_Name: - m_EditorClassIdentifier: - interactTextPlacement: {fileID: 0} - interactText: Start Demo - interactTextGO: {fileID: 0} - proximity: 2 - SynchronizePosition: 0 - AllowCollisionOwnershipTransfer: 0 - Reliable: 0 - _syncMethod: 2 - serializedProgramAsset: {fileID: 11400000, guid: 3473403fe88c8134e8be431c33461470, type: 2} - programSource: {fileID: 11400000, guid: b729fe1256b57ed45adc7743d16599bf, type: 2} - serializedPublicVariablesBytesString: Ai8AAAAAATIAAABWAFIAQwAuAFUAZABvAG4ALgBDAG8AbQBtAG8AbgAuAFUAZABvAG4AVgBhAHIAaQBhAGIAbABlAFQAYQBiAGwAZQAsACAAVgBSAEMALgBVAGQAbwBuAC4AQwBvAG0AbQBvAG4AAAAAAAYBAAAAAAAAACcBBAAAAHQAeQBwAGUAAWgAAABTAHkAcwB0AGUAbQAuAEMAbwBsAGwAZQBjAHQAaQBvAG4AcwAuAEcAZQBuAGUAcgBpAGMALgBMAGkAcwB0AGAAMQBbAFsAVgBSAEMALgBVAGQAbwBuAC4AQwBvAG0AbQBvAG4ALgBJAG4AdABlAHIAZgBhAGMAZQBzAC4ASQBVAGQAbwBuAFYAYQByAGkAYQBiAGwAZQAsACAAVgBSAEMALgBVAGQAbwBuAC4AQwBvAG0AbQBvAG4AXQBdACwAIABtAHMAYwBvAHIAbABpAGIAAQEJAAAAVgBhAHIAaQBhAGIAbABlAHMALwEAAAABaAAAAFMAeQBzAHQAZQBtAC4AQwBvAGwAbABlAGMAdABpAG8AbgBzAC4ARwBlAG4AZQByAGkAYwAuAEwAaQBzAHQAYAAxAFsAWwBWAFIAQwAuAFUAZABvAG4ALgBDAG8AbQBtAG8AbgAuAEkAbgB0AGUAcgBmAGEAYwBlAHMALgBJAFUAZABvAG4AVgBhAHIAaQBhAGIAbABlACwAIABWAFIAQwAuAFUAZABvAG4ALgBDAG8AbQBtAG8AbgBdAF0ALAAgAG0AcwBjAG8AcgBsAGkAYgABAAAABgEAAAAAAAAAAi8CAAAAAUkAAABWAFIAQwAuAFUAZABvAG4ALgBDAG8AbQBtAG8AbgAuAFUAZABvAG4AVgBhAHIAaQBhAGIAbABlAGAAMQBbAFsAUwB5AHMAdABlAG0ALgBJAG4AdAAzADIALAAgAG0AcwBjAG8AcgBsAGkAYgBdAF0ALAAgAFYAUgBDAC4AVQBkAG8AbgAuAEMAbwBtAG0AbwBuAAIAAAAGAgAAAAAAAAAnAQQAAAB0AHkAcABlAAEXAAAAUwB5AHMAdABlAG0ALgBTAHQAcgBpAG4AZwAsACAAbQBzAGMAbwByAGwAaQBiACcBCgAAAFMAeQBtAGIAbwBsAE4AYQBtAGUAAR8AAABfAF8AXwBVAGQAbwBuAFMAaABhAHIAcABCAGUAaABhAHYAaQBvAHUAcgBWAGUAcgBzAGkAbwBuAF8AXwBfACcBBAAAAHQAeQBwAGUAARYAAABTAHkAcwB0AGUAbQAuAEkAbgB0ADMAMgAsACAAbQBzAGMAbwByAGwAaQBiABcBBQAAAFYAYQBsAHUAZQACAAAABwUHBQcF - publicVariablesUnityEngineObjects: [] - publicVariablesSerializationDataFormat: 0 ---- !u!114 &1934195471 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1934195468} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 3d9af496212c74a45a7b915169e465af, type: 3} - m_Name: - m_EditorClassIdentifier: - serializationData: - SerializedFormat: 2 - SerializedBytes: - ReferencedUnityObjects: [] - SerializedBytesString: - Prefab: {fileID: 0} - PrefabModificationsReferencedUnityObjects: [] - PrefabModifications: [] - SerializationNodes: [] - _udonSharpBackingUdonBehaviour: {fileID: 1934195470} - customEventReceiver: {fileID: 174205108} - eventName: StartDemoButtonPressed ---- !u!135 &1934195472 -SphereCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1934195468} - m_Material: {fileID: 0} - m_IncludeLayers: - serializedVersion: 2 - m_Bits: 0 - m_ExcludeLayers: - serializedVersion: 2 - m_Bits: 0 - m_LayerOverridePriority: 0 - m_IsTrigger: 1 - m_ProvidesContacts: 0 - m_Enabled: 1 - serializedVersion: 3 - m_Radius: 0.5 - m_Center: {x: 0, y: 0, z: 0} --- !u!1001 &1934807493 PrefabInstance: m_ObjectHideFlags: 0 @@ -58535,6 +59353,44 @@ Transform: m_CorrespondingSourceObject: {fileID: 1315692994360949719, guid: 00a825a5aeafee94789192f61cbb3a5a, type: 3} m_PrefabInstance: {fileID: 761766389} m_PrefabAsset: {fileID: 0} +--- !u!1 &1961479819 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1961479820} + m_Layer: 0 + m_Name: Networking + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1961479820 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1961479819} + 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: 462506945} + - {fileID: 2030126881} + - {fileID: 2103220969} + - {fileID: 455444785} + - {fileID: 1897221841} + - {fileID: 147662346} + - {fileID: 29433776} + m_Father: {fileID: 1886023632} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1001 &1961559642 PrefabInstance: m_ObjectHideFlags: 0 @@ -59011,6 +59867,140 @@ Transform: m_CorrespondingSourceObject: {fileID: 2303859902328226329, guid: f10209aafcd484f438cbd0888287e98a, type: 3} m_PrefabInstance: {fileID: 106686679} m_PrefabAsset: {fileID: 0} +--- !u!1 &1977714696 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1977714697} + - component: {fileID: 1977714699} + - component: {fileID: 1977714698} + m_Layer: 0 + m_Name: Text (TMP) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1977714697 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1977714696} + 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: 1106884486} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1977714698 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1977714696} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: Sync + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4281479730 + m_fontColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 48 + m_fontSizeBase: 48 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!222 &1977714699 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1977714696} + m_CullTransparentMesh: 1 --- !u!1 &1977846720 GameObject: m_ObjectHideFlags: 0 @@ -60399,7 +61389,7 @@ Transform: m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 2129311453} + m_Father: {fileID: 1961479820} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &2030213517 stripped GameObject: @@ -62590,6 +63580,37 @@ PrefabInstance: m_AddedGameObjects: [] m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 00a825a5aeafee94789192f61cbb3a5a, type: 3} +--- !u!1 &2103220968 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2103220969} + m_Layer: 0 + m_Name: Different players can start game + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2103220969 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2103220968} + 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: 1961479820} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!4 &2104435812 stripped Transform: m_CorrespondingSourceObject: {fileID: 8163531541416620119, guid: 1cd2c539000e61845b104cd9d0f0a5be, type: 3} @@ -63199,9 +64220,6 @@ Transform: m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: - - {fileID: 455444785} - - {fileID: 2030126881} - - {fileID: 462506945} - {fileID: 488525138} m_Father: {fileID: 1886023632} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} @@ -64907,5 +65925,5 @@ SceneRoots: - {fileID: 1749838342} - {fileID: 1886023632} - {fileID: 1819739944} - - {fileID: 1170168279} + - {fileID: 1203813883} - {fileID: 1161575206} diff --git a/Assets/Scripts/BonusFruit.cs b/Assets/Scripts/BonusFruit.cs index b09a9fb..ab49fd2 100644 --- a/Assets/Scripts/BonusFruit.cs +++ b/Assets/Scripts/BonusFruit.cs @@ -1,13 +1,12 @@ namespace Marro.PacManUdon { - using Assets.Scripts; using UdonSharp; using UnityEngine; using VRC.SDK3.Data; using VRC.SDKBase; using VRC.Udon; - public class BonusFruit : SyncedObject + public class BonusFruit : UdonSharpBehaviour { [SerializeField, UdonSynced, FieldChangeCallback(nameof(FruitType))] PacManFruitType fruitType; @@ -84,16 +83,6 @@ RequestSerialization(); } - public override void AppendSyncedData(byte[][] data, ref int offset) - { - - } - - public override bool SetSyncedData(byte[] data, ref int offset) - { - return true; - } - public PacManFruitType FruitType { set diff --git a/Assets/Scripts/GameManager.cs b/Assets/Scripts/GameManager.cs index 49aa109..1af0de0 100644 --- a/Assets/Scripts/GameManager.cs +++ b/Assets/Scripts/GameManager.cs @@ -2,7 +2,6 @@ namespace Marro.PacManUdon { - using Assets.Scripts; using System; using UdonSharp; using UnityEngine; @@ -78,7 +77,7 @@ namespace Marro.PacManUdon playerInput.Initialize(this); soundManager.Initialize(); intermission2Pole.Initialize(this, ghostManager.Ghosts[0]); - networkManager.Initialize(Networking.IsOwner(gameObject)); + networkManager.Initialize(); HideEverything(); @@ -423,7 +422,7 @@ namespace Marro.PacManUdon ghostManager.SetOwner(Networking.LocalPlayer); } - public override void AppendSyncedData(byte[][] data, ref int offset) + public override void AppendSyncedData(byte[][] data, ref int offset, NetworkEventType eventType, uint eventTime) { data[offset++] = new byte[] { Int32ToByte((int)gameState) }; data[offset++] = BitConverter.GetBytes(currentlyInTimeSequence); @@ -431,7 +430,7 @@ namespace Marro.PacManUdon data[offset++] = BitConverter.GetBytes(timeSequenceProgress); } - public override bool SetSyncedData(byte[] data, ref int offset) + public override bool SetSyncedData(byte[] data, ref int offset, NetworkEventType eventType, uint eventTime) { SetGameState((PacManGameState)data[offset++]); @@ -444,6 +443,11 @@ namespace Marro.PacManUdon return true; } + public override void SyncedToNewTime(uint oldTime, uint newTime) + { + + } + public int ExtraLives { set @@ -499,6 +503,7 @@ namespace Marro.PacManUdon } public static byte Int32ToByte(int value) => - byte.Parse(value.ToString()); // This is the only way I could find to cast an int to byte in Udon, a regular cast crashes in runtime... + (byte)value; + //byte.Parse(value.ToString()); // This is the only way I could find to cast an int to byte in Udon, a regular cast crashes in runtime... } } \ No newline at end of file diff --git a/Assets/Scripts/Ghost.cs b/Assets/Scripts/Ghost.cs index 6e7bdf8..7e730c3 100644 --- a/Assets/Scripts/Ghost.cs +++ b/Assets/Scripts/Ghost.cs @@ -779,9 +779,9 @@ namespace Marro.PacManUdon UpdateAnimator(); } - public override void AppendSyncedData(byte[][] data, ref int offset) + public override void AppendSyncedData(byte[][] data, ref int offset, NetworkEventType eventType, uint eventTime) { - base.AppendSyncedData(data, ref offset); + base.AppendSyncedData(data, ref offset, eventType, eventTime); } void OnTriggerEnter(Collider other) diff --git a/Assets/Scripts/GridMover.cs b/Assets/Scripts/GridMover.cs index fed7d08..d697c7d 100644 --- a/Assets/Scripts/GridMover.cs +++ b/Assets/Scripts/GridMover.cs @@ -1,6 +1,5 @@ namespace Marro.PacManUdon { - using Assets.Scripts; using System; using UdonSharp; using UnityEngine; @@ -33,7 +32,7 @@ namespace Marro.PacManUdon protected abstract void UpdateAnimator(); - public override void AppendSyncedData(byte[][] data, ref int offset) + public override void AppendSyncedData(byte[][] data, ref int offset, NetworkEventType eventType, uint eventTime) { var position = GetPosition(); data[offset++] = BitConverter.GetBytes(position.x); @@ -44,7 +43,7 @@ namespace Marro.PacManUdon data[offset++] = BitConverter.GetBytes(direction.y); } - public override bool SetSyncedData(byte[] data, ref int offset) + public override bool SetSyncedData(byte[] data, ref int offset, NetworkEventType eventType, uint eventTime) { SetPosition(new Vector2(BitConverter.ToSingle(data, offset), BitConverter.ToSingle(data, offset + 2))); SetDirection(new Vector2(BitConverter.ToSingle(data, offset + 4), BitConverter.ToSingle(data, offset + 6))); @@ -52,5 +51,10 @@ namespace Marro.PacManUdon return true; } + + public override void SyncedToNewTime(uint oldTime, uint newTime) + { + + } } } \ No newline at end of file diff --git a/Assets/Scripts/NetworkManager.asset b/Assets/Scripts/NetworkManager.asset index ec64ef7..a0f1d96 100644 --- a/Assets/Scripts/NetworkManager.asset +++ b/Assets/Scripts/NetworkManager.asset @@ -43,7 +43,7 @@ MonoBehaviour: Data: - Name: Entry: 12 - Data: 7 + Data: 10 - Name: Entry: 7 Data: @@ -61,7 +61,7 @@ MonoBehaviour: Data: 3|System.RuntimeType, mscorlib - Name: Entry: 1 - Data: Assets.Scripts.SyncedObject[], Assembly-CSharp + Data: Marro.PacManUdon.SyncedObject[], Assembly-CSharp - Name: Entry: 8 Data: @@ -115,19 +115,19 @@ MonoBehaviour: Data: - Name: $k Entry: 1 - Data: isOwner + Data: DebugImageToIndicateOwner - Name: $v Entry: 7 Data: 7|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor - Name: k__BackingField Entry: 1 - Data: isOwner + Data: DebugImageToIndicateOwner - Name: k__BackingField Entry: 7 Data: 8|System.RuntimeType, mscorlib - Name: Entry: 1 - Data: System.Boolean, mscorlib + Data: UnityEngine.Animator, UnityEngine.AnimationModule - Name: Entry: 8 Data: @@ -145,13 +145,19 @@ MonoBehaviour: Data: - Name: k__BackingField Entry: 5 - Data: false + Data: true - Name: _fieldAttributes Entry: 7 Data: 9|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib - Name: Entry: 12 - Data: 0 + Data: 1 + - Name: + Entry: 7 + Data: 10|UnityEngine.SerializeField, UnityEngine.CoreModule + - Name: + Entry: 8 + Data: - Name: Entry: 13 Data: @@ -169,25 +175,25 @@ MonoBehaviour: Data: - Name: $k Entry: 1 - Data: startTimeTicks + Data: isOwner - Name: $v Entry: 7 - Data: 10|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor + Data: 11|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor - Name: k__BackingField Entry: 1 - Data: startTimeTicks + Data: isOwner - Name: k__BackingField Entry: 7 - Data: 11|System.RuntimeType, mscorlib + Data: 12|System.RuntimeType, mscorlib - Name: Entry: 1 - Data: System.Int64, mscorlib + Data: System.Boolean, mscorlib - Name: Entry: 8 Data: - Name: k__BackingField Entry: 9 - Data: 11 + Data: 12 - Name: k__BackingField Entry: 7 Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib @@ -202,7 +208,7 @@ MonoBehaviour: Data: false - Name: _fieldAttributes Entry: 7 - Data: 12|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib + Data: 13|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib - Name: Entry: 12 Data: 0 @@ -223,25 +229,19 @@ MonoBehaviour: Data: - Name: $k Entry: 1 - Data: nextEventTime + Data: isSynced - Name: $v Entry: 7 - Data: 13|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor + Data: 14|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor - Name: k__BackingField Entry: 1 - Data: nextEventTime + Data: isSynced - Name: k__BackingField - Entry: 7 - Data: 14|System.RuntimeType, mscorlib - - Name: - Entry: 1 - Data: System.UInt32, mscorlib - - Name: - Entry: 8 - Data: + Entry: 9 + Data: 12 - Name: k__BackingField Entry: 9 - Data: 14 + Data: 12 - Name: k__BackingField Entry: 7 Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib @@ -277,19 +277,19 @@ MonoBehaviour: Data: - Name: $k Entry: 1 - Data: buffer + Data: startTimeTicks - Name: $v Entry: 7 Data: 16|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor - Name: k__BackingField Entry: 1 - Data: buffer + Data: startTimeTicks - Name: k__BackingField Entry: 7 Data: 17|System.RuntimeType, mscorlib - Name: Entry: 1 - Data: System.Byte[], mscorlib + Data: System.Int64, mscorlib - Name: Entry: 8 Data: @@ -331,19 +331,19 @@ MonoBehaviour: Data: - Name: $k Entry: 1 - Data: index + Data: nextEventTime - Name: $v Entry: 7 Data: 19|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor - Name: k__BackingField Entry: 1 - Data: index + Data: nextEventTime - Name: k__BackingField Entry: 7 Data: 20|System.RuntimeType, mscorlib - Name: Entry: 1 - Data: System.Int32, mscorlib + Data: System.UInt32, mscorlib - Name: Entry: 8 Data: @@ -385,19 +385,175 @@ MonoBehaviour: Data: - Name: $k Entry: 1 - Data: networkedData + Data: retriesWithoutSuccess - Name: $v Entry: 7 Data: 22|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor + - Name: k__BackingField + Entry: 1 + Data: retriesWithoutSuccess + - Name: k__BackingField + Entry: 7 + Data: 23|System.RuntimeType, mscorlib + - Name: + Entry: 1 + Data: System.Int32, mscorlib + - Name: + Entry: 8 + Data: + - Name: k__BackingField + Entry: 9 + Data: 23 + - Name: k__BackingField + Entry: 7 + Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib + - Name: + Entry: 6 + Data: + - Name: + Entry: 8 + Data: + - Name: k__BackingField + Entry: 5 + Data: false + - Name: _fieldAttributes + Entry: 7 + Data: 24|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib + - Name: + Entry: 12 + Data: 0 + - Name: + Entry: 13 + Data: + - Name: + Entry: 8 + Data: + - Name: + Entry: 8 + Data: + - Name: + Entry: 8 + Data: + - Name: + Entry: 7 + Data: + - Name: $k + Entry: 1 + Data: buffer + - Name: $v + Entry: 7 + Data: 25|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor + - Name: k__BackingField + Entry: 1 + Data: buffer + - Name: k__BackingField + Entry: 7 + Data: 26|System.RuntimeType, mscorlib + - Name: + Entry: 1 + Data: System.Byte[], mscorlib + - Name: + Entry: 8 + Data: + - Name: k__BackingField + Entry: 9 + Data: 26 + - Name: k__BackingField + Entry: 7 + Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib + - Name: + Entry: 6 + Data: + - Name: + Entry: 8 + Data: + - Name: k__BackingField + Entry: 5 + Data: false + - Name: _fieldAttributes + Entry: 7 + Data: 27|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib + - Name: + Entry: 12 + Data: 0 + - Name: + Entry: 13 + Data: + - Name: + Entry: 8 + Data: + - Name: + Entry: 8 + Data: + - Name: + Entry: 8 + Data: + - Name: + Entry: 7 + Data: + - Name: $k + Entry: 1 + Data: index + - Name: $v + Entry: 7 + Data: 28|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor + - Name: k__BackingField + Entry: 1 + Data: index + - Name: k__BackingField + Entry: 9 + Data: 23 + - Name: k__BackingField + Entry: 9 + Data: 23 + - Name: k__BackingField + Entry: 7 + Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib + - Name: + Entry: 6 + Data: + - Name: + Entry: 8 + Data: + - Name: k__BackingField + Entry: 5 + Data: false + - Name: _fieldAttributes + Entry: 7 + Data: 29|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib + - Name: + Entry: 12 + Data: 0 + - Name: + Entry: 13 + Data: + - Name: + Entry: 8 + Data: + - Name: + Entry: 8 + Data: + - Name: + Entry: 8 + Data: + - Name: + Entry: 7 + Data: + - Name: $k + Entry: 1 + Data: networkedData + - Name: $v + Entry: 7 + Data: 30|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor - Name: k__BackingField Entry: 1 Data: networkedData - Name: k__BackingField Entry: 9 - Data: 17 + Data: 26 - Name: k__BackingField Entry: 9 - Data: 17 + Data: 26 - Name: k__BackingField Entry: 7 Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib @@ -412,13 +568,13 @@ MonoBehaviour: Data: false - Name: _fieldAttributes Entry: 7 - Data: 23|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib + Data: 31|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib - Name: Entry: 12 Data: 1 - Name: Entry: 7 - Data: 24|UdonSharp.UdonSyncedAttribute, UdonSharp.Runtime + Data: 32|UdonSharp.UdonSyncedAttribute, UdonSharp.Runtime - Name: Entry: 8 Data: diff --git a/Assets/Scripts/NetworkManager.cs b/Assets/Scripts/NetworkManager.cs index 9fe1ff8..a5fb3d4 100644 --- a/Assets/Scripts/NetworkManager.cs +++ b/Assets/Scripts/NetworkManager.cs @@ -1,21 +1,19 @@ -using Assets.Scripts; -using JetBrains.Annotations; -using System; -using System.Linq; +using System; +using System.Drawing; using System.Text; using UdonSharp; using UnityEngine; -using UnityEngine.UIElements; -using VRC.SDK3.Data; using VRC.SDK3.UdonNetworkCalling; +using VRC.SDKBase; +using VRC.Udon.ClientBindings.Interfaces; using VRC.Udon.Common; -using static VRC.SDKBase.Networking; namespace Marro.PacManUdon { - enum NetworkEventType + public enum NetworkEventType { FullSync = 0, + PacManTurn = 1, } public class NetworkManager : UdonSharpBehaviour { @@ -32,33 +30,58 @@ namespace Marro.PacManUdon // Correct parsing is dependend upon everything being read out identially to how it was created. // An event has the following structure: - // [0-3]: (uint) Time in seconds at which event occured. - // [4]: (byte) Type of event: 0 = Full Sync, others will be defined later. - // [5+]: Event-specific data + // [0-1]: (ushort) Size of event. + // [2-5]: (uint) Time in seconds at which event occured. + // [6]: (byte) Type of event. 0 = Full Sync, which is used to sync up from an undefinted state. + // [7+]: Event-specific data - const int BufferSizeBytes = 1000; + private const int BufferMaxSizeBytes = 10000; + private const int BufferIncrementSizeBytes = 1000; - [SerializeField] - private SyncedObject[] syncedObjects; + [SerializeField] private SyncedObject[] syncedObjects; + + [SerializeField] private Animator DebugImageToIndicateOwner; private bool isOwner; + private bool isSynced; - private long startTimeTicks; + private long startTimeTicks = DateTime.UtcNow.Ticks; // Initialize to prevent errors private uint nextEventTime; + private int retriesWithoutSuccess; + // Main buffer of events private byte[] buffer; private int index; - [UdonSynced] private byte[] networkedData; + private const ushort HeaderEventSizeIndex = 0; + private const ushort HeaderTimestampIndex = 2; + private const ushort HeaderEventTypeIndex = 6; + private const ushort HeaderLength = 7; - public void Initialize(bool isOwner) + private const int Delay = 250; + + [UdonSynced] private byte[] networkedData = new byte[0]; + + public void Initialize() { - buffer = new byte[BufferSizeBytes]; + if (!BitConverter.IsLittleEndian) + { + Debug.LogError($"({nameof(PacManUdon)} {nameof(NetworkManager)}) Fatal: NetworkManager only supports little endian! Network sync will not be possible."); + var zero = 0; + Debug.Log(1 / zero); // Intentionally crash + return; + } + + buffer = new byte[BufferIncrementSizeBytes]; index = 0; startTimeTicks = DateTime.UtcNow.Ticks; - this.isOwner = isOwner; + isSynced = false; + retriesWithoutSuccess = 0; + SetOwner(Networking.IsOwner(gameObject)); + + Debug.Log($"({nameof(PacManUdon)} {nameof(NetworkManager)}) Initialized, startTimeTicks: {startTimeTicks}"); } public void Update() @@ -69,65 +92,141 @@ namespace Marro.PacManUdon } } - [NetworkCallable] - public void DoFullSync() + public void SendEvent(NetworkEventType eventType) { if (!isOwner) { - Debug.LogError($"({nameof(PacManUdon)} {nameof(NetworkManager)}) Attempted {nameof(DoFullSync)} while not the owner!"); + Debug.LogError($"({nameof(PacManUdon)} {nameof(NetworkManager)}) Attempted {nameof(SendEvent)} while not the owner!"); return; } - InitializeEvent(NetworkEventType.FullSync, 1000, out byte[][] data, out var index); + var eventTime = CurrentTime; + + InitializeEvent(eventType, eventTime, BufferMaxSizeBytes, out byte[][] data, out var index); foreach (var obj in syncedObjects) { - obj.AppendSyncedData(data, ref index); + obj.AppendSyncedData(data, ref index, eventType, eventTime); } - var eventSize = 0; + // Get event size, skipping over the event size which is not yet included + ushort eventSize = 0; for (int i = 0; i < index; i++) { - eventSize += data[i].Length; + eventSize += (ushort)data[i].Length; } - if (!EnsureSpaceToStorePreparedEvent(eventSize)) + if (!EnsureSpaceToStoreEvent(eventSize)) { return; } + data[0] = BitConverter.GetBytes(eventSize); + var oldIndex = this.index; FlattenAndCopy(data, index, buffer, ref this.index); - Debug.Log($"({nameof(PacManUdon)} {nameof(NetworkManager)}) Prepared event with {eventSize} bytes for serialization, index went from {oldIndex} to {this.index}"); + Debug.Log($"({nameof(PacManUdon)} {nameof(NetworkManager)}) Prepared event with {eventSize} bytes and timestamp {eventTime} for serialization, index went from {oldIndex} to {this.index}"); RequestSerialization(); + + retriesWithoutSuccess = 0; // We had success! } - public void RequestFullSync() + public void RequestEvent(NetworkEventType eventType) { if (isOwner) { - Debug.LogError($"({nameof(PacManUdon)} {nameof(NetworkManager)}) Attempted {nameof(RequestFullSync)} while we are the owner!"); + Debug.LogError($"({nameof(PacManUdon)} {nameof(NetworkManager)}) Attempted {nameof(RequestEvent)} while we are the owner!"); return; } - SendCustomNetworkEvent(VRC.Udon.Common.Interfaces.NetworkEventTarget.Owner, "DoFullSync"); + SendCustomNetworkEvent(VRC.Udon.Common.Interfaces.NetworkEventTarget.Owner, "RequestEventReceived", eventType); + } + + [NetworkCallable] + public void RequestEventReceived(NetworkEventType eventType) + { + if (!isOwner) + { + Debug.LogError($"({nameof(PacManUdon)} {nameof(NetworkManager)}) Attempted {nameof(RequestEventReceived)} while we are not the owner!"); + return; + } + + SendEvent(eventType); } private void ProcessIncomingData() { - var syncType = (NetworkEventType)networkedData[4]; - var size = networkedData.Length; + if (networkedData.Length == 0) + { + return; // Nothing to process + } - if (!EnsureSpaceToStoreReceivedEvent(size, syncType == NetworkEventType.FullSync)) + var length = networkedData.Length; + int index = 0; + while (index < length) + { + if (length - index < HeaderLength) + { + Debug.LogWarning($"({nameof(PacManUdon)} {nameof(NetworkManager)}) {nameof(ProcessIncomingData)}: Remaining data in networkedData is not long enough to form a complete event!"); + HandleError(); + return; + } + + var eventSize = networkedData[index + HeaderEventSizeIndex]; + var eventType = (NetworkEventType)networkedData[index + HeaderEventTypeIndex]; + + if (eventType == NetworkEventType.FullSync) + { + ProcessIncomingFullSync(index, eventSize); // Immediately process full sync + index += eventSize; + continue; + } + + if (!isSynced) + { + Debug.LogWarning($"({nameof(PacManUdon)} {nameof(NetworkManager)}) Received event of type {eventType} while we are not yet synced to the remote time, ignoring event."); + index += eventSize; + continue; + } + + AppendEventToBuffer(index, eventSize); + index += eventSize; + } + + Debug.Log($"({nameof(PacManUdon)} {nameof(NetworkManager)}) Received {networkedData.Length} bytes!\nBytes received:\n{BytesToString(networkedData)}"); + } + + private void ProcessIncomingFullSync(int index, int size) + { + // Intentionally not doing a buffer size check here, since this is not appending to the buffer + // (and there is no good way to continue if event is too large) + + // Clear buffer and copy the full sync into it + buffer = new byte[size]; + Array.Copy(networkedData, index, buffer, 0, size); + this.index = size; + + // Sync up to the time in the full sync + var time = BitConverter.ToUInt32(networkedData, index + HeaderTimestampIndex); + SyncToTime(time); + + // Immediately apply the full sync + nextEventTime = time; + isSynced = true; + } + + private void AppendEventToBuffer(int index, int size) + { + if (!EnsureSpaceToStoreEvent(size)) { return; } - Array.Copy(networkedData, 0, buffer, index, size); - index += size; + Array.Copy(networkedData, index, buffer, this.index, size); + this.index += size; UpdateNextEventTime(); } @@ -137,120 +236,140 @@ namespace Marro.PacManUdon var currentTime = CurrentTime; while (index != 0 && nextEventTime <= currentTime) { - ProcessNextEvent(); + ProcessIncomingEvent(); UpdateNextEventTime(); } } private void UpdateNextEventTime() { - if (index > 0) + if (index == 0) { - var nextEventTime = BitConverter.ToUInt32(buffer, 0); - if (nextEventTime >= this.nextEventTime) - { - this.nextEventTime = nextEventTime; - } - else - { - Debug.LogWarning($"({nameof(PacManUdon)} {nameof(NetworkManager)}) Events are in invalid order! Clearing buffer."); - ClearBuffer(); - return; - } + return; + } + + var nextEventTime = BitConverter.ToUInt32(buffer, HeaderTimestampIndex); + if (nextEventTime >= this.nextEventTime) + { + this.nextEventTime = nextEventTime; + } + else + { + Debug.LogWarning($"({nameof(PacManUdon)} {nameof(NetworkManager)}) New event is earlier than previous event!"); + HandleError(); + return; } } - private void ProcessNextEvent() + private void ProcessIncomingEvent() { - var eventType = (NetworkEventType)buffer[4]; + var eventTime = BitConverter.ToUInt32(buffer, HeaderTimestampIndex); + var eventType = (NetworkEventType)buffer[HeaderEventTypeIndex]; + var index = (int)HeaderLength; // Skip header - switch (eventType) + if (false) // TODO: check event type { - default: - Debug.LogWarning($"({nameof(PacManUdon)} {nameof(NetworkManager)}) Invalid sync type for incoming data! Buffer will be cleared."); - ClearBuffer(); - return; - case NetworkEventType.FullSync: - ProcessFullSync(); - return; + Debug.LogWarning($"({nameof(PacManUdon)} {nameof(NetworkManager)}) Invalid event type for incoming data! Buffer will be cleared."); + HandleError(); + return; } - } - private void ProcessFullSync() - { - var index = 5; // Skip header foreach (var obj in syncedObjects) { - var success = obj.SetSyncedData(buffer, ref index); + var success = obj.SetSyncedData(buffer, ref index, eventType, eventTime); if (!success) { - Debug.LogWarning($"({nameof(PacManUdon)} {nameof(NetworkManager)}) Malformed data reported by {obj.name} during full sync! Clearing buffer and requesting new full sync."); - ClearBuffer(); - RequestFullSync(); + Debug.LogWarning($"({nameof(PacManUdon)} {nameof(NetworkManager)}) Malformed data reported by {obj.name} during event type {eventType}! Resetting state."); + HandleError(); return; } + + if (index > this.index) + { + Debug.LogWarning($"({nameof(PacManUdon)} {nameof(NetworkManager)}) Buffer overflow during SetSyncedData for {obj.name} in event type {eventType}! Resetting state."); + HandleError(); + return; + } + } + + var eventSize = BitConverter.ToUInt16(buffer, HeaderEventSizeIndex); + if (index != eventSize) + { + Debug.LogWarning($"({nameof(PacManUdon)} {nameof(NetworkManager)}) Amount of data read does not match event size! Expected {eventSize}, read {index}."); + HandleError(); + return; } RemoveProcessedDataFromBuffer(index); - Debug.Log($"Processed full sync! Total {index} bytes."); + Debug.Log($"({nameof(PacManUdon)} {nameof(NetworkManager)}) Processed incoming event! Total {index} bytes."); + + retriesWithoutSuccess = 0; // We had success! } - private bool EnsureSpaceToStorePreparedEvent(int eventSize) + private void SyncToTime(uint newTime) + { + var timeToSyncTo = newTime - Delay; + startTimeTicks = DateTime.UtcNow.Ticks - timeToSyncTo * TimeSpan.TicksPerMillisecond; + Debug.Log($"({nameof(PacManUdon)} {nameof(NetworkManager)}) Synced to time {newTime}, startTimeTicks is now {startTimeTicks}"); + } + + private bool EnsureSpaceToStoreEvent(int eventSize) { if (index + eventSize <= buffer.Length) { return true; // Enough space! } + var newBufferSize = ((index + eventSize) / BufferIncrementSizeBytes + 1) * BufferIncrementSizeBytes; + + var success = IncreaseBufferSize(newBufferSize); + if (success) + { + return true; + } + if (index == 0) { - Debug.LogError($"({nameof(PacManUdon)} {nameof(NetworkManager)}) Buffer is not large enough to store event! Viewing remote play is not possible."); - return false; // Unable to store event, networking features will not function. + Debug.LogError($"({nameof(PacManUdon)} {nameof(NetworkManager)}) Buffer is not large enough to store event!"); + } + else + { + Debug.LogWarning($"({nameof(PacManUdon)} {nameof(NetworkManager)}) Too much data in buffer to store event!"); } - ClearBuffer(); - - Debug.LogWarning($"({nameof(PacManUdon)} {nameof(NetworkManager)}) Too much data in buffer to store event! Old events will be discarded."); - return true; // We can store event now that we cleared the buffer. + HandleError(); // We can store event now that we cleared the buffer. + return false; } - private bool EnsureSpaceToStoreReceivedEvent(int eventSize, bool isFullSync) + private bool IncreaseBufferSize(int newSize) { - if (index + eventSize <= buffer.Length) + if (newSize < buffer.Length) { - return true; // Enough space! + Debug.Log($"({nameof(PacManUdon)} {nameof(NetworkManager)}) Cannot decrease the size of the buffer!"); + return false; } - if (isFullSync && index == 0) + if (newSize > BufferMaxSizeBytes) { - Debug.LogError($"({nameof(PacManUdon)} {nameof(NetworkManager)}) Buffer is not large enough to store full sync! Viewing remote play is not possible."); - return false; // Unable to store full sync, networking features will not function. + return false; } - ClearBuffer(); - - if (!isFullSync) - { - Debug.LogWarning($"({nameof(PacManUdon)} {nameof(NetworkManager)}) Too much data in buffer to store event! Old events will be discarded, and full sync will be performed."); - - RequestFullSync(); - - return false; // No use storing this event, we're going to wait for the full sync. - } - - Debug.LogWarning($"({nameof(PacManUdon)} {nameof(NetworkManager)}) Too much data in buffer to store full sync! Old events will be discarded."); - return true; // We can store event now that we cleared the buffer. + var oldBuffer = buffer; + buffer = new byte[newSize]; + oldBuffer.CopyTo(buffer, 0); + return true; } - private void InitializeEvent(NetworkEventType eventType, int maxSize, out byte[][] data, out int index) + private void InitializeEvent(NetworkEventType eventType, uint eventTime, int maxSize, out byte[][] data, out int index) { data = new byte[maxSize][]; - index = 2; + index = 3; - data[0] = BitConverter.GetBytes(CurrentTime); - data[1] = new byte[] { GameManager.Int32ToByte((int)eventType) }; + data[0] = new byte[2]; // Placeholder for event size + data[1] = BitConverter.GetBytes(eventTime); + data[2] = new byte[] { GameManager.Int32ToByte((int)eventType) }; } private void FlattenAndCopy(byte[][] data, int length, byte[] target, ref int index) @@ -267,16 +386,62 @@ namespace Marro.PacManUdon { var oldBuffer = buffer; index -= amountProcessed; - buffer = new byte[BufferSizeBytes]; + buffer = new byte[BufferMaxSizeBytes]; Array.Copy(oldBuffer, amountProcessed, buffer, 0, index); } private void ClearBuffer() { - buffer = new byte[BufferSizeBytes]; + buffer = new byte[BufferMaxSizeBytes]; index = 0; } + private void HandleError() + { + retriesWithoutSuccess++; + + if (retriesWithoutSuccess > 3) + { + Debug.LogError($"({nameof(PacManUdon)} {nameof(NetworkManager)}) Fatal: Retried 3 times without success."); + var zero = 0; + Debug.Log(1 / zero); // Intentionally crash + return; + } + + Debug.LogWarning($"({nameof(PacManUdon)} {nameof(NetworkManager)}) Encountered data error, attempting to recover via full sync."); + + ClearBuffer(); + + if (!isOwner) + { + RequestEvent(NetworkEventType.FullSync); + } + else + { + SendEvent(NetworkEventType.FullSync); + } + } + + private void SetOwner(bool isOwner) + { + this.isOwner = isOwner; + + if (DebugImageToIndicateOwner != null) + { + DebugImageToIndicateOwner.SetFloat("Color", isOwner ? 1 : 0); + } + } + + public override void OnOwnershipTransferred(VRCPlayerApi newOwner) + { + SetOwner(newOwner == Networking.LocalPlayer); + + if(isOwner) + { + HandleError(); + } + } + public override void OnPreSerialization() { if (isOwner) @@ -284,24 +449,30 @@ namespace Marro.PacManUdon networkedData = new byte[index]; Array.Copy(buffer, networkedData, index); } + else + { + networkedData = new byte[0]; // Prevent exception loop in VRChat SDK + } } public override void OnPostSerialization(SerializationResult result) { if (!result.success) { - Debug.LogWarning($"Serialization failed! Tried to send {result.byteCount} bytes."); + Debug.LogWarning($"({nameof(PacManUdon)} {nameof(NetworkManager)}) Serialization failed! Tried to send {result.byteCount} bytes."); return; } - - Debug.Log($"Serialized with {result.byteCount} bytes!"); - if (isOwner) + if (!isOwner || networkedData.Length == 0) { - // Remove all transferred data from the buffer, leaving data that came in after serialization - RemoveProcessedDataFromBuffer(networkedData.Length); - networkedData = null; + return; } + + Debug.Log($"({nameof(PacManUdon)} {nameof(NetworkManager)}) Serialized with {networkedData.Length} bytes!\nBytes sent:\n{BytesToString(networkedData)}"); + + // Remove all transferred data from the buffer, leaving data that came in after serialization + RemoveProcessedDataFromBuffer(networkedData.Length); + networkedData = null; } public override void OnDeserialization() @@ -312,8 +483,24 @@ namespace Marro.PacManUdon } } + public float GetDtInSeconds(uint currentTime, uint lastUpdate) + { + return (CurrentTime - lastUpdate) / 1000f; + } + public uint CurrentTime => (uint)((DateTime.UtcNow.Ticks - startTimeTicks) / TimeSpan.TicksPerMillisecond); public bool IsOwner => isOwner; + + public string BytesToString(byte[] bytes) + { + var sb = new StringBuilder("new byte[] { "); + foreach (var b in bytes) + { + sb.Append(b + ", "); + } + sb.Append("}"); + return sb.ToString(); + } } } diff --git a/Assets/Scripts/SyncedObject.cs b/Assets/Scripts/SyncedObject.cs index 5f8346f..b0c1c6c 100644 --- a/Assets/Scripts/SyncedObject.cs +++ b/Assets/Scripts/SyncedObject.cs @@ -2,11 +2,12 @@ using UdonSharp; using UnityEngine; -namespace Assets.Scripts +namespace Marro.PacManUdon { public abstract class SyncedObject : UdonSharpBehaviour { - public abstract void AppendSyncedData(byte[][] data, ref int index); - public abstract bool SetSyncedData(byte[] data, ref int index); + public abstract void AppendSyncedData(byte[][] data, ref int index, NetworkEventType eventType, uint eventTime); + public abstract bool SetSyncedData(byte[] data, ref int index, NetworkEventType eventType, uint eventTime); + public abstract void SyncedToNewTime(uint oldTime, uint newTime); } } \ No newline at end of file diff --git a/Assets/Test stuff.meta b/Assets/Test stuff.meta new file mode 100644 index 0000000..401d4cf --- /dev/null +++ b/Assets/Test stuff.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1ab80220efbebb2489a3218f3ee9b00b +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Test stuff/ColoredTexture.controller b/Assets/Test stuff/ColoredTexture.controller new file mode 100644 index 0000000..cbf5836 --- /dev/null +++ b/Assets/Test stuff/ColoredTexture.controller @@ -0,0 +1,109 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!91 &9100000 +AnimatorController: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: ColoredTexture + serializedVersion: 5 + m_AnimatorParameters: + - m_Name: Color + m_Type: 1 + m_DefaultFloat: 0 + m_DefaultInt: 0 + m_DefaultBool: 0 + m_Controller: {fileID: 0} + m_AnimatorLayers: + - serializedVersion: 5 + m_Name: Base Layer + m_StateMachine: {fileID: 2235177317997810699} + m_Mask: {fileID: 0} + m_Motions: [] + m_Behaviours: [] + m_BlendingMode: 0 + m_SyncedLayerIndex: -1 + m_DefaultWeight: 0 + m_IKPass: 0 + m_SyncedLayerAffectsTiming: 0 + m_Controller: {fileID: 9100000} +--- !u!1107 &2235177317997810699 +AnimatorStateMachine: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Base Layer + m_ChildStates: + - serializedVersion: 1 + m_State: {fileID: 6251436573727931732} + m_Position: {x: 384.82895, y: 133.70117, z: 0} + m_ChildStateMachines: [] + m_AnyStateTransitions: [] + m_EntryTransitions: [] + m_StateMachineTransitions: {} + m_StateMachineBehaviours: [] + m_AnyStatePosition: {x: 50, y: 20, z: 0} + m_EntryPosition: {x: 50, y: 120, z: 0} + m_ExitPosition: {x: 800, y: 120, z: 0} + m_ParentStateMachinePosition: {x: 800, y: 20, z: 0} + m_DefaultState: {fileID: 6251436573727931732} +--- !u!1102 &6251436573727931732 +AnimatorState: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Blend Tree + m_Speed: 1 + m_CycleOffset: 0 + m_Transitions: [] + m_StateMachineBehaviours: [] + m_Position: {x: 50, y: 50, z: 0} + m_IKOnFeet: 0 + m_WriteDefaultValues: 1 + m_Mirror: 0 + m_SpeedParameterActive: 0 + m_MirrorParameterActive: 0 + m_CycleOffsetParameterActive: 0 + m_TimeParameterActive: 0 + m_Motion: {fileID: 7315205519034161812} + m_Tag: + m_SpeedParameter: + m_MirrorParameter: + m_CycleOffsetParameter: + m_TimeParameter: +--- !u!206 &7315205519034161812 +BlendTree: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Blend Tree + m_Childs: + - serializedVersion: 2 + m_Motion: {fileID: 7400000, guid: f06a4450a22bb184bb3881fbc7ddc36f, type: 2} + m_Threshold: 0 + m_Position: {x: 0, y: 0} + m_TimeScale: 1 + m_CycleOffset: 0 + m_DirectBlendParameter: Color + m_Mirror: 0 + - serializedVersion: 2 + m_Motion: {fileID: 7400000, guid: 152a2df117ac1c948b25f28a386ac289, type: 2} + m_Threshold: 1 + m_Position: {x: 0, y: 0} + m_TimeScale: 1 + m_CycleOffset: 0 + m_DirectBlendParameter: Color + m_Mirror: 0 + m_BlendParameter: Color + m_BlendParameterY: Blend + m_MinThreshold: 0 + m_MaxThreshold: 1 + m_UseAutomaticThresholds: 0 + m_NormalizedBlendValues: 0 + m_BlendType: 0 diff --git a/Assets/Test stuff/ColoredTexture.controller.meta b/Assets/Test stuff/ColoredTexture.controller.meta new file mode 100644 index 0000000..b86e1e5 --- /dev/null +++ b/Assets/Test stuff/ColoredTexture.controller.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 72593807222e776478e455c600f7ccf9 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 9100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Test stuff/GreenTexture.anim b/Assets/Test stuff/GreenTexture.anim new file mode 100644 index 0000000..67ea9a0 --- /dev/null +++ b/Assets/Test stuff/GreenTexture.anim @@ -0,0 +1,206 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!74 &7400000 +AnimationClip: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: GreenTexture + serializedVersion: 7 + m_Legacy: 0 + m_Compressed: 0 + m_UseHighQualityCurve: 1 + m_RotationCurves: [] + m_CompressedRotationCurves: [] + m_EulerCurves: [] + m_PositionCurves: [] + m_ScaleCurves: [] + m_FloatCurves: + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_Color.r + path: + classID: 114 + script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + flags: 0 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_Color.g + path: + classID: 114 + script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + flags: 0 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_Color.b + path: + classID: 114 + script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + flags: 0 + m_PPtrCurves: [] + m_SampleRate: 1 + m_WrapMode: 0 + m_Bounds: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_ClipBindingConstant: + genericBindings: + - serializedVersion: 2 + path: 0 + attribute: 2526845255 + script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + typeID: 114 + customType: 0 + isPPtrCurve: 0 + isIntCurve: 0 + isSerializeReferenceCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 4215373228 + script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + typeID: 114 + customType: 0 + isPPtrCurve: 0 + isIntCurve: 0 + isSerializeReferenceCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 2334886179 + script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + typeID: 114 + customType: 0 + isPPtrCurve: 0 + isIntCurve: 0 + isSerializeReferenceCurve: 0 + pptrCurveMapping: [] + m_AnimationClipSettings: + serializedVersion: 2 + m_AdditiveReferencePoseClip: {fileID: 0} + m_AdditiveReferencePoseTime: 0 + m_StartTime: 0 + m_StopTime: 0 + m_OrientationOffsetY: 0 + m_Level: 0 + m_CycleOffset: 0 + m_HasAdditiveReferencePose: 0 + m_LoopTime: 0 + m_LoopBlend: 0 + m_LoopBlendOrientation: 0 + m_LoopBlendPositionY: 0 + m_LoopBlendPositionXZ: 0 + m_KeepOriginalOrientation: 0 + m_KeepOriginalPositionY: 1 + m_KeepOriginalPositionXZ: 0 + m_HeightFromFeet: 0 + m_Mirror: 0 + m_EditorCurves: + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_Color.r + path: + classID: 114 + script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + flags: 0 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_Color.g + path: + classID: 114 + script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + flags: 0 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_Color.b + path: + classID: 114 + script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + flags: 0 + m_EulerEditorCurves: [] + m_HasGenericRootTransform: 0 + m_HasMotionFloatCurves: 0 + m_Events: [] diff --git a/Assets/Test stuff/GreenTexture.anim.meta b/Assets/Test stuff/GreenTexture.anim.meta new file mode 100644 index 0000000..0a05189 --- /dev/null +++ b/Assets/Test stuff/GreenTexture.anim.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 152a2df117ac1c948b25f28a386ac289 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 7400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Test stuff/RedTexture.anim b/Assets/Test stuff/RedTexture.anim new file mode 100644 index 0000000..4acb0c3 --- /dev/null +++ b/Assets/Test stuff/RedTexture.anim @@ -0,0 +1,206 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!74 &7400000 +AnimationClip: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: RedTexture + serializedVersion: 7 + m_Legacy: 0 + m_Compressed: 0 + m_UseHighQualityCurve: 1 + m_RotationCurves: [] + m_CompressedRotationCurves: [] + m_EulerCurves: [] + m_PositionCurves: [] + m_ScaleCurves: [] + m_FloatCurves: + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_Color.r + path: + classID: 114 + script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + flags: 0 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_Color.g + path: + classID: 114 + script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + flags: 0 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_Color.b + path: + classID: 114 + script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + flags: 0 + m_PPtrCurves: [] + m_SampleRate: 1 + m_WrapMode: 0 + m_Bounds: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_ClipBindingConstant: + genericBindings: + - serializedVersion: 2 + path: 0 + attribute: 2526845255 + script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + typeID: 114 + customType: 0 + isPPtrCurve: 0 + isIntCurve: 0 + isSerializeReferenceCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 4215373228 + script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + typeID: 114 + customType: 0 + isPPtrCurve: 0 + isIntCurve: 0 + isSerializeReferenceCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 2334886179 + script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + typeID: 114 + customType: 0 + isPPtrCurve: 0 + isIntCurve: 0 + isSerializeReferenceCurve: 0 + pptrCurveMapping: [] + m_AnimationClipSettings: + serializedVersion: 2 + m_AdditiveReferencePoseClip: {fileID: 0} + m_AdditiveReferencePoseTime: 0 + m_StartTime: 0 + m_StopTime: 0 + m_OrientationOffsetY: 0 + m_Level: 0 + m_CycleOffset: 0 + m_HasAdditiveReferencePose: 0 + m_LoopTime: 0 + m_LoopBlend: 0 + m_LoopBlendOrientation: 0 + m_LoopBlendPositionY: 0 + m_LoopBlendPositionXZ: 0 + m_KeepOriginalOrientation: 0 + m_KeepOriginalPositionY: 1 + m_KeepOriginalPositionXZ: 0 + m_HeightFromFeet: 0 + m_Mirror: 0 + m_EditorCurves: + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_Color.r + path: + classID: 114 + script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + flags: 0 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_Color.g + path: + classID: 114 + script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + flags: 0 + - serializedVersion: 2 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_Color.b + path: + classID: 114 + script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + flags: 0 + m_EulerEditorCurves: [] + m_HasGenericRootTransform: 0 + m_HasMotionFloatCurves: 0 + m_Events: [] diff --git a/Assets/Test stuff/RedTexture.anim.meta b/Assets/Test stuff/RedTexture.anim.meta new file mode 100644 index 0000000..29f5338 --- /dev/null +++ b/Assets/Test stuff/RedTexture.anim.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f06a4450a22bb184bb3881fbc7ddc36f +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 7400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Test stuff/TestBall.asset b/Assets/Test stuff/TestBall.asset new file mode 100644 index 0000000..eb0fd6a --- /dev/null +++ b/Assets/Test stuff/TestBall.asset @@ -0,0 +1,394 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c333ccfdd0cbdbc4ca30cef2dd6e6b9b, type: 3} + m_Name: TestBall + m_EditorClassIdentifier: + serializedUdonProgramAsset: {fileID: 11400000, guid: 8968388b0e4fe434fb8da62328c108a0, type: 2} + udonAssembly: + assemblyError: + sourceCsScript: {fileID: 11500000, guid: 0980d82a15346eb45b49fd33db0ffee9, type: 3} + scriptVersion: 2 + compiledVersion: 2 + behaviourSyncMode: 0 + hasInteractEvent: 0 + scriptID: -3035274785675086507 + serializationData: + SerializedFormat: 2 + SerializedBytes: + ReferencedUnityObjects: [] + SerializedBytesString: + Prefab: {fileID: 0} + PrefabModificationsReferencedUnityObjects: [] + PrefabModifications: [] + SerializationNodes: + - Name: fieldDefinitions + Entry: 7 + Data: 0|System.Collections.Generic.Dictionary`2[[System.String, mscorlib],[UdonSharp.Compiler.FieldDefinition, + UdonSharp.Editor]], mscorlib + - Name: comparer + Entry: 7 + Data: 1|System.Collections.Generic.GenericEqualityComparer`1[[System.String, + mscorlib]], mscorlib + - Name: + Entry: 8 + Data: + - Name: + Entry: 12 + Data: 6 + - Name: + Entry: 7 + Data: + - Name: $k + Entry: 1 + Data: networkManager + - Name: $v + Entry: 7 + Data: 2|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor + - Name: k__BackingField + Entry: 1 + Data: networkManager + - Name: k__BackingField + Entry: 7 + Data: 3|System.RuntimeType, mscorlib + - Name: + Entry: 1 + Data: Marro.PacManUdon.NetworkManager, Assembly-CSharp + - Name: + Entry: 8 + Data: + - Name: k__BackingField + Entry: 7 + Data: 4|System.RuntimeType, mscorlib + - Name: + Entry: 1 + Data: VRC.Udon.UdonBehaviour, VRC.Udon + - Name: + Entry: 8 + Data: + - Name: k__BackingField + Entry: 7 + Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib + - Name: + Entry: 6 + Data: + - Name: + Entry: 8 + Data: + - Name: k__BackingField + Entry: 5 + Data: true + - Name: _fieldAttributes + Entry: 7 + Data: 5|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib + - Name: + Entry: 12 + Data: 1 + - Name: + Entry: 7 + Data: 6|UnityEngine.SerializeField, UnityEngine.CoreModule + - Name: + Entry: 8 + Data: + - Name: + Entry: 13 + Data: + - Name: + Entry: 8 + Data: + - Name: + Entry: 8 + Data: + - Name: + Entry: 8 + Data: + - Name: + Entry: 7 + Data: + - Name: $k + Entry: 1 + Data: start + - Name: $v + Entry: 7 + Data: 7|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor + - Name: k__BackingField + Entry: 1 + Data: start + - Name: k__BackingField + Entry: 7 + Data: 8|System.RuntimeType, mscorlib + - Name: + Entry: 1 + Data: UnityEngine.Transform, UnityEngine.CoreModule + - Name: + Entry: 8 + Data: + - Name: k__BackingField + Entry: 9 + Data: 8 + - Name: k__BackingField + Entry: 7 + Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib + - Name: + Entry: 6 + Data: + - Name: + Entry: 8 + Data: + - Name: k__BackingField + Entry: 5 + Data: true + - Name: _fieldAttributes + Entry: 7 + Data: 9|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib + - Name: + Entry: 12 + Data: 1 + - Name: + Entry: 7 + Data: 10|UnityEngine.SerializeField, UnityEngine.CoreModule + - Name: + Entry: 8 + Data: + - Name: + Entry: 13 + Data: + - Name: + Entry: 8 + Data: + - Name: + Entry: 8 + Data: + - Name: + Entry: 8 + Data: + - Name: + Entry: 7 + Data: + - Name: $k + Entry: 1 + Data: end + - Name: $v + Entry: 7 + Data: 11|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor + - Name: k__BackingField + Entry: 1 + Data: end + - Name: k__BackingField + Entry: 9 + Data: 8 + - Name: k__BackingField + Entry: 9 + Data: 8 + - Name: k__BackingField + Entry: 7 + Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib + - Name: + Entry: 6 + Data: + - Name: + Entry: 8 + Data: + - Name: k__BackingField + Entry: 5 + Data: true + - Name: _fieldAttributes + Entry: 7 + Data: 12|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib + - Name: + Entry: 12 + Data: 1 + - Name: + Entry: 7 + Data: 13|UnityEngine.SerializeField, UnityEngine.CoreModule + - Name: + Entry: 8 + Data: + - Name: + Entry: 13 + Data: + - Name: + Entry: 8 + Data: + - Name: + Entry: 8 + Data: + - Name: + Entry: 8 + Data: + - Name: + Entry: 7 + Data: + - Name: $k + Entry: 1 + Data: amountUp + - Name: $v + Entry: 7 + Data: 14|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor + - Name: k__BackingField + Entry: 1 + Data: amountUp + - Name: k__BackingField + Entry: 7 + Data: 15|System.RuntimeType, mscorlib + - Name: + Entry: 1 + Data: System.Single, mscorlib + - Name: + Entry: 8 + Data: + - Name: k__BackingField + Entry: 9 + Data: 15 + - Name: k__BackingField + Entry: 7 + Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib + - Name: + Entry: 6 + Data: + - Name: + Entry: 8 + Data: + - Name: k__BackingField + Entry: 5 + Data: false + - Name: _fieldAttributes + Entry: 7 + Data: 16|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib + - Name: + Entry: 12 + Data: 0 + - Name: + Entry: 13 + Data: + - Name: + Entry: 8 + Data: + - Name: + Entry: 8 + Data: + - Name: + Entry: 8 + Data: + - Name: + Entry: 7 + Data: + - Name: $k + Entry: 1 + Data: loopOffset + - Name: $v + Entry: 7 + Data: 17|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor + - Name: k__BackingField + Entry: 1 + Data: loopOffset + - Name: k__BackingField + Entry: 7 + Data: 18|System.RuntimeType, mscorlib + - Name: + Entry: 1 + Data: System.Int32, mscorlib + - Name: + Entry: 8 + Data: + - Name: k__BackingField + Entry: 9 + Data: 18 + - Name: k__BackingField + Entry: 7 + Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib + - Name: + Entry: 6 + Data: + - Name: + Entry: 8 + Data: + - Name: k__BackingField + Entry: 5 + Data: false + - Name: _fieldAttributes + Entry: 7 + Data: 19|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib + - Name: + Entry: 12 + Data: 0 + - Name: + Entry: 13 + Data: + - Name: + Entry: 8 + Data: + - Name: + Entry: 8 + Data: + - Name: + Entry: 8 + Data: + - Name: + Entry: 7 + Data: + - Name: $k + Entry: 1 + Data: lastUpdate + - Name: $v + Entry: 7 + Data: 20|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor + - Name: k__BackingField + Entry: 1 + Data: lastUpdate + - Name: k__BackingField + Entry: 7 + Data: 21|System.RuntimeType, mscorlib + - Name: + Entry: 1 + Data: System.UInt32, mscorlib + - Name: + Entry: 8 + Data: + - Name: k__BackingField + Entry: 9 + Data: 21 + - Name: k__BackingField + Entry: 7 + Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib + - Name: + Entry: 6 + Data: + - Name: + Entry: 8 + Data: + - Name: k__BackingField + Entry: 5 + Data: false + - Name: _fieldAttributes + Entry: 7 + Data: 22|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib + - Name: + Entry: 12 + Data: 0 + - Name: + Entry: 13 + Data: + - Name: + Entry: 8 + Data: + - Name: + Entry: 8 + Data: + - Name: + Entry: 8 + Data: + - Name: + Entry: 13 + Data: + - Name: + Entry: 8 + Data: diff --git a/Assets/Test stuff/TestBall.asset.meta b/Assets/Test stuff/TestBall.asset.meta new file mode 100644 index 0000000..044bb5a --- /dev/null +++ b/Assets/Test stuff/TestBall.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1845851c6c8f8254baa6b40646c66d59 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Test stuff/TestBall.cs b/Assets/Test stuff/TestBall.cs new file mode 100644 index 0000000..350c7aa --- /dev/null +++ b/Assets/Test stuff/TestBall.cs @@ -0,0 +1,107 @@ +using librsync.net; +using Marro.PacManUdon; +using System; +using System.Drawing.Text; +using UnityEngine; + +public class TestBall : SyncedObject +{ + [SerializeField] private NetworkManager networkManager; + [SerializeField] private Transform start; + [SerializeField] private Transform end; + + private const int LoopTimeMs = 1000; + private const float MaxUp = 0.7f; + private const float UpPerPress = 0.4f; + private const float DownPerSecond = 1; + + private float amountUp = 0; + private int loopOffset = 0; + private uint lastUpdate; + + private void Start() + { + networkManager.Initialize(); + lastUpdate = networkManager.CurrentTime; + } + + public void FixedUpdate() + { + var currentTime = networkManager.CurrentTime; + float dt = networkManager.GetDtInSeconds(currentTime, lastUpdate); + DeltaUp(-DownPerSecond * dt); + + float progress = GetProgress(currentTime); + transform.position = Vector3.Lerp(start.position, end.position, progress) + amountUp * MaxUp * Vector3.up; + + lastUpdate = currentTime; + } + + private void DeltaUp(float delta) + { + amountUp = Mathf.Clamp(amountUp + delta, 0, 1); + //Debug.Log($"delta: {delta}, amountUp: {amountUp}"); + } + + private void SetProgress(float progress, uint currentTime) + { + //loopOffset = (int)(progress * LoopTimeMs % (LoopTimeMs + currentTime)); + loopOffset = (int)(currentTime - progress * LoopTimeMs); + //loopOffset = (int)currentTime % LoopTimeMs + (int)(progress * LoopTimeMs); + } + + private float GetProgress(uint currentTime) + { + return ((int)currentTime - loopOffset) % LoopTimeMs / (float)LoopTimeMs; // "uint % int" is not exposed, I love working in Udon + //return loopOffset - ((int)currentTime % LoopTimeMs) / (float)LoopTimeMs; // "uint % int" is not exposed, I love working in Udon + } + + public void UpButtonPressed() + { + DeltaUp(UpPerPress); + Debug.Log($"({nameof(TestBall)}) Up button pressed, jumped up at {GetProgress(networkManager.CurrentTime)} to {amountUp}."); + networkManager.SendEvent((NetworkEventType)1); + } + + public void SyncButtonPressed() + { + networkManager.SendEvent((NetworkEventType)0); + Debug.Log($"({nameof(TestBall)}) Sync button pressed, synced at progress {GetProgress(networkManager.CurrentTime)} and amountUp {amountUp}."); + } + + public override void AppendSyncedData(byte[][] data, ref int index, NetworkEventType eventType, uint eventTime) + { + var currentTime = networkManager.CurrentTime; + + if (eventType == 0) + { + data[index++] = BitConverter.GetBytes(amountUp); + data[index++] = BitConverter.GetBytes(GetProgress(currentTime)); + } + } + + public override bool SetSyncedData(byte[] data, ref int index, NetworkEventType eventType, uint eventTime) + { + var currentTime = networkManager.CurrentTime; + + if (eventType == 0) + { + amountUp = BitConverter.ToSingle(data, index); + SetProgress(BitConverter.ToSingle(data, index + 4), currentTime); + Debug.Log($"({nameof(TestBall)}) Received sync event, synced to progress {GetProgress(currentTime)} and amountUp {amountUp}."); + index += 8; + } + else + { + DeltaUp(UpPerPress); + Debug.Log($"({nameof(TestBall)}) Received up event, jumped up at {GetProgress(networkManager.CurrentTime)} to {amountUp}."); + } + + return true; + } + + public override void SyncedToNewTime(uint oldTime, uint newTime) + { + lastUpdate += newTime - oldTime; + } +} diff --git a/Assets/Test stuff/TestBall.cs.meta b/Assets/Test stuff/TestBall.cs.meta new file mode 100644 index 0000000..be2660c --- /dev/null +++ b/Assets/Test stuff/TestBall.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0980d82a15346eb45b49fd33db0ffee9 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: