Maps are now resynced properly if a player drops out or joins late.
This commit is contained in:
parent
6635272a6b
commit
b00f2ce346
@ -44,7 +44,7 @@ MonoBehaviour:
|
|||||||
Data:
|
Data:
|
||||||
- Name:
|
- Name:
|
||||||
Entry: 12
|
Entry: 12
|
||||||
Data: 22
|
Data: 23
|
||||||
- Name:
|
- Name:
|
||||||
Entry: 7
|
Entry: 7
|
||||||
Data:
|
Data:
|
||||||
@ -995,19 +995,19 @@ MonoBehaviour:
|
|||||||
Data:
|
Data:
|
||||||
- Name: $k
|
- Name: $k
|
||||||
Entry: 1
|
Entry: 1
|
||||||
Data: _MapDownloader
|
Data: _CachedMapIndices
|
||||||
- Name: $v
|
- Name: $v
|
||||||
Entry: 7
|
Entry: 7
|
||||||
Data: 68|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
|
Data: 68|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
|
||||||
- Name: <Name>k__BackingField
|
- Name: <Name>k__BackingField
|
||||||
Entry: 1
|
Entry: 1
|
||||||
Data: _MapDownloader
|
Data: _CachedMapIndices
|
||||||
- Name: <UserType>k__BackingField
|
- Name: <UserType>k__BackingField
|
||||||
Entry: 7
|
Entry: 7
|
||||||
Data: 69|System.RuntimeType, mscorlib
|
Data: 69|System.RuntimeType, mscorlib
|
||||||
- Name:
|
- Name:
|
||||||
Entry: 1
|
Entry: 1
|
||||||
Data: VRC.SDK3.Image.VRCImageDownloader, VRCSDK3
|
Data: System.Int32[], mscorlib
|
||||||
- Name:
|
- Name:
|
||||||
Entry: 8
|
Entry: 8
|
||||||
Data:
|
Data:
|
||||||
@ -1018,8 +1018,8 @@ MonoBehaviour:
|
|||||||
Entry: 7
|
Entry: 7
|
||||||
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
|
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
|
||||||
- Name:
|
- Name:
|
||||||
Entry: 6
|
Entry: 3
|
||||||
Data:
|
Data: 1
|
||||||
- Name:
|
- Name:
|
||||||
Entry: 8
|
Entry: 8
|
||||||
Data:
|
Data:
|
||||||
@ -1031,7 +1031,13 @@ MonoBehaviour:
|
|||||||
Data: 70|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
|
Data: 70|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
|
||||||
- Name:
|
- Name:
|
||||||
Entry: 12
|
Entry: 12
|
||||||
Data: 0
|
Data: 1
|
||||||
|
- Name:
|
||||||
|
Entry: 7
|
||||||
|
Data: 71|UdonSharp.UdonSyncedAttribute, UdonSharp.Runtime
|
||||||
|
- Name:
|
||||||
|
Entry: 8
|
||||||
|
Data:
|
||||||
- Name:
|
- Name:
|
||||||
Entry: 13
|
Entry: 13
|
||||||
Data:
|
Data:
|
||||||
@ -1049,25 +1055,19 @@ MonoBehaviour:
|
|||||||
Data:
|
Data:
|
||||||
- Name: $k
|
- Name: $k
|
||||||
Entry: 1
|
Entry: 1
|
||||||
Data: _MapImages
|
Data: _LoadedMaps
|
||||||
- Name: $v
|
- Name: $v
|
||||||
Entry: 7
|
Entry: 7
|
||||||
Data: 71|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
|
Data: 72|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
|
||||||
- Name: <Name>k__BackingField
|
- Name: <Name>k__BackingField
|
||||||
Entry: 1
|
Entry: 1
|
||||||
Data: _MapImages
|
Data: _LoadedMaps
|
||||||
- Name: <UserType>k__BackingField
|
- Name: <UserType>k__BackingField
|
||||||
Entry: 7
|
Entry: 9
|
||||||
Data: 72|System.RuntimeType, mscorlib
|
Data: 69
|
||||||
- Name:
|
|
||||||
Entry: 1
|
|
||||||
Data: UnityEngine.Texture2D[], UnityEngine.CoreModule
|
|
||||||
- Name:
|
|
||||||
Entry: 8
|
|
||||||
Data:
|
|
||||||
- Name: <SystemType>k__BackingField
|
- Name: <SystemType>k__BackingField
|
||||||
Entry: 9
|
Entry: 9
|
||||||
Data: 72
|
Data: 69
|
||||||
- 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
|
||||||
@ -1103,19 +1103,19 @@ MonoBehaviour:
|
|||||||
Data:
|
Data:
|
||||||
- Name: $k
|
- Name: $k
|
||||||
Entry: 1
|
Entry: 1
|
||||||
Data: _UdonEventReceiverThis
|
Data: _MapDownloader
|
||||||
- Name: $v
|
- Name: $v
|
||||||
Entry: 7
|
Entry: 7
|
||||||
Data: 74|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
|
Data: 74|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
|
||||||
- Name: <Name>k__BackingField
|
- Name: <Name>k__BackingField
|
||||||
Entry: 1
|
Entry: 1
|
||||||
Data: _UdonEventReceiverThis
|
Data: _MapDownloader
|
||||||
- Name: <UserType>k__BackingField
|
- Name: <UserType>k__BackingField
|
||||||
Entry: 7
|
Entry: 7
|
||||||
Data: 75|System.RuntimeType, mscorlib
|
Data: 75|System.RuntimeType, mscorlib
|
||||||
- Name:
|
- Name:
|
||||||
Entry: 1
|
Entry: 1
|
||||||
Data: VRC.Udon.Common.Interfaces.IUdonEventReceiver, VRC.Udon.Common
|
Data: VRC.SDK3.Image.VRCImageDownloader, VRCSDK3
|
||||||
- Name:
|
- Name:
|
||||||
Entry: 8
|
Entry: 8
|
||||||
Data:
|
Data:
|
||||||
@ -1157,19 +1157,19 @@ MonoBehaviour:
|
|||||||
Data:
|
Data:
|
||||||
- Name: $k
|
- Name: $k
|
||||||
Entry: 1
|
Entry: 1
|
||||||
Data: _CachedMapIndices
|
Data: _MapImages
|
||||||
- Name: $v
|
- Name: $v
|
||||||
Entry: 7
|
Entry: 7
|
||||||
Data: 77|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
|
Data: 77|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
|
||||||
- Name: <Name>k__BackingField
|
- Name: <Name>k__BackingField
|
||||||
Entry: 1
|
Entry: 1
|
||||||
Data: _CachedMapIndices
|
Data: _MapImages
|
||||||
- Name: <UserType>k__BackingField
|
- Name: <UserType>k__BackingField
|
||||||
Entry: 7
|
Entry: 7
|
||||||
Data: 78|System.RuntimeType, mscorlib
|
Data: 78|System.RuntimeType, mscorlib
|
||||||
- Name:
|
- Name:
|
||||||
Entry: 1
|
Entry: 1
|
||||||
Data: System.Int32[], mscorlib
|
Data: UnityEngine.Texture2D[], UnityEngine.CoreModule
|
||||||
- Name:
|
- Name:
|
||||||
Entry: 8
|
Entry: 8
|
||||||
Data:
|
Data:
|
||||||
@ -1211,10 +1211,64 @@ MonoBehaviour:
|
|||||||
Data:
|
Data:
|
||||||
- Name: $k
|
- Name: $k
|
||||||
Entry: 1
|
Entry: 1
|
||||||
Data: _MapDownloadIndex
|
Data: _UdonEventReceiverThis
|
||||||
- Name: $v
|
- Name: $v
|
||||||
Entry: 7
|
Entry: 7
|
||||||
Data: 80|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
|
Data: 80|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
|
||||||
|
- Name: <Name>k__BackingField
|
||||||
|
Entry: 1
|
||||||
|
Data: _UdonEventReceiverThis
|
||||||
|
- Name: <UserType>k__BackingField
|
||||||
|
Entry: 7
|
||||||
|
Data: 81|System.RuntimeType, mscorlib
|
||||||
|
- Name:
|
||||||
|
Entry: 1
|
||||||
|
Data: VRC.Udon.Common.Interfaces.IUdonEventReceiver, VRC.Udon.Common
|
||||||
|
- Name:
|
||||||
|
Entry: 8
|
||||||
|
Data:
|
||||||
|
- Name: <SystemType>k__BackingField
|
||||||
|
Entry: 9
|
||||||
|
Data: 81
|
||||||
|
- 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: 82|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: _MapDownloadIndex
|
||||||
|
- Name: $v
|
||||||
|
Entry: 7
|
||||||
|
Data: 83|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
|
||||||
- Name: <Name>k__BackingField
|
- Name: <Name>k__BackingField
|
||||||
Entry: 1
|
Entry: 1
|
||||||
Data: _MapDownloadIndex
|
Data: _MapDownloadIndex
|
||||||
@ -1238,7 +1292,7 @@ MonoBehaviour:
|
|||||||
Data: false
|
Data: false
|
||||||
- Name: _fieldAttributes
|
- Name: _fieldAttributes
|
||||||
Entry: 7
|
Entry: 7
|
||||||
Data: 81|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
|
Data: 84|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
|
||||||
- Name:
|
- Name:
|
||||||
Entry: 12
|
Entry: 12
|
||||||
Data: 0
|
Data: 0
|
||||||
@ -1262,7 +1316,7 @@ MonoBehaviour:
|
|||||||
Data: _MapDownloadsInProgress
|
Data: _MapDownloadsInProgress
|
||||||
- Name: $v
|
- Name: $v
|
||||||
Entry: 7
|
Entry: 7
|
||||||
Data: 82|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
|
Data: 85|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
|
||||||
- Name: <Name>k__BackingField
|
- Name: <Name>k__BackingField
|
||||||
Entry: 1
|
Entry: 1
|
||||||
Data: _MapDownloadsInProgress
|
Data: _MapDownloadsInProgress
|
||||||
@ -1286,7 +1340,7 @@ MonoBehaviour:
|
|||||||
Data: false
|
Data: false
|
||||||
- Name: _fieldAttributes
|
- Name: _fieldAttributes
|
||||||
Entry: 7
|
Entry: 7
|
||||||
Data: 83|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
|
Data: 86|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
|
||||||
- Name:
|
- Name:
|
||||||
Entry: 12
|
Entry: 12
|
||||||
Data: 0
|
Data: 0
|
||||||
@ -1310,7 +1364,7 @@ MonoBehaviour:
|
|||||||
Data: _UseFallback
|
Data: _UseFallback
|
||||||
- Name: $v
|
- Name: $v
|
||||||
Entry: 7
|
Entry: 7
|
||||||
Data: 84|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
|
Data: 87|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
|
||||||
- Name: <Name>k__BackingField
|
- Name: <Name>k__BackingField
|
||||||
Entry: 1
|
Entry: 1
|
||||||
Data: _UseFallback
|
Data: _UseFallback
|
||||||
@ -1334,7 +1388,7 @@ MonoBehaviour:
|
|||||||
Data: false
|
Data: false
|
||||||
- Name: _fieldAttributes
|
- Name: _fieldAttributes
|
||||||
Entry: 7
|
Entry: 7
|
||||||
Data: 85|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
|
Data: 88|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
|
||||||
- Name:
|
- Name:
|
||||||
Entry: 12
|
Entry: 12
|
||||||
Data: 0
|
Data: 0
|
||||||
|
|||||||
@ -6,6 +6,7 @@ using VRC.SDK3.Image;
|
|||||||
using VRC.SDK3.UdonNetworkCalling;
|
using VRC.SDK3.UdonNetworkCalling;
|
||||||
using VRC.SDK3.Video.Components.Base;
|
using VRC.SDK3.Video.Components.Base;
|
||||||
using VRC.SDKBase;
|
using VRC.SDKBase;
|
||||||
|
using VRC.Udon.Common;
|
||||||
using VRC.Udon.Common.Interfaces;
|
using VRC.Udon.Common.Interfaces;
|
||||||
|
|
||||||
|
|
||||||
@ -46,10 +47,12 @@ public class CaseVideoSyncPlayer : UdonSharpBehaviour
|
|||||||
|
|
||||||
[UdonSynced, FieldChangeCallback(nameof(PlayVideo))] private bool _VideoIsPlaying;
|
[UdonSynced, FieldChangeCallback(nameof(PlayVideo))] private bool _VideoIsPlaying;
|
||||||
|
|
||||||
|
[UdonSynced] private int[] _CachedMapIndices = new int[0];
|
||||||
|
private int[] _LoadedMaps = new int[0];
|
||||||
|
|
||||||
private VRCImageDownloader _MapDownloader;
|
private VRCImageDownloader _MapDownloader;
|
||||||
private Texture2D[] _MapImages = new Texture2D[0];
|
private Texture2D[] _MapImages = new Texture2D[0];
|
||||||
private IUdonEventReceiver _UdonEventReceiverThis;
|
private IUdonEventReceiver _UdonEventReceiverThis;
|
||||||
private int[] _CachedMapIndices = new int[0];
|
|
||||||
private int _MapDownloadIndex = 0;
|
private int _MapDownloadIndex = 0;
|
||||||
private bool _MapDownloadsInProgress = false;
|
private bool _MapDownloadsInProgress = false;
|
||||||
|
|
||||||
@ -73,6 +76,39 @@ public class CaseVideoSyncPlayer : UdonSharpBehaviour
|
|||||||
_MapDownloader.Dispose();
|
_MapDownloader.Dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public override void OnDeserialization(DeserializationResult Result)
|
||||||
|
{
|
||||||
|
if (_MapDownloadsInProgress)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool MapsNeedLoading = false;
|
||||||
|
if (_LoadedMaps.Length == _CachedMapIndices.Length)
|
||||||
|
{
|
||||||
|
for(int i = 0; i < _CachedMapIndices.Length; i++)
|
||||||
|
{
|
||||||
|
if (_CachedMapIndices[i] != _LoadedMaps[i])
|
||||||
|
{
|
||||||
|
MapsNeedLoading = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
MapsNeedLoading = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (MapsNeedLoading)
|
||||||
|
{
|
||||||
|
Debug.Log("[CaseVideoSyncPlayer] Redownloading old maps...");
|
||||||
|
QueueMapDownloads(_CachedMapIndices);
|
||||||
|
}
|
||||||
|
|
||||||
|
base.OnDeserialization(Result);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
[NetworkCallable]
|
[NetworkCallable]
|
||||||
public void QueueMapDownloads(int[] MapIndices)
|
public void QueueMapDownloads(int[] MapIndices)
|
||||||
@ -110,6 +146,7 @@ public class CaseVideoSyncPlayer : UdonSharpBehaviour
|
|||||||
_MapDownloadIndex = 0;
|
_MapDownloadIndex = 0;
|
||||||
LoadMapFromIndex(_CachedMapIndices[_MapDownloadIndex]);
|
LoadMapFromIndex(_CachedMapIndices[_MapDownloadIndex]);
|
||||||
}
|
}
|
||||||
|
_LoadedMaps = _CachedMapIndices;
|
||||||
}
|
}
|
||||||
private void LoadMapFromIndex(int MapIndex)
|
private void LoadMapFromIndex(int MapIndex)
|
||||||
{
|
{
|
||||||
@ -325,7 +362,7 @@ public class CaseVideoSyncPlayer : UdonSharpBehaviour
|
|||||||
{
|
{
|
||||||
if (Indicator.GetOwner() == Networking.LocalPlayer.displayName)
|
if (Indicator.GetOwner() == Networking.LocalPlayer.displayName)
|
||||||
{
|
{
|
||||||
Debug.Log("[CaseVideoSyncPlayer] " + Indicator.GetOwner() + "'s video load indicator was found. Setting status...");
|
Debug.Log("[CaseVideoSyncPlayer] " + Indicator.GetOwner() + "'s video load indicator was found. Setting status to " + Status + "...");
|
||||||
Indicator.IndicateStatus = Status;
|
Indicator.IndicateStatus = Status;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user