2using System.Collections;
3using System.Collections.Generic;
4using System.Diagnostics;
5using System.Globalization;
8using System.Reflection;
9using System.Runtime.CompilerServices;
10using System.Runtime.InteropServices;
11using System.Runtime.Serialization;
12using System.Runtime.Versioning;
14using System.Security.Permissions;
16using System.Threading;
17using Cysharp.Threading.Tasks;
18using Cysharp.Threading.Tasks.CompilerServices;
19using JetBrains.Annotations;
22using Unity.Collections;
23using Unity.Collections.LowLevel.Unsafe;
25using UnityEngine.Events;
26using UnityEngine.EventSystems;
27using UnityEngine.Networking;
28using UnityEngine.Rendering;
29using UnityEngine.SceneManagement;
30using UnityEngine.Serialization;
32using UnityEngine.Video;
45using VRC.Udon.Common.Attributes;
46using VRC.Udon.Common.Enums;
47using VRC.Udon.Common.Interfaces;
49[assembly: CompilationRelaxations(8)]
50[assembly: RuntimeCompatibility(WrapNonExceptionThrows =
true)]
51[assembly: Debuggable()]
52[assembly: UnityAPICompatibilityVersion(
"2022.3.22f1",
true)]
53[assembly: TargetFramework(
".NETStandard,Version=v2.1", FrameworkDisplayName =
".NET Standard 2.1")]
54[assembly: AssemblyCompany(
"VRCSDK3")]
55[assembly: AssemblyConfiguration(
"Release")]
56[assembly: AssemblyFileVersion(
"1.0.0.0")]
57[assembly: AssemblyInformationalVersion(
"1.0.0+77370df7b4055abf7cc0fb1da3c3d290108e9941")]
58[assembly: AssemblyProduct(
"VRCSDK3")]
59[assembly: AssemblyTitle(
"VRCSDK3")]
60[assembly: SecurityPermission(8, SkipVerification =
true)]
61[assembly: AssemblyVersion(
"1.0.0.0")]
62[module: UnverifiableCode]
72 public static int Read16(
byte[] data, ref
int i)
74 return (data[i++] << 8) | data[i++];
77 public static int Read32(
byte[] data, ref
int i)
79 return (data[i++] << 24) | (data[i++] << 16) | (data[i++] << 8) | data[i++];
82 public static byte Read8(
byte[] data, ref
int i)
91 byte[] array = (
byte[])(
object)
new Byte[16384];
92 MemoryStream val =
new MemoryStream();
96 while ((num = input.Read(array, 0, array.Length)) > 0)
98 ((Stream)val).Write(array, 0, num);
100 return val.ToArray();
106 ((IDisposable)val).Dispose();
111 public static string ReadString(
byte[] data, ref
int i,
int length)
113 string @
string = Encoding.ASCII.GetString(data, i, length);
121 if ((num & 0x80) == 0)
126 for (
int j = 0; j < 3; j++)
128 int num2 = data[i++];
129 num = (num << 7) | (num2 & 0x7F);
130 if ((num2 & 0x80) == 0)
148 : this(
Reader.ReadAllBytesFromStream(stream))
153 : this(File.ReadAllBytes(path))
165 throw new FormatException(
"Invalid file header (expected MThd)");
169 throw new FormatException(
"Invalid header length (expected 6)");
176 throw new FormatException(
"Invalid timing mode (SMPTE timecode not supported)");
185 private static bool ParseMetaEvent(
byte[] data, ref
int position,
byte metaEventType, ref
byte data1, ref
byte data2)
187 switch (metaEventType)
191 int num2 = (data[position + 1] << 16) | (data[position + 2] << 8) | data[position + 3];
192 data1 = (byte)(60000000.0 / (
double)num2);
197 data1 = data[position + 1];
198 data2 = (byte)Math.Pow(2.0, (
double)(int)data[position + 2]);
202 data1 = data[position + 1];
203 data2 = data[position + 2];
220 throw new FormatException(
"Invalid track header (expected MTrk)");
223 int num2 = position + num;
230 while (position < num2)
233 byte b2 = data[position];
234 if ((b2 & 0x80u) != 0)
239 if ((b & 0xF0) != 240)
241 byte b3 = (byte)(b & 0xF0u);
242 byte arg = (byte)((b & 0xF) + 1);
243 byte arg2 = data[position++];
244 byte arg3 = (byte)(((b3 & 0xE0) != 192) ? data[position++] : 0);
260 if (b4 >= 1 && b4 <= 15)
265 textEvent.Time = num3;
267 textEvent.Value = value;
365 [ExcludeFromUdonWrapper]
369 [ExcludeFromUdonWrapper]
373 [ExcludeFromUdonWrapper]
377 [ExcludeFromUdonWrapper]
381 [ExcludeFromUdonWrapper]
434 [AddComponentMenu(
"VRChat/Video/VRC Unity Video Player")]
471 [Tooltip(
"The maximum virtual resolution to retrieve from sites that support multiple resolutions.")]
474 private VideoPlayer _unityPlayer;
476 private bool _pauseOnStart;
478 private Coroutine _playDelayedCoroutine;
480 private Coroutine _onVideoReadyDelayedCoroutine;
483 [ExcludeFromUdonWrapper]
484 [field: CompilerGenerated]
498 if ((Object)(
object)_unityPlayer == (Object)
null)
549 void PlayVideo(
string resolvedURL)
551 UnityPlayer.url = resolvedURL;
567 _unityPlayer = ((Component)
this).gameObject.AddComponent<VideoPlayer>();
568 _unityPlayer.prepareCompleted +=
new EventHandler(
OnPrepared);
569 _unityPlayer.started +=
new EventHandler(
OnStarted);
571 _unityPlayer.errorReceived +=
new ErrorEventHandler(
OnError);
572 _unityPlayer.isLooping =
false;
585 throw new ArgumentOutOfRangeException();
587 _unityPlayer.source = (VideoSource)1;
589 _unityPlayer.audioOutputMode = (VideoAudioOutputMode)1;
606 PlayVideo(url.
Get());
609 void PlayVideo(
string resolvedURL)
611 UnityPlayer.url = resolvedURL;
612 _pauseOnStart =
true;
624 PlayVideo(url.
Get());
628 void PlayVideo(
string resolvedURL)
630 UnityPlayer.url = resolvedURL;
631 _pauseOnStart =
false;
642 if (_playDelayedCoroutine !=
null)
644 ((MonoBehaviour)
this).StopCoroutine(_playDelayedCoroutine);
645 _playDelayedCoroutine =
null;
650 [IteratorStateMachine()]
653 for (
int attempts = 0; attempts < 5; attempts++)
667 _playDelayedCoroutine =
null;
682 UnityPlayer.time = value;
693 if (source.canSetSkipOnDrop)
695 source.skipOnDrop =
true;
697 if (_onVideoReadyDelayedCoroutine !=
null)
699 ((MonoBehaviour)
this).StopCoroutine(_onVideoReadyDelayedCoroutine);
700 _onVideoReadyDelayedCoroutine =
null;
705 [IteratorStateMachine()]
708 yield
return new WaitForSecondsRealtime(0.25f);
710 _onVideoReadyDelayedCoroutine =
null;
713 private void OnError(VideoPlayer source,
string message)
727 _pauseOnStart =
false;
746 [AddComponentMenu(
"VRChat/Video/VRC AVPro Video Player")]
750 [Tooltip(
"The URL to the default video.")]
754 [Tooltip(
"If AutoPlay is enabled the default video will be played automatically.")]
758 [Tooltip(
"If Loop is enabled the video will play repeatedly until the video player is stopped.")]
762 [Tooltip(
"The maximum virtual resolution to retrieve from sites that support multiple resolutions.")]
766 [Tooltip(
"Lower Latency for Live Streams from Advanced Sources. ")]
772 [ExcludeFromUdonWrapper]
773 [field: CompilerGenerated]
774 public static Func<VRCAVProVideoPlayer, IAVProVideoPlayerInternal>
Initialize
783 [ExcludeFromUdonWrapper]
787 [ExcludeFromUdonWrapper]
791 [ExcludeFromUdonWrapper]
795 [ExcludeFromUdonWrapper]
796 [field: CompilerGenerated]
806 [ExcludeFromUdonWrapper]
813 return _playerInternal?.
Loop ??
false;
817 if (_playerInternal !=
null)
819 _playerInternal.Loop = value;
843 if (_playerInternal !=
null)
845 _playerInternal.Loop =
loop;
864 _playerInternal?.
Play();
870 _playerInternal?.
Pause();
875 _playerInternal?.
Stop();
885 return _playerInternal?.
GetTime() ?? 0f;
890 _playerInternal?.
SetTime(value);
895 [AddComponentMenu(
"VRChat/Video/VRC AVPro Video Screen")]
911 [field: CompilerGenerated]
941 [DisallowMultipleComponent]
942 [AddComponentMenu(
"VRChat/Video/VRC AVPro Video Speaker")]
967 [field: CompilerGenerated]
995 private readonly List<IUdonBehaviour> _udonBehaviours =
new List<IUdonBehaviour>();
1001 [field: CompilerGenerated]
1011 [ExcludeFromUdonWrapper]
1012 [field: CompilerGenerated]
1022 [ExcludeFromUdonWrapper]
1023 [field: CompilerGenerated]
1032 public abstract bool Loop {
get;
set; }
1046 ((Component)
this).GetComponents<IUdonBehaviour>(_udonBehaviours);
1049 [ExcludeFromUdonWrapper]
1056 [ExcludeFromUdonWrapper]
1087 [ExcludeFromUdonWrapper]
1092 Enumerator<IUdonBehaviour> enumerator = _udonBehaviours.GetEnumerator();
1095 while (enumerator.MoveNext())
1097 ((IUdonEventReceiver)enumerator.Current).RunEvent(
"_onVideoReady");
1102 ((IDisposable)enumerator).Dispose();
1106 [ExcludeFromUdonWrapper]
1112 Enumerator<IUdonBehaviour> enumerator = _udonBehaviours.GetEnumerator();
1115 while (enumerator.MoveNext())
1117 ((IUdonEventReceiver)enumerator.Current).RunEvent<
VideoError>(
"_onVideoError",
new ValueTuple<string, VideoError>(
"videoError", videoError));
1122 ((IDisposable)enumerator).Dispose();
1126 [ExcludeFromUdonWrapper]
1131 Enumerator<IUdonBehaviour> enumerator = _udonBehaviours.GetEnumerator();
1134 while (enumerator.MoveNext())
1136 ((IUdonEventReceiver)enumerator.Current).RunEvent(
"_onVideoStart");
1141 ((IDisposable)enumerator).Dispose();
1145 [ExcludeFromUdonWrapper]
1151 Enumerator<IUdonBehaviour> enumerator = _udonBehaviours.GetEnumerator();
1154 while (enumerator.MoveNext())
1156 ((IUdonEventReceiver)enumerator.Current).RunEvent(
"_onVideoLoop");
1161 ((IDisposable)enumerator).Dispose();
1165 [ExcludeFromUdonWrapper]
1170 Enumerator<IUdonBehaviour> enumerator = _udonBehaviours.GetEnumerator();
1173 while (enumerator.MoveNext())
1175 ((IUdonEventReceiver)enumerator.Current).RunEvent(
"_onVideoEnd");
1180 ((IDisposable)enumerator).Dispose();
1211 return String.Format(
"note: {0}, velocity: {1}, time: {2}s -> {3}s ({4}s)", (
object[])(
object)
new Object[5]
1239 Enumerator<MidiBlock> enumerator =
blocks.GetEnumerator();
1242 while (enumerator.MoveNext())
1253 ((IDisposable)enumerator).Dispose();
1255 this.blocks =
blocks.ToArray();
1277 Format = parsedMidiFile.
Format,
1278 TicksPerQuarterNote = parsedMidiFile.TicksPerQuarterNote,
1279 Tracks = parsedMidiFile.Tracks,
1280 TracksCount = parsedMidiFile.TracksCount
1285 tracks = midiRawDataProcessor.
tracks.ToArray(),
1286 bpm = midiRawDataProcessor.Bpm
1288 if (Object.op_Implicit((Object)(
object)midiImportSettings.
AudioClip))
1290 midiFile.audioClip = midiImportSettings.
AudioClip;
1295 [ContextMenu(
"Print raw data")]
1300 Debug.Log((
object)String.Format(
"Format: {0}", (
object)
rawData.
Format));
1306 Debug.Log((
object)String.Format(
"\nTrack: {0}\n", (
object)midiRawTrack.Index));
1310 while (enumerator.MoveNext())
1312 Debug.Log((
object)enumerator.Current);
1317 ((IDisposable)enumerator).Dispose();
1322 [ContextMenu(
"Print processed data")]
1325 Debug.Log((
object)String.Format(
"TracksCount: {0}", (
object)
data.
tracks.Length));
1329 Debug.Log((
object)String.Format(
"\nTrack: {0}. note range: {1} -> {2}, velocity range: {3} -> {4}\n", (
object[])(
object)
new Object[5]
1332 (object)midiTrack.minNote,
1333 (object)midiTrack.maxNote,
1334 (object)midiTrack.minVelocity,
1335 (object)midiTrack.maxVelocity
1338 for (
int j = 0; j < blocks.Length; j++)
1340 Debug.Log((
object)blocks[j]);
1354 [AddComponentMenu(
"VRChat/Midi/VRC Midi Player")]
1368 private sealed class <>
c : Object
1370 public static readonly <>c <>9 = new <>
c();
1376 public static Action <>9__18_0;
1378 public static Action<bool> <>9__20_0;
1392 internal void <get_OnPlayingStopped>
b__20_0(
bool completed)
1403 public readonly List<TrackProgress>
activeTracks =
new List<TrackProgress>();
1409 private readonly ValueTuple<string, object>[]
argsArray =
new ValueTuple<string, object>[3];
1421 audioSource.time = value;
1442 object obj = <>
c.<>9__18_0;
1445 Action val = delegate
1448 <>
c.<>9__18_0 = val;
1461 if (!Object.op_Implicit((Object)(
object)
audioSource))
1463 Debug.LogWarning((
object)
"Cannot use VRCMidiPlayer without AudioSource");
1464 ((Component)
this).gameObject.SetActive(
false);
1472 if (!Object.op_Implicit((Object)(
object)
midiFile))
1474 throw new Exception(
"MidiPlayer MidiAsset is null");
1477 if (Object.op_Implicit((Object)(object)
audioSource))
1485 if (_coroutine !=
null)
1488 ((MonoBehaviour)
this).StopCoroutine(_coroutine);
1491 if (Object.op_Implicit((Object)(object)
audioSource))
1497 [IteratorStateMachine()]
1501 if (onPlayingStarted !=
null)
1503 onPlayingStarted.Invoke();
1506 float maxEndTime = 0f;
1514 if (midiTrack.blocks.Length != 0)
1516 float endTimeSec = midiTrack.blocks[midiTrack.blocks.Length - 1].endTimeSec;
1517 if (endTimeSec > maxEndTime)
1519 maxEndTime = endTimeSec;
1527 Enumerator<TrackProgress> enumerator =
activeTracks.GetEnumerator();
1530 while (enumerator.MoveNext())
1537 int num = current.currentBlockIndex + 1;
1538 if (num < current.
track.blocks.Length)
1545 current.currentBlockIndex = num;
1552 for (
int num2 = current.
activeBlocks.Count - 1; num2 >= 0; num2--)
1565 ((IDisposable)enumerator).Dispose();
1567 if (!flag && time >= maxEndTime)
1572 while (enumerator.MoveNext())
1574 Enumerator<
MidiData.
MidiBlock> enumerator2 = enumerator.Current.activeBlocks.GetEnumerator();
1577 while (enumerator2.MoveNext())
1585 ((IDisposable)enumerator2).Dispose();
1591 ((IDisposable)enumerator).Dispose();
1603 while (enumerator.MoveNext())
1606 current3.currentBlockIndex = -1;
1612 ((IDisposable)enumerator).Dispose();
1634 argsArray[0] =
new ValueTuple<string, object>(
"channel", (
object)block.channel);
1635 argsArray[1] =
new ValueTuple<string, object>(
"number", (
object)(Int32)block.note);
1636 argsArray[2] =
new ValueTuple<string, object>(
"velocity", (
object)(Int32)block.velocity);
1637 abstractUdonBehaviour.RunEvent(
"_midiNoteOn",
argsArray);
1651 argsArray[0] =
new ValueTuple<string, object>(
"channel", (
object)block.channel);
1652 argsArray[1] =
new ValueTuple<string, object>(
"number", (
object)(Int32)block.note);
1653 argsArray[2] =
new ValueTuple<string, object>(
"velocity", (
object)(Int32)block.velocity);
1708 return String.Format(
"event type: {0}, channel: {1}, time: {2}, note: {3}, velocity: {4}", (
object[])(
object)
new Object[5]
1717 return String.Format(
"event type: {0}, channel: -, time: {1}, note: {2}, velocity: {3}", (
object[])(object)
new Object[4]
1743 KeyAfterTouch = 160,
1744 ControlChange = 176,
1745 ProgramChange = 192,
1746 ChannelAfterTouch = 208,
1747 PitchBendChange = 224,
1808 private readonly List<Dictionary<byte, NoteOnEvent>> _noteTimeMap =
new List<Dictionary<byte, NoteOnEvent>>();
1810 [field: CompilerGenerated]
1833 _noteTimeMap.Add(
new Dictionary<byte, NoteOnEvent>());
1837 Bpm = midiImportSettings.
Bpm;
1844 Dictionary<byte, NoteOnEvent> val = _noteTimeMap[midiRawTrack.Index];
1849 while (enumerator.MoveNext())
1853 byte arg = current.
Arg2;
1865 channel = current.Channel
1867 val2.Add(midiBlock);
1868 if (val.TryGetValue(arg, ref noteOnEvent3))
1870 if (noteOnEvent3.Count == 1)
1878 Count = noteOnEvent3.Count - 1,
1879 Velocity = noteOnEvent3.Velocity,
1880 StartTimeMs = noteOnEvent3.StartTimeMs
1886 throw new Exception(
"note off event - could not find matching on event");
1889 if (val.TryGetValue(arg, ref noteOnEvent))
1894 Velocity = current.
Arg3,
1895 Count = noteOnEvent.Count + 1
1903 Velocity = current.
Arg3,
1918 throw new ArgumentOutOfRangeException();
1925 throw new ArgumentOutOfRangeException();
1937 ((IDisposable)enumerator).Dispose();
1939 tracks[midiRawTrack.Index].SetBlocks(val2);
1944 while (enumerator2.MoveNext())
1947 if (current2.
blocks.Length == 0)
1949 current2.minNote = (current2.maxNote = 0);
1950 current2.minVelocity = (current2.maxVelocity = 0);
1956 ((IDisposable)enumerator2).Dispose();
1964 return 60000f / (float)(bpm * ppq) * (float)time;
1967 [AddComponentMenu(
"VRChat/Midi/VRC Midi Handler")]
1995 if (_midiIn ==
null)
1998 if (_instance._midiIn !=
null)
2008 [field: CompilerGenerated]
2018 [field: CompilerGenerated]
2032 if ((Object)(
object)_instance == (Object)
null)
2035 if ((Object)(object)_instance == (Object)
null)
2037 _instance =
new GameObject(
"VRCMidiHandler").AddComponent<
VRCMidiHandler>();
2063 while (val != val2);
2078 while (val != val2);
2097 while (val != val2);
2112 while (val != val2);
2131 while (val != val2);
2146 while (val != val2);
2159 Log(String.Concat(
"Could Not Open Midi Device ", deviceName));
2175 if (onNoteOn !=
null)
2177 onNoteOn.Invoke((
object)
this, args);
2183 if (onNoteOff !=
null)
2185 onNoteOff.Invoke((
object)
this, args);
2191 if (onControlChange !=
null)
2193 onControlChange.Invoke((
object)
this, args);
2211 if (_midiIn !=
null)
2220 private static void Log(
string message)
2222 OnLog?.Invoke(message);
2225 [AddComponentMenu(
"VRChat/Midi/VRC Midi Listener")]
2238 private readonly ValueTuple<string, object>[]
argsArray =
new ValueTuple<string, object>[3];
2280 if ((Object)(
object)
behaviour != (Object)
null)
2282 argsArray[0] =
new ValueTuple<string, object>(
"channel", (
object)args.
channel);
2283 argsArray[1] =
new ValueTuple<string, object>(
"number", (
object)args.
number);
2284 argsArray[2] =
new ValueTuple<string, object>(
"velocity", (
object)args.
value);
2300 if ((Object)(
object)
behaviour != (Object)
null)
2302 argsArray[0] =
new ValueTuple<string, object>(
"channel", (
object)args.
channel);
2303 argsArray[1] =
new ValueTuple<string, object>(
"number", (
object)args.
number);
2304 argsArray[2] =
new ValueTuple<string, object>(
"velocity", (
object)args.
value);
2320 if ((Object)(
object)
behaviour != (Object)
null)
2322 argsArray[0] =
new ValueTuple<string, object>(
"channel", (
object)args.
channel);
2323 argsArray[1] =
new ValueTuple<string, object>(
"number", (
object)args.
number);
2324 argsArray[2] =
new ValueTuple<string, object>(
"value", (
object)args.
value);
2368 [ExcludeFromUdonWrapper]
2371 [ExcludeFromUdonWrapper]
2378 private int _current;
2380 private List<byte> _buffer =
new List<byte>();
2384 private string _convertedText;
2406 _buffer.Capacity = (int)contentLength;
2412 _current += dataLength;
2417 for (
int i = 0; i < dataLength; i++)
2419 _buffer.Add(data[i]);
2421 return ((DownloadHandler)
this).ReceiveData(data, dataLength);
2428 private struct <StartAtCorrectTime>
d__33 : ValueType, IAsyncStateMachine
2430 public int <>1__state;
2436 public VRCStringDownload <>4__this;
2453 int num = <>1__state;
2462 UniTask val = UniTask.WaitWhile((Func<bool>)(() => Time.realtimeSinceStartup - _lastStringRequest < 5f), (PlayerLoopTiming)8, cancellationToken);
2463 awaiter = ((UniTask)(ref val)).GetAwaiter();
2464 if (!((Awaiter)(ref awaiter)).IsCompleted)
2466 num = (<>1__state = 0);
2468 ((AsyncUniTaskMethodBuilder)(ref <>t__builder)).AwaitUnsafeOnCompleted<Awaiter, <
StartAtCorrectTime>
d__33>(ref awaiter, ref
this);
2475 <>u__1 =
default(Awaiter);
2476 num = (<>1__state = -1);
2478 ((Awaiter)(ref awaiter)).GetResult();
2479 _lastStringRequest = Time.realtimeSinceStartup;
2480 UnityWebRequest.ClearCookieCache(CS$<>8__locals0._webRequest.uri);
2481 CS$<>8__locals0._asyncOperation = CS$<>8__locals0._webRequest.SendWebRequest();
2482 ((AsyncOperation)CS$<>8__locals0._asyncOperation).completed += [CompilerGenerated] (AsyncOperation _) =>
2484 CS$<>8__locals0.CompletedRequest();
2487 catch (OperationCanceledException)
2489 UnityWebRequest webRequest = CS$<>8__locals0._webRequest;
2490 if (webRequest !=
null)
2492 webRequest.Dispose();
2494 CS$<>8__locals0._webRequest =
null;
2495 CS$<>8__locals0._asyncOperation =
null;
2496 CancellationTokenSource cancellationTokenSource = CS$<>8__locals0._cancellationTokenSource;
2497 if (cancellationTokenSource !=
null)
2499 cancellationTokenSource.Dispose();
2501 CS$<>8__locals0._cancellationTokenSource =
null;
2505 catch (Exception val3)
2507 Exception exception = val3;
2509 ((AsyncUniTaskMethodBuilder)(ref <>t__builder)).SetException(exception);
2513 ((AsyncUniTaskMethodBuilder)(ref <>t__builder)).SetResult();
2519 ((AsyncUniTaskMethodBuilder)(ref <>t__builder)).SetStateMachine(stateMachine);
2527 private static float _lastStringRequest = -5f;
2529 private UnityWebRequest _webRequest;
2533 private UnityWebRequestAsyncOperation _asyncOperation;
2535 protected CancellationTokenSource _cancellationTokenSource;
2537 [field: CompilerGenerated]
2546 [field: CompilerGenerated]
2555 [field: CompilerGenerated]
2564 [field: CompilerGenerated]
2573 [field: CompilerGenerated]
2582 [field: CompilerGenerated]
2597 _cancellationTokenSource =
new CancellationTokenSource();
2614 Error =
"Client has too many requests (limit is 1000).";
2621 val =
new Uri(
Url.
Get());
2626 Error =
"Invalid URL";
2631 if (!val.IsAbsoluteUri || (val.Scheme != Uri.UriSchemeHttps && val.Scheme != Uri.UriSchemeHttp))
2634 Error =
"Strings may only be downloaded from HTTP(S) URLs.";
2640 _webRequest =
new UnityWebRequest(
Url.
Get(),
"GET");
2641 _webRequest.redirectLimit = 0;
2643 _webRequest.downloadHandler = (DownloadHandler)(
object)_DownloadHandler;
2648 [AsyncStateMachine()]
2661 ((AsyncUniTaskMethodBuilder)(ref <StartAtCorrectTime>d__.<>t__builder)).Start<<
StartAtCorrectTime>
d__33>(ref <StartAtCorrectTime>d__);
2662 return ((AsyncUniTaskMethodBuilder)(ref <StartAtCorrectTime>d__.<>t__builder)).Task;
2673 if (_webRequest ==
null)
2677 if ((
int)_webRequest.result != 2 && (
int)_webRequest.result != 3 && !_DownloadHandler.
lengthFail)
2688 Error = String.Format(
"Content longer than {0}MB", (
object)100);
2692 Error = _webRequest.error;
2693 ErrorCode = (int)_webRequest.responseCode;
2697 UnityWebRequest webRequest = _webRequest;
2698 if (webRequest !=
null)
2700 webRequest.Dispose();
2703 _asyncOperation =
null;
2704 CancellationTokenSource cancellationTokenSource = _cancellationTokenSource;
2705 if (cancellationTokenSource !=
null)
2707 cancellationTokenSource.Dispose();
2709 _cancellationTokenSource =
null;
2715 UnityWebRequest webRequest = _webRequest;
2716 if (webRequest !=
null)
2720 UnityWebRequest webRequest2 = _webRequest;
2721 if (webRequest2 !=
null)
2723 webRequest2.Dispose();
2726 _asyncOperation =
null;
2727 CancellationTokenSource cancellationTokenSource = _cancellationTokenSource;
2728 if (cancellationTokenSource !=
null)
2730 cancellationTokenSource.Cancel();
2732 CancellationTokenSource cancellationTokenSource2 = _cancellationTokenSource;
2733 if (cancellationTokenSource2 !=
null)
2735 cancellationTokenSource2.Dispose();
2737 _cancellationTokenSource =
null;
2743 private static List<IVRCStringDownload> _stringDownloads =
new List<IVRCStringDownload>();
2745 [ExcludeFromUdonWrapper]
2746 [field: CompilerGenerated]
2761 [ExcludeFromUdonWrapper]
2767 [ExcludeFromUdonWrapper]
2770 if (_stringDownloads.Count < 1000)
2772 _stringDownloads.Add(download);
2778 [ExcludeFromUdonWrapper]
2781 _stringDownloads.Remove(download);
2784 [ExcludeFromUdonWrapper]
2787 Debug.Log((
object)
"[String Download] Clearing string download queue");
2788 for (
int num = _stringDownloads.Count - 1; num >= 0; num--)
2790 _stringDownloads[num].CancelDownload();
2792 _stringDownloads.Clear();
2821 [ExcludeFromUdonWrapper]
2824 [ExcludeFromUdonWrapper]
2853 MaximumDimensionExceeded,
2858 UnsupportedOperation,
2860 OutputBufferTooSmall,
2863 MemoryLimitExceeded,
2864 BadDecoderParameters
2906 LimitAllocation = 1u,
2907 LimitResolution = 2u,
2909 OverrideOutputFormat = 8u,
2910 ResizeOutput = 0x10u,
2912 GenerateMipMaps = 0x40u
2920 private readonly uint _allocationLimit;
2922 private readonly uint _resolutionLimit;
2924 private readonly uint _targetWidth;
2926 private readonly uint _targetHeight;
2928 private readonly
ImageFormat _outputFormatOverride;
2933 _allocationLimit = allocationLimit;
2934 _resolutionLimit = resolutionLimit;
2935 _targetWidth = targetWidth;
2936 _targetHeight = targetHeight;
2937 _outputFormatOverride = outputFormatOverride;
2947 return default(Nullable<uint>);
2949 return new Nullable<uint>(_allocationLimit);
2964 return default(Nullable<uint>);
2966 return new Nullable<uint>(_resolutionLimit);
2992 return default(Nullable<ValueTuple<uint, uint>>);
2994 return new Nullable<ValueTuple<uint, uint>>(
new ValueTuple<uint, uint>(_targetWidth, _targetHeight));
3001 return new ImageLoadSettings(targetResolution.HasValue ? (_flags |
ImageLoadSettingsFlags.ResizeOutput) : (_flags & ~
ImageLoadSettingsFlags.ResizeOutput), _allocationLimit, _resolutionLimit, targetResolution.GetValueOrDefault().Item1, targetResolution.GetValueOrDefault().Item2, _outputFormatOverride);
3021 return default(Nullable<ImageFormat>);
3023 return new Nullable<ImageFormat>(_outputFormatOverride);
3043 return (_flags & flag) != 0;
3049 private struct <<Dispose>g__DestroyAsync|53_0>
d : ValueType, IAsyncStateMachine
3051 public int <>1__state;
3073 int num = <>1__state;
3079 SwitchToMainThreadAwaitable val = UniTask.SwitchToMainThread(
default(CancellationToken));
3080 awaiter = ((SwitchToMainThreadAwaitable)(ref val)).GetAwaiter();
3081 if (!((Awaiter)(ref awaiter)).IsCompleted)
3083 num = (<>1__state = 0);
3085 ((AsyncUniTaskVoidMethodBuilder)(ref <>t__builder)).AwaitUnsafeOnCompleted<Awaiter, <<
Dispose>g__DestroyAsync|53_0>
d>(ref awaiter, ref
this);
3092 <>u__1 =
default(Awaiter);
3093 num = (<>1__state = -1);
3095 ((Awaiter)(ref awaiter)).GetResult();
3096 if (obj != (Object)
null)
3098 if (Application.isPlaying)
3100 Object.Destroy(obj);
3104 Object.DestroyImmediate(obj);
3108 catch (Exception val2)
3110 Exception exception = val2;
3112 ((AsyncUniTaskVoidMethodBuilder)(ref <>t__builder)).SetException(exception);
3116 ((AsyncUniTaskVoidMethodBuilder)(ref <>t__builder)).SetResult();
3122 ((AsyncUniTaskVoidMethodBuilder)(ref <>t__builder)).SetStateMachine(stateMachine);
3130 public int <>1__state;
3148 private int <sliceHeight>5__2;
3150 private Texture2D <sliceTexture>5__3;
3152 private Texture2D <uploadTexture>5__4;
3154 private Awaiter <>u__1;
3156 private int <sliceCount>5__5;
3158 private int <bytesPerRow>5__6;
3160 private int <sliceIndex>5__7;
3198 int num = <>1__state;
3207 <sliceHeight>5__2 = Mathf.CeilToInt(1048576f / (
float)(width * bytesPerPixel));
3208 if (<sliceHeight>5__2 >= height)
3210 <uploadTexture>5__4 =
new Texture2D(width, height, format,
false);
3213 <sliceTexture>5__3 =
new Texture2D(width, <sliceHeight>5__2, format,
false);
3216 YieldAwaitable val2;
3221 <sliceCount>5__5 = Mathf.CeilToInt((
float)height / (
float)<sliceHeight>5__2);
3222 <bytesPerRow>5__6 = width * bytesPerPixel;
3223 <sliceIndex>5__7 = 0;
3227 <>u__1 =
default(Awaiter);
3228 num = (<>1__state = -1);
3231 ((Awaiter)(ref awaiter)).GetResult();
3235 if (<sliceIndex>5__7 < <sliceCount>5__5)
3237 int num2 = <sliceIndex>5__7 * <sliceHeight>5__2;
3238 int num3 = ((num2 + <sliceHeight>5__2 < height) ? <sliceHeight>5__2 : (height - num2));
3239 int num4 = num2 * <bytesPerRow>5__6;
3240 int num5 = num3 * <bytesPerRow>5__6;
3241 NativeSlice<byte> val = NativeSliceExtensions.Slice<
byte>(outputBuffer, num4, num5);
3242 NativeArray<byte> rawTextureData = <sliceTexture>5__3.GetRawTextureData<
byte>();
3243 int num6 = UnsafeUtility.SizeOf<
byte>();
3244 UnsafeUtility.MemCpyStride(NativeArrayUnsafeUtility.GetUnsafePtr<
byte>(rawTextureData), num6, NativeSliceUnsafeUtility.GetUnsafeReadOnlyPtr<
byte>(val), num6, num6, val.Length);
3245 <sliceTexture>5__3.Apply();
3246 Graphics.CopyTexture((Texture)(object)<sliceTexture>5__3, 0, 0, 0, 0, width, num3, (Texture)(object)outputTexture, 0, mipLevel, 0, num2);
3247 val2 = UniTask.Yield();
3248 awaiter = ((YieldAwaitable)(ref val2)).GetAwaiter();
3249 if (!((Awaiter)(ref awaiter)).IsCompleted)
3251 num = (<>1__state = 1);
3263 if (Application.isPlaying)
3265 Object.Destroy((Object)(object)<sliceTexture>5__3);
3269 Object.DestroyImmediate((Object)(object)<sliceTexture>5__3);
3279 NativeArray<byte> rawTextureData2 = <uploadTexture>5__4.GetRawTextureData<
byte>();
3280 int num7 = UnsafeUtility.SizeOf<
byte>();
3281 UnsafeUtility.MemCpyStride(NativeArrayUnsafeUtility.GetUnsafePtr<
byte>(rawTextureData2), num7, NativeSliceUnsafeUtility.GetUnsafeReadOnlyPtr<
byte>(outputBuffer), num7, num7, rawTextureData2.Length);
3282 <uploadTexture>5__4.Apply();
3283 Graphics.CopyTexture((Texture)(object)<uploadTexture>5__4, 0, 0, 0, 0, width, height, (Texture)(object)outputTexture, 0, mipLevel, 0, 0);
3284 val2 = UniTask.Yield();
3285 awaiter = ((YieldAwaitable)(ref val2)).GetAwaiter();
3286 if (!((Awaiter)(ref awaiter)).IsCompleted)
3288 num = (<>1__state = 0);
3297 <>u__1 =
default(Awaiter);
3298 num = (<>1__state = -1);
3300 ((Awaiter)(ref awaiter)).GetResult();
3306 if (Application.isPlaying)
3308 Object.Destroy((Object)(object)<uploadTexture>5__4);
3312 Object.DestroyImmediate((Object)(object)<uploadTexture>5__4);
3318 catch (Exception val3)
3320 Exception exception = val3;
3322 <sliceTexture>5__3 =
null;
3323 ((AsyncUniTaskMethodBuilder)(ref <>t__builder)).SetException(exception);
3327 <sliceTexture>5__3 =
null;
3328 ((AsyncUniTaskMethodBuilder)(ref <>t__builder)).SetResult();
3334 ((AsyncUniTaskMethodBuilder)(ref <>t__builder)).SetStateMachine(stateMachine);
3340 private struct <DownloadImage>
d__51 : ValueType, IAsyncStateMachine
3342 public int <>1__state;
3348 public ImageDownloader <>4__this;
3352 private object <>7__wrap1;
3354 private int <>7__wrap2;
3356 private NativeArray<byte> <outputBuffer>5__4;
3358 private UnityWebRequest <webRequest>5__5;
3360 private ReadOnly<byte> <downloadBuffer>5__6;
3362 private ImageInfo <imageInfo>5__7;
3364 private TextureFormat <format>5__8;
3366 private int <bytesPerPixel>5__9;
3368 private Texture2D <outputTexture>5__10;
3370 private NativeArray<byte> <outputTextureRawData>5__11;
3372 private int <mipLevelWidth>5__12;
3374 private int <mipLevelHeight>5__13;
3376 private NativeSlice<byte> <outputSlice>5__14;
3380 private Awaiter<UnityWebRequest> <>
u__2;
3386 private int <mipLevel>5__15;
3586 int num = <>1__state;
3613 if ((uint)(num - 1) <= 9u)
3621 val = UniTask.WaitWhile((Func<bool>)(() => Time.realtimeSinceStartup - _lastImageRequest < 5f), (PlayerLoopTiming)8, cancellationToken);
3622 awaiter = ((UniTask)(ref val)).GetAwaiter();
3623 if (!((Awaiter)(ref awaiter)).IsCompleted)
3625 num = (<>1__state = 0);
3627 ((AsyncUniTaskMethodBuilder)(ref <>t__builder)).AwaitUnsafeOnCompleted<Awaiter, <
DownloadImage>
d__51>(ref awaiter, ref
this);
3634 <>u__1 =
default(Awaiter);
3635 num = (<>1__state = -1);
3637 ((Awaiter)(ref awaiter)).GetResult();
3640 if (!((CancellationToken)(ref cancellationToken)).IsCancellationRequested && imageDownloader.State !=
VRCImageDownloadState.Unloaded)
3642 Debug.Log((
object)String.Concat(
"[Image Download] Attempting to load image from URL '", uri.AbsoluteUri,
"'"));
3643 _lastImageRequest = Time.realtimeSinceStartup;
3644 <outputBuffer>5__4 =
new NativeArray<byte>(33554432, (Allocator)4, (NativeArrayOptions)0);
3651 if ((uint)(num - 1) > 9u)
3653 <webRequest>5__5 =
new UnityWebRequest(uri,
"GET", (DownloadHandler)
new DownloadHandlerBuffer(), (UploadHandler)
null);
3657 Awaiter<UnityWebRequest> awaiter4;
3660 SwitchToThreadPoolAwaitable val2;
3665 SwitchToMainThreadAwaitable val3;
3669 <webRequest>5__5.redirectLimit = 0;
3670 UnityWebRequest.ClearCookieCache(uri);
3671 awaiter4 = UnityAsyncExtensions.ToUniTask(<webRequest>5__5.SendWebRequest(), (IProgress<float>)(
object)
new Progress<float>((Action<float>)imageDownloader.
SetProgress), (PlayerLoopTiming)8, cancellationToken).GetAwaiter();
3672 if (!awaiter4.IsCompleted)
3674 num = (<>1__state = 1);
3676 ((AsyncUniTaskMethodBuilder)(ref <>t__builder)).AwaitUnsafeOnCompleted<Awaiter<UnityWebRequest>, <
DownloadImage>
d__51>(ref awaiter4, ref
this);
3682 <>u__2 =
default(Awaiter<UnityWebRequest>);
3683 num = (<>1__state = -1);
3687 <>u__1 =
default(Awaiter);
3688 num = (<>1__state = -1);
3692 <>u__1 =
default(Awaiter);
3693 num = (<>1__state = -1);
3697 <>u__3 =
default(Awaiter);
3698 num = (<>1__state = -1);
3702 <>u__1 =
default(Awaiter);
3703 num = (<>1__state = -1);
3707 <>u__1 =
default(Awaiter);
3708 num = (<>1__state = -1);
3712 <>u__4 =
default(Awaiter);
3713 num = (<>1__state = -1);
3717 <>u__1 =
default(Awaiter);
3718 num = (<>1__state = -1);
3722 <>u__1 =
default(Awaiter);
3723 num = (<>1__state = -1);
3728 <>u__1 =
default(Awaiter);
3729 num = (<>1__state = -1);
3733 ((Awaiter)(ref awaiter)).GetResult();
3736 awaiter4.GetResult();
3737 if ((
int)<webRequest>5__5.result == 3 || (int)<webRequest>5__5.result == 2)
3741 imageDownloader.ErrorMessage = <webRequest>5__5.error;
3743 awaiter = ((UniTask)(ref val)).GetAwaiter();
3744 if (!((Awaiter)(ref awaiter)).IsCompleted)
3746 num = (<>1__state = 2);
3748 ((AsyncUniTaskMethodBuilder)(ref <>t__builder)).AwaitUnsafeOnCompleted<Awaiter, <
DownloadImage>
d__51>(ref awaiter, ref
this);
3753 <downloadBuffer>5__6 = ((DownloadHandler)(DownloadHandlerBuffer)<webRequest>5__5.downloadHandler).nativeData;
3754 if (!<downloadBuffer>5__6.IsCreated || <downloadBuffer>5__6.Length <= 0)
3758 imageDownloader.ErrorMessage =
"Failed to retrieve any data.";
3760 awaiter = ((UniTask)(ref val)).GetAwaiter();
3761 if (!((Awaiter)(ref awaiter)).IsCompleted)
3763 num = (<>1__state = 3);
3765 ((AsyncUniTaskMethodBuilder)(ref <>t__builder)).AwaitUnsafeOnCompleted<Awaiter, <
DownloadImage>
d__51>(ref awaiter, ref
this);
3770 val2 = UniTask.SwitchToThreadPool();
3771 awaiter3 = ((SwitchToThreadPoolAwaitable)(ref val2)).GetAwaiter();
3772 if (!((Awaiter)(ref awaiter3)).IsCompleted)
3774 num = (<>1__state = 4);
3776 ((AsyncUniTaskMethodBuilder)(ref <>t__builder)).AwaitUnsafeOnCompleted<Awaiter, <
DownloadImage>
d__51>(ref awaiter3, ref
this);
3781 ((Awaiter)(ref awaiter)).GetResult();
3784 ((Awaiter)(ref awaiter)).GetResult();
3787 ((Awaiter)(ref awaiter2)).GetResult();
3788 width = (int)<imageInfo>5__7.
width;
3789 height = (
int)<imageInfo>5__7.
height;
3792 name = String.Format(
"ImageFrom:{0}", (
object)uri),
3797 wrapModeW = imageDownloader.TextureInfo.WrapModeW
3799 <outputTextureRawData>5__11 = <outputTexture>5__10.GetRawTextureData<
byte>();
3800 if (<outputTextureRawData>5__11.Length > <outputBuffer>5__4.Length)
3804 imageDownloader.ErrorMessage =
"Decoded image was smaller than expected.";
3806 awaiter = ((UniTask)(ref val)).GetAwaiter();
3807 if (!((Awaiter)(ref awaiter)).IsCompleted)
3809 num = (<>1__state = 8);
3811 ((AsyncUniTaskMethodBuilder)(ref <>t__builder)).AwaitUnsafeOnCompleted<Awaiter, <
DownloadImage>
d__51>(ref awaiter, ref
this);
3816 <mipLevelWidth>5__12 = width;
3817 <mipLevelHeight>5__13 = height;
3818 <outputSlice>5__14 = NativeSlice<byte>.op_Implicit(<outputBuffer>5__4);
3819 <mipLevel>5__15 = 0;
3822 ((Awaiter)(ref awaiter)).GetResult();
3825 ((Awaiter)(ref awaiter)).GetResult();
3828 ((Awaiter)(ref awaiter3)).GetResult();
3830 imageResult =
LoadImage((System.IntPtr)NativeArrayUnsafeUtility.GetUnsafeReadOnlyPtr<
byte>(<downloadBuffer>5__6), (uint)<downloadBuffer>5__6.Length, (System.IntPtr)NativeArrayUnsafeUtility.GetUnsafePtr<
byte>(<outputBuffer>5__4), (uint)<outputBuffer>5__4.Length, settings);
3835 imageDownloader.ErrorMessage = String.Format(
"Failed to load file: {0}", (
object)imageResult.
error);
3837 awaiter = ((UniTask)(ref val)).GetAwaiter();
3838 if (!((Awaiter)(ref awaiter)).IsCompleted)
3840 num = (<>1__state = 5);
3842 ((AsyncUniTaskMethodBuilder)(ref <>t__builder)).AwaitUnsafeOnCompleted<Awaiter, <
DownloadImage>
d__51>(ref awaiter, ref
this);
3847 <imageInfo>5__7 = imageResult.
info;
3848 switch (<imageInfo>5__7.format)
3851 <format>5__8 = (TextureFormat)63;
3852 <bytesPerPixel>5__9 = 1;
3855 <format>5__8 = (TextureFormat)62;
3856 <bytesPerPixel>5__9 = 2;
3859 <format>5__8 = (TextureFormat)3;
3860 <bytesPerPixel>5__9 = 3;
3863 <format>5__8 = (TextureFormat)4;
3864 <bytesPerPixel>5__9 = 4;
3867 <format>5__8 = (TextureFormat)9;
3868 <bytesPerPixel>5__9 = 2;
3871 <format>5__8 = (TextureFormat)72;
3872 <bytesPerPixel>5__9 = 4;
3875 <format>5__8 = (TextureFormat)73;
3876 <bytesPerPixel>5__9 = 6;
3879 <format>5__8 = (TextureFormat)74;
3880 <bytesPerPixel>5__9 = 8;
3884 <format>5__8 = (TextureFormat)20;
3885 <bytesPerPixel>5__9 = 16;
3889 val3 = UniTask.SwitchToMainThread(
default(CancellationToken));
3890 awaiter2 = ((SwitchToMainThreadAwaitable)(ref val3)).GetAwaiter();
3891 if (!((Awaiter)(ref awaiter2)).IsCompleted)
3893 num = (<>1__state = 7);
3895 ((AsyncUniTaskMethodBuilder)(ref <>t__builder)).AwaitUnsafeOnCompleted<Awaiter, <
DownloadImage>
d__51>(ref awaiter2, ref
this);
3902 imageDownloader.ErrorMessage =
"Invalid image file.";
3904 awaiter = ((UniTask)(ref val)).GetAwaiter();
3905 if (!((Awaiter)(ref awaiter)).IsCompleted)
3907 num = (<>1__state = 6);
3909 ((AsyncUniTaskMethodBuilder)(ref <>t__builder)).AwaitUnsafeOnCompleted<Awaiter, <
DownloadImage>
d__51>(ref awaiter, ref
this);
3914 if (<mipLevel>5__15 < ((Texture)<outputTexture>5__10).mipmapCount)
3916 val = <
DownloadImage>
g__SlicedTextureUpload|51_0(<mipLevelWidth>5__12, <mipLevelHeight>5__13, <bytesPerPixel>5__9, <format>5__8, <mipLevel>5__15, <outputSlice>5__14, <outputTexture>5__10);
3917 awaiter = ((UniTask)(ref val)).GetAwaiter();
3918 if (!((Awaiter)(ref awaiter)).IsCompleted)
3920 num = (<>1__state = 9);
3922 ((AsyncUniTaskMethodBuilder)(ref <>t__builder)).AwaitUnsafeOnCompleted<Awaiter, <
DownloadImage>
d__51>(ref awaiter, ref
this);
3927 imageDownloader._sizeInMemoryBytes = <outputTextureRawData>5__11.Length;
3928 imageDownloader.Result = <outputTexture>5__10;
3929 if ((Object)(object)<outputTexture>5__10 != (Object)
null)
3934 if ((Object)(object)imageDownloader.
Material != (Object)
null)
3942 imageDownloader.Material.mainTexture = (Texture)(
object)imageDownloader.
Result;
3946 awaiter = ((UniTask)(ref val)).GetAwaiter();
3947 if (!((Awaiter)(ref awaiter)).IsCompleted)
3949 num = (<>1__state = 10);
3951 ((AsyncUniTaskMethodBuilder)(ref <>t__builder)).AwaitUnsafeOnCompleted<Awaiter, <
DownloadImage>
d__51>(ref awaiter, ref
this);
3956 ((Awaiter)(ref awaiter)).GetResult();
3957 <outputSlice>5__14 = NativeSliceExtensions.Slice<
byte>(<outputSlice>5__14, <mipLevelWidth>5__12 * <mipLevelHeight>5__13 * <bytesPerPixel>5__9);
3958 <mipLevelWidth>5__12 = Mathf.Max(1, Mathf.FloorToInt((
float)<mipLevelWidth>5__12 / 2f));
3959 <mipLevelHeight>5__13 = Mathf.Max(1, Mathf.FloorToInt((
float)<mipLevelHeight>5__13 / 2f));
3963 ((Awaiter)(ref awaiter)).GetResult();
3967 if (num < 0 && <webRequest>5__5 !=
null)
3969 ((IDisposable)<webRequest>5__5).Dispose();
3977 ((IDisposable)<outputBuffer>5__4).Dispose();
3980 <outputBuffer>5__4 =
default(NativeArray<byte>);
3981 <webRequest>5__5 =
null;
3982 <downloadBuffer>5__6 =
default(ReadOnly<byte>);
3983 <outputTexture>5__10 =
null;
3984 <outputTextureRawData>5__11 =
default(NativeArray<byte>);
3985 <outputSlice>5__14 =
default(NativeSlice<byte>);
3989 catch (OperationCanceledException val4)
3991 OperationCanceledException val5 = val4;
3996 catch (UnityWebRequestException val6)
3998 UnityWebRequestException val7 = val6;
4006 <>u__1 =
default(Awaiter);
4007 num = (<>1__state = -1);
4011 <>u__1 =
default(Awaiter);
4012 num = (<>1__state = -1);
4017 <>u__1 =
default(Awaiter);
4018 num = (<>1__state = -1);
4029 UnityWebRequestException val8 = (UnityWebRequestException)<>7__wrap1;
4030 if (((Exception)val8).Message ==
"Unable to write data")
4032 Debug.Log((
object)String.Concat(
"[Image Download] Loading image from URL '", uri.AbsoluteUri,
"' failed because the image was too large."));
4034 imageDownloader.ErrorMessage =
"image was too large";
4036 awaiter = ((UniTask)(ref val)).GetAwaiter();
4037 if (!((Awaiter)(ref awaiter)).IsCompleted)
4039 num = (<>1__state = 12);
4041 ((AsyncUniTaskMethodBuilder)(ref <>t__builder)).AwaitUnsafeOnCompleted<Awaiter, <
DownloadImage>
d__51>(ref awaiter, ref
this);
4046 Debug.Log((
object)String.Concat(
"[Image Download] A web request exception occurred while loading image from URL '", uri.AbsoluteUri,
"'. Exception: ", val8.Error));
4048 imageDownloader.ErrorMessage = val8.Error;
4050 awaiter = ((UniTask)(ref val)).GetAwaiter();
4051 if (!((Awaiter)(ref awaiter)).IsCompleted)
4053 num = (<>1__state = 13);
4055 ((AsyncUniTaskMethodBuilder)(ref <>t__builder)).AwaitUnsafeOnCompleted<Awaiter, <
DownloadImage>
d__51>(ref awaiter, ref
this);
4061 imageDownloader.ErrorMessage =
"Canceled loading image";
4063 awaiter = ((UniTask)(ref val)).GetAwaiter();
4064 if (!((Awaiter)(ref awaiter)).IsCompleted)
4066 num = (<>1__state = 11);
4068 ((AsyncUniTaskMethodBuilder)(ref <>t__builder)).AwaitUnsafeOnCompleted<Awaiter, <
DownloadImage>
d__51>(ref awaiter, ref
this);
4073 ((Awaiter)(ref awaiter)).GetResult();
4076 ((Awaiter)(ref awaiter)).GetResult();
4079 ((Awaiter)(ref awaiter)).GetResult();
4085 catch (Exception val9)
4087 Exception exception = val9;
4089 ((AsyncUniTaskMethodBuilder)(ref <>t__builder)).SetException(exception);
4093 ((AsyncUniTaskMethodBuilder)(ref <>t__builder)).SetResult();
4099 ((AsyncUniTaskMethodBuilder)(ref <>t__builder)).SetStateMachine(stateMachine);
4105 private struct <RunUdonEventOnMainThreadAndRemoveFromQueue>
d__52 : ValueType, IAsyncStateMachine
4107 public int <>1__state;
4111 public ImageDownloader <>4__this;
4135 int num = <>1__state;
4142 SwitchToMainThreadAwaitable val = UniTask.SwitchToMainThread(
default(CancellationToken));
4143 awaiter = ((SwitchToMainThreadAwaitable)(ref val)).GetAwaiter();
4144 if (!((Awaiter)(ref awaiter)).IsCompleted)
4146 num = (<>1__state = 0);
4155 <>u__1 =
default(Awaiter);
4156 num = (<>1__state = -1);
4158 ((Awaiter)(ref awaiter)).GetResult();
4159 imageDownloader.
UdonBehaviour.RunEvent(eventName,
new ValueTuple<string, object>[1] { argument });
4162 catch (Exception val2)
4164 Exception exception = val2;
4166 ((AsyncUniTaskMethodBuilder)(ref <>t__builder)).SetException(exception);
4170 ((AsyncUniTaskMethodBuilder)(ref <>t__builder)).SetResult();
4176 ((AsyncUniTaskMethodBuilder)(ref <>t__builder)).SetStateMachine(stateMachine);
4190 private static float _lastImageRequest;
4192 protected CancellationTokenSource _cancellationTokenSource;
4194 private int _sizeInMemoryBytes;
4196 [field: CompilerGenerated]
4205 [field: CompilerGenerated]
4214 [field: CompilerGenerated]
4223 [field: CompilerGenerated]
4236 if (!((Object)(object)
Result != (Object)
null))
4240 return _sizeInMemoryBytes;
4244 [field: CompilerGenerated]
4253 [field: CompilerGenerated]
4262 [field: CompilerGenerated]
4271 [field: CompilerGenerated]
4280 [field: CompilerGenerated]
4289 [DllImport(
"vrc_image_loader", CallingConvention = 2, EntryPoint =
"load_image")]
4294 return new ImageDownloader(url, material, udonBehaviour, textureInfo);
4302 _cancellationTokenSource =
new CancellationTokenSource();
4321 ErrorMessage =
"Client has too many requests (limit is 1000).";
4329 val =
new Uri(
Url.
Get());
4340 if (!val.IsAbsoluteUri || (val.Scheme != Uri.UriSchemeHttps && val.Scheme != Uri.UriSchemeHttp))
4344 ErrorMessage =
"Images may only be downloaded from HTTP(S) URLs.";
4350 UniTaskExtensions.Forget(
DownloadImage(val, _cancellationTokenSource.Token));
4359 [AsyncStateMachine()]
4368 <
DownloadImage>d__.<>t__builder = AsyncUniTaskMethodBuilder.Create();
4373 ((AsyncUniTaskMethodBuilder)(ref <DownloadImage>d__.<>t__builder)).Start<<
DownloadImage>
d__51>(ref <DownloadImage>d__);
4374 return ((AsyncUniTaskMethodBuilder)(ref <DownloadImage>d__.<>t__builder)).Task;
4377 [AsyncStateMachine()]
4392 return ((AsyncUniTaskMethodBuilder)(ref <RunUdonEventOnMainThreadAndRemoveFromQueue>d__.<>t__builder)).Task;
4399 CancellationTokenSource cancellationTokenSource = _cancellationTokenSource;
4400 if (cancellationTokenSource !=
null)
4402 cancellationTokenSource.Cancel();
4404 CancellationTokenSource cancellationTokenSource2 = _cancellationTokenSource;
4405 if (cancellationTokenSource2 !=
null)
4407 cancellationTokenSource2.Dispose();
4409 _cancellationTokenSource =
null;
4412 UniTaskVoid val = DestroyAsync((Object)(
object)
Result);
4413 ((UniTaskVoid)(ref val)).Forget();
4415 GC.SuppressFinalize((
object)
this);
4416 [AsyncStateMachine()]
4418 static UniTaskVoid DestroyAsync(Object obj)
4423 <<
Dispose>g__DestroyAsync|53_0>d <<Dispose>g__DestroyAsync|53_0>
d =
default(<<
Dispose>g__DestroyAsync|53_0>
d);
4424 <<
Dispose>g__DestroyAsync|53_0>
d.<>t__builder = AsyncUniTaskVoidMethodBuilder.Create();
4425 <<
Dispose>g__DestroyAsync|53_0>d.obj = obj;
4426 <<
Dispose>g__DestroyAsync|53_0>
d.<>1__state = -1;
4427 ((AsyncUniTaskVoidMethodBuilder)(ref <<
Dispose>g__DestroyAsync|53_0>
d.<>t__builder)).Start<<<
Dispose>g__DestroyAsync|53_0>
d>(ref <<
Dispose>g__DestroyAsync|53_0>
d);
4428 return ((AsyncUniTaskVoidMethodBuilder)(ref <<Dispose>g__DestroyAsync|53_0>
d.<>t__builder)).Task;
4434 CancellationTokenSource cancellationTokenSource = _cancellationTokenSource;
4435 if (cancellationTokenSource !=
null)
4437 cancellationTokenSource.Cancel();
4450 ((Object)
this).Finalize();
4454 [AsyncStateMachine()]
4456 internal static UniTask <DownloadImage>
g__SlicedTextureUpload|51_0(
int width,
int height,
int bytesPerPixel, TextureFormat format,
int mipLevel, NativeSlice<byte> outputBuffer, Texture2D outputTexture)
4480 private bool _disposed;
4482 private List<IVRCImageDownload> _imageDownloads =
new List<IVRCImageDownload>();
4484 private static List<IVRCImageDownload> _imageDownloadQueue =
new List<IVRCImageDownload>();
4486 [ExcludeFromUdonWrapper]
4490 [ExcludeFromUdonWrapper]
4491 [field: CompilerGenerated]
4492 public static Func<VRCUrl, Material, IUdonEventReceiver, TextureInfo, IVRCImageDownload>
StartDownload
4501 [ExcludeFromUdonWrapper]
4509 throw new ObjectDisposedException(
"Attempted to use a disposed VRCImageDownloader.");
4513 _imageDownloads.Add(iVRCImageDownload);
4514 return iVRCImageDownload;
4521 Enumerator<IVRCImageDownload> enumerator = _imageDownloads.GetEnumerator();
4524 while (enumerator.MoveNext())
4529 ((IDisposable)current).Dispose();
4535 ((IDisposable)enumerator).Dispose();
4537 _imageDownloads.Clear();
4538 GC.SuppressFinalize((
object)
this);
4546 Debug.LogWarning((
object)
"[Image Download] Leaked a VRCImageDownloader!");
4550 ((Object)
this).Finalize();
4554 [ExcludeFromUdonWrapper]
4557 if (_imageDownloadQueue.Count < 1000)
4559 _imageDownloadQueue.Add(imageDownload);
4565 [ExcludeFromUdonWrapper]
4568 _imageDownloadQueue.Remove(imageDownload);
4571 [ExcludeFromUdonWrapper]
4574 Debug.Log((
object)
"[Image Download] Clearing download queue");
4575 for (
int num = _imageDownloadQueue.Count - 1; num >= 0; num--)
4577 _imageDownloadQueue[num].CancelDownload();
4578 ((IDisposable)_imageDownloadQueue[num]).Dispose();
4580 _imageDownloadQueue.Clear();
4614 AsyncGPUReadbackRequest request = AsyncGPUReadback.Request(src, mipIndex, (Action<AsyncGPUReadbackRequest>)vRCAsyncGPUReadbackRequest.
HandleCallback);
4615 vRCAsyncGPUReadbackRequest.Request = request;
4616 vRCAsyncGPUReadbackRequest.UdonBehaviour = udonBehaviour;
4617 return vRCAsyncGPUReadbackRequest;
4628 AsyncGPUReadbackRequest request = AsyncGPUReadback.Request(src, mipIndex, dstFormat, (Action<AsyncGPUReadbackRequest>)vRCAsyncGPUReadbackRequest.
HandleCallback);
4629 vRCAsyncGPUReadbackRequest.Request = request;
4630 vRCAsyncGPUReadbackRequest.UdonBehaviour = udonBehaviour;
4631 return vRCAsyncGPUReadbackRequest;
4641 AsyncGPUReadbackRequest request = AsyncGPUReadback.Request(src, mipIndex, x, width, y, height, z, depth, (Action<AsyncGPUReadbackRequest>)vRCAsyncGPUReadbackRequest.
HandleCallback);
4642 vRCAsyncGPUReadbackRequest.Request = request;
4643 vRCAsyncGPUReadbackRequest.UdonBehaviour = udonBehaviour;
4644 return vRCAsyncGPUReadbackRequest;
4647 public static VRCAsyncGPUReadbackRequest Request(Texture src,
int mipIndex,
int x,
int width,
int y,
int height,
int z,
int depth, TextureFormat dstFormat, IUdonEventReceiver udonBehaviour)
4655 AsyncGPUReadbackRequest request = AsyncGPUReadback.Request(src, mipIndex, x, width, y, height, z, depth, dstFormat, (Action<AsyncGPUReadbackRequest>)vRCAsyncGPUReadbackRequest.
HandleCallback);
4656 vRCAsyncGPUReadbackRequest.Request = request;
4657 vRCAsyncGPUReadbackRequest.UdonBehaviour = udonBehaviour;
4658 return vRCAsyncGPUReadbackRequest;
4690 if (udonBehaviour !=
null)
4692 udonBehaviour.RunEvent<
VRCAsyncGPUReadbackRequest>(
"_onAsyncGpuReadbackComplete",
new ValueTuple<string, VRCAsyncGPUReadbackRequest>(
"request",
this));
4698 return TryGetData<byte>(data, layer);
4703 return TryGetData<float>(data, layer);
4708 return TryGetData<Color32>(data, layer);
4713 return TryGetData<Color>(data, layer);
4731 Debug.LogError((
object)String.Format(
"[VRCGraphics_AsyncGPUReadback] TryGetData Failed: Requested layer index {0} is invalid. Data has {1} layers.", (
object)layer, (
object)
layerCount));
4736 Debug.LogError((
object)
"[VRCGraphics_AsyncGPUReadback] TryGetData Failed: Provided data array is null.");
4739 if (data.Length <
layerDataSize / UnsafeUtility.SizeOf<T>())
4741 Debug.LogError((
object)String.Format(
"[VRCGraphics_AsyncGPUReadback] TryGetData Failed: Provided array of length {0} is too small. Expected array with length of at least {1}", (
object)data.Length, (
object)(
layerDataSize / UnsafeUtility.SizeOf<T>())));
4744 NativeArray<T> data2 = ((AsyncGPUReadbackRequest)(ref
Request)).GetData<T>(0);
4745 NativeArray<T>.Copy(data2, data, data2.Length);
4779 public readonly
struct Info : ValueType
4792 private static Func<VRCPlayerApi, IEnumerable<string>> _getKeys;
4794 private static Func<VRCPlayerApi, string, bool> _hasKey;
4796 private static Func<VRCPlayerApi, string, Type> _getType;
4798 private static Action<string, bool> _setBool;
4800 private static Func<VRCPlayerApi, string, bool> _getBool;
4802 private static Action<string, sbyte> _setSByte;
4804 private static Func<VRCPlayerApi, string, sbyte> _getSByte;
4806 private static Action<string, byte> _setByte;
4808 private static Func<VRCPlayerApi, string, byte> _getByte;
4810 private static Action<string, byte[]> _setBytes;
4812 private static Func<VRCPlayerApi, string, byte[]> _getBytes;
4814 private static Action<string, string> _setString;
4816 private static Func<VRCPlayerApi, string, string> _getString;
4818 private static Action<string, short> _setShort;
4820 private static Func<VRCPlayerApi, string, short> _getShort;
4822 private static Action<string, ushort> _setUShort;
4824 private static Func<VRCPlayerApi, string, ushort> _getUShort;
4826 private static Action<string, int> _setInt;
4828 private static Func<VRCPlayerApi, string, int> _getInt;
4830 private static Action<string, uint> _setUInt;
4832 private static Func<VRCPlayerApi, string, uint> _getUInt;
4834 private static Action<string, long> _setLong;
4836 private static Func<VRCPlayerApi, string, long> _getLong;
4838 private static Action<string, ulong> _setULong;
4840 private static Func<VRCPlayerApi, string, ulong> _getULong;
4842 private static Action<string, float> _setFloat;
4844 private static Func<VRCPlayerApi, string, float> _getFloat;
4846 private static Action<string, double> _setDouble;
4848 private static Func<VRCPlayerApi, string, double> _getDouble;
4850 private static Action<string, Vector2> _setVector2;
4852 private static Func<VRCPlayerApi, string, Vector2> _getVector2;
4854 private static Action<string, Vector3> _setVector3;
4856 private static Func<VRCPlayerApi, string, Vector3> _getVector3;
4858 private static Action<string, Vector4> _setVector4;
4860 private static Func<VRCPlayerApi, string, Vector4> _getVector4;
4862 private static Action<string, Quaternion> _setQuaternion;
4864 private static Func<VRCPlayerApi, string, Quaternion> _getQuaternion;
4866 private static Action<string, Color> _setColor;
4868 private static Func<VRCPlayerApi, string, Color> _getColor;
4870 private static Action<string, Color32> _setColor32;
4872 private static Func<VRCPlayerApi, string, Color32> _getColor32;
4876 return _hasKey?.Invoke(player, key) ??
false;
4881 return _getType?.Invoke(player, key);
4887 return t != (Type)
null;
4892 return GetType(player, key) == t;
4897 _setString?.Invoke(key, value);
4902 return _getString?.Invoke(player, key);
4907 if (
GetType(player, key) == typeof(String))
4916 public static void SetBool(
string key,
bool value)
4918 _setBool?.Invoke(key, value);
4923 return _getBool?.Invoke(player, key) ??
false;
4928 if (
GetType(player, key) == typeof(Boolean))
4939 _setSByte?.Invoke(key, value);
4944 return _getSByte?.Invoke(player, key) ?? 0;
4949 if (
GetType(player, key) == typeof(SByte))
4958 public static void SetByte(
string key,
byte value)
4960 _setByte?.Invoke(key, value);
4965 return _getByte?.Invoke(player, key) ?? 0;
4970 if (
GetType(player, key) == typeof(Byte))
4981 _setBytes?.Invoke(key, value);
4986 return _getBytes?.Invoke(player, key);
4991 if (
GetType(player, key) == typeof(
byte[]))
5002 _setShort?.Invoke(key, value);
5007 return _getShort?.Invoke(player, key) ?? 0;
5012 if (
GetType(player, key) == typeof(Int16))
5023 _setUShort?.Invoke(key, value);
5028 return _getUShort?.Invoke(player, key) ?? 0;
5033 if (
GetType(player, key) == typeof(UInt16))
5042 public static void SetInt(
string key,
int value)
5044 _setInt?.Invoke(key, value);
5049 return _getInt?.Invoke(player, key) ?? 0;
5054 if (
GetType(player, key) == typeof(Int32))
5056 value =
GetInt(player, key);
5063 public static void SetUInt(
string key, uint value)
5065 _setUInt?.Invoke(key, value);
5070 return _getUInt?.Invoke(player, key) ?? 0;
5075 if (
GetType(player, key) == typeof(UInt32))
5084 public static void SetLong(
string key,
long value)
5086 _setLong?.Invoke(key, value);
5091 return _getLong?.Invoke(player, key) ?? 0;
5096 if (
GetType(player, key) == typeof(Int64))
5107 _setULong?.Invoke(key, value);
5112 return _getULong?.Invoke(player, key) ?? 0;
5117 if (
GetType(player, key) == typeof(UInt64))
5128 _setFloat?.Invoke(key, value);
5133 return _getFloat?.Invoke(player, key) ?? 0f;
5138 _setDouble?.Invoke(key, value);
5143 return _getDouble?.Invoke(player, key) ?? 0.0;
5148 if (
GetType(player, key) == typeof(Double))
5159 if (
GetType(player, key) == typeof(Single))
5171 _setQuaternion?.Invoke(key, value);
5179 return (Quaternion)(((??)_getQuaternion?.Invoke(player, key)) ??
default(Quaternion));
5187 if (
GetType(player, key) == typeof(Quaternion))
5192 value =
default(Quaternion);
5199 _setVector4?.Invoke(key, value);
5207 return (Vector4)(((??)_getVector4?.Invoke(player, key)) ??
default(Vector4));
5215 if (
GetType(player, key) == typeof(Vector4))
5220 value =
default(Vector4);
5227 _setVector3?.Invoke(key, value);
5235 return (Vector3)(((??)_getVector3?.Invoke(player, key)) ??
default(Vector3));
5243 if (
GetType(player, key) == typeof(Vector3))
5248 value =
default(Vector3);
5255 _setVector2?.Invoke(key, value);
5263 return (Vector2)(((??)_getVector2?.Invoke(player, key)) ??
default(Vector2));
5271 if (
GetType(player, key) == typeof(Vector2))
5276 value =
default(Vector2);
5283 _setColor?.Invoke(key, value);
5291 return (Color)(((??)_getColor?.Invoke(player, key)) ??
default(Color));
5299 if (
GetType(player, key) == typeof(Color))
5304 value =
default(Color);
5311 _setColor32?.Invoke(key, value);
5319 return (Color32)(((??)_getColor32?.Invoke(player, key)) ??
default(Color32));
5327 if (
GetType(player, key) == typeof(Color32))
5332 value =
default(Color32);
5338 return _getKeys?.Invoke(player) ?? Enumerable.Empty<
string>();
5355 Action<VRCNetworkBehaviour> val2;
5359 Action<VRCNetworkBehaviour> val3 = (Action<VRCNetworkBehaviour>)(
object)Delegate.Combine((Delegate)(object)val2, (Delegate)(object)value);
5362 while (val != val2);
5368 Action<VRCNetworkBehaviour> val2;
5372 Action<VRCNetworkBehaviour> val3 = (Action<VRCNetworkBehaviour>)(
object)Delegate.Remove((Delegate)(object)val2, (Delegate)(object)value);
5375 while (val != val2);
5379 [ExcludeFromUdonWrapper]
5382 [ExcludeFromUdonWrapper]
5400 [DefaultMember(
"Item")]
5401 public class DataDictionary : Object, ICollection<KeyValuePair<DataToken, DataToken>>, IEnumerable<KeyValuePair<DataToken, DataToken>>, IEnumerable
5403 internal Dictionary<DataToken, DataToken> _values =
new Dictionary<DataToken, DataToken>();
5417 public virtual int Count => _values.Count;
5423 [ExcludeFromUdonWrapper]
5424 [field: CompilerGenerated]
5454 if (!
keysDirty && !_values.ContainsKey(key))
5460 throw new ArgumentNullException(
"key",
"Key of dictionary cannot be null");
5462 _values[key] = value;
5475 if (value.TokenType != type)
5477 value =
new DataToken(
DataError.TypeMismatch, String.Format(
"Expected TokenType {0} but found {1} instead", (
object)type, (
object)value.TokenType));
5489 value =
GetValue(key, out var success);
5495 if (_values.ContainsKey(key))
5498 return _values[key];
5514 for (
int i = 0; i < keys.
Count; i++)
5516 dataDictionary[keys[i]] = _values[keys[i]];
5518 return dataDictionary;
5532 for (
int i = 0; i < keys.
Count; i++)
5537 dataDictionary[keys[i]] = _values[keys[i]].DataDictionary.
DeepClone();
5540 dataDictionary[keys[i]] = _values[keys[i]].DataList.
DeepClone();
5543 dataDictionary[keys[i]] = _values[keys[i]];
5547 return dataDictionary;
5569 return _values.Remove(key);
5583 _values.Remove(key);
5593 return _values.ContainsKey(key);
5603 return _values.ContainsValue(value);
5645 [ExcludeFromUdonWrapper]
5650 return (IEnumerator<KeyValuePair<DataToken, DataToken>>)(object)_values.GetEnumerator();
5653 [ExcludeFromUdonWrapper]
5654 IEnumerator IEnumerable.GetEnumerator()
5659 [ExcludeFromUdonWrapper]
5660 public void Add(KeyValuePair<DataToken, DataToken> item)
5663 if (item.Key.IsNull)
5665 throw new ArgumentNullException(
"item",
"Key of dictionary cannot be null");
5669 _values.Add(item.Key, item.Value);
5685 throw new ArgumentNullException(
"key",
"Key of dictionary cannot be null");
5689 _values.Add(key, value);
5692 [ExcludeFromUdonWrapper]
5693 public bool Contains(KeyValuePair<DataToken, DataToken> item)
5696 if (!_values.ContainsKey(item.Key))
5709 [ExcludeFromUdonWrapper]
5710 public void CopyTo(KeyValuePair<DataToken, DataToken>[] array,
int arrayIndex)
5713 throw new NotImplementedException();
5716 [ExcludeFromUdonWrapper]
5717 public bool Remove(KeyValuePair<DataToken, DataToken> item)
5728 [DefaultMember(
"Item")]
5729 public class DataList : Object, ICollection<DataToken>, IEnumerable<DataToken>, IEnumerable
5732 internal List<DataToken> _values =
new List<DataToken>();
5740 return _values.Capacity;
5744 _values.Capacity = value;
5748 [ExcludeFromUdonWrapper]
5749 [field: CompilerGenerated]
5775 for (
int i = 0; i < array.Length; i++)
5777 _values.Add(array[i]);
5783 IEnumerator<DataToken> enumerator = values.GetEnumerator();
5786 while (((IEnumerator)enumerator).MoveNext())
5789 _values.Add(current);
5794 if (enumerator !=
null)
5796 ((IDisposable)enumerator).Dispose();
5808 _values.TrimExcess();
5813 _values[index] = value;
5823 if (value.TokenType != type)
5825 value =
new DataToken(
DataError.TypeMismatch, String.Format(
"Expected TokenType {0} but found {1} instead", (
object)type, (
object)value.TokenType));
5833 value =
GetValue(index, out var success);
5839 if (index < 0 || index >=
Count)
5845 return _values[index];
5850 _values.Insert(index, value);
5855 _values.InsertRange(index, (IEnumerable<DataToken>)(
object)input._values);
5861 return new DataList(_values.GetRange(index, count));
5878 for (
int i = 0; i < _values.Count; i++)
5889 dataList.
Add(_values[i]);
5899 return _values.ToArray();
5910 _values.AddRange((IEnumerable<DataToken>)(
object)list._values);
5916 IEnumerator<DataToken> enumerator = values.GetEnumerator();
5919 while (((IEnumerator)enumerator).MoveNext())
5927 if (enumerator !=
null)
5929 ((IDisposable)enumerator).Dispose();
5937 return _values.Contains(value);
5943 return _values.IndexOf(value);
5949 return _values.IndexOf(item, index);
5955 return _values.IndexOf(item, index, count);
5961 return _values.LastIndexOf(item);
5967 return _values.LastIndexOf(item, index);
5973 return _values.LastIndexOf(item, index, count);
5979 return _values.Remove(value);
5985 bool result =
false;
6000 _values.RemoveAt(index);
6005 _values.RemoveRange(index, count);
6015 _values.Reverse(index, count);
6024 public void Sort(
int index,
int count)
6027 _values.Sort(index, count, (IComparer<DataToken>)
null);
6033 return _values.BinarySearch(token);
6039 return _values.BinarySearch(index, count, token, (IComparer<DataToken>)
null);
6056 [ExcludeFromUdonWrapper]
6059 _values.CopyTo(array, arrayIndex);
6062 [ExcludeFromUdonWrapper]
6067 return (IEnumerator<DataToken>)(object)_values.GetEnumerator();
6070 [ExcludeFromUdonWrapper]
6071 IEnumerator IEnumerable.GetEnumerator()
6108 public struct DataToken : ValueType, IComparable, IComparable<DataToken>, IEquatable<DataToken>, IEquatable<string>, IEquatable<object>, IEquatable<bool>, IEquatable<sbyte>, IEquatable<byte>, IEquatable<short>, IEquatable<ushort>, IEquatable<int>, IEquatable<uint>, IEquatable<long>, IEquatable<ulong>, IEquatable<float>, IEquatable<double>, IEquatable<DataList>, IEquatable<DataDictionary>, IEquatable<DataError>
6111 private string _string;
6114 private object _reference;
6117 private bool _boolean;
6120 private sbyte _sbyte;
6126 private short _short;
6129 private ushort _ushort;
6141 private ulong _ulong;
6144 private float _float;
6147 private double _double;
6169 throw new InvalidOperationException(
String.Format(
"Attempted to access {0} token as {1}", (
object)_tokenType, (
object)
TokenType.Boolean));
6182 throw new InvalidOperationException(
String.Format(
"Attempted to access {0} token as {1}", (
object)_tokenType, (
object)
TokenType.SByte));
6195 throw new InvalidOperationException(
String.Format(
"Attempted to access {0} token as {1}", (
object)_tokenType, (
object)
TokenType.Byte));
6216 throw new InvalidOperationException(
String.Format(
"Attempted to access {0} token as {1}", (
object)_tokenType, (
object)
TokenType.Short));
6233 throw new InvalidOperationException(
String.Format(
"Attempted to access {0} token as {1}", (
object)_tokenType, (
object)
TokenType.UShort));
6262 throw new InvalidOperationException(
String.Format(
"Attempted to access {0} token as {1}", (
object)_tokenType, (
object)
TokenType.Int));
6283 throw new InvalidOperationException(
String.Format(
"Attempted to access {0} token as {1}", (
object)_tokenType, (
object)
TokenType.UInt));
6316 throw new InvalidOperationException(
String.Format(
"Attempted to access {0} token as {1}", (
object)_tokenType, (
object)
TokenType.Long));
6341 throw new InvalidOperationException(
String.Format(
"Attempted to access {0} token as {1}", (
object)_tokenType, (
object)
TokenType.ULong));
6368 return (
int)_ushort;
6386 throw new InvalidOperationException(
String.Format(
"Attempted to access {0} token as {1}", (
object)_tokenType, (
object)
TokenType.Float));
6413 return (
int)_ushort;
6435 throw new InvalidOperationException(
String.Format(
"Attempted to access {0} token as {1}", (
object)_tokenType, (
object)
TokenType.Double));
6462 return (
int)_ushort;
6484 throw new InvalidOperationException(
String.Format(
"Attempted to access {0} token as {1}", (
object)_tokenType, (
object)
TokenType.Double));
6495 throw new InvalidOperationException(
String.Format(
"Attempted to access {0} token as {1}", (
object)_tokenType, (
object)
TokenType.String));
6508 throw new InvalidOperationException(
String.Format(
"Attempted to access {0} token as {1}", (
object)_tokenType, (
object)
TokenType.DataList));
6519 if (_tokenType !=
TokenType.DataDictionary)
6521 throw new InvalidOperationException(
String.Format(
"Attempted to access {0} token as {1}", (
object)_tokenType, (
object)
TokenType.DataDictionary));
6534 throw new InvalidOperationException(
String.Format(
"Attempted to access {0} token as {1}", (
object)_tokenType, (
object)
TokenType.Reference));
6554 TokenType.SByte =>
true,
6555 TokenType.Byte =>
true,
6556 TokenType.Short =>
true,
6557 TokenType.UShort =>
true,
6558 TokenType.Int =>
true,
6559 TokenType.UInt =>
true,
6560 TokenType.Long =>
true,
6561 TokenType.ULong =>
true,
6562 TokenType.Float =>
true,
6563 TokenType.Double =>
true,
6598 throw new ArgumentOutOfRangeException();
6719 _reference = reference;
6726 _reference = reference;
6741 _string = errorMessage;
6909 return ((
Boolean)(ref
boolean)).ToString();
6913 sbyte sByte =
SByte;
6914 return ((
SByte)(ref sByte)).ToString();
6919 return ((
Byte)(ref @
byte)).ToString();
6923 short @
short =
Short;
6924 return ((Int16)(ref @
short)).ToString();
6929 return ((UInt16)(ref uShort)).ToString();
6934 return ((Int32)(ref @
int)).ToString();
6939 return ((UInt32)(ref uInt)).ToString();
6944 return ((Int64)(ref @
long)).ToString();
6948 ulong uLong =
ULong;
6949 return ((UInt64)(ref uLong)).ToString();
6953 float @
float =
Float;
6954 return ((Single)(ref @
float)).ToString(
"G", (IFormatProvider)(
object)CultureInfo.InvariantCulture);
6959 return ((
Double)(ref @
double)).ToString(
"G", (IFormatProvider)(
object)CultureInfo.InvariantCulture);
6968 return ((Object)
DataList).ToString();
6984 return ((Object)
Error).ToString();
6988 return String.Format(
"DataToken({0})", (
object)_tokenType);
6998 return ((Object)
TokenType.Null).GetHashCode();
7000 return ((
Boolean)(ref _boolean)).GetHashCode();
7002 return ((
SByte)(ref _sbyte)).GetHashCode();
7004 return ((
Byte)(ref _byte)).GetHashCode();
7006 return ((Int16)(ref _short)).GetHashCode();
7008 return ((UInt16)(ref _ushort)).GetHashCode();
7010 return ((Int32)(ref _int)).GetHashCode();
7012 return ((UInt32)(ref _uint)).GetHashCode();
7014 return ((Int64)(ref _long)).GetHashCode();
7016 return ((UInt64)(ref _ulong)).GetHashCode();
7018 return ((Single)(ref _float)).GetHashCode();
7020 return ((
Double)(ref _double)).GetHashCode();
7022 if (_string ==
null)
7024 return ((Object)
TokenType.Null).GetHashCode();
7026 return ((Object)_string).GetHashCode();
7030 if (_reference ==
null)
7032 return ((Object)
TokenType.Null).GetHashCode();
7034 return _reference.GetHashCode();
7036 return ((Object)_error).GetHashCode();
7038 throw new NotImplementedException(
String.Format(
"GetHashCode not implemented for TokenType {0}", (
object)_tokenType));
7064 return ((
Byte)(ref @
byte)).CompareTo(other.
Byte);
7068 short @
short =
Short;
7069 return ((Int16)(ref @
short)).CompareTo(other.
Short);
7074 return ((UInt16)(ref uShort)).CompareTo(other.
UShort);
7078 return ((Int32)(ref num)).CompareTo(other.
Int);
7082 return ((UInt32)(ref uInt)).CompareTo(other.
UInt);
7087 return ((Int64)(ref @
long)).CompareTo(other.
Long);
7091 ulong uLong =
ULong;
7092 return ((UInt64)(ref uLong)).CompareTo(other.
ULong);
7096 float @
float =
Float;
7097 return ((Single)(ref @
float)).CompareTo(other.
Float);
7101 return ((
Double)(ref @
double)).CompareTo(other.
Double);
7105 return ((
Double)(ref @
double)).CompareTo(other.
Double);
7112 return String.Compare(_string, other._string, (StringComparison)2);
7120 return ((Enum)
Error).CompareTo((
object)other.
Error);
7128 return lhs.Equals(rhs);
7133 return !lhs.Equals(rhs);
7144 TokenType.Null =>
true,
7145 TokenType.Boolean => ((
Boolean)(ref _boolean)).
Equals(other._boolean),
7146 TokenType.SByte => ((
SByte)(ref _sbyte)).
Equals(other._sbyte),
7147 TokenType.Byte => ((
Byte)(ref _byte)).
Equals(other._byte),
7148 TokenType.Short => ((Int16)(ref _short)).
Equals(other._short),
7149 TokenType.UShort => ((UInt16)(ref _ushort)).
Equals(other._ushort),
7150 TokenType.Int => ((Int32)(ref _int)).
Equals(other._int),
7151 TokenType.UInt => ((UInt32)(ref _uint)).
Equals(other._uint),
7152 TokenType.Long => ((Int64)(ref _long)).
Equals(other._long),
7153 TokenType.ULong => ((UInt64)(ref _ulong)).
Equals(other._ulong),
7154 TokenType.Float => ((Single)(ref _float)).
Equals(other._float),
7155 TokenType.Double => ((
Double)(ref _double)).
Equals(other._double),
7156 TokenType.String => _string == other._string,
7157 TokenType.DataList => _reference == other._reference,
7158 TokenType.DataDictionary => _reference == other._reference,
7159 TokenType.Reference => _reference == other._reference,
7160 TokenType.Error => _error == other._error,
7167 return ((Object)lhs).Equals(rhs);
7172 return !((Object)lhs).Equals(rhs);
7177 return ((Object)rhs).Equals(lhs);
7182 return !((Object)rhs).Equals(lhs);
7197 return _reference.Equals(obj);
7208 return lhs.Equals(rhs);
7213 return !lhs.Equals(rhs);
7218 return rhs.Equals(lhs);
7223 return !rhs.Equals(lhs);
7237 return lhs.Equals(rhs);
7242 return !lhs.Equals(rhs);
7247 return rhs.Equals(lhs);
7252 return !rhs.Equals(lhs);
7275 return lhs.Equals(rhs);
7280 return !lhs.Equals(rhs);
7285 return rhs.Equals(lhs);
7290 return !rhs.Equals(lhs);
7304 return lhs.Equals(rhs);
7309 return !lhs.Equals(rhs);
7314 return rhs.Equals(lhs);
7319 return !rhs.Equals(lhs);
7326 return SByte == other;
7330 return Double == (double)other;
7337 return lhs.Equals(rhs);
7342 return !lhs.Equals(rhs);
7347 return rhs.Equals(lhs);
7352 return !rhs.Equals(lhs);
7359 return Byte == other;
7363 return Double == (double)(
int)other;
7370 return lhs.Equals(rhs);
7375 return !lhs.Equals(rhs);
7380 return rhs.Equals(lhs);
7385 return !rhs.Equals(lhs);
7392 return Short == other;
7396 return Double == (double)other;
7403 return lhs.Equals(rhs);
7408 return !lhs.Equals(rhs);
7413 return rhs.Equals(lhs);
7418 return !rhs.Equals(lhs);
7429 return Double == (double)(
int)other;
7436 return lhs.Equals(rhs);
7441 return !lhs.Equals(rhs);
7446 return rhs.Equals(lhs);
7451 return !rhs.Equals(lhs);
7458 return Int == other;
7462 return Double == (double)other;
7469 return lhs.Equals(rhs);
7474 return !lhs.Equals(rhs);
7479 return rhs.Equals(lhs);
7484 return !rhs.Equals(lhs);
7491 return UInt == other;
7495 return Double == (double)other;
7502 return lhs.Equals(rhs);
7507 return !lhs.Equals(rhs);
7512 return rhs.Equals(lhs);
7517 return !rhs.Equals(lhs);
7524 return ULong == other;
7528 return Double == (double)other;
7535 return lhs.Equals(rhs);
7540 return !lhs.Equals(rhs);
7545 return rhs.Equals(lhs);
7550 return !rhs.Equals(lhs);
7557 return Long == other;
7561 return Double == (double)other;
7568 return lhs.Equals(rhs);
7573 return !lhs.Equals(rhs);
7578 return rhs.Equals(lhs);
7583 return !rhs.Equals(lhs);
7590 return Float == other;
7594 return Double == (double)other;
7601 return lhs.Equals(rhs);
7606 return !lhs.Equals(rhs);
7611 return rhs.Equals(lhs);
7616 return !rhs.Equals(lhs);
7634 return lhs.Equals(rhs);
7639 return !lhs.Equals(rhs);
7644 return rhs.Equals(lhs);
7649 return !rhs.Equals(lhs);
7656 return Error == other;
7668 throw new InvalidOperationException(
String.Format(
"Attempted to bitcast from {0} token", (
object)_tokenType));
7671 dataToken._tokenType = targetType;
7676 result._boolean = _boolean;
7680 result._sbyte = _sbyte;
7684 result._short = _short;
7692 result._long = _long;
7695 result._float = _float;
7698 result._double = _double;
7701 throw new InvalidOperationException(
String.Format(
"Attempted to bitcast to {0} token", (
object)_tokenType));
7706 [ExcludeFromUdonWrapper]
7709 info.AddValue(
"_type", (
object)_tokenType);
7713 info.AddValue(
"_boolean", _boolean);
7716 info.AddValue(
"_sbyte", _sbyte);
7719 info.AddValue(
"_byte", _byte);
7722 info.AddValue(
"_short", _short);
7725 info.AddValue(
"_ushort", _ushort);
7728 info.AddValue(
"_int", _int);
7731 info.AddValue(
"_uint", _uint);
7734 info.AddValue(
"_long", _long);
7737 info.AddValue(
"_ulong", _ulong);
7740 info.AddValue(
"_float", _float);
7743 info.AddValue(
"_double", _double);
7746 info.AddValue(
"_string", (
object)_string);
7749 info.AddValue(
"_reference", _reference);
7752 info.AddValue(
"_reference", _reference);
7755 info.AddValue(
"_reference", _reference);
7758 info.AddValue(
"_error", (
object)_error);
7763 public DataToken(SerializationInfo info, StreamingContext context)
7794 _boolean = (byte)(
int)(
Boolean)info.GetValue(
"_boolean", typeof(
Boolean)) != 0;
7797 _sbyte = (sbyte)(
int)(
SByte)info.GetValue(
"_sbyte", typeof(
SByte));
7800 _byte = (byte)(
int)(
Byte)info.GetValue(
"_byte", typeof(
Byte));
7803 _short = (short)(
int)(Int16)info.GetValue(
"_short", typeof(Int16));
7806 _ushort = (ushort)(
int)(UInt16)info.GetValue(
"_ushort", typeof(UInt16));
7809 _int = (int)(Int32)info.GetValue(
"_int", typeof(Int32));
7812 _uint = (uint)(
int)(UInt32)info.GetValue(
"_uint", typeof(UInt32));
7815 _long = (long)(Int64)info.GetValue(
"_long", typeof(Int64));
7818 _ulong = (ulong)(
long)(UInt64)info.GetValue(
"_ulong", typeof(UInt64));
7821 _float = (float)(Single)info.GetValue(
"_float", typeof(Single));
7824 _double = (double)(
Double)info.GetValue(
"_double", typeof(
Double));
7827 _string = (string)(
String)info.GetValue(
"_string", typeof(
String));
7830 _reference = info.GetValue(
"_reference", typeof(Object));
7833 _reference = info.GetValue(
"_reference", typeof(Object));
7836 _reference = info.GetValue(
"_reference", typeof(Object));
7839 _reference = info.GetValue(
"_error", typeof(
DataError));
7846 private string _source;
7848 private Dictionary<DataToken, ValueTuple<JsonType, int>> _lazyValues =
new Dictionary<DataToken, ValueTuple<JsonType, int>>();
7850 public override int Count => _lazyValues.Count + _values.Count;
7859 if (_lazyValues.Remove(key))
7863 base.SetValue(key, value);
7870 if (!_lazyValues.ContainsKey(key))
7872 return base.GetValue(key, out success);
7874 if (String.IsNullOrEmpty(_source))
7880 bool num =
VRCJson.
TryParseToken(_source, _lazyValues[key].Item1, _lazyValues[key].Item2, out result);
7881 _lazyValues.Remove(key);
7882 _values.Add(key, result);
7894 _lazyValues.Clear();
7900 if (_lazyValues.ContainsKey(key))
7904 return base.ContainsKey(key);
7909 if (_lazyValues.Remove(key))
7913 return base.Remove(key);
7924 if (_lazyValues.Count == 0)
7928 Enumerator<DataToken, ValueTuple<JsonType, int>> enumerator = _lazyValues.GetEnumerator();
7931 while (enumerator.MoveNext())
7933 KeyValuePair<DataToken, ValueTuple<JsonType, int>> current = enumerator.Current;
7936 _values[current.Key] = result;
7942 ((IDisposable)enumerator).Dispose();
7944 _lazyValues.Clear();
7962 if (_lazyValues.ContainsKey(key))
7964 throw new ArgumentException(String.Format(
"Key {0} already exists in the dictionary", (
object)key),
"key");
7966 base.Add(key, value);
7972 _lazyValues.Add(key,
new ValueTuple<JsonType, int>(type, index));
7977 private List<ValueTuple<JsonType, string>> _lazyValues =
new List<ValueTuple<JsonType, string>>();
7988 if (index < 0 || index >= _values.Count)
7995 if (_lazyValues ==
null || index > _lazyValues.Count || String.IsNullOrEmpty(_lazyValues[index].Item2))
7998 return _values[index];
8000 success =
VRCJson.
TryParseToken(_lazyValues[index].Item2, _lazyValues[index].Item1, 0, out var result);
8005 _values[index] = result;
8009 return _values[index];
8015 _values.Insert(index, value);
8016 _lazyValues.Insert(index,
new ValueTuple<JsonType, string>(
JsonType.Invalid, String.Empty));
8021 _lazyValues.InsertRange(index, (IEnumerable<ValueTuple<JsonType, string>>)(
object)
new ValueTuple<JsonType, string>[input.
Count]);
8022 _values.InsertRange(index, (IEnumerable<DataToken>)(
object)input._values);
8029 _lazyValues.Add(
new ValueTuple<JsonType, string>(
JsonType.Invalid, String.Empty));
8034 base.RemoveAt(index);
8035 _lazyValues.RemoveAt(index);
8040 _lazyValues.Clear();
8046 _lazyValues.RemoveRange(index, count);
8047 _values.RemoveRange(index, count);
8052 _lazyValues.Reverse();
8056 public override void Reverse(
int index,
int count)
8058 _lazyValues.Reverse(index, count);
8059 _values.Reverse(index, count);
8067 for (
int i = startIndex; i < stopIndex; i++)
8071 _values[i] = result;
8080 _lazyValues.Add(
new ValueTuple<JsonType, string>(type, source));
8087 _lazyValues[index] =
new ValueTuple<JsonType, string>(
JsonType.Invalid, (
string)
null);
8151 if (String.IsNullOrEmpty(source))
8153 result =
new DataToken(
DataError.UnableToParse,
"Unable to Deserialize from Json: string was null or empty");
8157 for (i = 0; i < source.Length && source[i] ==
'\ufeff'; i++)
8170 result =
new DataToken(
DataError.TypeUnsupported, String.Format(
"Unable to Deserialize from Json: Root object must be a list or dictionary, was {0} instead", (
object)result2));
8201 StringBuilder val =
new StringBuilder();
8206 result = ((Object)val).ToString();
8218 result = ((Object)val).ToString();
8227 result =
new DataToken(
DataError.TypeUnsupported, String.Format(
"Unable to serialize to Json: Root object must be a list or dictionary, was {0} instead", (
object)input.
TokenType));
8235 error =
new DataToken(
DataError.ValueUnsupported,
"Unable to serialize to JSON: Recursive containers found");
8242 builder.Append(
"{\n");
8247 builder.Append(
"{");
8251 for (
int i = 0; i < keys.
Count; i++)
8255 error =
new DataToken(
DataError.TypeUnsupported, String.Format(
"Unable to serialize to JSON: {0} {1} unsupported key type", (
object)keys[i].TokenType, (
object)((Object)keys[i]).ToString()));
8262 builder.Append(
",\n");
8267 builder.Append(
", ");
8271 if (!dataDictionary.
TryGetValue(keys[i], out var value))
8275 builder.Append(
'"');
8276 builder.Append(keys[i].String);
8277 builder.Append(
"\": ");
8278 switch (value.TokenType)
8281 if (!
SerializeObject(value.DataDictionary, jsonExportType, builder, indent, out error))
8287 if (!
SerializeArray(value.DataList, jsonExportType, builder, indent, out error))
8293 builder.Append(
'"');
8294 builder.Append(
EscapeString(((Object)value).ToString()));
8295 builder.Append(
'"');
8307 if (Double.IsNaN(value.Number) || Double.IsInfinity(value.Number))
8309 error =
new DataToken(
DataError.ValueUnsupported, String.Concat(
"Unable to serialize to JSON: ", ((Object)keys[i]).ToString(),
" contains an unsupported NaN or Infinity value"));
8312 builder.Append(((Object)value).ToString());
8315 builder.Append(value.Boolean ?
"true" :
"false");
8318 builder.Append(
"null");
8321 error =
new DataToken(
DataError.TypeUnsupported, String.Format(
"Unable to serialize to JSON: {0} contains an unsupported type {1}", (
object)((Object)keys[i]).ToString(), (
object)value.TokenType));
8328 builder.Append(
"\n");
8330 builder.Append(
"}");
8334 builder.Append(
"}");
8345 error =
new DataToken(
DataError.ValueUnsupported,
"Unable to serialize to JSON: Recursive containers found");
8352 builder.Append(
"[\n");
8357 builder.Append(
"[");
8359 for (
int i = 0; i < dataList.
Count; i++)
8365 builder.Append(
",\n");
8370 builder.Append(
", ");
8377 switch (value.TokenType)
8381 if (!
SerializeObject(value.DataDictionary, jsonExportType, builder, indent, out var error2))
8390 if (!
SerializeArray(value.DataList, jsonExportType, builder, indent, out var error3))
8398 builder.Append(
'"');
8399 builder.Append(
EscapeString(((Object)value).ToString()));
8400 builder.Append(
'"');
8412 if (Double.IsNaN(value.Number) || Double.IsInfinity(value.Number))
8414 error =
new DataToken(
DataError.ValueUnsupported, String.Format(
"Unable to serialize to JSON: index {0} contains an unsupported NaN or Infinity value", (
object)i));
8417 builder.Append(((Object)value).ToString());
8420 builder.Append(value.Boolean ?
"true" :
"false");
8423 builder.Append(
"null");
8426 error =
new DataToken(
DataError.TypeUnsupported, String.Format(
"Unable to serialize to JSON: index {0} unsupported type {1}", (
object)i, (
object)value.TokenType));
8433 builder.Append(
"\n");
8435 builder.Append(
"]");
8439 builder.Append(
"]");
8448 for (
int i = 0; i < indent; i++)
8450 builder.Append(
"\t");
8483 while (index < source.Length)
8486 if (source[index] ==
'}')
8490 result = jsonDictionary;
8493 result =
new DataToken(
DataError.UnableToParse, String.Format(
"Unable to Deserialize from Json: Found unexpected end of object while looking for {0}", (
object)parseState));
8503 result =
new DataToken(
DataError.UnableToParse, String.Format(
"Unable to Deserialize from Json: Unable to identify type at character {0}", (
object)index));
8512 result =
new DataToken(
DataError.UnableToParse, String.Format(
"Unable to Deserialize from Json: Failed to parse string at character {0}", (
object)index));
8518 result =
new DataToken(
DataError.UnableToParse, String.Format(
"Unable to Deserialize from Json: Found unexpected type {0} while looking for key", (
object)result3));
8522 if (source[index] ==
':')
8528 result =
new DataToken(
DataError.UnableToParse, String.Format(
"Unable to Deserialize from Json: Found unexpected character {0} while looking for ':'", (
object)source[index]));
8536 result =
new DataToken(
DataError.UnableToParse, String.Format(
"Unable to Deserialize from Json: Unable to identify type at character {0}", (
object)index));
8548 result =
new DataToken(
DataError.UnableToParse,
"Unable to Deserialize from Json: String is not valid");
8558 result =
new DataToken(
DataError.UnableToParse,
"Unable to Deserialize from Json: Number is not valid");
8565 ScanArray(out success, source, ref index);
8568 result =
new DataToken(
DataError.UnableToParse,
"Unable to Deserialize from Json: Array is not valid");
8578 result =
new DataToken(
DataError.UnableToParse,
"Unable to Deserialize from Json: Object is not valid");
8585 ScanBool(out success, source, ref index);
8588 result =
new DataToken(
DataError.UnableToParse,
"Unable to Deserialize from Json: Boolean is not valid");
8595 ScanNull(out success, source, ref index);
8598 result =
new DataToken(
DataError.UnableToParse,
"Unable to Deserialize from Json: Null is not valid");
8617 if (source[index] ==
',')
8623 result =
new DataToken(
DataError.UnableToParse, String.Format(
"Unable to Deserialize from Json: Found unexpected character '{0}' while looking for character ','", (
object)source[index]));
8627 result =
new DataToken(
DataError.UnableToParse,
"Unable to Deserialize from Json: Found end of string before finishing object");
8638 string text = source.Substring(num, index - num);
8640 if (String.IsNullOrEmpty(text))
8645 string[] array = text.Split((
char[])(
object)
new Char[1] { (Char)44 }, (StringSplitOptions)1);
8647 for (
int i = 0; i < array.Length; i++)
8650 if (!String.IsNullOrEmpty(array[i]))
8654 result =
new DataToken(
DataError.UnableToParse, String.Format(
"Unable to Deserialize from Json: Unable to identify type at character {0}", (
object)index));
8668 while (index < source.Length)
8671 switch (source[index])
8689 if (num3 == 0 && !flag)
8691 string input2 = source.Substring(num2, index - num2);
8695 result =
new DataToken(
DataError.UnableToParse, String.Format(
"Unable to Deserialize from Json: Unable to identify type at character {0}", (
object)index));
8710 string input = source.Substring(num2, index - num2);
8712 if (String.IsNullOrEmpty(input))
8719 result =
new DataToken(
DataError.UnableToParse, String.Format(
"Unable to Deserialize from Json: Unable to identify type at character {0}", (
object)index));
8736 result =
new DataToken(
DataError.UnableToParse,
"Unable to Deserialize from Json: Found end of string before finishing array");
8745 if (stringEnd != -1)
8747 int num = index + 1;
8748 index = stringEnd + 1;
8749 result = source.Substring(num, stringEnd - num);
8754 StringBuilder val =
new StringBuilder();
8755 while (index < source.Length)
8763 result =
new DataToken(
DataError.UnableToParse,
"Unable to Deserialize from Json: String had invalid escape characters");
8768 string text = source.Substring(index, 1);
8778 result = ((Object)val).ToString();
8791 while (index < source.Length)
8793 char c = source[index];
8794 if (Array.IndexOf<
char>(
numberChars, c) != -1 || Char.IsNumber(c) || Char.IsWhiteSpace(c))
8804 string text = source.Substring(num, index - num);
8805 double num2 =
default(
double);
8806 if (Double.TryParse(text, (NumberStyles)167, (IFormatProvider)(
object)CultureInfo.InvariantCulture, ref num2))
8811 text = text.ToLower();
8812 if (text.Contains(
"e"))
8814 int num3 = text.IndexOf(
"e");
8815 if (num3 > 1 && num3 < text.Length - 1)
8817 string text2 = text.Substring(0, num3 - 1);
8818 string text3 = text.Substring(num3 + 1);
8819 double num4 =
default(
double);
8820 if (!Double.TryParse(text2, (NumberStyles)167, (IFormatProvider)(
object)CultureInfo.InvariantCulture, ref num4))
8822 result =
new DataToken(
DataError.UnableToParse, String.Concat(
"Unable to Deserialize Json: Failed to parse number '", text,
"'"));
8825 double num5 =
default(
double);
8826 if (!Double.TryParse(text3, (NumberStyles)167, (IFormatProvider)(
object)CultureInfo.InvariantCulture, ref num5))
8828 result =
new DataToken(
DataError.UnableToParse, String.Concat(
"Unable to Deserialize Json: Failed to parse number '", text,
"'"));
8831 num2 = num4 * Math.Pow(10.0, num5);
8836 else if (text.EndsWith(
"0"))
8838 string text4 = text.TrimEnd(
'0');
8839 int num6 = text.Length - text4.Length;
8840 if (Double.TryParse(text4, (NumberStyles)167, (IFormatProvider)(
object)CultureInfo.InvariantCulture, ref num2))
8842 num2 *= Math.Pow(10.0, (
double)num6);
8843 if (Double.IsPositiveInfinity(num2))
8845 num2 = 1.7976931348623157E+308;
8847 else if (Double.IsNegativeInfinity(num2))
8849 num2 = -1.7976931348623157E+308;
8855 result =
new DataToken(
DataError.UnableToParse, String.Concat(
"Unable to Deserialize Json: Failed to parse number '", text,
"'"));
8863 string text = source.Substring(num, index - num).ToLower();
8869 if (text ==
"false")
8874 result =
new DataToken(
DataError.UnableToParse, String.Concat(
"Unable to Deserialize Json: Failed to parse bool '", text,
"'"));
8878 private static void ScanObject(out
bool success,
string source, ref
int index)
8882 while (index < source.Length)
8885 if (index >= source.Length)
8890 switch (source[index])
8936 private static void ScanArray(out
bool success,
string source, ref
int index)
8950 while (index < source.Length)
8953 if (index >= source.Length)
8958 switch (source[index])
8998 private static void ScanString(out
bool success,
string source, ref
int index)
9001 if (stringEnd != -1)
9003 index = stringEnd + 1;
9009 while (index < source.Length)
9012 if (index >= source.Length)
9022 switch (source[index])
9041 private static void ScanNumber(out
bool success,
string source, ref
int index)
9043 while (index < source.Length)
9045 char c = source[index];
9046 if (Array.IndexOf<
char>(
numberChars, c) != -1 || Char.IsNumber(c) || Char.IsWhiteSpace(c))
9051 if (c !=
',' && c !=
'}' && c !=
']')
9060 private static void ScanBool(out
bool success,
string source, ref
int index)
9064 string text = source.Substring(num, index - num).ToLower();
9065 if (text !=
"true" && text !=
"false")
9072 private static void ScanNull(out
bool success,
string source, ref
int index)
9076 if (source.Substring(num, index - num) !=
"null")
9090 while (index + 1 < source.Length && Char.IsWhiteSpace(source, index))
9098 for (index++; index < source.Length; index++)
9100 switch (source[index])
9116 while (index + 1 < source.Length)
9118 switch (source[index])
9132 for (index++; index < source.Length; index++)
9134 switch (source[index])
9149 while (index < source.Length && source[index] != character)
9157 while (index < source.Length)
9159 if (Array.IndexOf<
char>(characters, source[index]) == -1)
9171 char c = source[index];
9191 return ((Char)(ref c2)).ToString();
9196 return ((Char)(ref c2)).ToString();
9201 return ((Char)(ref c2)).ToString();
9206 return ((Char)(ref c2)).ToString();
9211 return ((Char)(ref c2)).ToString();
9214 if (index + 4 >= source.Length)
9219 string text = source.Substring(index + 1, 4);
9221 int num =
default(
int);
9222 if (Int32.TryParse(text, (NumberStyles)515, (IFormatProvider)
null, ref num))
9227 return Char.ConvertFromUtf32(num);
9243 return String.Concat(
"\\", ((Char)(ref c)).ToString());
9248 return input.Replace(
"\"",
"\\\"").Replace(
"\n",
"\\n").Replace(
"\r",
"\\r")
9249 .Replace(
"\t",
"\\t");
9261 if (String.IsNullOrEmpty(source))
9266 if (index < 0 || index >= source.Length)
9271 char c = source[index];
9272 if (Char.IsWhiteSpace(c))
9275 if (index < 0 || index >= source.Length)
9282 c = Char.ToLower(c);
9307 if (Char.IsNumber(c))
9319 Char[] array =
new Char[7];
9320 RuntimeHelpers.InitializeArray((Array)(
object)array, (RuntimeFieldHandle));
9322 Char[] array2 =
new Char[3];
9323 RuntimeHelpers.InitializeArray((Array)(object)array2, (RuntimeFieldHandle));
9325 Char[] array3 =
new Char[4];
9326 RuntimeHelpers.InitializeArray((Array)(object)array3, (RuntimeFieldHandle));
9333 Char[] array4 =
new Char[7];
9334 RuntimeHelpers.InitializeArray((Array)(object)array4, (RuntimeFieldHandle));
9336 Char[] array5 =
new Char[4];
9337 RuntimeHelpers.InitializeArray((Array)(object)array5, (RuntimeFieldHandle));
9339 Char[] array6 =
new Char[5];
9340 RuntimeHelpers.InitializeArray((Array)(object)array6, (RuntimeFieldHandle));
9388 public abstract bool RunEvent<T0>(
string eventName, ValueTuple<string, T0> parameter0);
9390 public abstract bool RunEvent<T0, T1>(
string eventName, ValueTuple<string, T0> parameter0, ValueTuple<string, T1> parameter1);
9392 public abstract bool RunEvent<T0, T1, T2>(
string eventName, ValueTuple<string, T0> parameter0, ValueTuple<string, T1> parameter1, ValueTuple<string, T2> parameter2);
9394 public abstract bool RunEvent(
string eventName, params ValueTuple<string, object>[] programVariables);
9400 bool IUdonEventReceiver.get_enabled()
9402 return ((Behaviour)
this).enabled;
9405 void IUdonEventReceiver.set_enabled(
bool value)
9407 ((Behaviour)
this).enabled = value;
9423 [field: CompilerGenerated]
9438 [HelpURL(
"https://creators.vrchat.com/worlds/udon/persistence/player-object/")]
9439 [AddComponentMenu(
"VRChat/Persistence/VRC Enable Persistence")]
9444 if (!Object.op_Implicit((Object)(
object)((Component)
this).gameObject.GetComponentInParent<
VRCPlayerObject>()))
9446 Debug.LogError((
object)
"VRCEnablePersistence must be a child of a VRCPlayerObject to enable persistence.", (Object)(
object)((Component)
this).gameObject);
9450 [HelpURL(
"https://creators.vrchat.com/worlds/udon/persistence/player-object/")]
9451 [AddComponentMenu(
"VRChat/Persistence/VRC Player Object")]
9454 public static Func<VRCPlayerObject, VRCPlayerApi> _GetPlayer;
9458 return _GetPlayer?.Invoke(
this) ??
null;
9461 [ExcludeFromUdonWrapper]
9467 [RequireComponent()]
9468 [DisallowMultipleComponent]
9469 [AddComponentMenu(
"VRChat/VRC Spatial Audio Source")]
9473 [AddComponentMenu(
"VRChat/VRC Object Pool")]
9474 [HelpURL(
"https://creators.vrchat.com/worlds/examples/udon-example-scene/#objectpool")]
9477 public GameObject[]
Pool = (GameObject[])(
object)
new GameObject[0];
9479 [ExcludeFromUdonWrapper]
9482 [ExcludeFromUdonWrapper]
9485 [ExcludeFromUdonWrapper]
9488 private Dictionary<GameObject, int> _indices =
new Dictionary<GameObject, int>();
9490 private int _lastSpawnIndex = -1;
9492 private int[] _spawnOrder;
9496 [ExcludeFromUdonWrapper]
9500 [ExcludeFromUdonWrapper]
9504 [ExcludeFromUdonWrapper]
9519 Pool = (GameObject[])(
object)
new GameObject[0];
9523 _spawnOrder = (
int[])(
object)
new Int32[
Pool.Length];
9525 for (
int i = 0; i <
Pool.Length; i++)
9527 Pool[i].SetActive(
false);
9528 _indices.Add(
Pool[i], i);
9546 Debug.LogError((
object)String.Concat(
"TryToSpawn on ", ((Object)((Component)
this).gameObject).name,
" called before initialized"));
9549 if (
Pool ==
null ||
Pool.Length == 0 || _indices ==
null)
9553 if (
Pool.Length != _indices.Count)
9555 Debug.LogError((
object)String.Concat(
"Pool size on ", ((Object)((Component)
this).gameObject).name,
" has changed since Awake()"));
9560 Debug.LogError((
object)String.Concat(
"Non-owner attempted to spawn object from ", ((Object)((Component)
this).gameObject).name));
9563 int num = _lastSpawnIndex;
9564 for (
int i = 0; i <
Pool.Length; i++)
9566 num = (num + 1) %
Pool.Length;
9567 int num2 = _spawnOrder[num];
9568 GameObject val =
Pool[num2];
9569 if (Object.op_Implicit((Object)(
object)val) && !val.activeInHierarchy)
9571 GameObject obj =
Pool[num2];
9572 obj.SetActive(
true);
9577 _lastSpawnIndex = num;
9588 if (!Object.op_Implicit((Object)(
object)obj))
9592 int num =
default(
int);
9595 Debug.LogError((
object)String.Concat(
"Non-owner attempted to return ", ((Object)obj).name,
" to ", ((Object)((Component)
this).gameObject).name));
9597 else if (_indices.TryGetValue(obj, ref num))
9599 obj.SetActive(
false);
9615 [AddComponentMenu(
"VRChat/VRC Avatar Pedestal")]
9616 [HelpURL(
"https://creators.vrchat.com/worlds/components/vrc_avatarpedestal/")]
9620 [ExcludeFromUdonWrapper]
9623 if (instigator !=
null && instigator.
isLocal)
9634 [AddComponentMenu(
"VRChat/VRC Object Sync")]
9635 [HelpURL(
"https://creators.vrchat.com/worlds/components/vrc_objectsync")]
9642 [ExcludeFromUdonWrapper]
9645 [ExcludeFromUdonWrapper]
9648 [ExcludeFromUdonWrapper]
9653 [ExcludeFromUdonWrapper]
9654 [field: CompilerGenerated]
9664 [ExcludeFromUdonWrapper]
9665 [field: CompilerGenerated]
9675 [ExcludeFromUdonWrapper]
9676 [field: CompilerGenerated]
9693 Rigidbody component = ((Component)target).GetComponent<Rigidbody>();
9694 if (Object.op_Implicit((Object)(object)component))
9696 component.isKinematic = value;
9707 Rigidbody component = ((Component)target).GetComponent<Rigidbody>();
9708 if (Object.op_Implicit((Object)(object)component))
9710 component.useGravity = value;
9723 TeleportHandler?.Invoke(
this, targetLocation.position, targetLocation.rotation);
9731 [ExcludeFromUdonWrapper]
9744 [AddComponentMenu(
"VRChat/VRC Pickup")]
9745 [HelpURL(
"https://creators.vrchat.com/worlds/components/vrc_pickup")]
9749 [AddComponentMenu(
"VRChat/VRC Portal Marker")]
9750 [HelpURL(
"https://creators.vrchat.com/worlds/components/vrc_portalmarker")]
9755 [HelpURL(
"https://creators.vrchat.com/worlds/components/vrc_mirrorreflection")]
9756 [AddComponentMenu(
"VRChat/VRC Mirror Reflection")]
9759 [Tooltip(
"The mirror camera can be set to use a custom skybox shader or a solid clear color. By default it renders the same as the reference camera.")]
9762 [Tooltip(
"Overrides the skybox material used by the mirror camera. Only used if clear flags are set to CustomSkybox.")]
9765 [Tooltip(
"Set the solid clear color used by the mirror camera if clear flags are set to SolidColor.")]
9780 mirrorCamera.clearFlags = src.clearFlags;
9781 mirrorCamera.backgroundColor = src.backgroundColor;
9782 if ((
int)src.clearFlags == 1)
9784 Component component = ((Component)src).GetComponent(typeof(Skybox));
9785 Skybox val = (Skybox)(
object)((component is Skybox) ? component :
null);
9786 if (!Object.op_Implicit((Object)(object)val) || !Object.op_Implicit((Object)(object)val.material))
9788 ((Behaviour)mirrorSkybox).enabled =
false;
9791 ((Behaviour)mirrorSkybox).enabled =
true;
9792 mirrorSkybox.material = val.material;
9796 ((Behaviour)mirrorSkybox).enabled =
false;
9802 ((Behaviour)mirrorSkybox).enabled =
true;
9804 mirrorCamera.clearFlags = (CameraClearFlags)1;
9808 ((Behaviour)mirrorSkybox).enabled =
false;
9809 mirrorCamera.clearFlags = (CameraClearFlags)2;
9810 mirrorCamera.backgroundColor = Color.black;
9814 ((Behaviour)mirrorSkybox).enabled =
false;
9815 mirrorCamera.clearFlags = (CameraClearFlags)2;
9819 ((Behaviour)mirrorSkybox).enabled =
false;
9820 mirrorCamera.clearFlags = (CameraClearFlags)4;
9823 ((Behaviour)mirrorSkybox).enabled =
false;
9824 mirrorCamera.clearFlags = (CameraClearFlags)3;
9827 throw new ArgumentOutOfRangeException();
9834 FromReferenceCamera,
9840 [AddComponentMenu(
"VRChat/VRC Scene Descriptor")]
9841 [HelpURL(
"https://creators.vrchat.com/worlds/components/vrc_scenedescriptor/")]
9854 PlayerPersistence = ((playerPersistence !=
null) ? Enumerable.ToArray<
VRCPlayerObject>(Enumerable.Where<
VRCPlayerObject>((IEnumerable<VRCPlayerObject>)(object)playerPersistence, (Func<VRCPlayerObject, bool>)((
VRCPlayerObject pp) => (Object)(object)pp != (Object)
null && (Object)
null == (Object)(object)((Component)pp).GetComponentInParent<VRCPlayerObject>()))) :
null);
9857 [AddComponentMenu(
"VRChat/VRC Station")]
9858 [HelpURL(
"https://creators.vrchat.com/worlds/components/vrc_station")]
9883 int displayIndex = eventData.pointerPressRaycast.displayIndex;
9884 Vector3 val = Display.RelativeMouseAt(Vector2.op_Implicit(eventData.position));
9885 if ((
int)val.z != displayIndex)
9889 position = ((displayIndex != 0) ? Vector2.op_Implicit(val) : eventData.position);
9905 Vector3 mousePosition = Input.mousePosition;
9906 if (Display.main.renderingHeight != Display.main.systemHeight && (mousePosition.y < 0f || mousePosition.y > (
float)Display.main.renderingHeight || mousePosition.x < 0f || mousePosition.x > (
float)Display.main.renderingWidth) && (
int)Screen.fullScreenMode != 3)
9908 mousePosition.y += Display.main.systemHeight - Display.main.renderingHeight;
9910 return Vector2.op_Implicit(mousePosition);
9915 public static bool SetColor(ref Color currentValue, Color newValue)
9923 if (currentValue.r == newValue.r && currentValue.g == newValue.g && currentValue.b == newValue.b && currentValue.a == newValue.a)
9927 currentValue = newValue;
9931 public static bool SetStruct<T>(ref T currentValue, T newValue) where T :
struct, ValueType
9933 if (EqualityComparer<T>.Default.Equals(currentValue, newValue))
9937 currentValue = newValue;
9941 public static bool SetClass<T>(ref T currentValue, T newValue) where T :
class
9943 if ((currentValue ==
null && newValue ==
null) || (currentValue !=
null && ((Object)currentValue).Equals((
object)newValue)))
9947 currentValue = newValue;
9951 [AddComponentMenu(
"VRChat/UI/VRC InputField Keyboard Override")]
9952 [HelpURL(
"https://creators.vrchat.com/worlds/components/vrc_uishape/#if-youd-like-a-textfield-not-to-show-vrchats-keyboard")]
9968 public static void AddOptions(
this TMP_Dropdown dropdown,
string[] options)
9970 dropdown.AddOptions(Enumerable.ToList<
string>((IEnumerable<string>)(
object)options));
9973 public static void AddOptions(
this TMP_Dropdown dropdown, OptionData[] options)
9975 dropdown.AddOptions(Enumerable.ToList<OptionData>((IEnumerable<OptionData>)(
object)options));
9978 public static void AddOptions(
this TMP_Dropdown dropdown, Sprite[] options)
9980 dropdown.AddOptions(Enumerable.ToList<Sprite>((IEnumerable<Sprite>)(
object)options));
9983 [AddComponentMenu(
"VRChat/UI/VRC UI Shape")]
9984 [HelpURL(
"https://creators.vrchat.com/worlds/components/vrc_uishape")]
9988 [AddComponentMenu(
"VRChat/UI/VRC URL Input Field")]
9989 [HelpURL(
"https://udonsharp.docs.vrchat.com/vrchat-api/#vrcurlinputfield")]
9990 public class VRCUrlInputField : Selectable, IUpdateSelectedHandler, IEventSystemHandler, IBeginDragHandler, IDragHandler, IEndDragHandler, IPointerClickHandler, ISubmitHandler, ICanvasElement, ILayoutElement
10048 [CompilerGenerated]
10062 [FormerlySerializedAs(
"text")]
10071 [FormerlySerializedAs(
"inputType")]
10075 [FormerlySerializedAs(
"asteriskChar")]
10079 [FormerlySerializedAs(
"keyboardType")]
10086 [FormerlySerializedAs(
"hideMobileInput")]
10090 [FormerlySerializedAs(
"validation")]
10094 [FormerlySerializedAs(
"characterLimit")]
10098 [FormerlySerializedAs(
"onSubmit")]
10099 [FormerlySerializedAs(
"m_OnSubmit")]
10100 [FormerlySerializedAs(
"m_EndEdit")]
10104 [FormerlySerializedAs(
"onValueChange")]
10105 [FormerlySerializedAs(
"m_OnValueChange")]
10109 [FormerlySerializedAs(
"onValidateInput")]
10113 [FormerlySerializedAs(
"selectionColor")]
10124 [FormerlySerializedAs(
"mValue")]
10208 if (Object.op_Implicit((Object)(
object)EventSystem.current) && Object.op_Implicit((Object)(
object)EventSystem.current.currentInputModule))
10210 return EventSystem.current.currentInputModule.input;
10220 if (!((Object)(
object)
input != (Object)
null))
10222 return Input.compositionString;
10224 return input.compositionString;
10234 if ((Object)(
object)
m_Mesh == (Object)
null)
10268 RuntimePlatform platform = Application.platform;
10269 if ((
int)platform == 8 || (
int)platform == 11 || (
int)platform == 31)
10289 return (
int)Application.platform != 31;
10461 [Obsolete(
"onValueChange has been renamed to onValueChanged")]
10511 m_Keyboard.characterLimit = value;
10666 [ExcludeFromUdonWrapper]
10680 [ExcludeFromUdonWrapper]
10697 [ExcludeFromUdonWrapper]
10718 return GUIUtility.systemCopyBuffer;
10722 GUIUtility.systemCopyBuffer = value;
10740 TextGenerationSettings generationSettings =
textComponent.GetGenerationSettings(Vector2.zero);
10766 TextGenerationSettings generationSettings = obj.GetGenerationSettings(
new Vector2(((Rect)(ref rect)).size.x, 0f));
10777 [CompilerGenerated]
10787 Action val3 = (Action)Delegate.Combine((Delegate)(object)val2, (Delegate)(object)value);
10788 val = Interlocked.CompareExchange<Action>(ref this.
m_onSelected, val3, val2);
10790 while (val != val2);
10792 [CompilerGenerated]
10802 Action val3 = (Action)Delegate.Remove((Delegate)(object)val2, (Delegate)(object)value);
10803 val = Interlocked.CompareExchange<Action>(ref this.
m_onSelected, val3, val2);
10805 while (val != val2);
10818 _ = ((Component)
this).gameObject.scene;
10819 Scene scene = ((Component)
this).gameObject.scene;
10820 if (((Scene)(ref scene)).IsValid())
10834 ((Selectable)
this).Awake();
10839 s_IsPicoDevice = SystemInfo.deviceModel.Contains(
"Pico", (StringComparison)3);
10855 private void SetText(
string value,
bool sendCallback =
true)
10860 _ = ((Component)
this).gameObject.scene;
10861 Scene scene = ((Component)
this).gameObject.scene;
10862 if (!((Scene)(ref scene)).IsValid() ||
text == value)
10870 value = value.Replace(
"\0", String.Empty);
10873 value = value.Replace(
"\n",
"").Replace(
"\t",
"");
10881 for (
int i = 0; i < num; i++)
10886 m_Text = String.Concat(
m_Text, ((Char)(ref c)).ToString());
10896 m_Keyboard.text =
m_Text;
10919 else if (pos >
text.Length)
10933 ((Selectable)
this).OnEnable();
10969 CanvasUpdateRegistry.UnRegisterCanvasElementForRebuild((ICanvasElement)(object)
this);
10974 if ((Object)(object)
m_Mesh != (Object)
null)
10976 Object.DestroyImmediate((Object)(object)
m_Mesh);
10979 ((Selectable)
this).OnDisable();
10982 [IteratorStateMachine()]
11054 int length =
text.Length;
11086 if ((
int)Application.platform == 11)
11090 return TouchScreenKeyboard.isSupported;
11096 return !TouchScreenKeyboard.isInPlaceEditingAllowed;
11098 return TouchScreenKeyboard.isSupported;
11125 int start = selection.start;
11126 int end = ((RangeInt)(ref selection)).end;
11171 VertexHelper val =
new VertexHelper();
11174 val.FillMesh(
mesh);
11180 ((IDisposable)val).Dispose();
11204 ((Selectable)
this).OnDeselect((BaseEventData)
null);
11212 m_Keyboard.text =
m_Text;
11217 for (
int i = 0; i <
text.Length; i++)
11220 if (c ==
'\r' || c ==
'\u0003')
11234 m_Keyboard.text =
m_Text;
11235 ((Selectable)
this).OnDeselect((BaseEventData)
null);
11240 m_Text = String.Concat(
m_Text, ((Char)(ref c)).ToString());
11258 m_Keyboard.text =
m_Text;
11267 m_Keyboard.selection =
new RangeInt(num2, num3);
11279 ((Selectable)
this).OnDeselect((BaseEventData)
null);
11283 [Obsolete(
"This function is no longer used. Please use RectTransformUtility.ScreenPointToLocalPointInRectangle() instead.")]
11308 if ((Object)(object)canvas == (Object)
null)
11312 Vector3 val = Vector3.zero;
11313 if ((
int)canvas.renderMode == 0)
11315 val = ((Component)
m_TextComponent).transform.InverseTransformPoint(Vector2.op_Implicit(screen));
11317 else if ((Object)(object)canvas.worldCamera != (Object)
null)
11319 Ray val2 = canvas.worldCamera.ScreenPointToRay(Vector2.op_Implicit(screen));
11320 Plane val3 =
default(Plane);
11322 float num =
default(
float);
11323 ((Plane)(ref val3)).Raycast(val2, ref num);
11324 val = ((Component)
m_TextComponent).transform.InverseTransformPoint(((Ray)(ref val2)).GetPoint(num));
11326 return new Vector2(val.x, val.y);
11340 for (
int i = 0; i < generator.lineCount; i++)
11342 float topY = generator.lines[i].topY;
11343 float num3 = topY - (float)generator.lines[i].height;
11346 float num4 = topY - num2;
11347 if (num > topY - 0.5f * num4)
11359 return generator.lineCount;
11377 TextGenerator cachedTextGenerator =
m_TextComponent.cachedTextGenerator;
11378 if (cachedTextGenerator.lineCount == 0)
11383 if (unclampedCharacterLineFromPosition < 0)
11387 if (unclampedCharacterLineFromPosition >= cachedTextGenerator.lineCount)
11389 return cachedTextGenerator.characterCountVisible;
11391 int startCharIdx = cachedTextGenerator.lines[unclampedCharacterLineFromPosition].startCharIdx;
11392 int lineEndPosition =
GetLineEndPosition(cachedTextGenerator, unclampedCharacterLineFromPosition);
11393 for (
int i = startCharIdx; i < lineEndPosition && i < cachedTextGenerator.characterCountVisible; i++)
11395 UICharInfo val = cachedTextGenerator.characters[i];
11397 float num = pos.x - val2.x;
11398 float num2 = val2.x + val.charWidth / m_TextComponent.pixelsPerUnit - pos.x;
11404 return lineEndPosition;
11410 if (((UIBehaviour)
this).IsActive() && ((Selectable)
this).IsInteractable() && (
int)eventData.button == 0 && (Object)(
object)
m_TextComponent != (Object)
null)
11429 public virtual void OnDrag(PointerEventData eventData)
11440 Vector2 position = Vector2.zero;
11443 Vector2 pos =
default(Vector2);
11444 RectTransformUtility.ScreenPointToLocalPointInRectangle(((Graphic)
textComponent).rectTransform, position, eventData.pressEventCamera, ref pos);
11452 ((AbstractEventData)eventData).Use();
11456 [IteratorStateMachine()]
11459 Vector2 val =
default(Vector2);
11462 Vector2 position = Vector2.zero;
11467 RectTransformUtility.ScreenPointToLocalPointInRectangle(((Graphic)
textComponent).rectTransform, position, eventData.pressEventCamera, ref val);
11471 if (val.y > ((Rect)(ref rect)).yMax)
11473 MoveUp(shift:
true, goToFirstChar:
true);
11475 else if (val.y < ((Rect)(ref rect)).yMin)
11477 MoveDown(shift:
true, goToLastChar:
true);
11480 else if (val.x < ((Rect)(ref rect)).xMin)
11482 MoveLeft(shift:
true, ctrl:
false);
11484 else if (val.x > ((Rect)(ref rect)).xMax)
11489 float num = (
multiLine ? 0.1f : 0.05f);
11496 m_WaitForSecondsRealtime.waitTime = num;
11520 EventSystem.current.SetSelectedGameObject(((Component)
this).gameObject, (BaseEventData)(
object)eventData);
11522 ((Selectable)
this).OnPointerDown(eventData);
11525 ((Selectable)
this).OnSelect((BaseEventData)(object)eventData);
11530 Vector2 pos =
default(Vector2);
11531 RectTransformUtility.ScreenPointToLocalPointInRectangle(((Graphic)
textComponent).rectTransform, eventData.pointerPressRaycast.screenPosition, eventData.pressEventCamera, ref pos);
11536 ((AbstractEventData)eventData).Use();
11584 EventModifiers modifiers = evt.modifiers;
11585 bool flag = (((int)SystemInfo.operatingSystemFamily == 1) ? ((modifiers & 8) > 0) : ((modifiers & 2) > 0));
11586 bool flag2 = (modifiers & 1) > 0;
11587 bool flag3 = (modifiers & 4) > 0;
11588 bool flag4 = flag && !flag3 && !flag2;
11589 KeyCode keyCode = evt.keyCode;
11590 if ((
int)keyCode <= 97)
11592 if ((
int)keyCode <= 13)
11594 if ((
int)keyCode == 8)
11599 if ((
int)keyCode == 13)
11606 if ((
int)keyCode == 27)
11611 if ((
int)keyCode == 97 && flag4)
11618 else if ((
int)keyCode <= 118)
11620 if ((
int)keyCode != 99)
11622 if ((
int)keyCode == 118 && flag4)
11644 if ((
int)keyCode != 120)
11646 if ((
int)keyCode != 127)
11648 switch (keyCode - 271)
11702 char c = evt.character;
11703 if (!
multiLine && (c ==
'\t' || c ==
'\r' || c ==
'\n'))
11707 if (c ==
'\r' || c ==
'\u0003')
11777 ((AbstractEventData)eventData).Use();
11794 return text.Substring(num, num2 - num);
11801 return text.Length;
11806 return text.Length;
11866 for (
int i = 0; i < generator.lineCount - 1; i++)
11868 if (generator.lines[i + 1].startCharIdx > charPos)
11873 return generator.lineCount - 1;
11894 if (!goToFirstChar)
11896 return originalPos;
11922 return text.Length;
11930 return originalPos;
11932 return text.Length;
11942 return lineEndPosition;
11947 MoveDown(shift, goToLastChar:
true);
11970 MoveUp(shift, goToFirstChar:
true);
11973 private void MoveUp(
bool shift,
bool goToFirstChar)
12051 string text = ((Char)(ref c)).ToString();
12067 m_Keyboard.text =
m_Text;
12079 UISystemProfilerApi.AddMarker(
"InputField.value", (Object)(
object)
this);
12088 UISystemProfilerApi.AddMarker(
"InputField.onSubmit", (Object)(
object)
this);
12102 for (
int length =
input.Length; i < length; i++)
12105 if (c >=
' ' || c ==
'\t' || c ==
'\r' || c ==
'\n' || c ==
'\n')
12147 string text = ((!((Object)(
object)EventSystem.current != (Object)
null) || !((Object)(
object)((Component)
this).gameObject == (Object)(
object)EventSystem.current.currentSelectedGameObject) ||
compositionString.Length <= 0) ? this.text : String.Concat(this.text.Substring(0,
m_CaretPosition),
compositionString, this.text.Substring(
m_CaretPosition)));
12149 bool flag = String.IsNullOrEmpty(
text);
12162 Vector2 size = ((Rect)(ref rect)).size;
12163 TextGenerationSettings generationSettings =
m_TextComponent.GetGenerationSettings(size);
12164 generationSettings.generateOutOfBounds =
true;
12170 m_TextComponent.text = text2;
12192 line = Mathf.Clamp(line, 0, ((ICollection<UILineInfo>)(
object)gen.lines).Count - 1);
12193 return gen.lines[line].startCharIdx;
12199 line = Mathf.Max(line, 0);
12200 if (line + 1 < ((ICollection<UILineInfo>)(
object)gen.lines).Count)
12202 return gen.lines[line + 1].startCharIdx - 1;
12204 return gen.characterCountVisible;
12238 Vector2 size = ((Rect)(ref rectExtents)).size;
12246 float num2 = lines[num].topY - (float)lines[num].height;
12247 if (num == ((ICollection<UILineInfo>)(
object)lines).Count - 1)
12249 num2 += lines[num].leading;
12252 while (num3 > 0 && !(lines[num3 - 1].topY - num2 > size.y))
12265 float topY = lines[num4].topY;
12266 float num5 = lines[i].topY - (float)lines[i].height;
12267 if (i == ((ICollection<UILineInfo>)(
object)lines).Count - 1)
12269 num5 += lines[i].leading;
12271 for (; i < ((ICollection<UILineInfo>)(
object)lines).
Count - 1; i++)
12273 num5 = lines[i + 1].topY - (float)lines[i + 1].height;
12274 if (i + 1 == ((ICollection<UILineInfo>)(object)lines).Count - 1)
12276 num5 += lines[i + 1].leading;
12278 if (topY - num5 > size.y)
12286 topY = lines[num4 - 1].topY;
12287 if (topY - num5 > size.y)
12323 num6 += characters[
m_DrawEnd].charWidth;
12324 if (!(num6 > size.x))
12340 CanvasUpdateRegistry.RegisterCanvasElementForGraphicRebuild((ICanvasElement)(
object)
this);
12347 if ((
int)update == 4)
12369 GameObject val =
new GameObject(String.Concat(((Object)((Component)
this).transform).name,
" Input Caret"), (Type[])(
object)
new Type[2]
12371 typeof(RectTransform),
12372 typeof(CanvasRenderer)
12374 ((Object)val).hideFlags = (HideFlags)52;
12375 val.transform.SetParent(((Component)
m_TextComponent).transform.parent);
12376 val.transform.SetAsFirstSibling();
12377 val.layer = ((Component)
this).gameObject.layer;
12381 val.AddComponent<LayoutElement>().ignoreLayout =
true;
12423 caretRectTrans.anchorMin = ((Graphic)
m_TextComponent).rectTransform.anchorMin;
12424 caretRectTrans.anchorMax = ((Graphic)
m_TextComponent).rectTransform.anchorMax;
12425 caretRectTrans.anchoredPosition = ((Graphic)
m_TextComponent).rectTransform.anchoredPosition;
12426 caretRectTrans.sizeDelta = ((Graphic)
m_TextComponent).rectTransform.sizeDelta;
12427 caretRectTrans.pivot = ((Graphic)
m_TextComponent).rectTransform.pivot;
12440 VertexHelper val =
new VertexHelper();
12448 Vector2 roundingOffset = ((Graphic)
m_TextComponent).PixelAdjustPoint(Vector2.zero);
12463 ((IDisposable)val).Dispose();
12527 TextGenerator cachedTextGenerator =
m_TextComponent.cachedTextGenerator;
12528 if (cachedTextGenerator ==
null || cachedTextGenerator.lineCount == 0)
12532 Vector2 zero = Vector2.zero;
12533 if (num2 < ((ICollection<UICharInfo>)(
object)cachedTextGenerator.characters).Count)
12535 UICharInfo val = cachedTextGenerator.characters[num2];
12536 zero.x = val.cursorPos.x;
12541 if (x > ((Rect)(ref rect)).xMax)
12544 zero.x = ((Rect)(ref rect)).xMax;
12547 zero.y = cachedTextGenerator.lines[num3].topY /
m_TextComponent.pixelsPerUnit;
12548 float num4 = (float)cachedTextGenerator.lines[num3].height /
m_TextComponent.pixelsPerUnit;
12553 m_CursorVerts[0].position =
new Vector3(zero.x, zero.y - num4, 0f);
12554 m_CursorVerts[1].position =
new Vector3(zero.x + num, zero.y - num4, 0f);
12555 m_CursorVerts[2].position =
new Vector3(zero.x + num, zero.y, 0f);
12556 m_CursorVerts[3].position =
new Vector3(zero.x, zero.y, 0f);
12557 if (roundingOffset != Vector2.zero)
12562 val2.position.x += roundingOffset.x;
12563 val2.position.y += roundingOffset.y;
12567 int num5 = Screen.height;
12569 if (targetDisplay > 0 && targetDisplay < Display.displays.Length)
12571 num5 = Display.displays[targetDisplay].renderingHeight;
12575 Vector2 val5 = RectTransformUtility.WorldToScreenPoint(val3, val4);
12576 val5.y = (float)num5 - val5.y;
12577 if ((Object)(object)
input != (Object)
null)
12579 input.compositionCursorPos = val5;
12669 TextGenerator cachedTextGenerator =
m_TextComponent.cachedTextGenerator;
12670 if (cachedTextGenerator.lineCount <= 0)
12676 UIVertex simpleVert = UIVertex.simpleVert;
12677 simpleVert.uv0 = Vector4.op_Implicit(Vector2.zero);
12679 Vector2 val3 =
default(Vector2);
12680 Vector2 val4 =
default(Vector2);
12681 for (
int i = num; i <= num2 && i < cachedTextGenerator.characterCount; i++)
12683 if (i != lineEndPosition && i != num2)
12687 UICharInfo val = cachedTextGenerator.characters[num];
12688 UICharInfo val2 = cachedTextGenerator.characters[i];
12689 ((Vector2)(ref val3))..ctor(val.cursorPos.x /
m_TextComponent.pixelsPerUnit, cachedTextGenerator.lines[num4].topY /
m_TextComponent.pixelsPerUnit);
12690 ((Vector2)(ref val4))..ctor((val2.cursorPos.x + val2.charWidth) /
m_TextComponent.pixelsPerUnit, val3.y - (float)cachedTextGenerator.lines[num4].height /
m_TextComponent.pixelsPerUnit);
12693 if (!(x > ((Rect)(ref rect)).xMax))
12697 if (!(x2 < ((Rect)(ref rect)).xMin))
12703 val4.x = ((Rect)(ref rect)).xMax;
12706 int currentVertCount = vbo.currentVertCount;
12707 simpleVert.position =
new Vector3(val3.x, val4.y, 0f) + Vector2.op_Implicit(roundingOffset);
12708 vbo.AddVert(simpleVert);
12709 simpleVert.position =
new Vector3(val4.x, val4.y, 0f) + Vector2.op_Implicit(roundingOffset);
12710 vbo.AddVert(simpleVert);
12711 simpleVert.position =
new Vector3(val4.x, val3.y, 0f) + Vector2.op_Implicit(roundingOffset);
12712 vbo.AddVert(simpleVert);
12713 simpleVert.position =
new Vector3(val3.x, val3.y, 0f) + Vector2.op_Implicit(roundingOffset);
12714 vbo.AddVert(simpleVert);
12715 vbo.AddTriangle(currentVertCount, currentVertCount + 1, currentVertCount + 2);
12716 vbo.AddTriangle(currentVertCount + 2, currentVertCount + 3, currentVertCount);
12731 bool num = pos == 0 && text.Length > 0 &&
text[0] ==
'-';
12736 if (ch >=
'0' && ch <=
'9')
12740 if (ch ==
'-' && (pos == 0 || flag2))
12744 if ((ch ==
'.' || ch ==
',') &&
characterValidation == CharacterValidation.Decimal &&
text.IndexOfAny((
char[])(object)
new Char[2]
12756 if (ch >=
'A' && ch <=
'Z')
12760 if (ch >=
'a' && ch <=
'z')
12764 if (ch >=
'0' && ch <=
'9')
12771 if (Char.IsLetter(ch))
12773 if (Char.IsLower(ch) && (pos == 0 ||
text[pos - 1] ==
' '))
12775 return Char.ToUpper(ch);
12777 if (Char.IsUpper(ch) && pos > 0 &&
text[pos - 1] !=
' ' &&
text[pos - 1] !=
'\'')
12779 return Char.ToLower(ch);
12783 if (ch ==
'\'' && !
text.Contains(
"'") && (pos <= 0 || (
text[pos - 1] !=
' ' &&
text[pos - 1] !=
'\'')) && (pos >= text.Length || (
text[pos] !=
' ' &&
text[pos] !=
'\'')))
12787 if (ch ==
' ' && pos != 0 && (pos <= 0 || (
text[pos - 1] !=
' ' &&
text[pos - 1] !=
'\'')) && (pos >=
text.Length || (
text[pos] !=
' ' &&
text[pos] !=
'\'')))
12794 if (ch >=
'A' && ch <=
'Z')
12798 if (ch >=
'a' && ch <=
'z')
12802 if (ch >=
'0' && ch <=
'9')
12806 if (ch ==
'@' &&
text.IndexOf(
'@') == -1)
12810 if (
"!#$%&'*+-/=?^_`{|}~".IndexOf(ch) != -1)
12816 char num2 = ((text.Length > 0) ?
text[Mathf.Clamp(pos, 0,
text.Length - 1)] :
' ');
12817 char c = ((text.Length > 0) ?
text[Mathf.Clamp(pos + 1, 0,
text.Length - 1)] :
'\n');
12818 if (num2 !=
'.' && c !=
'.')
12829 if ((Object)(
object)
m_TextComponent == (Object)
null || (Object)(
object)
m_TextComponent.font == (Object)
null || !((UIBehaviour)
this).IsActive() || !((Selectable)
this).IsInteractable())
12837 m_Keyboard.active =
true;
12838 m_Keyboard.text =
m_Text;
12853 if ((Object)(
object)EventSystem.current == (Object)
null)
12857 if ((Object)(
object)EventSystem.current.currentSelectedGameObject != (Object)(
object)((Component)
this).gameObject)
12859 EventSystem.current.SetSelectedGameObject(((Component)
this).gameObject);
12864 if ((Object)(
object)
input != (Object)
null &&
input.touchSupported)
12868 m_Keyboard = ((
inputType ==
InputType.Password) ? TouchScreenKeyboard.Open(
m_Text,
keyboardType,
false,
multiLine,
true,
false,
"",
characterLimit) : TouchScreenKeyboard.Open(
m_Text,
keyboardType,
inputType ==
InputType.AutoCorrect,
multiLine,
false,
false,
"",
characterLimit));
12876 if ((Object)(
object)
input != (Object)
null)
12878 input.imeCompositionMode = (IMECompositionMode)1;
12891 ((Selectable)
this).OnSelect(eventData);
12901 if ((
int)eventData.button == 0)
12919 if ((Object)(object)
m_TextComponent != (Object)
null && ((Selectable)
this).IsInteractable())
12931 m_Keyboard.active =
false;
12935 if ((Object)(object)
input != (Object)
null)
12937 input.imeCompositionMode = (IMECompositionMode)0;
12946 ((Selectable)
this).OnDeselect(eventData);
12951 if (((UIBehaviour)
this).IsActive() && ((Selectable)
this).IsInteractable() && !
isFocused)
13032 m_TextComponent.horizontalOverflow = (HorizontalWrapMode)0;
13036 m_TextComponent.horizontalOverflow = (HorizontalWrapMode)1;
13047 for (
int i = 0; i < allowedContentTypes.Length; i++)
13073 state = (SelectionState)3;
13075 else if ((
int)state == 2)
13079 ((Selectable)
this).DoStateTransition(state, instant);
13092 Char[] array =
new Char[6];
13093 RuntimeHelpers.InitializeArray((Array)(
object)array, (RuntimeFieldHandle));
13100 Transform ICanvasElement.get_transform()
13102 return ((Component)
this).transform;
static void GenerateDPIDMipmapsFast(Texture2D texture, bool alphaIsTransparency, bool sRGB, bool conservative=false, bool normalMap=false)
static int ReadVarInt(byte[] data, ref int i)
static int Read16(byte[] data, ref int i)
static string ReadString(byte[] data, ref int i, int length)
static byte[] ReadAllBytesFromStream(Stream input)
static byte Read8(byte[] data, ref int i)
static int Read32(byte[] data, ref int i)
ParsedMidiFile(Stream stream)
static bool ParseMetaEvent(byte[] data, ref int position, byte metaEventType, ref byte data1, ref byte data2)
readonly MidiRawData.MidiRawTrack[] Tracks
readonly int TicksPerQuarterNote
static MidiRawData.MidiRawTrack ParseTrack(int index, byte[] data, ref int position)
ParsedMidiFile(byte[] data)
ParsedMidiFile(string path)
abstract void RunInputEvent(string eventName, UdonInputEventArgs args)
abstract void RequestSerialization()
abstract void SetProgramVariable< T >(string symbolName, T value)
abstract bool RunEvent< T0 >(string eventName, ValueTuple< string, T0 > parameter0)
abstract bool RunEvent< T0, T1 >(string eventName, ValueTuple< string, T0 > parameter0, ValueTuple< string, T1 > parameter1)
abstract Type GetProgramVariableType(string symbolName)
abstract bool TryGetProgramVariable(string symbolName, out object value)
abstract object GetProgramVariable(string symbolName)
abstract bool RunEvent(string eventName, params ValueTuple< string, object >[] programVariables)
abstract string InteractionText
abstract bool DisableInteractive
abstract bool TryGetProgramVariable< T >(string symbolName, out T value)
abstract void RunProgram(string eventName)
abstract void SendCustomEventDelayedSeconds(string eventName, float delaySeconds, EventTiming eventTiming=0)
abstract bool DisableEventProcessing
abstract bool IsNetworkingSupported
abstract bool RunEvent< T0, T1, T2 >(string eventName, ValueTuple< string, T0 > parameter0, ValueTuple< string, T1 > parameter1, ValueTuple< string, T2 > parameter2)
abstract void SendCustomEvent(string eventName)
abstract bool RunEvent(string eventName)
abstract void SetProgramVariable(string symbolName, object value)
abstract void InitializeUdonContent()
abstract T GetProgramVariable< T >(string symbolName)
abstract void SendCustomNetworkEvent(NetworkEventTarget target, string eventName)
abstract IUdonSyncMetadataTable SyncMetadataTable
abstract void SendCustomEventDelayedFrames(string eventName, int delayFrames, EventTiming eventTiming=0)
static bool GetRelativeMousePositionForDrag(PointerEventData eventData, ref Vector2 position)
static Vector2 GetMousePositionRelativeToMainDisplayResolution()
static bool SetColor(ref Color currentValue, Color newValue)
static bool SetStruct< T >(ref T currentValue, T newValue)
static bool SetClass< T >(ref T currentValue, T newValue)
UdonSignatureHolderMarker(Type type)
override void SwitchAvatar(string id, VRCPlayerApi instigator)
override void SwitchAvatar(string id)
MirrorClearFlags cameraClearFlags
override void UpdateCameraClearing(Camera src, Camera mirrorCamera, Skybox mirrorSkybox)
override void NetworkConfigure()
void Return(GameObject obj)
static Action< VRCObjectPool > OnInit
Quaternion[] StartRotations
static Action< VRCObjectPool, int > OnSpawn
static Action< VRCObjectPool, int > OnReturn
static void EditorSetKinematic(VRCObjectSync target, bool value)
static Action< VRCObjectSync > FlagDiscontinuityHook
bool AllowCollisionOwnershipTransfer
void TeleportTo(Transform targetLocation)
static Action< VRCObjectSync, bool > SetKinematicHook
static Action< VRCObjectSync, Vector3, Quaternion > TeleportHandler
delegate void AwakeDelegate(VRCObjectSync obj)
void SetKinematic(bool value)
void SetGravity(bool value)
override void NetworkConfigure()
static AwakeDelegate OnAwake
static Action< VRCObjectSync > RespawnHandler
static void EditorSetGravity(VRCObjectSync target, bool value)
static Action< VRCObjectSync, bool > SetGravityHook
override void NetworkConfigure()
VRCPlayerObject[] PlayerPersistence
readonly string OnLocalPlayerEnterStation
readonly string OnRemotePlayerExitStation
readonly string OnLocalPlayerExitStation
readonly string OnRemotePlayerEnterStation
static void AddOptions(this TMP_Dropdown dropdown, Sprite[] options)
static void AddOptions(this TMP_Dropdown dropdown, OptionData[] options)
static void AddOptions(this TMP_Dropdown dropdown, string[] options)
Data Dictionaries store Data Tokens by key-value pair, similarly to C# Dictionaries....
virtual bool ContainsKey(DataToken key)
Returns true if the specified key exists on this dictionary.
IEnumerator< KeyValuePair< DataToken, DataToken > > GetEnumerator()
This is not documented properly yet
virtual void Add(DataToken key, DataToken value)
Adds the value at the specified key. The entire purpose of this function that sets it apart from SetV...
DataDictionary DeepClone()
Clones the DataDictionary into a new DataDictionary that contains all the same values....
bool TryGetValue(DataToken key, TokenType type, out DataToken value)
This is not documented properly yet
virtual DataToken GetValue(DataToken key, out bool success)
virtual DataList GetKeys()
This is not documented properly yet
virtual void SetValue(DataToken key, DataToken value)
Sets the value at the specified key. If that key does not exist, a new one will be added.
bool TryGetValue(DataToken key, out DataToken value)
This is not documented properly yet
DataDictionary ShallowClone()
Clones the DataDictionary into a new DataDictionary that contains all the same values....
virtual bool ContainsValue(DataToken value)
Returns true if the specified value exists on this dictionary.
virtual bool Remove(DataToken key)
Removes a specific key from this dictionary. Returns true if anything was successfully removed.
void Add(KeyValuePair< DataToken, DataToken > item)
DataList GetValues()
This is not documented properly yet
bool IsReadOnly
This is not documented properly yet
virtual void Clear()
Removes all keys and values from this dictionary
virtual int Count
Get the number of elements in the dictionary
bool Contains(KeyValuePair< DataToken, DataToken > item)
void CopyTo(KeyValuePair< DataToken, DataToken >[] array, int arrayIndex)
bool Remove(DataToken key, out DataToken value)
Removes a specific key from this dictionary. Returns true if anything was successfully removed....
bool Remove(KeyValuePair< DataToken, DataToken > item)
DataList(params DataToken[] array)
int LastIndexOf(DataToken item, int index)
int IndexOf(DataToken item, int index)
int BinarySearch(int index, int count, DataToken token)
bool Remove(DataToken value)
virtual bool TryGetValue(int index, out DataToken value)
void AddRange(IEnumerable< DataToken > values)
int BinarySearch(DataToken token)
virtual DataToken GetValue(int index, out bool success)
int LastIndexOf(DataToken item, int index, int count)
virtual void RemoveRange(int index, int count)
virtual bool TryGetValue(int index, TokenType type, out DataToken value)
DataList(List< DataToken > list)
int IndexOf(DataToken value)
virtual void RemoveAt(int index)
void CopyTo(DataToken[] array, int arrayIndex)
virtual void Reverse(int index, int count)
DataList GetRange(int index, int count)
virtual void Add(DataToken value)
virtual void ParseInRange(int startIndex, int stopIndex)
bool RemoveAll(DataToken value)
void Sort(int index, int count)
virtual bool SetValue(int index, DataToken value)
int LastIndexOf(DataToken item)
virtual void InsertRange(int index, DataList input)
int IndexOf(DataToken item, int index, int count)
IEnumerator< DataToken > GetEnumerator()
bool Contains(DataToken value)
void AddRange(DataList list)
DataList(IEnumerable< DataToken > values)
virtual void ParseInRange(int startIndex)
virtual void Insert(int index, DataToken value)
void AddLazyValue(DataToken key, JsonType type, int index)
override DataList GetKeys()
This is not documented properly yet
override bool ContainsKey(DataToken key)
Returns true if the specified key exists on this dictionary.
override void Clear()
Removes all keys and values from this dictionary
override DataToken GetValue(DataToken key, out bool success)
override void Add(DataToken key, DataToken value)
Adds the value at the specified key. The entire purpose of this function that sets it apart from SetV...
override bool Remove(DataToken key)
Removes a specific key from this dictionary. Returns true if anything was successfully removed.
override void SetValue(DataToken key, DataToken value)
Sets the value at the specified key. If that key does not exist, a new one will be added.
JsonDictionary(string source)
void ClearLazyValue(int index)
override DataToken GetValue(int index, out bool success)
override void ParseInRange(int startIndex, int stopIndex)
override void RemoveRange(int index, int count)
override void Add(DataToken value)
void AddLazyValue(JsonType type, string source)
override void Reverse(int index, int count)
override void Insert(int index, DataToken value)
override void InsertRange(int index, DataList input)
override void RemoveAt(int index)
static readonly char[] scanObjectChars
static bool SkipToAnyCharacter(string source, ref int index, char[] characters)
static readonly char[] scanStringChars
static bool TryParseObject(string source, int index, out DataToken result)
static bool TryParseBool(string source, int index, out DataToken result)
static HashSet< DataToken > seenContainers
static readonly char[] scanWordChars
static void SkipWhitespace(string source, ref int index)
static bool SerializeArray(DataList dataList, JsonExportType jsonExportType, StringBuilder builder, int indent, out DataToken error)
static bool SerializeObject(DataDictionary dataDictionary, JsonExportType jsonExportType, StringBuilder builder, int indent, out DataToken error)
static void ScanObject(out bool success, string source, ref int index)
static string TrimWhitespace(string input)
static bool IsComplexObject(string source, int index)
static string UnEscapeCharacter(out bool success, string source, ref int index)
static bool TryParseArray(string source, int index, out DataToken result)
static readonly char[] whitespaceChars
static void ScanNumber(out bool success, string source, ref int index)
static bool TrySerializeToJson(DataToken input, JsonExportType jsonExportType, out DataToken result)
Attempts to convert a DataDictionary or DataList into JSON string output. If successful,...
static void ScanArray(out bool success, string source, ref int index)
static void AppendIndent(StringBuilder builder, int indent)
static bool TryParseNumber(string source, int index, out DataToken result)
static bool TryIdentifyType(string source, int index, out JsonType result)
static string EscapeString(string input)
static void ScanBool(out bool success, string source, ref int index)
static readonly char[] numberChars
static int GetStringEnd(string source, int index)
static bool TryParseString(string source, ref int index, out DataToken result)
static void SkipToCharacter(string source, ref int index, char character)
static void ScanNull(out bool success, string source, ref int index)
static void ScanString(out bool success, string source, ref int index)
static bool IsComplexArray(string source, int index)
static readonly char[] scanArrayChars
static bool TryParseToken(string source, JsonType type, int index, out DataToken result)
static void ScanUnknown(string source, ref int index)
static readonly char[] parseArrayChars
static bool TryDeserializeFromJson(string source, out DataToken result)
Creates a DataList or DataDictionary from JSON string input. If successful, this returns true and the...
static void DownloadImage(string imageUrl, int imageSize, Action< Texture2D > onImageDownload=null, Action< ImageLoadError > onImageDownloadFailed=null, string fallbackImageUrl="", bool isRetry=false)
TextureWrapMode WrapModeU
TextureWrapMode WrapModeW
TextureWrapMode WrapModeV
const int MAXIMUM_DIMENSION
UniTask RunUdonEventOnMainThreadAndRemoveFromQueue(string eventName, ValueTuple< string, object > argument)
void SetProgress(float progress)
static ImageResult LoadImage(System.IntPtr inputBytes, uint inputBytesLength, System.IntPtr outputBuffer, uint outputBufferLength, ImageLoadSettings settings)
static UniTask< DownloadImage > g__SlicedTextureUpload(int width, int height, int bytesPerPixel, TextureFormat format, int mipLevel, NativeSlice< byte > outputBuffer, Texture2D outputTexture)
VRCImageDownloadState State
IUdonEventReceiver UdonBehaviour
const int MAX_BUFFER_SIZE
ImageDownloader(VRCUrl url, Material material, IUdonEventReceiver udonBehaviour=null, TextureInfo textureInfo=null)
VRCImageDownloadError Error
UniTask DownloadImage(Uri uri, CancellationToken cancellationToken)
static IVRCImageDownload DownloadImage(VRCUrl url, Material material, IUdonEventReceiver udonBehaviour, TextureInfo textureInfo)
const int SLICE_SIZE_BYTES
virtual void StartDownload()
const float MINIMUM_DELAY_BETWEEN_REQUESTS
static Func< VRCUrl, Material, IUdonEventReceiver, TextureInfo, IVRCImageDownload > StartDownload
static void RemoveImageDownloadFromQueue(IVRCImageDownload imageDownload)
static bool HasAnyQueuedDownloads
static Func< bool > CanBypassDelay
static bool AddImageDownloadToQueue(IVRCImageDownload imageDownload)
IVRCImageDownload DownloadImage(VRCUrl url, Material material, IUdonEventReceiver udonBehaviour, TextureInfo textureInfo=null)
override string ToString()
void SetBlocks(List< MidiBlock > blocks)
void PrintProcessedData()
static MidiFile Create(string filePath, MidiImportSettings midiImportSettings)
readonly List< MidiData.MidiBlock > allBlocks
readonly List< MidiData.MidiTrack > tracks
MidiRawDataProcessor(ParsedMidiFile midiFile, MidiImportSettings midiImportSettings)
List< TextEvent > TextEvents
List< MidiEvent > MidiEvents
static float MidiTimeToMs(int bpm, int ppq, int time)
const int STATUS_CONTROL_CHANGE
void SendMidiMessage(object sender, MidiVoiceEventArgs args)
MidiVoiceMessageDelegate m_OnControlChange
MidiVoiceMessageDelegate m_OnNoteOff
static IVRCMidiInput OpenMidiInput< T >(string deviceName=null)
const int STATUS_NOTE_OFF
MidiVoiceMessageDelegate m_OnNoteOn
static Func< IVRCMidiInput > Initialize
MidiVoiceMessageDelegate OnNoteOff
static void Log(string message)
MidiVoiceMessageDelegate OnControlChange
static Action< string > OnLog
static VRCMidiHandler Instance
MidiVoiceMessageDelegate OnNoteOn
void ControlChange(object sender, MidiVoiceEventArgs args)
void NoteOff(object sender, MidiVoiceEventArgs args)
void NoteOn(object sender, MidiVoiceEventArgs args)
readonly ValueTuple< string, object >[] argsArray
AbstractUdonBehaviour behaviour
List< MidiData.MidiBlock > activeBlocks
static Action< bool ><> void< get_OnBlockStarted > b__14_0(MidiData.MidiBlock midiBlock)
void< get_OnPlayingStarted > b__18_0()
void< get_OnBlockCompleted > b__16_0(MidiData.MidiBlock midiBlock)
void< get_OnPlayingStopped > b__20_0(bool completed)
readonly List< TrackProgress > activeTracks
Action< MidiData.MidiBlock > OnBlockStarted
IEnumerator MidiEnumerator(MidiFile midiAsset)
AbstractUdonBehaviour[] targetBehaviours
readonly ValueTuple< string, object >[] argsArray
Action< MidiData.MidiBlock > OnBlockCompleted
void OnBlockStart(MidiData.MidiBlock block)
Action< bool > OnPlayingStopped
float lastAudioSampleTime
void OnBlockEnd(MidiData.MidiBlock block)
static Action< VRCNetworkBehaviour > m_OnNetworkBehaviourAwake
abstract void NetworkConfigure()
static Action< VRCNetworkBehaviour > OnNetworkBehaviourAwake
static bool TryGetColor32(VRCPlayerApi player, string key, out Color32 value)
static void SetQuaternion(string key, Quaternion value)
static Type GetType(VRCPlayerApi player, string key)
static void SetColor(string key, Color value)
static bool TryGetSByte(VRCPlayerApi player, string key, out sbyte value)
static void SetBool(string key, bool value)
static Vector4 GetVector4(VRCPlayerApi player, string key)
static short GetShort(VRCPlayerApi player, string key)
static void SetInt(string key, int value)
static void SetULong(string key, ulong value)
static bool TryGetType(VRCPlayerApi player, string key, out Type t)
static Vector2 GetVector2(VRCPlayerApi player, string key)
static bool TryGetByte(VRCPlayerApi player, string key, out byte value)
static bool TryGetVector2(VRCPlayerApi player, string key, out Vector2 value)
static float GetFloat(VRCPlayerApi player, string key)
static ulong GetULong(VRCPlayerApi player, string key)
static Quaternion GetQuaternion(VRCPlayerApi player, string key)
static double GetDouble(VRCPlayerApi player, string key)
static bool TryGetString(VRCPlayerApi player, string key, out string value)
static void SetByte(string key, byte value)
static Vector3 GetVector3(VRCPlayerApi player, string key)
static byte[] GetBytes(VRCPlayerApi player, string key)
static bool TryGetULong(VRCPlayerApi player, string key, out ulong value)
static Color32 GetColor32(VRCPlayerApi player, string key)
static void SetDouble(string key, double value)
static bool TryGetLong(VRCPlayerApi player, string key, out long value)
static void SetColor32(string key, Color32 value)
static int GetInt(VRCPlayerApi player, string key)
static string GetString(VRCPlayerApi player, string key)
static sbyte GetSByte(VRCPlayerApi player, string key)
static bool TryGetBytes(VRCPlayerApi player, string key, out byte[] value)
static long GetLong(VRCPlayerApi player, string key)
static void SetFloat(string key, float value)
static void SetBytes(string key, byte[] value)
static bool TryGetFloat(VRCPlayerApi player, string key, out float value)
static bool TryGetUInt(VRCPlayerApi player, string key, out uint value)
static void SetString(string key, string value)
static void SetUInt(string key, uint value)
static bool TryGetInt(VRCPlayerApi player, string key, out int value)
static void SetVector3(string key, Vector3 value)
static bool TryGetVector4(VRCPlayerApi player, string key, out Vector4 value)
static Color GetColor(VRCPlayerApi player, string key)
static bool TryGetBool(VRCPlayerApi player, string key, out bool value)
static bool TryGetQuaternion(VRCPlayerApi player, string key, out Quaternion value)
static void SetLong(string key, long value)
static IEnumerable< string > GetKeys(VRCPlayerApi player)
static void SetUShort(string key, ushort value)
static void SetShort(string key, short value)
static bool HasKey(VRCPlayerApi player, string key)
static bool TryGetUShort(VRCPlayerApi player, string key, out ushort value)
static void SetSByte(string key, sbyte value)
static uint GetUInt(VRCPlayerApi player, string key)
static bool TryGetShort(VRCPlayerApi player, string key, out short value)
static ushort GetUShort(VRCPlayerApi player, string key)
static bool GetBool(VRCPlayerApi player, string key)
static bool TryGetVector3(VRCPlayerApi player, string key, out Vector3 value)
static bool TryGetColor(VRCPlayerApi player, string key, out Color value)
static bool IsType(VRCPlayerApi player, string key, Type t)
static void SetVector2(string key, Vector2 value)
static void SetVector4(string key, Vector4 value)
static byte GetByte(VRCPlayerApi player, string key)
static bool TryGetDouble(VRCPlayerApi player, string key, out double value)
IUdonEventReceiver UdonBehaviour
AsyncGPUReadbackRequest Request
bool TryGetData(float[] data, int layer=0)
bool TryGetData(Color32[] data, int layer=0)
bool TryGetData(Color[] data, int layer=0)
void HandleCallback(AsyncGPUReadbackRequest request)
bool TryGetData(byte[] data, int layer=0)
bool TryGetData< T >(T[] data, int layer=0)
VRCAsyncGPUReadbackRequest()
static VRCAsyncGPUReadbackRequest Request(Texture src, int mipIndex, TextureFormat dstFormat, IUdonEventReceiver udonBehaviour)
static VRCAsyncGPUReadbackRequest Request(Texture src, int mipIndex, int x, int width, int y, int height, int z, int depth, TextureFormat dstFormat, IUdonEventReceiver udonBehaviour)
static VRCAsyncGPUReadbackRequest Request(Texture src, int mipIndex, IUdonEventReceiver udonBehaviour)
static VRCAsyncGPUReadbackRequest Request(Texture src, int mipIndex, int x, int width, int y, int height, int z, int depth, IUdonEventReceiver udonBehaviour)
MaxBufferDownloadHandler(int max, byte[] buffer)
override bool ReceiveData(byte[] data, int dataLength)
MaxBufferDownloadHandler(int max)
override void ReceiveContentLengthHeader(ulong contentLength)
IUdonEventReceiver UdonBehaviour
VRCStringDownload(VRCUrl url, IUdonEventReceiver udonbehavior)
UniTask StartAtCorrectTime(CancellationToken cancellationToken)
const float MINIMUM_DELAY_BETWEEN_REQUESTS
const int MAXIMUM_DOWNLOAD_SIZE_MB
static void RemoveFromManager(IVRCStringDownload download)
static bool AddToManager(IVRCStringDownload download)
static void LoadUrl(VRCUrl url, IUdonEventReceiver udonBehaviour=null)
static Action< VRCUrl, IUdonEventReceiver > StartDownload
static void LoadUrlInternal(VRCUrl url, IUdonEventReceiver udonBehaviour)
override void LoadURL(VRCUrl url)
override void SetTime(float value)
static Func< VRCAVProVideoPlayer, IAVProVideoPlayerInternal > Initialize
override void PlayURL(VRCUrl url)
override float GetDuration()
VRCAVProVideoPlayer VideoPlayer
static Action< VRCAVProVideoScreen > Initialize
VRCAVProVideoPlayer videoPlayer
VRCAVProVideoPlayer videoPlayer
VRCAVProVideoPlayer VideoPlayer
static Action< VRCAVProVideoSpeaker > Initialize
virtual void PlayURL(VRCUrl url)
void OnVideoError(VideoError videoError)
static Action< BaseVRCVideoPlayer > InitializeBase
abstract float GetDuration()
abstract void LoadURL(VRCUrl url)
virtual void SetTime(float value)
void SetIndexMarker(float desiredTime)
bool EnableAutomaticResync
string targetMaterialProperty
VideoRenderMode renderMode
IEnumerator OnVideoReadyDelayCoroutine()
override void SetTime(float value)
void OnStarted(VideoPlayer source)
AudioSource[] targetAudioSources
void OnPrepared(VideoPlayer source)
override float GetDuration()
override void LoadURL(VRCUrl url)
RenderTexture targetTexture
override void PlayURL(VRCUrl url)
Renderer targetMaterialRenderer
void OnError(VideoPlayer source, string message)
static Action< VRCUrl, int, Object, Action< string >, Action< VideoError > > StartResolveURLCoroutine
VideoAspectRatio aspectRatio
IEnumerator PlayDelayCoroutine()
void OnLoopPointReached(VideoPlayer source)
Networking is a class that provides a set of static methods relating to the networking of UdonBehavio...
static bool IsOwner(VRCPlayerApi player, GameObject obj)
Tells you whether a Player is the Owner of a given GameObject, important for Sync.
static bool IsValid(object obj)
static void ShuffleArray(int[] array)
You can interact with Players in your world through the VRCPlayerApi. Each Player has a VRCPlayerApi ...
bool isLocal
Tells you whether the given Player is the local one.
Represents a URL that can be used to load at runtime. Cannot be constructed at runtime,...
bool IsInternallyValidated
VRCImageDownloadError Error
IUdonEventReceiver UdonBehaviour
VRCImageDownloadState State
IUdonEventReceiver UdonBehaviour
void SetTime(float value)
void OnVideoError(VideoError videoError)
void SetTime(float value)
VideoError
An enum representing the different types of errors that can occur when trying to play a video.
delegate void MidiVoiceMessageDelegate(object sender, MidiVoiceEventArgs args)
bool Equals(DataList other)
bool Equals(DataDictionary other)
bool Equals(DataToken other)
DataDictionary DataDictionary
DataToken(SerializationInfo info, StreamingContext context)
bool Equals(ushort other)
DataToken(DataError error)
static bool operator==(in DataToken lhs, in DataToken rhs)
override string ToString()
int CompareTo(DataToken other)
int CompareTo(object obj)
override bool Equals(object obj)
readonly DataToken Bitcast(TokenType targetType)
void GetObjectData(SerializationInfo info, StreamingContext context)
DataToken(object reference)
DataToken(Object reference)
bool Equals(DataError other)
static bool operator!=(in DataToken lhs, in DataToken rhs)
DataToken(DataDictionary obj)
bool Equals(string other)
DataToken(DataError error, string errorMessage)
override int GetHashCode()
bool Equals(double other)
ImageLoadSettings SetResolutionLimit(Nullable< uint > resolutionLimit)
bool GetGenerateMipMaps()
ImageLoadSettings SetFastResize(bool fast)
ImageLoadSettings(ImageLoadSettingsFlags flags, uint allocationLimit, uint resolutionLimit, uint targetWidth, uint targetHeight, ImageFormat outputFormatOverride)
ImageLoadSettings SetOutputFormatOverride(Nullable< ImageFormat > outputFormatOverride)
Nullable< ImageFormat > GetOutputFormatOverride()
ImageLoadSettings SetGenerateMipMaps(bool enable)
ImageLoadSettings SetResizeResolution(Nullable< ValueTuple< uint, uint > > targetResolution)
Nullable< uint > GetAllocationLimit()
ImageLoadSettings SetAllocationLimit(Nullable< uint > allocationLimit)
Nullable< uint > GetResolutionLimit()
bool HasFlag(ImageLoadSettingsFlags flag)
ImageLoadSettings SetVerticalFlip(bool flip)
Nullable< ValueTuple< uint, uint > > GetResizeResolution()
AsyncUniTaskMethodBuilder t__builder
NativeSlice< byte >< outputSlice > Awaiter u__1
CancellationToken cancellationToken
Awaiter< UnityWebRequest ><> u__2
void SetStateMachine(IAsyncStateMachine stateMachine)
void SetStateMachine(IAsyncStateMachine stateMachine)
ValueTuple< string, object > argument
AsyncUniTaskMethodBuilder t__builder
void SetStateMachine(IAsyncStateMachine stateMachine)
AsyncUniTaskVoidMethodBuilder t__builder
NativeSlice< byte > outputBuffer
AsyncUniTaskMethodBuilder t__builder
override int GetHashCode()
bool Equals(NoteOnEvent other)
MetaEventType MetaEventType
ControlChangeType ControlChangeType
override string ToString()
MidiEventType MidiEventType
TextEventType TextEventType
Info(string key, State state)
void SetStateMachine(IAsyncStateMachine stateMachine)
AsyncUniTaskMethodBuilder t__builder
CancellationToken cancellationToken