public static void CopyUdonToProxy(UdonSharpBehaviour proxy, ProxySerializationPolicy serializationPolicy) { if (serializationPolicy.MaxSerializationDepth == 0) { return; } UdonSharpProgramAsset programAsset = GetUdonSharpProgramAsset(proxy); if (programAsset.ScriptVersion < UdonSharpProgramVersion.CurrentVersion) { throw new InvalidOperationException($"Cannot run serialization on U# behaviour '{proxy}' with outdated script version, wait until program assets have compiled."); } if (programAsset.CompiledVersion < UdonSharpProgramVersion.CurrentVersion) { throw new InvalidOperationException($"Cannot run serialization on U# behaviour '{proxy}' with outdated behaviour version, wait until program assets have compiled."); } Profiler.BeginSample("CopyUdonToProxy"); try { lock (UsbSerializationContext.UsbLock) { var udonBehaviourStorage = new SimpleValueStorage <UdonBehaviour>(GetBackingUdonBehaviour(proxy)); ProxySerializationPolicy lastPolicy = UsbSerializationContext.CurrentPolicy; UsbSerializationContext.CurrentPolicy = serializationPolicy; object proxyObj = proxy; Serializer.CreatePooled(proxy.GetType()).ReadWeak(ref proxyObj, udonBehaviourStorage); UsbSerializationContext.CurrentPolicy = lastPolicy; } } finally { Profiler.EndSample(); } }
public static void CopyProxyToUdon(UdonSharpBehaviour proxy, ProxySerializationPolicy serializationPolicy) { if (serializationPolicy.MaxSerializationDepth == 0) { return; } Profiler.BeginSample("CopyProxyToUdon"); SimpleValueStorage <UdonBehaviour> udonBehaviourStorage = new SimpleValueStorage <UdonBehaviour>(GetBackingUdonBehaviour(proxy)); ProxySerializationPolicy lastPolicy = USBSerializationContext.currentPolicy; USBSerializationContext.currentPolicy = serializationPolicy; Serializer.CreatePooled(proxy.GetType()).WriteWeak(udonBehaviourStorage, proxy); USBSerializationContext.currentPolicy = lastPolicy; Profiler.EndSample(); }
public static void CopyUdonToProxy(UdonSharpBehaviour proxy, ProxySerializationPolicy serializationPolicy) { if (serializationPolicy.MaxSerializationDepth == 0) { return; } Profiler.BeginSample("CopyUdonToProxy"); SimpleValueStorage <UdonBehaviour> udonBehaviourStorage = new SimpleValueStorage <UdonBehaviour>(GetBackingUdonBehaviour(proxy)); ProxySerializationPolicy lastPolicy = USBSerializationContext.currentPolicy; USBSerializationContext.currentPolicy = serializationPolicy; object proxyObj = proxy; Serializer.CreatePooled(proxy.GetType()).ReadWeak(ref proxyObj, udonBehaviourStorage); USBSerializationContext.currentPolicy = lastPolicy; Profiler.EndSample(); }