From a88e4bde81763df4d402bed781f56e757e731de6 Mon Sep 17 00:00:00 2001 From: Marro64 Date: Sat, 3 Jan 2026 16:07:28 +0100 Subject: [PATCH] Sync seems to work --- Assets/Scenes/PacMan.unity | 145 +++++++++++++++--------- Assets/Test stuff/TestBall.cs | 6 +- Assets/Test stuff/TestBallManager.asset | 134 +++++++++++++++++++++- Assets/Test stuff/TestBallManager.cs | 1 - 4 files changed, 229 insertions(+), 57 deletions(-) diff --git a/Assets/Scenes/PacMan.unity b/Assets/Scenes/PacMan.unity index 748c464..090af63 100644 --- a/Assets/Scenes/PacMan.unity +++ b/Assets/Scenes/PacMan.unity @@ -10976,7 +10976,6 @@ MonoBehaviour: PrefabModifications: [] SerializationNodes: [] _udonSharpBackingUdonBehaviour: {fileID: 357748366} - networkManager: {fileID: 1200574210} start: {fileID: 992156376} end: {fileID: 312606797} mode: 2 @@ -12151,6 +12150,91 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 404777076} m_CullTransparentMesh: 1 +--- !u!1 &405256684 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 405256685} + - component: {fileID: 405256687} + - component: {fileID: 405256686} + m_Layer: 0 + m_Name: TestBallManager + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &405256685 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 405256684} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: -0.33300006, 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 &405256686 +MonoBehaviour: + m_ObjectHideFlags: 2 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 405256684} + 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: 007782662b6528e4a855cc8fb5cca273, type: 2} + programSource: {fileID: 11400000, guid: 366d931a37811ce47be572127126c17b, type: 2} + serializedPublicVariablesBytesString: Ai8AAAAAATIAAABWAFIAQwAuAFUAZABvAG4ALgBDAG8AbQBtAG8AbgAuAFUAZABvAG4AVgBhAHIAaQBhAGIAbABlAFQAYQBiAGwAZQAsACAAVgBSAEMALgBVAGQAbwBuAC4AQwBvAG0AbQBvAG4AAAAAAAYBAAAAAAAAACcBBAAAAHQAeQBwAGUAAWgAAABTAHkAcwB0AGUAbQAuAEMAbwBsAGwAZQBjAHQAaQBvAG4AcwAuAEcAZQBuAGUAcgBpAGMALgBMAGkAcwB0AGAAMQBbAFsAVgBSAEMALgBVAGQAbwBuAC4AQwBvAG0AbQBvAG4ALgBJAG4AdABlAHIAZgBhAGMAZQBzAC4ASQBVAGQAbwBuAFYAYQByAGkAYQBiAGwAZQAsACAAVgBSAEMALgBVAGQAbwBuAC4AQwBvAG0AbQBvAG4AXQBdACwAIABtAHMAYwBvAHIAbABpAGIAAQEJAAAAVgBhAHIAaQBhAGIAbABlAHMALwEAAAABaAAAAFMAeQBzAHQAZQBtAC4AQwBvAGwAbABlAGMAdABpAG8AbgBzAC4ARwBlAG4AZQByAGkAYwAuAEwAaQBzAHQAYAAxAFsAWwBWAFIAQwAuAFUAZABvAG4ALgBDAG8AbQBtAG8AbgAuAEkAbgB0AGUAcgBmAGEAYwBlAHMALgBJAFUAZABvAG4AVgBhAHIAaQBhAGIAbABlACwAIABWAFIAQwAuAFUAZABvAG4ALgBDAG8AbQBtAG8AbgBdAF0ALAAgAG0AcwBjAG8AcgBsAGkAYgABAAAABgEAAAAAAAAAAi8CAAAAAUkAAABWAFIAQwAuAFUAZABvAG4ALgBDAG8AbQBtAG8AbgAuAFUAZABvAG4AVgBhAHIAaQBhAGIAbABlAGAAMQBbAFsAUwB5AHMAdABlAG0ALgBJAG4AdAAzADIALAAgAG0AcwBjAG8AcgBsAGkAYgBdAF0ALAAgAFYAUgBDAC4AVQBkAG8AbgAuAEMAbwBtAG0AbwBuAAIAAAAGAgAAAAAAAAAnAQQAAAB0AHkAcABlAAEXAAAAUwB5AHMAdABlAG0ALgBTAHQAcgBpAG4AZwAsACAAbQBzAGMAbwByAGwAaQBiACcBCgAAAFMAeQBtAGIAbwBsAE4AYQBtAGUAAR8AAABfAF8AXwBVAGQAbwBuAFMAaABhAHIAcABCAGUAaABhAHYAaQBvAHUAcgBWAGUAcgBzAGkAbwBuAF8AXwBfACcBBAAAAHQAeQBwAGUAARYAAABTAHkAcwB0AGUAbQAuAEkAbgB0ADMAMgAsACAAbQBzAGMAbwByAGwAaQBiABcBBQAAAFYAYQBsAHUAZQACAAAABwUHBQcF + publicVariablesUnityEngineObjects: [] + publicVariablesSerializationDataFormat: 0 +--- !u!114 &405256687 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 405256684} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 40fc654db4dfd4f4c9cdf45903f134a3, type: 3} + m_Name: + m_EditorClassIdentifier: + serializationData: + SerializedFormat: 2 + SerializedBytes: + ReferencedUnityObjects: [] + SerializedBytesString: + Prefab: {fileID: 0} + PrefabModificationsReferencedUnityObjects: [] + PrefabModifications: [] + SerializationNodes: [] + _udonSharpBackingUdonBehaviour: {fileID: 405256686} + testBalls: + - {fileID: 1156754006} + - {fileID: 527776391} + - {fileID: 357748371} + networkManager: {fileID: 1200574210} --- !u!1001 &408159294 PrefabInstance: m_ObjectHideFlags: 0 @@ -16200,7 +16284,6 @@ MonoBehaviour: PrefabModifications: [] SerializationNodes: [] _udonSharpBackingUdonBehaviour: {fileID: 527776390} - networkManager: {fileID: 1200574210} start: {fileID: 992156376} end: {fileID: 312606797} mode: 1 @@ -20640,6 +20723,7 @@ Transform: - {fileID: 332716163} - {fileID: 1003947896} - {fileID: 1200574208} + - {fileID: 405256685} m_Father: {fileID: 1203813883} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1001 &697998654 @@ -33745,31 +33829,7 @@ MonoBehaviour: 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 - - m_Target: {fileID: 527776390} - 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 - - m_Target: {fileID: 357748366} + - m_Target: {fileID: 405256686} m_TargetAssemblyTypeName: m_MethodName: SendCustomEvent m_Mode: 5 @@ -35600,7 +35660,6 @@ MonoBehaviour: PrefabModifications: [] SerializationNodes: [] _udonSharpBackingUdonBehaviour: {fileID: 1156754005} - networkManager: {fileID: 1200574210} start: {fileID: 992156376} end: {fileID: 312606797} mode: 0 @@ -52780,31 +52839,7 @@ MonoBehaviour: 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 - - m_Target: {fileID: 527776390} - 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 - - m_Target: {fileID: 357748366} + - m_Target: {fileID: 405256686} m_TargetAssemblyTypeName: m_MethodName: SendCustomEvent m_Mode: 5 @@ -54424,6 +54459,10 @@ MonoBehaviour: ID: 307 SerializedTypeNames: - VRC.Udon.UdonBehaviour + - gameObject: {fileID: 405256684} + ID: 308 + SerializedTypeNames: + - VRC.Udon.UdonBehaviour portraitCameraPositionOffset: {x: 0, y: 0, z: 0} portraitCameraRotationOffset: {x: 0, y: 1, z: 0, w: -0.00000004371139} PlayerPersistence: [] diff --git a/Assets/Test stuff/TestBall.cs b/Assets/Test stuff/TestBall.cs index 3baf96b..9eb39a9 100644 --- a/Assets/Test stuff/TestBall.cs +++ b/Assets/Test stuff/TestBall.cs @@ -40,6 +40,8 @@ public class TestBall : SyncedObject public override void SyncedUpdate() { + SetProgress(GetProgress()); // A quick test that these methods work correctly + DeltaUp(-DownPerSecond * networkManager.Dt); UpdateProgress(); @@ -55,7 +57,7 @@ public class TestBall : SyncedObject private void SetProgress(float progress) { - var currentTimestamp = NetworkManager.TimeToTimestamp(networkManager.SyncedTime); + var currentTimestamp = GetCurrentTimestamp(); loopOffset = (int)(currentTimestamp - progress * LoopTimeMs); } @@ -101,13 +103,13 @@ public class TestBall : SyncedObject { DeltaUp(UpPerPress); Debug.Log($"({nameof(TestBall)}) Up button pressed, jumped up at {GetProgress()} to {amountUp}."); - networkManager.SendEvent((NetworkEventType)1); } public override void AppendSyncedData(byte[][] data, ref int index, NetworkEventType eventType) { if (eventType == 0) { + Debug.Log($"({nameof(TestBall)}) Sending sync data at progress {GetProgress()} and amountUp {amountUp}."); data[index++] = BitConverter.GetBytes(amountUp); data[index++] = BitConverter.GetBytes(GetProgress()); } diff --git a/Assets/Test stuff/TestBallManager.asset b/Assets/Test stuff/TestBallManager.asset index 03f3bb0..85db71d 100644 --- a/Assets/Test stuff/TestBallManager.asset +++ b/Assets/Test stuff/TestBallManager.asset @@ -43,7 +43,139 @@ MonoBehaviour: Data: - Name: Entry: 12 - Data: 0 + Data: 2 + - Name: + Entry: 7 + Data: + - Name: $k + Entry: 1 + Data: testBalls + - Name: $v + Entry: 7 + Data: 2|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor + - Name: k__BackingField + Entry: 1 + Data: testBalls + - Name: k__BackingField + Entry: 7 + Data: 3|System.RuntimeType, mscorlib + - Name: + Entry: 1 + Data: TestBall[], Assembly-CSharp + - Name: + Entry: 8 + Data: + - Name: k__BackingField + Entry: 7 + Data: 4|System.RuntimeType, mscorlib + - Name: + Entry: 1 + Data: UnityEngine.Component[], UnityEngine.CoreModule + - 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: networkManager + - Name: $v + Entry: 7 + Data: 7|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor + - Name: k__BackingField + Entry: 1 + Data: networkManager + - Name: k__BackingField + Entry: 7 + Data: 8|System.RuntimeType, mscorlib + - Name: + Entry: 1 + Data: Marro.PacManUdon.NetworkManager, Assembly-CSharp + - Name: + Entry: 8 + Data: + - Name: k__BackingField + Entry: 7 + Data: 9|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: 10|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib + - Name: + Entry: 12 + Data: 1 + - Name: + Entry: 7 + Data: 11|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: 13 Data: diff --git a/Assets/Test stuff/TestBallManager.cs b/Assets/Test stuff/TestBallManager.cs index b1c4bfa..58425a7 100644 --- a/Assets/Test stuff/TestBallManager.cs +++ b/Assets/Test stuff/TestBallManager.cs @@ -38,6 +38,5 @@ public class TestBallManager : UdonSharpBehaviour { networkManager.SendEvent((NetworkEventType)0); } - Debug.Log($"({nameof(TestBall)}) Sync button pressed, synced at progress {GetProgress()} and amountUp {amountUp}."); } }