private void VerifySyncValidForType(System.Type typeToSync, UdonSyncMode syncMode) { if (syncMode == UdonSyncMode.NotSynced) { return; } #if UDON_BETA_SDK if (!VRC.Udon.UdonNetworkTypes.CanSync(typeToSync)) { throw new System.NotSupportedException($"Udon does not currently support syncing of the type '{UdonSharpUtils.PrettifyTypeName(typeToSync)}'"); } else if (syncMode == UdonSyncMode.Linear && !VRC.Udon.UdonNetworkTypes.CanSyncLinear(typeToSync)) { throw new System.NotSupportedException($"Udon does not support linear interpolation of the synced type '{UdonSharpUtils.PrettifyTypeName(typeToSync)}'"); } else if (syncMode == UdonSyncMode.Smooth && !VRC.Udon.UdonNetworkTypes.CanSyncSmooth(typeToSync)) { throw new System.NotSupportedException($"Udon does not support smooth interpolation of the synced type '{UdonSharpUtils.PrettifyTypeName(typeToSync)}'"); } if (visitorContext.behaviourSyncMode == BehaviourSyncMode.Manual && syncMode != UdonSyncMode.None) { throw new System.NotSupportedException($"Udon does not support variable tweening when the behaviour is in Manual sync mode"); } #else if (!UdonSharpUtils.IsUdonSyncedType(typeToSync)) { throw new System.NotSupportedException($"Udon does not currently support syncing of the type '{UdonSharpUtils.PrettifyTypeName(typeToSync)}'"); } if (syncMode != UdonSyncMode.None && (typeToSync == typeof(string) || typeToSync == typeof(char))) { throw new System.NotSupportedException($"Udon does not support tweening the synced type '{UdonSharpUtils.PrettifyTypeName(typeToSync)}'"); } #endif }