Cleaner sync
This commit is contained in:
@@ -43,7 +43,7 @@ MonoBehaviour:
|
|||||||
Data:
|
Data:
|
||||||
- Name:
|
- Name:
|
||||||
Entry: 12
|
Entry: 12
|
||||||
Data: 18
|
Data: 19
|
||||||
- Name:
|
- Name:
|
||||||
Entry: 7
|
Entry: 7
|
||||||
Data:
|
Data:
|
||||||
@@ -421,16 +421,70 @@ MonoBehaviour:
|
|||||||
Data:
|
Data:
|
||||||
- Name: $k
|
- Name: $k
|
||||||
Entry: 1
|
Entry: 1
|
||||||
Data: buffer
|
Data: fullSyncInQueue
|
||||||
- Name: $v
|
- Name: $v
|
||||||
Entry: 7
|
Entry: 7
|
||||||
Data: 22|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
|
Data: 22|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
|
||||||
- Name: <Name>k__BackingField
|
- Name: <Name>k__BackingField
|
||||||
Entry: 1
|
Entry: 1
|
||||||
Data: buffer
|
Data: fullSyncInQueue
|
||||||
- Name: <UserType>k__BackingField
|
- Name: <UserType>k__BackingField
|
||||||
Entry: 7
|
Entry: 7
|
||||||
Data: 23|System.RuntimeType, mscorlib
|
Data: 23|System.RuntimeType, mscorlib
|
||||||
|
- Name:
|
||||||
|
Entry: 1
|
||||||
|
Data: System.Boolean, mscorlib
|
||||||
|
- Name:
|
||||||
|
Entry: 8
|
||||||
|
Data:
|
||||||
|
- Name: <SystemType>k__BackingField
|
||||||
|
Entry: 9
|
||||||
|
Data: 23
|
||||||
|
- Name: <SyncMode>k__BackingField
|
||||||
|
Entry: 7
|
||||||
|
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
|
||||||
|
- Name:
|
||||||
|
Entry: 6
|
||||||
|
Data:
|
||||||
|
- Name:
|
||||||
|
Entry: 8
|
||||||
|
Data:
|
||||||
|
- Name: <IsSerialized>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: <Name>k__BackingField
|
||||||
|
Entry: 1
|
||||||
|
Data: buffer
|
||||||
|
- Name: <UserType>k__BackingField
|
||||||
|
Entry: 7
|
||||||
|
Data: 26|System.RuntimeType, mscorlib
|
||||||
- Name:
|
- Name:
|
||||||
Entry: 1
|
Entry: 1
|
||||||
Data: System.Byte[][], mscorlib
|
Data: System.Byte[][], mscorlib
|
||||||
@@ -439,7 +493,7 @@ MonoBehaviour:
|
|||||||
Data:
|
Data:
|
||||||
- Name: <SystemType>k__BackingField
|
- Name: <SystemType>k__BackingField
|
||||||
Entry: 7
|
Entry: 7
|
||||||
Data: 24|System.RuntimeType, mscorlib
|
Data: 27|System.RuntimeType, mscorlib
|
||||||
- Name:
|
- Name:
|
||||||
Entry: 1
|
Entry: 1
|
||||||
Data: System.Object[], mscorlib
|
Data: System.Object[], mscorlib
|
||||||
@@ -460,7 +514,7 @@ MonoBehaviour:
|
|||||||
Data: false
|
Data: false
|
||||||
- Name: _fieldAttributes
|
- Name: _fieldAttributes
|
||||||
Entry: 7
|
Entry: 7
|
||||||
Data: 25|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
|
Data: 28|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
|
||||||
- Name:
|
- Name:
|
||||||
Entry: 12
|
Entry: 12
|
||||||
Data: 0
|
Data: 0
|
||||||
@@ -484,7 +538,7 @@ MonoBehaviour:
|
|||||||
Data: bufferIndex
|
Data: bufferIndex
|
||||||
- Name: $v
|
- Name: $v
|
||||||
Entry: 7
|
Entry: 7
|
||||||
Data: 26|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
|
Data: 29|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
|
||||||
- Name: <Name>k__BackingField
|
- Name: <Name>k__BackingField
|
||||||
Entry: 1
|
Entry: 1
|
||||||
Data: bufferIndex
|
Data: bufferIndex
|
||||||
@@ -508,7 +562,7 @@ MonoBehaviour:
|
|||||||
Data: false
|
Data: false
|
||||||
- Name: _fieldAttributes
|
- Name: _fieldAttributes
|
||||||
Entry: 7
|
Entry: 7
|
||||||
Data: 27|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
|
Data: 30|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
|
||||||
- Name:
|
- Name:
|
||||||
Entry: 12
|
Entry: 12
|
||||||
Data: 0
|
Data: 0
|
||||||
@@ -532,13 +586,13 @@ MonoBehaviour:
|
|||||||
Data: networkedData
|
Data: networkedData
|
||||||
- Name: $v
|
- Name: $v
|
||||||
Entry: 7
|
Entry: 7
|
||||||
Data: 28|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
|
Data: 31|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
|
||||||
- Name: <Name>k__BackingField
|
- Name: <Name>k__BackingField
|
||||||
Entry: 1
|
Entry: 1
|
||||||
Data: networkedData
|
Data: networkedData
|
||||||
- Name: <UserType>k__BackingField
|
- Name: <UserType>k__BackingField
|
||||||
Entry: 7
|
Entry: 7
|
||||||
Data: 29|System.RuntimeType, mscorlib
|
Data: 32|System.RuntimeType, mscorlib
|
||||||
- Name:
|
- Name:
|
||||||
Entry: 1
|
Entry: 1
|
||||||
Data: System.Byte[], mscorlib
|
Data: System.Byte[], mscorlib
|
||||||
@@ -547,7 +601,7 @@ MonoBehaviour:
|
|||||||
Data:
|
Data:
|
||||||
- Name: <SystemType>k__BackingField
|
- Name: <SystemType>k__BackingField
|
||||||
Entry: 9
|
Entry: 9
|
||||||
Data: 29
|
Data: 32
|
||||||
- Name: <SyncMode>k__BackingField
|
- Name: <SyncMode>k__BackingField
|
||||||
Entry: 7
|
Entry: 7
|
||||||
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
|
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
|
||||||
@@ -562,13 +616,13 @@ MonoBehaviour:
|
|||||||
Data: false
|
Data: false
|
||||||
- Name: _fieldAttributes
|
- Name: _fieldAttributes
|
||||||
Entry: 7
|
Entry: 7
|
||||||
Data: 30|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
|
Data: 33|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
|
||||||
- Name:
|
- Name:
|
||||||
Entry: 12
|
Entry: 12
|
||||||
Data: 1
|
Data: 1
|
||||||
- Name:
|
- Name:
|
||||||
Entry: 7
|
Entry: 7
|
||||||
Data: 31|UdonSharp.UdonSyncedAttribute, UdonSharp.Runtime
|
Data: 34|UdonSharp.UdonSyncedAttribute, UdonSharp.Runtime
|
||||||
- Name:
|
- Name:
|
||||||
Entry: 8
|
Entry: 8
|
||||||
Data:
|
Data:
|
||||||
@@ -590,72 +644,18 @@ MonoBehaviour:
|
|||||||
- Name: $k
|
- Name: $k
|
||||||
Entry: 1
|
Entry: 1
|
||||||
Data: <Ready>k__BackingField
|
Data: <Ready>k__BackingField
|
||||||
- Name: $v
|
|
||||||
Entry: 7
|
|
||||||
Data: 32|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
|
|
||||||
- Name: <Name>k__BackingField
|
|
||||||
Entry: 1
|
|
||||||
Data: <Ready>k__BackingField
|
|
||||||
- Name: <UserType>k__BackingField
|
|
||||||
Entry: 7
|
|
||||||
Data: 33|System.RuntimeType, mscorlib
|
|
||||||
- Name:
|
|
||||||
Entry: 1
|
|
||||||
Data: System.Boolean, mscorlib
|
|
||||||
- Name:
|
|
||||||
Entry: 8
|
|
||||||
Data:
|
|
||||||
- Name: <SystemType>k__BackingField
|
|
||||||
Entry: 9
|
|
||||||
Data: 33
|
|
||||||
- Name: <SyncMode>k__BackingField
|
|
||||||
Entry: 7
|
|
||||||
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
|
|
||||||
- Name:
|
|
||||||
Entry: 6
|
|
||||||
Data:
|
|
||||||
- Name:
|
|
||||||
Entry: 8
|
|
||||||
Data:
|
|
||||||
- Name: <IsSerialized>k__BackingField
|
|
||||||
Entry: 5
|
|
||||||
Data: false
|
|
||||||
- Name: _fieldAttributes
|
|
||||||
Entry: 7
|
|
||||||
Data: 34|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: <Synced>k__BackingField
|
|
||||||
- Name: $v
|
- Name: $v
|
||||||
Entry: 7
|
Entry: 7
|
||||||
Data: 35|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
|
Data: 35|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
|
||||||
- Name: <Name>k__BackingField
|
- Name: <Name>k__BackingField
|
||||||
Entry: 1
|
Entry: 1
|
||||||
Data: <Synced>k__BackingField
|
Data: <Ready>k__BackingField
|
||||||
- Name: <UserType>k__BackingField
|
- Name: <UserType>k__BackingField
|
||||||
Entry: 9
|
Entry: 9
|
||||||
Data: 33
|
Data: 23
|
||||||
- Name: <SystemType>k__BackingField
|
- Name: <SystemType>k__BackingField
|
||||||
Entry: 9
|
Entry: 9
|
||||||
Data: 33
|
Data: 23
|
||||||
- Name: <SyncMode>k__BackingField
|
- Name: <SyncMode>k__BackingField
|
||||||
Entry: 7
|
Entry: 7
|
||||||
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
|
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
|
||||||
@@ -691,19 +691,19 @@ MonoBehaviour:
|
|||||||
Data:
|
Data:
|
||||||
- Name: $k
|
- Name: $k
|
||||||
Entry: 1
|
Entry: 1
|
||||||
Data: <SyncedTime>k__BackingField
|
Data: <Synced>k__BackingField
|
||||||
- Name: $v
|
- Name: $v
|
||||||
Entry: 7
|
Entry: 7
|
||||||
Data: 37|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
|
Data: 37|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
|
||||||
- Name: <Name>k__BackingField
|
- Name: <Name>k__BackingField
|
||||||
Entry: 1
|
Entry: 1
|
||||||
Data: <SyncedTime>k__BackingField
|
Data: <Synced>k__BackingField
|
||||||
- Name: <UserType>k__BackingField
|
- Name: <UserType>k__BackingField
|
||||||
Entry: 9
|
Entry: 9
|
||||||
Data: 8
|
Data: 23
|
||||||
- Name: <SystemType>k__BackingField
|
- Name: <SystemType>k__BackingField
|
||||||
Entry: 9
|
Entry: 9
|
||||||
Data: 8
|
Data: 23
|
||||||
- Name: <SyncMode>k__BackingField
|
- Name: <SyncMode>k__BackingField
|
||||||
Entry: 7
|
Entry: 7
|
||||||
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
|
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
|
||||||
@@ -739,13 +739,13 @@ MonoBehaviour:
|
|||||||
Data:
|
Data:
|
||||||
- Name: $k
|
- Name: $k
|
||||||
Entry: 1
|
Entry: 1
|
||||||
Data: <Dt>k__BackingField
|
Data: <SyncedTime>k__BackingField
|
||||||
- Name: $v
|
- Name: $v
|
||||||
Entry: 7
|
Entry: 7
|
||||||
Data: 39|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
|
Data: 39|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
|
||||||
- Name: <Name>k__BackingField
|
- Name: <Name>k__BackingField
|
||||||
Entry: 1
|
Entry: 1
|
||||||
Data: <Dt>k__BackingField
|
Data: <SyncedTime>k__BackingField
|
||||||
- Name: <UserType>k__BackingField
|
- Name: <UserType>k__BackingField
|
||||||
Entry: 9
|
Entry: 9
|
||||||
Data: 8
|
Data: 8
|
||||||
@@ -787,19 +787,19 @@ MonoBehaviour:
|
|||||||
Data:
|
Data:
|
||||||
- Name: $k
|
- Name: $k
|
||||||
Entry: 1
|
Entry: 1
|
||||||
Data: <IsEventUpdate>k__BackingField
|
Data: <Dt>k__BackingField
|
||||||
- Name: $v
|
- Name: $v
|
||||||
Entry: 7
|
Entry: 7
|
||||||
Data: 41|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
|
Data: 41|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
|
||||||
- Name: <Name>k__BackingField
|
- Name: <Name>k__BackingField
|
||||||
Entry: 1
|
Entry: 1
|
||||||
Data: <IsEventUpdate>k__BackingField
|
Data: <Dt>k__BackingField
|
||||||
- Name: <UserType>k__BackingField
|
- Name: <UserType>k__BackingField
|
||||||
Entry: 9
|
Entry: 9
|
||||||
Data: 33
|
Data: 8
|
||||||
- Name: <SystemType>k__BackingField
|
- Name: <SystemType>k__BackingField
|
||||||
Entry: 9
|
Entry: 9
|
||||||
Data: 33
|
Data: 8
|
||||||
- Name: <SyncMode>k__BackingField
|
- Name: <SyncMode>k__BackingField
|
||||||
Entry: 7
|
Entry: 7
|
||||||
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
|
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
|
||||||
@@ -835,19 +835,19 @@ MonoBehaviour:
|
|||||||
Data:
|
Data:
|
||||||
- Name: $k
|
- Name: $k
|
||||||
Entry: 1
|
Entry: 1
|
||||||
Data: <IsOwner>k__BackingField
|
Data: <IsEventUpdate>k__BackingField
|
||||||
- Name: $v
|
- Name: $v
|
||||||
Entry: 7
|
Entry: 7
|
||||||
Data: 43|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
|
Data: 43|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
|
||||||
- Name: <Name>k__BackingField
|
- Name: <Name>k__BackingField
|
||||||
Entry: 1
|
Entry: 1
|
||||||
Data: <IsOwner>k__BackingField
|
Data: <IsEventUpdate>k__BackingField
|
||||||
- Name: <UserType>k__BackingField
|
- Name: <UserType>k__BackingField
|
||||||
Entry: 9
|
Entry: 9
|
||||||
Data: 33
|
Data: 23
|
||||||
- Name: <SystemType>k__BackingField
|
- Name: <SystemType>k__BackingField
|
||||||
Entry: 9
|
Entry: 9
|
||||||
Data: 33
|
Data: 23
|
||||||
- Name: <SyncMode>k__BackingField
|
- Name: <SyncMode>k__BackingField
|
||||||
Entry: 7
|
Entry: 7
|
||||||
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
|
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
|
||||||
@@ -883,19 +883,19 @@ MonoBehaviour:
|
|||||||
Data:
|
Data:
|
||||||
- Name: $k
|
- Name: $k
|
||||||
Entry: 1
|
Entry: 1
|
||||||
Data: indexAtLastSerialization
|
Data: <IsOwner>k__BackingField
|
||||||
- Name: $v
|
- Name: $v
|
||||||
Entry: 7
|
Entry: 7
|
||||||
Data: 45|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
|
Data: 45|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
|
||||||
- Name: <Name>k__BackingField
|
- Name: <Name>k__BackingField
|
||||||
Entry: 1
|
Entry: 1
|
||||||
Data: indexAtLastSerialization
|
Data: <IsOwner>k__BackingField
|
||||||
- Name: <UserType>k__BackingField
|
- Name: <UserType>k__BackingField
|
||||||
Entry: 9
|
Entry: 9
|
||||||
Data: 20
|
Data: 23
|
||||||
- Name: <SystemType>k__BackingField
|
- Name: <SystemType>k__BackingField
|
||||||
Entry: 9
|
Entry: 9
|
||||||
Data: 20
|
Data: 23
|
||||||
- Name: <SyncMode>k__BackingField
|
- Name: <SyncMode>k__BackingField
|
||||||
Entry: 7
|
Entry: 7
|
||||||
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
|
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
|
||||||
@@ -931,16 +931,64 @@ MonoBehaviour:
|
|||||||
Data:
|
Data:
|
||||||
- Name: $k
|
- Name: $k
|
||||||
Entry: 1
|
Entry: 1
|
||||||
Data: DebugImageToIndicateOwner
|
Data: indexAtLastSerialization
|
||||||
- Name: $v
|
- Name: $v
|
||||||
Entry: 7
|
Entry: 7
|
||||||
Data: 47|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
|
Data: 47|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
|
||||||
|
- Name: <Name>k__BackingField
|
||||||
|
Entry: 1
|
||||||
|
Data: indexAtLastSerialization
|
||||||
|
- Name: <UserType>k__BackingField
|
||||||
|
Entry: 9
|
||||||
|
Data: 20
|
||||||
|
- Name: <SystemType>k__BackingField
|
||||||
|
Entry: 9
|
||||||
|
Data: 20
|
||||||
|
- Name: <SyncMode>k__BackingField
|
||||||
|
Entry: 7
|
||||||
|
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
|
||||||
|
- Name:
|
||||||
|
Entry: 6
|
||||||
|
Data:
|
||||||
|
- Name:
|
||||||
|
Entry: 8
|
||||||
|
Data:
|
||||||
|
- Name: <IsSerialized>k__BackingField
|
||||||
|
Entry: 5
|
||||||
|
Data: false
|
||||||
|
- Name: _fieldAttributes
|
||||||
|
Entry: 7
|
||||||
|
Data: 48|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: DebugImageToIndicateOwner
|
||||||
|
- Name: $v
|
||||||
|
Entry: 7
|
||||||
|
Data: 49|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
|
||||||
- Name: <Name>k__BackingField
|
- Name: <Name>k__BackingField
|
||||||
Entry: 1
|
Entry: 1
|
||||||
Data: DebugImageToIndicateOwner
|
Data: DebugImageToIndicateOwner
|
||||||
- Name: <UserType>k__BackingField
|
- Name: <UserType>k__BackingField
|
||||||
Entry: 7
|
Entry: 7
|
||||||
Data: 48|System.RuntimeType, mscorlib
|
Data: 50|System.RuntimeType, mscorlib
|
||||||
- Name:
|
- Name:
|
||||||
Entry: 1
|
Entry: 1
|
||||||
Data: UnityEngine.Animator, UnityEngine.AnimationModule
|
Data: UnityEngine.Animator, UnityEngine.AnimationModule
|
||||||
@@ -949,7 +997,7 @@ MonoBehaviour:
|
|||||||
Data:
|
Data:
|
||||||
- Name: <SystemType>k__BackingField
|
- Name: <SystemType>k__BackingField
|
||||||
Entry: 9
|
Entry: 9
|
||||||
Data: 48
|
Data: 50
|
||||||
- Name: <SyncMode>k__BackingField
|
- Name: <SyncMode>k__BackingField
|
||||||
Entry: 7
|
Entry: 7
|
||||||
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
|
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
|
||||||
@@ -964,13 +1012,13 @@ MonoBehaviour:
|
|||||||
Data: true
|
Data: true
|
||||||
- Name: _fieldAttributes
|
- Name: _fieldAttributes
|
||||||
Entry: 7
|
Entry: 7
|
||||||
Data: 49|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
|
Data: 51|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
|
||||||
- Name:
|
- Name:
|
||||||
Entry: 12
|
Entry: 12
|
||||||
Data: 1
|
Data: 1
|
||||||
- Name:
|
- Name:
|
||||||
Entry: 7
|
Entry: 7
|
||||||
Data: 50|UnityEngine.SerializeField, UnityEngine.CoreModule
|
Data: 52|UnityEngine.SerializeField, UnityEngine.CoreModule
|
||||||
- Name:
|
- Name:
|
||||||
Entry: 8
|
Entry: 8
|
||||||
Data:
|
Data:
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ namespace Marro.PacManUdon
|
|||||||
FullSync = 0,
|
FullSync = 0,
|
||||||
PacManTurn = 1,
|
PacManTurn = 1,
|
||||||
}
|
}
|
||||||
|
|
||||||
public class NetworkManager : UdonSharpBehaviour
|
public class NetworkManager : UdonSharpBehaviour
|
||||||
{
|
{
|
||||||
// The network manager works by serializing event and state data into a byte array, including a timestamp for each event.
|
// The network manager works by serializing event and state data into a byte array, including a timestamp for each event.
|
||||||
@@ -70,10 +71,6 @@ namespace Marro.PacManUdon
|
|||||||
/// The total length of the header of an event, in bytes.
|
/// The total length of the header of an event, in bytes.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private const ushort HeaderLength = 8;
|
private const ushort HeaderLength = 8;
|
||||||
/// <summary>
|
|
||||||
/// The amount of parts of which the header consists.
|
|
||||||
/// </summary>
|
|
||||||
private const ushort HeaderPartsCount = 4;
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The delay at which the receiving side replays events.
|
/// The delay at which the receiving side replays events.
|
||||||
@@ -115,6 +112,11 @@ namespace Marro.PacManUdon
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
private int retriesWithoutSuccess;
|
private int retriesWithoutSuccess;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// True if there is a full sync in the queue and we are not currently synced.
|
||||||
|
/// </summary>
|
||||||
|
private bool fullSyncInQueue;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Main buffer of data to be transmitted or processed
|
/// Main buffer of data to be transmitted or processed
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -155,7 +157,7 @@ namespace Marro.PacManUdon
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Is the current simulation to prepare for applying a network event?
|
/// Is the current simulation to prepare for applying a network event?
|
||||||
/// True = Yes, This update is preparing for a network update.
|
/// True = Yes, This update is preparing for a network update.
|
||||||
/// False = No, this update is after the network update or there was no
|
/// False = No, this update is after the network update or there was no network update this cycle.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public bool IsEventUpdate { get; private set; }
|
public bool IsEventUpdate { get; private set; }
|
||||||
|
|
||||||
@@ -188,6 +190,7 @@ namespace Marro.PacManUdon
|
|||||||
retriesWithoutSuccess = 0;
|
retriesWithoutSuccess = 0;
|
||||||
lastEventTimestamp = 0;
|
lastEventTimestamp = 0;
|
||||||
lastEventId = 0;
|
lastEventId = 0;
|
||||||
|
fullSyncInQueue = false;
|
||||||
|
|
||||||
offsetTime = Time.fixedTime;
|
offsetTime = Time.fixedTime;
|
||||||
internalTime = 0;
|
internalTime = 0;
|
||||||
@@ -262,7 +265,7 @@ namespace Marro.PacManUdon
|
|||||||
|
|
||||||
private void SetOwner(bool isOwner)
|
private void SetOwner(bool isOwner)
|
||||||
{
|
{
|
||||||
this.IsOwner = isOwner;
|
IsOwner = isOwner;
|
||||||
|
|
||||||
if (DebugImageToIndicateOwner != null)
|
if (DebugImageToIndicateOwner != null)
|
||||||
{
|
{
|
||||||
@@ -313,7 +316,7 @@ namespace Marro.PacManUdon
|
|||||||
var eventSizeBytes = BitConverter.GetBytes((ushort)eventSize);
|
var eventSizeBytes = BitConverter.GetBytes((ushort)eventSize);
|
||||||
Array.Copy(eventSizeBytes, 0, result, HeaderEventSizeIndex, eventSizeBytes.Length);
|
Array.Copy(eventSizeBytes, 0, result, HeaderEventSizeIndex, eventSizeBytes.Length);
|
||||||
|
|
||||||
AppendEventToBuffer(result);
|
QueueEventInBuffer(result);
|
||||||
|
|
||||||
Debug.Log($"({nameof(PacManUdon)} {nameof(NetworkManager)}) Prepared event with {eventSize} bytes and timestamp {timestamp} for serialization, index went from {oldIndex} to {this.bufferIndex}");
|
Debug.Log($"({nameof(PacManUdon)} {nameof(NetworkManager)}) Prepared event with {eventSize} bytes and timestamp {timestamp} for serialization, index went from {oldIndex} to {this.bufferIndex}");
|
||||||
|
|
||||||
@@ -419,62 +422,61 @@ namespace Marro.PacManUdon
|
|||||||
var @event = GetArrayPart(networkedData, index, eventSize);
|
var @event = GetArrayPart(networkedData, index, eventSize);
|
||||||
|
|
||||||
var eventType = GetEventTypeFromHeader(@event);
|
var eventType = GetEventTypeFromHeader(@event);
|
||||||
|
|
||||||
if (eventType == NetworkEventType.FullSync)
|
|
||||||
{
|
|
||||||
ProcessIncomingFullSync(@event); // Immediately process full sync
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!Synced)
|
|
||||||
{
|
|
||||||
Debug.LogWarning($"({nameof(PacManUdon)} {nameof(NetworkManager)}) Received event of type {eventType} while we are not yet synced to the remote time, ignoring event.");
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
var timestamp = GetTimestampFromHeader(@event);
|
var timestamp = GetTimestampFromHeader(@event);
|
||||||
var eventId = GetEventIdFromHeader(@event);
|
var eventId = GetEventIdFromHeader(@event);
|
||||||
|
|
||||||
if (timestamp == lastEventTimestamp
|
if (Synced || fullSyncInQueue)
|
||||||
|
{
|
||||||
|
if (timestamp == lastEventTimestamp
|
||||||
&& eventId == lastEventId)
|
&& eventId == lastEventId)
|
||||||
{
|
{
|
||||||
Debug.LogWarning($"({nameof(PacManUdon)} {nameof(NetworkManager)}) Duplicate message of type {eventType}, timestamp: {timestamp}, messageId: {eventId}.");
|
Debug.LogWarning($"({nameof(PacManUdon)} {nameof(NetworkManager)}) Duplicate message of type {eventType}, timestamp: {timestamp}, messageId: {eventId}.");
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (eventId != GetNextEventId(lastEventId))
|
if (eventId != GetNextEventId(lastEventId))
|
||||||
{
|
{
|
||||||
Debug.LogWarning($"({nameof(PacManUdon)} {nameof(NetworkManager)}) EventIds were not sequential! Did we miss a serialization? Timestamp: {timestamp}, eventId: {eventId}, lastEventId: {lastEventId}.");
|
Debug.LogWarning($"({nameof(PacManUdon)} {nameof(NetworkManager)}) EventIds were not sequential! Did we miss a serialization? Timestamp: {timestamp}, eventId: {eventId}, lastEventId: {lastEventId}.");
|
||||||
HandleError(false);
|
HandleError(false);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
AppendEventToBuffer(@event);
|
QueueEventInBuffer(@event);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// If we're not yet synced, we only care about full sync events.
|
||||||
|
if (eventType == NetworkEventType.FullSync)
|
||||||
|
{
|
||||||
|
QueueFullSyncInBuffer(@event); // Immediately process full sync
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
lastEventTimestamp = timestamp;
|
lastEventTimestamp = timestamp;
|
||||||
lastEventId = eventId;
|
lastEventId = eventId;
|
||||||
}
|
}
|
||||||
|
|
||||||
UpdateNextEventTime();
|
if (Synced)
|
||||||
|
{
|
||||||
|
UpdateNextEventTime();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void ProcessIncomingFullSync(byte[] @event)
|
private void QueueFullSyncInBuffer(byte[] @event)
|
||||||
{
|
{
|
||||||
// Intentionally not doing a buffer size check here, since this is not appended to the buffer
|
// Intentionally not doing a buffer size check here, since this is not appended to the buffer
|
||||||
// (and there is no good way to continue if this event is too large)
|
// (and there is no good way to continue if this event is too large)
|
||||||
|
|
||||||
// Clear buffer and put the full sync into it
|
// Clear buffer and put the full sync into it
|
||||||
ClearBuffer();
|
ClearBuffer();
|
||||||
AppendEventToBuffer(@event);
|
QueueEventInBuffer(@event);
|
||||||
|
|
||||||
// Sync up to the time in the full sync
|
// Set this event to play after the default delay
|
||||||
var timestamp = GetTimestampFromHeader(@event);
|
nextEventTime = internalTime + Delay;
|
||||||
var eventId = GetEventIdFromHeader(@event);
|
|
||||||
SyncToTimestamp(timestamp, eventId);
|
|
||||||
|
|
||||||
// Immediately apply the full sync
|
fullSyncInQueue = true;
|
||||||
UpdateNextEventTime(ignoreOrder: true);
|
|
||||||
Synced = true;
|
Debug.Log($"({nameof(PacManUdon)} {nameof(NetworkManager)}) Queued full sync in buffer, should execute at {nextEventTime}.");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void ProgressEventTime()
|
private void ProgressEventTime()
|
||||||
@@ -483,17 +485,22 @@ namespace Marro.PacManUdon
|
|||||||
|
|
||||||
while (bufferIndex != 0 && nextEventTime <= internalTime)
|
while (bufferIndex != 0 && nextEventTime <= internalTime)
|
||||||
{
|
{
|
||||||
ProcessIncomingEvent();
|
PerformEvent(buffer[0]);
|
||||||
|
DequeueEventsFromBuffer(1);
|
||||||
UpdateNextEventTime();
|
UpdateNextEventTime();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void ProcessIncomingEvent()
|
private void PerformEvent(byte[] @event)
|
||||||
{
|
{
|
||||||
var @event = NextEvent;
|
|
||||||
|
|
||||||
var timestamp = GetTimestampFromHeader(@event);
|
var timestamp = GetTimestampFromHeader(@event);
|
||||||
var eventType = GetEventTypeFromHeader(@event);
|
var eventType = GetEventTypeFromHeader(@event);
|
||||||
|
|
||||||
|
if (eventType == NetworkEventType.FullSync)
|
||||||
|
{
|
||||||
|
SyncToTimestamp(timestamp, GetEventIdFromHeader(@event));
|
||||||
|
}
|
||||||
|
|
||||||
var index = (int)HeaderLength; // Skip header
|
var index = (int)HeaderLength; // Skip header
|
||||||
|
|
||||||
ProgressSyncedTime(timestamp);
|
ProgressSyncedTime(timestamp);
|
||||||
@@ -523,7 +530,11 @@ namespace Marro.PacManUdon
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
RemoveProcessedDataFromBuffer(1);
|
if (!Synced && eventType == NetworkEventType.FullSync)
|
||||||
|
{
|
||||||
|
fullSyncInQueue = false;
|
||||||
|
Synced = true;
|
||||||
|
}
|
||||||
|
|
||||||
Debug.Log($"({nameof(PacManUdon)} {nameof(NetworkManager)}) Processed incoming event! Total {index} bytes.");
|
Debug.Log($"({nameof(PacManUdon)} {nameof(NetworkManager)}) Processed incoming event! Total {index} bytes.");
|
||||||
|
|
||||||
@@ -538,15 +549,15 @@ namespace Marro.PacManUdon
|
|||||||
bufferIndex = 0;
|
bufferIndex = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void RemoveProcessedDataFromBuffer(int amountProcessed)
|
private void DequeueEventsFromBuffer(int eventCount)
|
||||||
{
|
{
|
||||||
var oldBuffer = buffer;
|
var oldBuffer = buffer;
|
||||||
bufferIndex -= amountProcessed;
|
bufferIndex -= eventCount;
|
||||||
buffer = new byte[BufferMaxTotalEvents][];
|
buffer = new byte[BufferMaxTotalEvents][];
|
||||||
Array.Copy(oldBuffer, amountProcessed, buffer, 0, bufferIndex);
|
Array.Copy(oldBuffer, eventCount, buffer, 0, bufferIndex);
|
||||||
}
|
}
|
||||||
|
|
||||||
private bool AppendEventToBuffer(byte[] @event)
|
private bool QueueEventInBuffer(byte[] @event)
|
||||||
{
|
{
|
||||||
if (bufferIndex >= BufferMaxTotalEvents)
|
if (bufferIndex >= BufferMaxTotalEvents)
|
||||||
{
|
{
|
||||||
@@ -559,9 +570,6 @@ namespace Marro.PacManUdon
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
private byte[] NextEvent =>
|
|
||||||
buffer[0];
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Time
|
#region Time
|
||||||
@@ -581,28 +589,28 @@ namespace Marro.PacManUdon
|
|||||||
private void SyncToTimestamp(float timestamp, byte eventId)
|
private void SyncToTimestamp(float timestamp, byte eventId)
|
||||||
{
|
{
|
||||||
var oldOffset = offsetTime;
|
var oldOffset = offsetTime;
|
||||||
var timeToSyncTo = timestamp - Delay;
|
offsetTime = Time.fixedTime - timestamp;
|
||||||
offsetTime = Time.fixedTime - timeToSyncTo;
|
|
||||||
|
|
||||||
var delta = offsetTime - oldOffset;
|
var delta = offsetTime - oldOffset;
|
||||||
internalTime = internalTime - delta;
|
internalTime -= delta;
|
||||||
SyncedTime = SyncedTime - delta;
|
SyncedTime -= delta;
|
||||||
|
nextEventTime -= delta;
|
||||||
|
|
||||||
lastEventTimestamp = timestamp;
|
lastEventTimestamp = timestamp;
|
||||||
lastEventId = eventId;
|
lastEventId = eventId;
|
||||||
|
|
||||||
Debug.Log($"({nameof(PacManUdon)} {nameof(NetworkManager)}) Synced to timestamp {timestamp}, current time is {Time.fixedTime}, timeToSyncTo is {timeToSyncTo}, offsetTime is now {offsetTime}, internalTime is now {internalTime}, SyncedTime is now {SyncedTime}");
|
Debug.Log($"({nameof(PacManUdon)} {nameof(NetworkManager)}) Synced to timestamp {timestamp}, current time is {Time.fixedTime}, offsetTime is now {offsetTime}, internalTime is now {internalTime}, SyncedTime is now {SyncedTime}, nextEventTime is now {nextEventTime}");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void UpdateNextEventTime(bool ignoreOrder = false)
|
private void UpdateNextEventTime()
|
||||||
{
|
{
|
||||||
if (bufferIndex == 0)
|
if (bufferIndex == 0)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
var nextEventTime = GetTimestampFromHeader(NextEvent);
|
var nextEventTime = GetTimestampFromHeader(buffer[0]);
|
||||||
if (ignoreOrder || nextEventTime >= this.nextEventTime)
|
if (nextEventTime >= this.nextEventTime)
|
||||||
{
|
{
|
||||||
this.nextEventTime = nextEventTime;
|
this.nextEventTime = nextEventTime;
|
||||||
}
|
}
|
||||||
@@ -698,7 +706,7 @@ namespace Marro.PacManUdon
|
|||||||
Debug.Log($"({nameof(PacManUdon)} {nameof(NetworkManager)}) Serialized with {networkedData.Length} bytes!\nBytes sent:\n{BytesToString(networkedData)}");
|
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
|
// Remove all transferred data from the buffer, leaving data that came in after serialization
|
||||||
RemoveProcessedDataFromBuffer(indexAtLastSerialization);
|
DequeueEventsFromBuffer(indexAtLastSerialization);
|
||||||
networkedData = new byte[0];
|
networkedData = new byte[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -774,6 +782,8 @@ namespace Marro.PacManUdon
|
|||||||
debugOutput.text += $"{nameof(NetworkManager)}:\n" +
|
debugOutput.text += $"{nameof(NetworkManager)}:\n" +
|
||||||
$"IsOwner: {IsOwner}\n" +
|
$"IsOwner: {IsOwner}\n" +
|
||||||
$"Ready: {Ready}\n" +
|
$"Ready: {Ready}\n" +
|
||||||
|
$"Synced: {Synced}\n" +
|
||||||
|
$"fullSyncInQueue: {fullSyncInQueue}\n" +
|
||||||
$"Time.fixedTime: {Time.fixedTime}\n" +
|
$"Time.fixedTime: {Time.fixedTime}\n" +
|
||||||
$"offsetTime: {offsetTime}\n" +
|
$"offsetTime: {offsetTime}\n" +
|
||||||
$"internalTime: {internalTime}\n" +
|
$"internalTime: {internalTime}\n" +
|
||||||
|
|||||||
@@ -40,7 +40,12 @@ public class TestBall : SyncedObject
|
|||||||
public void Initialize(NetworkManager networkManager)
|
public void Initialize(NetworkManager networkManager)
|
||||||
{
|
{
|
||||||
this.networkManager = networkManager;
|
this.networkManager = networkManager;
|
||||||
|
|
||||||
sumOfDt = networkManager.SyncedTime;
|
sumOfDt = networkManager.SyncedTime;
|
||||||
|
|
||||||
|
amountUp = 0;
|
||||||
|
loopOffset = 0;
|
||||||
|
|
||||||
jumps = new float[10];
|
jumps = new float[10];
|
||||||
jumpsIndex = 0;
|
jumpsIndex = 0;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user