using System; using System.CodeDom.Compiler; using System.Collections; using System.Collections.Generic; using System.ComponentModel; using System.Diagnostics; using System.Globalization; using System.IO; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Serialization; using System.Text; using System.Text.RegularExpressions; using System.Threading; using System.Threading.Tasks; using Unity.Collections; using Unity.XR.CoreUtils.Bindings.Variables; using Unity.XR.CoreUtils.Collections; using UnityEngine; using UnityEngine.Events; using UnityEngine.InputSystem.XR; using UnityEngine.SceneManagement; using UnityEngine.Serialization; using UnityEngine.SpatialTracking; using UnityEngine.UI; using UnityEngine.XR; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: AssemblyVersion("0.0.0.0")] [CompilerGenerated] [EditorBrowsable(EditorBrowsableState.Never)] [GeneratedCode("Unity.MonoScriptGenerator.MonoScriptInfoGenerator", null)] internal class UnitySourceGeneratedAssemblyMonoScriptTypes_v1 { private struct MonoScriptData { public byte[] FilePathsData; public byte[] TypesData; public int TotalTypes; public int TotalFiles; public bool IsEditorOnly; } [MethodImpl(MethodImplOptions.AggressiveInlining)] private static MonoScriptData Get() { return new MonoScriptData { FilePathsData = new byte[8258] { 0, 0, 0, 1, 0, 0, 0, 113, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 120, 114, 46, 99, 111, 114, 101, 45, 117, 116, 105, 108, 115, 64, 97, 56, 98, 57, 48, 48, 51, 50, 49, 49, 57, 57, 92, 82, 117, 110, 116, 105, 109, 101, 92, 65, 82, 84, 114, 97, 99, 107, 97, 98, 108, 101, 115, 80, 97, 114, 101, 110, 116, 84, 114, 97, 110, 115, 102, 111, 114, 109, 67, 104, 97, 110, 103, 101, 100, 69, 118, 101, 110, 116, 65, 114, 103, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 101, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 120, 114, 46, 99, 111, 114, 101, 45, 117, 116, 105, 108, 115, 64, 97, 56, 98, 57, 48, 48, 51, 50, 49, 49, 57, 57, 92, 82, 117, 110, 116, 105, 109, 101, 92, 65, 116, 116, 114, 105, 98, 117, 116, 101, 115, 92, 69, 110, 117, 109, 68, 105, 115, 112, 108, 97, 121, 65, 116, 116, 114, 105, 98, 117, 116, 101, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 103, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 120, 114, 46, 99, 111, 114, 101, 45, 117, 116, 105, 108, 115, 64, 97, 56, 98, 57, 48, 48, 51, 50, 49, 49, 57, 57, 92, 82, 117, 110, 116, 105, 109, 101, 92, 65, 116, 116, 114, 105, 98, 117, 116, 101, 115, 92, 70, 108, 97, 103, 115, 80, 114, 111, 112, 101, 114, 116, 121, 65, 116, 116, 114, 105, 98, 117, 116, 101, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 98, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 120, 114, 46, 99, 111, 114, 101, 45, 117, 116, 105, 108, 115, 64, 97, 56, 98, 57, 48, 48, 51, 50, 49, 49, 57, 57, 92, 82, 117, 110, 116, 105, 109, 101, 92, 65, 116, 116, 114, 105, 98, 117, 116, 101, 115, 92, 82, 101, 97, 100, 79, 110, 108, 121, 65, 116, 116, 114, 105, 98, 117, 116, 101, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 112, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 120, 114, 46, 99, 111, 114, 101, 45, 117, 116, 105, 108, 115, 64, 97, 56, 98, 57, 48, 48, 51, 50, 49, 49, 57, 57, 92, 82, 117, 110, 116, 105, 109, 101, 92, 65, 116, 116, 114, 105, 98, 117, 116, 101, 115, 92, 83, 99, 114, 105, 112, 116, 97, 98, 108, 101, 83, 101, 116, 116, 105, 110, 103, 115, 80, 97, 116, 104, 65, 116, 116, 114, 105, 98, 117, 116, 101, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 84, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 120, 114, 46, 99, 111, 114, 101, 45, 117, 116, 105, 108, 115, 64, 97, 56, 98, 57, 48, 48, 51, 50, 49, 49, 57, 57, 92, 82, 117, 110, 116, 105, 109, 101, 92, 65, 119, 97, 105, 116, 97, 98, 108, 101, 85, 116, 105, 108, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 92, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 120, 114, 46, 99, 111, 114, 101, 45, 117, 116, 105, 108, 115, 64, 97, 56, 98, 57, 48, 48, 51, 50, 49, 49, 57, 57, 92, 82, 117, 110, 116, 105, 109, 101, 92, 66, 105, 110, 100, 105, 110, 103, 115, 92, 66, 105, 110, 100, 105, 110, 103, 115, 71, 114, 111, 117, 112, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 91, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 120, 114, 46, 99, 111, 114, 101, 45, 117, 116, 105, 108, 115, 64, 97, 56, 98, 57, 48, 48, 51, 50, 49, 49, 57, 57, 92, 82, 117, 110, 116, 105, 109, 101, 92, 66, 105, 110, 100, 105, 110, 103, 115, 92, 69, 118, 101, 110, 116, 66, 105, 110, 100, 105, 110, 103, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 92, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 120, 114, 46, 99, 111, 114, 101, 45, 117, 116, 105, 108, 115, 64, 97, 56, 98, 57, 48, 48, 51, 50, 49, 49, 57, 57, 92, 82, 117, 110, 116, 105, 109, 101, 92, 66, 105, 110, 100, 105, 110, 103, 115, 92, 73, 69, 118, 101, 110, 116, 66, 105, 110, 100, 105, 110, 103, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 101, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 120, 114, 46, 99, 111, 114, 101, 45, 117, 116, 105, 108, 115, 64, 97, 56, 98, 57, 48, 48, 51, 50, 49, 49, 57, 57, 92, 82, 117, 110, 116, 105, 109, 101, 92, 66, 105, 110, 100, 105, 110, 103, 115, 92, 86, 97, 114, 105, 97, 98, 108, 101, 115, 92, 66, 105, 110, 100, 97, 98, 108, 101, 69, 110, 117, 109, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 105, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 120, 114, 46, 99, 111, 114, 101, 45, 117, 116, 105, 108, 115, 64, 97, 56, 98, 57, 48, 48, 51, 50, 49, 49, 57, 57, 92, 82, 117, 110, 116, 105, 109, 101, 92, 66, 105, 110, 100, 105, 110, 103, 115, 92, 86, 97, 114, 105, 97, 98, 108, 101, 115, 92, 66, 105, 110, 100, 97, 98, 108, 101, 86, 97, 114, 105, 97, 98, 108, 101, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 110, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 120, 114, 46, 99, 111, 114, 101, 45, 117, 116, 105, 108, 115, 64, 97, 56, 98, 57, 48, 48, 51, 50, 49, 49, 57, 57, 92, 82, 117, 110, 116, 105, 109, 101, 92, 66, 105, 110, 100, 105, 110, 103, 115, 92, 86, 97, 114, 105, 97, 98, 108, 101, 115, 92, 66, 105, 110, 100, 97, 98, 108, 101, 86, 97, 114, 105, 97, 98, 108, 101, 65, 108, 108, 111, 99, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 109, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 120, 114, 46, 99, 111, 114, 101, 45, 117, 116, 105, 108, 115, 64, 97, 56, 98, 57, 48, 48, 51, 50, 49, 49, 57, 57, 92, 82, 117, 110, 116, 105, 109, 101, 92, 66, 105, 110, 100, 105, 110, 103, 115, 92, 86, 97, 114, 105, 97, 98, 108, 101, 115, 92, 66, 105, 110, 100, 97, 98, 108, 101, 86, 97, 114, 105, 97, 98, 108, 101, 66, 97, 115, 101, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 118, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 120, 114, 46, 99, 111, 114, 101, 45, 117, 116, 105, 108, 115, 64, 97, 56, 98, 57, 48, 48, 51, 50, 49, 49, 57, 57, 92, 82, 117, 110, 116, 105, 109, 101, 92, 66, 105, 110, 100, 105, 110, 103, 115, 92, 86, 97, 114, 105, 97, 98, 108, 101, 115, 92, 66, 105, 110, 100, 97, 98, 108, 101, 86, 97, 114, 105, 97, 98, 108, 101, 84, 97, 115, 107, 80, 114, 101, 100, 105, 99, 97, 116, 101, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 114, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 120, 114, 46, 99, 111, 114, 101, 45, 117, 116, 105, 108, 115, 64, 97, 56, 98, 57, 48, 48, 51, 50, 49, 49, 57, 57, 92, 82, 117, 110, 116, 105, 109, 101, 92, 66, 105, 110, 100, 105, 110, 103, 115, 92, 86, 97, 114, 105, 97, 98, 108, 101, 115, 92, 73, 82, 101, 97, 100, 79, 110, 108, 121, 66, 105, 110, 100, 97, 98, 108, 101, 86, 97, 114, 105, 97, 98, 108, 101, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 81, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 120, 114, 46, 99, 111, 114, 101, 45, 117, 116, 105, 108, 115, 64, 97, 56, 98, 57, 48, 48, 51, 50, 49, 49, 57, 57, 92, 82, 117, 110, 116, 105, 109, 101, 92, 66, 111, 117, 110, 100, 115, 85, 116, 105, 108, 115, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 91, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 120, 114, 46, 99, 111, 114, 101, 45, 117, 116, 105, 108, 115, 64, 97, 56, 98, 57, 48, 48, 51, 50, 49, 49, 57, 57, 92, 82, 117, 110, 116, 105, 109, 101, 92, 67, 97, 99, 104, 101, 100, 67, 111, 109, 112, 111, 110, 101, 110, 116, 70, 105, 108, 116, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 105, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 120, 114, 46, 99, 111, 114, 101, 45, 117, 116, 105, 108, 115, 64, 97, 56, 98, 57, 48, 48, 51, 50, 49, 49, 57, 57, 92, 82, 117, 110, 116, 105, 109, 101, 92, 67, 97, 112, 97, 98, 105, 108, 105, 116, 121, 80, 114, 111, 102, 105, 108, 101, 92, 67, 97, 112, 97, 98, 105, 108, 105, 116, 121, 80, 114, 111, 102, 105, 108, 101, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 119, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 120, 114, 46, 99, 111, 114, 101, 45, 117, 116, 105, 108, 115, 64, 97, 56, 98, 57, 48, 48, 51, 50, 49, 49, 57, 57, 92, 82, 117, 110, 116, 105, 109, 101, 92, 67, 97, 112, 97, 98, 105, 108, 105, 116, 121, 80, 114, 111, 102, 105, 108, 101, 92, 68, 105, 99, 116, 105, 111, 110, 97, 114, 121, 92, 67, 97, 112, 97, 98, 105, 108, 105, 116, 121, 68, 105, 99, 116, 105, 111, 110, 97, 114, 121, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 127, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 120, 114, 46, 99, 111, 114, 101, 45, 117, 116, 105, 108, 115, 64, 97, 56, 98, 57, 48, 48, 51, 50, 49, 49, 57, 57, 92, 82, 117, 110, 116, 105, 109, 101, 92, 67, 97, 112, 97, 98, 105, 108, 105, 116, 121, 80, 114, 111, 102, 105, 108, 101, 92, 68, 105, 99, 116, 105, 111, 110, 97, 114, 121, 92, 67, 117, 115, 116, 111, 109, 67, 97, 112, 97, 98, 105, 108, 105, 116, 121, 75, 101, 121, 65, 116, 116, 114, 105, 98, 117, 116, 101, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 118, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 120, 114, 46, 99, 111, 114, 101, 45, 117, 116, 105, 108, 115, 64, 97, 56, 98, 57, 48, 48, 51, 50, 49, 49, 57, 57, 92, 82, 117, 110, 116, 105, 109, 101, 92, 67, 97, 112, 97, 98, 105, 108, 105, 116, 121, 80, 114, 111, 102, 105, 108, 101, 92, 68, 105, 99, 116, 105, 111, 110, 97, 114, 121, 92, 73, 67, 97, 112, 97, 98, 105, 108, 105, 116, 121, 77, 111, 100, 105, 102, 105, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 121, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 120, 114, 46, 99, 111, 114, 101, 45, 117, 116, 105, 108, 115, 64, 97, 56, 98, 57, 48, 48, 51, 50, 49, 49, 57, 57, 92, 82, 117, 110, 116, 105, 109, 101, 92, 67, 97, 112, 97, 98, 105, 108, 105, 116, 121, 80, 114, 111, 102, 105, 108, 101, 92, 68, 105, 99, 116, 105, 111, 110, 97, 114, 121, 92, 83, 116, 97, 110, 100, 97, 114, 100, 67, 97, 112, 97, 98, 105, 108, 105, 116, 121, 75, 101, 121, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 84, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 120, 114, 46, 99, 111, 114, 101, 45, 117, 116, 105, 108, 115, 64, 97, 56, 98, 57, 48, 48, 51, 50, 49, 49, 57, 57, 92, 82, 117, 110, 116, 105, 109, 101, 92, 67, 111, 108, 108, 101, 99, 116, 105, 111, 110, 80, 111, 111, 108, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 93, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 120, 114, 46, 99, 111, 114, 101, 45, 117, 116, 105, 108, 115, 64, 97, 56, 98, 57, 48, 48, 51, 50, 49, 49, 57, 57, 92, 82, 117, 110, 116, 105, 109, 101, 92, 67, 111, 108, 108, 101, 99, 116, 105, 111, 110, 115, 92, 72, 97, 115, 104, 83, 101, 116, 76, 105, 115, 116, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 94, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 120, 114, 46, 99, 111, 114, 101, 45, 117, 116, 105, 108, 115, 64, 97, 56, 98, 57, 48, 48, 51, 50, 49, 49, 57, 57, 92, 82, 117, 110, 116, 105, 109, 101, 92, 67, 111, 108, 108, 101, 99, 116, 105, 111, 110, 115, 92, 73, 82, 101, 97, 100, 79, 110, 108, 121, 83, 101, 116, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 97, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 120, 114, 46, 99, 111, 114, 101, 45, 117, 116, 105, 108, 115, 64, 97, 56, 98, 57, 48, 48, 51, 50, 49, 49, 57, 57, 92, 82, 117, 110, 116, 105, 109, 101, 92, 67, 111, 108, 108, 101, 99, 116, 105, 111, 110, 115, 92, 82, 101, 97, 100, 79, 110, 108, 121, 72, 97, 115, 104, 83, 101, 116, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 94, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 120, 114, 46, 99, 111, 114, 101, 45, 117, 116, 105, 108, 115, 64, 97, 56, 98, 57, 48, 48, 51, 50, 49, 49, 57, 57, 92, 82, 117, 110, 116, 105, 109, 101, 92, 67, 111, 108, 108, 101, 99, 116, 105, 111, 110, 115, 92, 82, 101, 97, 100, 79, 110, 108, 121, 76, 105, 115, 116, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 98, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 120, 114, 46, 99, 111, 114, 101, 45, 117, 116, 105, 108, 115, 64, 97, 56, 98, 57, 48, 48, 51, 50, 49, 49, 57, 57, 92, 82, 117, 110, 116, 105, 109, 101, 92, 67, 111, 108, 108, 101, 99, 116, 105, 111, 110, 115, 92, 82, 101, 97, 100, 79, 110, 108, 121, 76, 105, 115, 116, 83, 112, 97, 110, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 100, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 120, 114, 46, 99, 111, 114, 101, 45, 117, 116, 105, 108, 115, 64, 97, 56, 98, 57, 48, 48, 51, 50, 49, 49, 57, 57, 92, 82, 117, 110, 116, 105, 109, 101, 92, 67, 111, 108, 108, 101, 99, 116, 105, 111, 110, 115, 92, 82, 101, 97, 100, 79, 110, 108, 121, 83, 116, 114, 117, 99, 116, 83, 112, 97, 110, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 104, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 120, 114, 46, 99, 111, 114, 101, 45, 117, 116, 105, 108, 115, 64, 97, 56, 98, 57, 48, 48, 51, 50, 49, 49, 57, 57, 92, 82, 117, 110, 116, 105, 109, 101, 92, 67, 111, 108, 108, 101, 99, 116, 105, 111, 110, 115, 92, 83, 101, 114, 105, 97, 108, 105, 122, 97, 98, 108, 101, 68, 105, 99, 116, 105, 111, 110, 97, 114, 121, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 84, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 120, 114, 46, 99, 111, 114, 101, 45, 117, 116, 105, 108, 115, 64, 97, 56, 98, 57, 48, 48, 51, 50, 49, 49, 57, 57, 92, 82, 117, 110, 116, 105, 109, 101, 92, 67, 111, 109, 112, 111, 110, 101, 110, 116, 85, 116, 105, 108, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 96, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 120, 114, 46, 99, 111, 114, 101, 45, 117, 116, 105, 108, 115, 64, 97, 56, 98, 57, 48, 48, 51, 50, 49, 49, 57, 57, 92, 82, 117, 110, 116, 105, 109, 101, 92, 68, 97, 116, 117, 109, 115, 92, 65, 110, 105, 109, 97, 116, 105, 111, 110, 67, 117, 114, 118, 101, 68, 97, 116, 117, 109, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 104, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 120, 114, 46, 99, 111, 114, 101, 45, 117, 116, 105, 108, 115, 64, 97, 56, 98, 57, 48, 48, 51, 50, 49, 49, 57, 57, 92, 82, 117, 110, 116, 105, 109, 101, 92, 68, 97, 116, 117, 109, 115, 92, 65, 110, 105, 109, 97, 116, 105, 111, 110, 67, 117, 114, 118, 101, 68, 97, 116, 117, 109, 80, 114, 111, 112, 101, 114, 116, 121, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 82, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 120, 114, 46, 99, 111, 114, 101, 45, 117, 116, 105, 108, 115, 64, 97, 56, 98, 57, 48, 48, 51, 50, 49, 49, 57, 57, 92, 82, 117, 110, 116, 105, 109, 101, 92, 68, 97, 116, 117, 109, 115, 92, 68, 97, 116, 117, 109, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 90, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 120, 114, 46, 99, 111, 114, 101, 45, 117, 116, 105, 108, 115, 64, 97, 56, 98, 57, 48, 48, 51, 50, 49, 49, 57, 57, 92, 82, 117, 110, 116, 105, 109, 101, 92, 68, 97, 116, 117, 109, 115, 92, 68, 97, 116, 117, 109, 80, 114, 111, 112, 101, 114, 116, 121, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 87, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 120, 114, 46, 99, 111, 114, 101, 45, 117, 116, 105, 108, 115, 64, 97, 56, 98, 57, 48, 48, 51, 50, 49, 49, 57, 57, 92, 82, 117, 110, 116, 105, 109, 101, 92, 68, 97, 116, 117, 109, 115, 92, 70, 108, 111, 97, 116, 68, 97, 116, 117, 109, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 95, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 120, 114, 46, 99, 111, 114, 101, 45, 117, 116, 105, 108, 115, 64, 97, 56, 98, 57, 48, 48, 51, 50, 49, 49, 57, 57, 92, 82, 117, 110, 116, 105, 109, 101, 92, 68, 97, 116, 117, 109, 115, 92, 70, 108, 111, 97, 116, 68, 97, 116, 117, 109, 80, 114, 111, 112, 101, 114, 116, 121, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 85, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 120, 114, 46, 99, 111, 114, 101, 45, 117, 116, 105, 108, 115, 64, 97, 56, 98, 57, 48, 48, 51, 50, 49, 49, 57, 57, 92, 82, 117, 110, 116, 105, 109, 101, 92, 68, 97, 116, 117, 109, 115, 92, 73, 110, 116, 68, 97, 116, 117, 109, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 93, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 120, 114, 46, 99, 111, 114, 101, 45, 117, 116, 105, 108, 115, 64, 97, 56, 98, 57, 48, 48, 51, 50, 49, 49, 57, 57, 92, 82, 117, 110, 116, 105, 109, 101, 92, 68, 97, 116, 117, 109, 115, 92, 73, 110, 116, 68, 97, 116, 117, 109, 80, 114, 111, 112, 101, 114, 116, 121, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 88, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 120, 114, 46, 99, 111, 114, 101, 45, 117, 116, 105, 108, 115, 64, 97, 56, 98, 57, 48, 48, 51, 50, 49, 49, 57, 57, 92, 82, 117, 110, 116, 105, 109, 101, 92, 68, 97, 116, 117, 109, 115, 92, 83, 116, 114, 105, 110, 103, 68, 97, 116, 117, 109, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 96, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 120, 114, 46, 99, 111, 114, 101, 45, 117, 116, 105, 108, 115, 64, 97, 56, 98, 57, 48, 48, 51, 50, 49, 49, 57, 57, 92, 82, 117, 110, 116, 105, 109, 101, 92, 68, 97, 116, 117, 109, 115, 92, 83, 116, 114, 105, 110, 103, 68, 97, 116, 117, 109, 80, 114, 111, 112, 101, 114, 116, 121, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 80, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 120, 114, 46, 99, 111, 114, 101, 45, 117, 116, 105, 108, 115, 64, 97, 56, 98, 57, 48, 48, 51, 50, 49, 49, 57, 57, 92, 82, 117, 110, 116, 105, 109, 101, 92, 69, 110, 117, 109, 86, 97, 108, 117, 101, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 97, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 120, 114, 46, 99, 111, 114, 101, 45, 117, 116, 105, 108, 115, 64, 97, 56, 98, 57, 48, 48, 51, 50, 49, 49, 57, 57, 92, 82, 117, 110, 116, 105, 109, 101, 92, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 92, 66, 111, 117, 110, 100, 115, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 97, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 120, 114, 46, 99, 111, 114, 101, 45, 117, 116, 105, 108, 115, 64, 97, 56, 98, 57, 48, 48, 51, 50, 49, 49, 57, 57, 92, 82, 117, 110, 116, 105, 109, 101, 92, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 92, 67, 97, 109, 101, 114, 97, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 101, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 120, 114, 46, 99, 111, 114, 101, 45, 117, 116, 105, 108, 115, 64, 97, 56, 98, 57, 48, 48, 51, 50, 49, 49, 57, 57, 92, 82, 117, 110, 116, 105, 109, 101, 92, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 92, 67, 111, 108, 108, 101, 99, 116, 105, 111, 110, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 101, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 120, 114, 46, 99, 111, 114, 101, 45, 117, 116, 105, 108, 115, 64, 97, 56, 98, 57, 48, 48, 51, 50, 49, 49, 57, 57, 92, 82, 117, 110, 116, 105, 109, 101, 92, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 92, 68, 105, 99, 116, 105, 111, 110, 97, 114, 121, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 101, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 120, 114, 46, 99, 111, 114, 101, 45, 117, 116, 105, 108, 115, 64, 97, 56, 98, 57, 48, 48, 51, 50, 49, 49, 57, 57, 92, 82, 117, 110, 116, 105, 109, 101, 92, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 92, 71, 97, 109, 101, 79, 98, 106, 101, 99, 116, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 95, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 120, 114, 46, 99, 111, 114, 101, 45, 117, 116, 105, 108, 115, 64, 97, 56, 98, 57, 48, 48, 51, 50, 49, 49, 57, 57, 92, 82, 117, 110, 116, 105, 109, 101, 92, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 92, 71, 117, 105, 100, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 98, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 120, 114, 46, 99, 111, 114, 101, 45, 117, 116, 105, 108, 115, 64, 97, 56, 98, 57, 48, 48, 51, 50, 49, 49, 57, 57, 92, 82, 117, 110, 116, 105, 109, 101, 92, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 92, 72, 97, 115, 104, 83, 101, 116, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 100, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 120, 114, 46, 99, 111, 114, 101, 45, 117, 116, 105, 108, 115, 64, 97, 56, 98, 57, 48, 48, 51, 50, 49, 49, 57, 57, 92, 82, 117, 110, 116, 105, 109, 101, 92, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 92, 76, 97, 121, 101, 114, 77, 97, 115, 107, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 95, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 120, 114, 46, 99, 111, 114, 101, 45, 117, 116, 105, 108, 115, 64, 97, 56, 98, 57, 48, 48, 51, 50, 49, 49, 57, 57, 92, 82, 117, 110, 116, 105, 109, 101, 92, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 92, 76, 105, 115, 116, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 104, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 120, 114, 46, 99, 111, 114, 101, 45, 117, 116, 105, 108, 115, 64, 97, 56, 98, 57, 48, 48, 51, 50, 49, 49, 57, 57, 92, 82, 117, 110, 116, 105, 109, 101, 92, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 92, 77, 111, 110, 111, 66, 101, 104, 97, 118, 105, 111, 117, 114, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 95, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 120, 114, 46, 99, 111, 114, 101, 45, 117, 116, 105, 108, 115, 64, 97, 56, 98, 57, 48, 48, 51, 50, 49, 49, 57, 57, 92, 82, 117, 110, 116, 105, 109, 101, 92, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 92, 80, 111, 115, 101, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 101, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 120, 114, 46, 99, 111, 114, 101, 45, 117, 116, 105, 108, 115, 64, 97, 56, 98, 57, 48, 48, 51, 50, 49, 49, 57, 57, 92, 82, 117, 110, 116, 105, 109, 101, 92, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 92, 81, 117, 97, 116, 101, 114, 110, 105, 111, 110, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 100, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 120, 114, 46, 99, 111, 114, 101, 45, 117, 116, 105, 108, 115, 64, 97, 56, 98, 57, 48, 48, 51, 50, 49, 49, 57, 57, 92, 82, 117, 110, 116, 105, 109, 101, 92, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 92, 83, 116, 111, 112, 119, 97, 116, 99, 104, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 97, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 120, 114, 46, 99, 111, 114, 101, 45, 117, 116, 105, 108, 115, 64, 97, 56, 98, 57, 48, 48, 51, 50, 49, 49, 57, 57, 92, 82, 117, 110, 116, 105, 109, 101, 92, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 92, 83, 116, 114, 105, 110, 103, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 100, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 120, 114, 46, 99, 111, 114, 101, 45, 117, 116, 105, 108, 115, 64, 97, 56, 98, 57, 48, 48, 51, 50, 49, 49, 57, 57, 92, 82, 117, 110, 116, 105, 109, 101, 92, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 92, 84, 114, 97, 110, 115, 102, 111, 114, 109, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 95, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 120, 114, 46, 99, 111, 114, 101, 45, 117, 116, 105, 108, 115, 64, 97, 56, 98, 57, 48, 48, 51, 50, 49, 49, 57, 57, 92, 82, 117, 110, 116, 105, 109, 101, 92, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 92, 84, 121, 112, 101, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 99, 115, 0, 0, 0, 9, 0, 0, 0, 101, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 120, 114, 46, 99, 111, 114, 101, 45, 117, 116, 105, 108, 115, 64, 97, 56, 98, 57, 48, 48, 51, 50, 49, 49, 57, 57, 92, 82, 117, 110, 116, 105, 109, 101, 92, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 92, 85, 110, 105, 116, 121, 69, 118, 101, 110, 116, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 98, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 120, 114, 46, 99, 111, 114, 101, 45, 117, 116, 105, 108, 115, 64, 97, 56, 98, 57, 48, 48, 51, 50, 49, 49, 57, 57, 92, 82, 117, 110, 116, 105, 109, 101, 92, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 92, 86, 101, 99, 116, 111, 114, 50, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 98, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 120, 114, 46, 99, 111, 114, 101, 45, 117, 116, 105, 108, 115, 64, 97, 56, 98, 57, 48, 48, 51, 50, 49, 49, 57, 57, 92, 82, 117, 110, 116, 105, 109, 101, 92, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 92, 86, 101, 99, 116, 111, 114, 51, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 85, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 120, 114, 46, 99, 111, 114, 101, 45, 117, 116, 105, 108, 115, 64, 97, 56, 98, 57, 48, 48, 51, 50, 49, 49, 57, 57, 92, 82, 117, 110, 116, 105, 109, 101, 92, 71, 97, 109, 101, 79, 98, 106, 101, 99, 116, 85, 116, 105, 108, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 83, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 120, 114, 46, 99, 111, 114, 101, 45, 117, 116, 105, 108, 115, 64, 97, 56, 98, 57, 48, 48, 51, 50, 49, 49, 57, 57, 92, 82, 117, 110, 116, 105, 109, 101, 92, 71, 101, 111, 109, 101, 116, 114, 121, 85, 116, 105, 108, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 78, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 120, 114, 46, 99, 111, 114, 101, 45, 117, 116, 105, 108, 115, 64, 97, 56, 98, 57, 48, 48, 51, 50, 49, 49, 57, 57, 92, 82, 117, 110, 116, 105, 109, 101, 92, 71, 117, 105, 100, 85, 116, 105, 108, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 82, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 120, 114, 46, 99, 111, 114, 101, 45, 117, 116, 105, 108, 115, 64, 97, 56, 98, 57, 48, 48, 51, 50, 49, 49, 57, 57, 92, 82, 117, 110, 116, 105, 109, 101, 92, 72, 97, 115, 104, 67, 111, 100, 101, 85, 116, 105, 108, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 83, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 120, 114, 46, 99, 111, 114, 101, 45, 117, 116, 105, 108, 115, 64, 97, 56, 98, 57, 48, 48, 51, 50, 49, 49, 57, 57, 92, 82, 117, 110, 116, 105, 109, 101, 92, 77, 97, 116, 101, 114, 105, 97, 108, 85, 116, 105, 108, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 81, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 120, 114, 46, 99, 111, 114, 101, 45, 117, 116, 105, 108, 115, 64, 97, 56, 98, 57, 48, 48, 51, 50, 49, 49, 57, 57, 92, 82, 117, 110, 116, 105, 109, 101, 92, 77, 97, 116, 104, 85, 116, 105, 108, 105, 116, 121, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 86, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 120, 114, 46, 99, 111, 114, 101, 45, 117, 116, 105, 108, 115, 64, 97, 56, 98, 57, 48, 48, 51, 50, 49, 49, 57, 57, 92, 82, 117, 110, 116, 105, 109, 101, 92, 78, 97, 116, 105, 118, 101, 65, 114, 114, 97, 121, 85, 116, 105, 108, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 80, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 120, 114, 46, 99, 111, 114, 101, 45, 117, 116, 105, 108, 115, 64, 97, 56, 98, 57, 48, 48, 51, 50, 49, 49, 57, 57, 92, 82, 117, 110, 116, 105, 109, 101, 92, 79, 98, 106, 101, 99, 116, 80, 111, 111, 108, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 87, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 120, 114, 46, 99, 111, 114, 101, 45, 117, 116, 105, 108, 115, 64, 97, 56, 98, 57, 48, 48, 51, 50, 49, 49, 57, 57, 92, 82, 117, 110, 116, 105, 109, 101, 92, 79, 110, 68, 101, 115, 116, 114, 111, 121, 78, 111, 116, 105, 102, 105, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 85, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 120, 114, 46, 99, 111, 114, 101, 45, 117, 116, 105, 108, 115, 64, 97, 56, 98, 57, 48, 48, 51, 50, 49, 49, 57, 57, 92, 82, 117, 110, 116, 105, 109, 101, 92, 82, 101, 102, 108, 101, 99, 116, 105, 111, 110, 85, 116, 105, 108, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 88, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 120, 114, 46, 99, 111, 114, 101, 45, 117, 116, 105, 108, 115, 64, 97, 56, 98, 57, 48, 48, 51, 50, 49, 49, 57, 57, 92, 82, 117, 110, 116, 105, 109, 101, 92, 83, 99, 114, 105, 112, 116, 97, 98, 108, 101, 83, 101, 116, 116, 105, 110, 103, 115, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 92, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 120, 114, 46, 99, 111, 114, 101, 45, 117, 116, 105, 108, 115, 64, 97, 56, 98, 57, 48, 48, 51, 50, 49, 49, 57, 57, 92, 82, 117, 110, 116, 105, 109, 101, 92, 83, 99, 114, 105, 112, 116, 97, 98, 108, 101, 83, 101, 116, 116, 105, 110, 103, 115, 66, 97, 115, 101, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 86, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 120, 114, 46, 99, 111, 114, 101, 45, 117, 116, 105, 108, 115, 64, 97, 56, 98, 57, 48, 48, 51, 50, 49, 49, 57, 57, 92, 82, 117, 110, 116, 105, 109, 101, 92, 83, 101, 114, 105, 97, 108, 105, 122, 97, 98, 108, 101, 71, 117, 105, 100, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 90, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 120, 114, 46, 99, 111, 114, 101, 45, 117, 116, 105, 108, 115, 64, 97, 56, 98, 57, 48, 48, 51, 50, 49, 49, 57, 57, 92, 82, 117, 110, 116, 105, 109, 101, 92, 83, 101, 114, 105, 97, 108, 105, 122, 97, 98, 108, 101, 71, 117, 105, 100, 85, 116, 105, 108, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 82, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 120, 114, 46, 99, 111, 114, 101, 45, 117, 116, 105, 108, 115, 64, 97, 56, 98, 57, 48, 48, 51, 50, 49, 49, 57, 57, 92, 82, 117, 110, 116, 105, 109, 101, 92, 84, 101, 120, 116, 117, 114, 101, 85, 116, 105, 108, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 79, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 120, 114, 46, 99, 111, 114, 101, 45, 117, 116, 105, 108, 115, 64, 97, 56, 98, 57, 48, 48, 51, 50, 49, 49, 57, 57, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 100, 111, 66, 108, 111, 99, 107, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 86, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 120, 114, 46, 99, 111, 114, 101, 45, 117, 116, 105, 108, 115, 64, 97, 56, 98, 57, 48, 48, 51, 50, 49, 49, 57, 57, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 116, 121, 79, 98, 106, 101, 99, 116, 85, 116, 105, 108, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 84, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 120, 114, 46, 99, 111, 114, 101, 45, 117, 116, 105, 108, 115, 64, 97, 56, 98, 57, 48, 48, 51, 50, 49, 49, 57, 57, 92, 82, 117, 110, 116, 105, 109, 101, 92, 88, 82, 76, 111, 103, 103, 105, 110, 103, 85, 116, 105, 108, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 78, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 120, 114, 46, 99, 111, 114, 101, 45, 117, 116, 105, 108, 115, 64, 97, 56, 98, 57, 48, 48, 51, 50, 49, 49, 57, 57, 92, 82, 117, 110, 116, 105, 109, 101, 92, 88, 82, 79, 114, 105, 103, 105, 110, 46, 99, 115 }, TypesData = new byte[4348] { 0, 0, 0, 0, 62, 85, 110, 105, 116, 121, 46, 88, 82, 46, 67, 111, 114, 101, 85, 116, 105, 108, 115, 124, 65, 82, 84, 114, 97, 99, 107, 97, 98, 108, 101, 115, 80, 97, 114, 101, 110, 116, 84, 114, 97, 110, 115, 102, 111, 114, 109, 67, 104, 97, 110, 103, 101, 100, 69, 118, 101, 110, 116, 65, 114, 103, 115, 0, 0, 0, 0, 43, 85, 110, 105, 116, 121, 46, 88, 82, 46, 67, 111, 114, 101, 85, 116, 105, 108, 115, 46, 71, 85, 73, 124, 69, 110, 117, 109, 68, 105, 115, 112, 108, 97, 121, 65, 116, 116, 114, 105, 98, 117, 116, 101, 0, 0, 0, 0, 45, 85, 110, 105, 116, 121, 46, 88, 82, 46, 67, 111, 114, 101, 85, 116, 105, 108, 115, 46, 71, 85, 73, 124, 70, 108, 97, 103, 115, 80, 114, 111, 112, 101, 114, 116, 121, 65, 116, 116, 114, 105, 98, 117, 116, 101, 0, 0, 0, 0, 36, 85, 110, 105, 116, 121, 46, 88, 82, 46, 67, 111, 114, 101, 85, 116, 105, 108, 115, 124, 82, 101, 97, 100, 79, 110, 108, 121, 65, 116, 116, 114, 105, 98, 117, 116, 101, 0, 0, 0, 0, 50, 85, 110, 105, 116, 121, 46, 88, 82, 46, 67, 111, 114, 101, 85, 116, 105, 108, 115, 124, 83, 99, 114, 105, 112, 116, 97, 98, 108, 101, 83, 101, 116, 116, 105, 110, 103, 115, 80, 97, 116, 104, 65, 116, 116, 114, 105, 98, 117, 116, 101, 0, 0, 0, 0, 33, 85, 110, 105, 116, 121, 46, 88, 82, 46, 67, 111, 114, 101, 85, 116, 105, 108, 115, 124, 65, 119, 97, 105, 116, 97, 98, 108, 101, 85, 116, 105, 108, 115, 0, 0, 0, 0, 41, 85, 110, 105, 116, 121, 46, 88, 82, 46, 67, 111, 114, 101, 85, 116, 105, 108, 115, 46, 66, 105, 110, 100, 105, 110, 103, 115, 124, 66, 105, 110, 100, 105, 110, 103, 115, 71, 114, 111, 117, 112, 0, 0, 0, 0, 40, 85, 110, 105, 116, 121, 46, 88, 82, 46, 67, 111, 114, 101, 85, 116, 105, 108, 115, 46, 66, 105, 110, 100, 105, 110, 103, 115, 124, 69, 118, 101, 110, 116, 66, 105, 110, 100, 105, 110, 103, 0, 0, 0, 0, 41, 85, 110, 105, 116, 121, 46, 88, 82, 46, 67, 111, 114, 101, 85, 116, 105, 108, 115, 46, 66, 105, 110, 100, 105, 110, 103, 115, 124, 73, 69, 118, 101, 110, 116, 66, 105, 110, 100, 105, 110, 103, 0, 0, 0, 0, 50, 85, 110, 105, 116, 121, 46, 88, 82, 46, 67, 111, 114, 101, 85, 116, 105, 108, 115, 46, 66, 105, 110, 100, 105, 110, 103, 115, 46, 86, 97, 114, 105, 97, 98, 108, 101, 115, 124, 66, 105, 110, 100, 97, 98, 108, 101, 69, 110, 117, 109, 0, 0, 0, 0, 54, 85, 110, 105, 116, 121, 46, 88, 82, 46, 67, 111, 114, 101, 85, 116, 105, 108, 115, 46, 66, 105, 110, 100, 105, 110, 103, 115, 46, 86, 97, 114, 105, 97, 98, 108, 101, 115, 124, 66, 105, 110, 100, 97, 98, 108, 101, 86, 97, 114, 105, 97, 98, 108, 101, 0, 0, 0, 0, 59, 85, 110, 105, 116, 121, 46, 88, 82, 46, 67, 111, 114, 101, 85, 116, 105, 108, 115, 46, 66, 105, 110, 100, 105, 110, 103, 115, 46, 86, 97, 114, 105, 97, 98, 108, 101, 115, 124, 66, 105, 110, 100, 97, 98, 108, 101, 86, 97, 114, 105, 97, 98, 108, 101, 65, 108, 108, 111, 99, 0, 0, 0, 0, 58, 85, 110, 105, 116, 121, 46, 88, 82, 46, 67, 111, 114, 101, 85, 116, 105, 108, 115, 46, 66, 105, 110, 100, 105, 110, 103, 115, 46, 86, 97, 114, 105, 97, 98, 108, 101, 115, 124, 66, 105, 110, 100, 97, 98, 108, 101, 86, 97, 114, 105, 97, 98, 108, 101, 66, 97, 115, 101, 0, 0, 0, 0, 67, 85, 110, 105, 116, 121, 46, 88, 82, 46, 67, 111, 114, 101, 85, 116, 105, 108, 115, 46, 66, 105, 110, 100, 105, 110, 103, 115, 46, 86, 97, 114, 105, 97, 98, 108, 101, 115, 124, 66, 105, 110, 100, 97, 98, 108, 101, 86, 97, 114, 105, 97, 98, 108, 101, 84, 97, 115, 107, 80, 114, 101, 100, 105, 99, 97, 116, 101, 0, 0, 0, 0, 63, 85, 110, 105, 116, 121, 46, 88, 82, 46, 67, 111, 114, 101, 85, 116, 105, 108, 115, 46, 66, 105, 110, 100, 105, 110, 103, 115, 46, 86, 97, 114, 105, 97, 98, 108, 101, 115, 124, 66, 105, 110, 100, 97, 98, 108, 101, 86, 97, 114, 105, 97, 98, 108, 101, 84, 97, 115, 107, 83, 116, 97, 116, 101, 0, 0, 0, 0, 63, 85, 110, 105, 116, 121, 46, 88, 82, 46, 67, 111, 114, 101, 85, 116, 105, 108, 115, 46, 66, 105, 110, 100, 105, 110, 103, 115, 46, 86, 97, 114, 105, 97, 98, 108, 101, 115, 124, 73, 82, 101, 97, 100, 79, 110, 108, 121, 66, 105, 110, 100, 97, 98, 108, 101, 86, 97, 114, 105, 97, 98, 108, 101, 0, 0, 0, 0, 30, 85, 110, 105, 116, 121, 46, 88, 82, 46, 67, 111, 114, 101, 85, 116, 105, 108, 115, 124, 66, 111, 117, 110, 100, 115, 85, 116, 105, 108, 115, 0, 0, 0, 0, 33, 85, 110, 105, 116, 121, 46, 88, 82, 46, 67, 111, 114, 101, 85, 116, 105, 108, 115, 124, 73, 67, 111, 109, 112, 111, 110, 101, 110, 116, 72, 111, 115, 116, 0, 0, 0, 0, 40, 85, 110, 105, 116, 121, 46, 88, 82, 46, 67, 111, 114, 101, 85, 116, 105, 108, 115, 124, 67, 97, 99, 104, 101, 100, 67, 111, 109, 112, 111, 110, 101, 110, 116, 70, 105, 108, 116, 101, 114, 0, 0, 0, 0, 49, 85, 110, 105, 116, 121, 46, 88, 82, 46, 67, 111, 114, 101, 85, 116, 105, 108, 115, 46, 67, 97, 112, 97, 98, 105, 108, 105, 116, 105, 101, 115, 124, 67, 97, 112, 97, 98, 105, 108, 105, 116, 121, 80, 114, 111, 102, 105, 108, 101, 0, 0, 0, 0, 52, 85, 110, 105, 116, 121, 46, 88, 82, 46, 67, 111, 114, 101, 85, 116, 105, 108, 115, 46, 67, 97, 112, 97, 98, 105, 108, 105, 116, 105, 101, 115, 124, 67, 97, 112, 97, 98, 105, 108, 105, 116, 121, 68, 105, 99, 116, 105, 111, 110, 97, 114, 121, 0, 0, 0, 0, 60, 85, 110, 105, 116, 121, 46, 88, 82, 46, 67, 111, 114, 101, 85, 116, 105, 108, 115, 46, 67, 97, 112, 97, 98, 105, 108, 105, 116, 105, 101, 115, 124, 67, 117, 115, 116, 111, 109, 67, 97, 112, 97, 98, 105, 108, 105, 116, 121, 75, 101, 121, 65, 116, 116, 114, 105, 98, 117, 116, 101, 0, 0, 0, 0, 51, 85, 110, 105, 116, 121, 46, 88, 82, 46, 67, 111, 114, 101, 85, 116, 105, 108, 115, 46, 67, 97, 112, 97, 98, 105, 108, 105, 116, 105, 101, 115, 124, 73, 67, 97, 112, 97, 98, 105, 108, 105, 116, 121, 77, 111, 100, 105, 102, 105, 101, 114, 0, 0, 0, 0, 54, 85, 110, 105, 116, 121, 46, 88, 82, 46, 67, 111, 114, 101, 85, 116, 105, 108, 115, 46, 67, 97, 112, 97, 98, 105, 108, 105, 116, 105, 101, 115, 124, 83, 116, 97, 110, 100, 97, 114, 100, 67, 97, 112, 97, 98, 105, 108, 105, 116, 121, 75, 101, 121, 115, 0, 0, 0, 0, 33, 85, 110, 105, 116, 121, 46, 88, 82, 46, 67, 111, 114, 101, 85, 116, 105, 108, 115, 124, 67, 111, 108, 108, 101, 99, 116, 105, 111, 110, 80, 111, 111, 108, 0, 0, 0, 0, 42, 85, 110, 105, 116, 121, 46, 88, 82, 46, 67, 111, 114, 101, 85, 116, 105, 108, 115, 46, 67, 111, 108, 108, 101, 99, 116, 105, 111, 110, 115, 124, 72, 97, 115, 104, 83, 101, 116, 76, 105, 115, 116, 0, 0, 0, 0, 43, 85, 110, 105, 116, 121, 46, 88, 82, 46, 67, 111, 114, 101, 85, 116, 105, 108, 115, 46, 67, 111, 108, 108, 101, 99, 116, 105, 111, 110, 115, 124, 73, 82, 101, 97, 100, 79, 110, 108, 121, 83, 101, 116, 0, 0, 0, 0, 46, 85, 110, 105, 116, 121, 46, 88, 82, 46, 67, 111, 114, 101, 85, 116, 105, 108, 115, 46, 67, 111, 108, 108, 101, 99, 116, 105, 111, 110, 115, 124, 82, 101, 97, 100, 79, 110, 108, 121, 72, 97, 115, 104, 83, 101, 116, 0, 0, 0, 0, 56, 85, 110, 105, 116, 121, 46, 88, 82, 46, 67, 111, 114, 101, 85, 116, 105, 108, 115, 46, 67, 111, 108, 108, 101, 99, 116, 105, 111, 110, 115, 124, 82, 101, 97, 100, 79, 110, 108, 121, 72, 97, 115, 104, 83, 101, 116, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 0, 0, 0, 0, 43, 85, 110, 105, 116, 121, 46, 88, 82, 46, 67, 111, 114, 101, 85, 116, 105, 108, 115, 46, 67, 111, 108, 108, 101, 99, 116, 105, 111, 110, 115, 124, 82, 101, 97, 100, 79, 110, 108, 121, 76, 105, 115, 116, 0, 0, 0, 0, 47, 85, 110, 105, 116, 121, 46, 88, 82, 46, 67, 111, 114, 101, 85, 116, 105, 108, 115, 46, 67, 111, 108, 108, 101, 99, 116, 105, 111, 110, 115, 124, 82, 101, 97, 100, 79, 110, 108, 121, 76, 105, 115, 116, 83, 112, 97, 110, 1, 0, 0, 0, 42, 85, 110, 105, 116, 121, 46, 88, 82, 46, 67, 111, 114, 101, 85, 116, 105, 108, 115, 46, 67, 111, 108, 108, 101, 99, 116, 105, 111, 110, 115, 46, 124, 69, 110, 117, 109, 101, 114, 97, 116, 111, 114, 0, 0, 0, 0, 49, 85, 110, 105, 116, 121, 46, 88, 82, 46, 67, 111, 114, 101, 85, 116, 105, 108, 115, 46, 67, 111, 108, 108, 101, 99, 116, 105, 111, 110, 115, 124, 82, 101, 97, 100, 79, 110, 108, 121, 83, 116, 114, 117, 99, 116, 83, 112, 97, 110, 1, 0, 0, 0, 42, 85, 110, 105, 116, 121, 46, 88, 82, 46, 67, 111, 114, 101, 85, 116, 105, 108, 115, 46, 67, 111, 108, 108, 101, 99, 116, 105, 111, 110, 115, 46, 124, 69, 110, 117, 109, 101, 114, 97, 116, 111, 114, 0, 0, 0, 0, 53, 85, 110, 105, 116, 121, 46, 88, 82, 46, 67, 111, 114, 101, 85, 116, 105, 108, 115, 46, 67, 111, 108, 108, 101, 99, 116, 105, 111, 110, 115, 124, 83, 101, 114, 105, 97, 108, 105, 122, 97, 98, 108, 101, 68, 105, 99, 116, 105, 111, 110, 97, 114, 121, 0, 0, 0, 0, 58, 85, 110, 105, 116, 121, 46, 88, 82, 46, 67, 111, 114, 101, 85, 116, 105, 108, 115, 46, 67, 111, 108, 108, 101, 99, 116, 105, 111, 110, 115, 46, 83, 101, 114, 105, 97, 108, 105, 122, 97, 98, 108, 101, 68, 105, 99, 116, 105, 111, 110, 97, 114, 121, 124, 73, 116, 101, 109, 1, 0, 0, 0, 33, 85, 110, 105, 116, 121, 46, 88, 82, 46, 67, 111, 114, 101, 85, 116, 105, 108, 115, 124, 67, 111, 109, 112, 111, 110, 101, 110, 116, 85, 116, 105, 108, 115, 1, 0, 0, 0, 33, 85, 110, 105, 116, 121, 46, 88, 82, 46, 67, 111, 114, 101, 85, 116, 105, 108, 115, 124, 67, 111, 109, 112, 111, 110, 101, 110, 116, 85, 116, 105, 108, 115, 0, 0, 0, 0, 45, 85, 110, 105, 116, 121, 46, 88, 82, 46, 67, 111, 114, 101, 85, 116, 105, 108, 115, 46, 68, 97, 116, 117, 109, 115, 124, 65, 110, 105, 109, 97, 116, 105, 111, 110, 67, 117, 114, 118, 101, 68, 97, 116, 117, 109, 0, 0, 0, 0, 53, 85, 110, 105, 116, 121, 46, 88, 82, 46, 67, 111, 114, 101, 85, 116, 105, 108, 115, 46, 68, 97, 116, 117, 109, 115, 124, 65, 110, 105, 109, 97, 116, 105, 111, 110, 67, 117, 114, 118, 101, 68, 97, 116, 117, 109, 80, 114, 111, 112, 101, 114, 116, 121, 0, 0, 0, 0, 31, 85, 110, 105, 116, 121, 46, 88, 82, 46, 67, 111, 114, 101, 85, 116, 105, 108, 115, 46, 68, 97, 116, 117, 109, 115, 124, 68, 97, 116, 117, 109, 0, 0, 0, 0, 39, 85, 110, 105, 116, 121, 46, 88, 82, 46, 67, 111, 114, 101, 85, 116, 105, 108, 115, 46, 68, 97, 116, 117, 109, 115, 124, 68, 97, 116, 117, 109, 80, 114, 111, 112, 101, 114, 116, 121, 0, 0, 0, 0, 36, 85, 110, 105, 116, 121, 46, 88, 82, 46, 67, 111, 114, 101, 85, 116, 105, 108, 115, 46, 68, 97, 116, 117, 109, 115, 124, 70, 108, 111, 97, 116, 68, 97, 116, 117, 109, 0, 0, 0, 0, 44, 85, 110, 105, 116, 121, 46, 88, 82, 46, 67, 111, 114, 101, 85, 116, 105, 108, 115, 46, 68, 97, 116, 117, 109, 115, 124, 70, 108, 111, 97, 116, 68, 97, 116, 117, 109, 80, 114, 111, 112, 101, 114, 116, 121, 0, 0, 0, 0, 34, 85, 110, 105, 116, 121, 46, 88, 82, 46, 67, 111, 114, 101, 85, 116, 105, 108, 115, 46, 68, 97, 116, 117, 109, 115, 124, 73, 110, 116, 68, 97, 116, 117, 109, 0, 0, 0, 0, 42, 85, 110, 105, 116, 121, 46, 88, 82, 46, 67, 111, 114, 101, 85, 116, 105, 108, 115, 46, 68, 97, 116, 117, 109, 115, 124, 73, 110, 116, 68, 97, 116, 117, 109, 80, 114, 111, 112, 101, 114, 116, 121, 0, 0, 0, 0, 37, 85, 110, 105, 116, 121, 46, 88, 82, 46, 67, 111, 114, 101, 85, 116, 105, 108, 115, 46, 68, 97, 116, 117, 109, 115, 124, 83, 116, 114, 105, 110, 103, 68, 97, 116, 117, 109, 0, 0, 0, 0, 45, 85, 110, 105, 116, 121, 46, 88, 82, 46, 67, 111, 114, 101, 85, 116, 105, 108, 115, 46, 68, 97, 116, 117, 109, 115, 124, 83, 116, 114, 105, 110, 103, 68, 97, 116, 117, 109, 80, 114, 111, 112, 101, 114, 116, 121, 0, 0, 0, 0, 29, 85, 110, 105, 116, 121, 46, 88, 82, 46, 67, 111, 114, 101, 85, 116, 105, 108, 115, 124, 69, 110, 117, 109, 86, 97, 108, 117, 101, 115, 0, 0, 0, 0, 35, 85, 110, 105, 116, 121, 46, 88, 82, 46, 67, 111, 114, 101, 85, 116, 105, 108, 115, 124, 66, 111, 117, 110, 100, 115, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 0, 0, 0, 0, 35, 85, 110, 105, 116, 121, 46, 88, 82, 46, 67, 111, 114, 101, 85, 116, 105, 108, 115, 124, 67, 97, 109, 101, 114, 97, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 0, 0, 0, 0, 39, 85, 110, 105, 116, 121, 46, 88, 82, 46, 67, 111, 114, 101, 85, 116, 105, 108, 115, 124, 67, 111, 108, 108, 101, 99, 116, 105, 111, 110, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 0, 0, 0, 0, 39, 85, 110, 105, 116, 121, 46, 88, 82, 46, 67, 111, 114, 101, 85, 116, 105, 108, 115, 124, 68, 105, 99, 116, 105, 111, 110, 97, 114, 121, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 0, 0, 0, 0, 39, 85, 110, 105, 116, 121, 46, 88, 82, 46, 67, 111, 114, 101, 85, 116, 105, 108, 115, 124, 71, 97, 109, 101, 79, 98, 106, 101, 99, 116, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 0, 0, 0, 0, 33, 85, 110, 105, 116, 121, 46, 88, 82, 46, 67, 111, 114, 101, 85, 116, 105, 108, 115, 124, 71, 117, 105, 100, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 0, 0, 0, 0, 36, 85, 110, 105, 116, 121, 46, 88, 82, 46, 67, 111, 114, 101, 85, 116, 105, 108, 115, 124, 72, 97, 115, 104, 83, 101, 116, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 0, 0, 0, 0, 38, 85, 110, 105, 116, 121, 46, 88, 82, 46, 67, 111, 114, 101, 85, 116, 105, 108, 115, 124, 76, 97, 121, 101, 114, 77, 97, 115, 107, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 0, 0, 0, 0, 33, 85, 110, 105, 116, 121, 46, 88, 82, 46, 67, 111, 114, 101, 85, 116, 105, 108, 115, 124, 76, 105, 115, 116, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 0, 0, 0, 0, 42, 85, 110, 105, 116, 121, 46, 88, 82, 46, 67, 111, 114, 101, 85, 116, 105, 108, 115, 124, 77, 111, 110, 111, 66, 101, 104, 97, 118, 105, 111, 117, 114, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 0, 0, 0, 0, 33, 85, 110, 105, 116, 121, 46, 88, 82, 46, 67, 111, 114, 101, 85, 116, 105, 108, 115, 124, 80, 111, 115, 101, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 0, 0, 0, 0, 39, 85, 110, 105, 116, 121, 46, 88, 82, 46, 67, 111, 114, 101, 85, 116, 105, 108, 115, 124, 81, 117, 97, 116, 101, 114, 110, 105, 111, 110, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 0, 0, 0, 0, 38, 85, 110, 105, 116, 121, 46, 88, 82, 46, 67, 111, 114, 101, 85, 116, 105, 108, 115, 124, 83, 116, 111, 112, 119, 97, 116, 99, 104, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 0, 0, 0, 0, 35, 85, 110, 105, 116, 121, 46, 88, 82, 46, 67, 111, 114, 101, 85, 116, 105, 108, 115, 124, 83, 116, 114, 105, 110, 103, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 0, 0, 0, 0, 38, 85, 110, 105, 116, 121, 46, 88, 82, 46, 67, 111, 114, 101, 85, 116, 105, 108, 115, 124, 84, 114, 97, 110, 115, 102, 111, 114, 109, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 0, 0, 0, 0, 33, 85, 110, 105, 116, 121, 46, 88, 82, 46, 67, 111, 114, 101, 85, 116, 105, 108, 115, 124, 84, 121, 112, 101, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 0, 0, 0, 0, 33, 85, 110, 105, 116, 121, 46, 88, 82, 46, 67, 111, 114, 101, 85, 116, 105, 108, 115, 124, 66, 111, 111, 108, 85, 110, 105, 116, 121, 69, 118, 101, 110, 116, 0, 0, 0, 0, 34, 85, 110, 105, 116, 121, 46, 88, 82, 46, 67, 111, 114, 101, 85, 116, 105, 108, 115, 124, 70, 108, 111, 97, 116, 85, 110, 105, 116, 121, 69, 118, 101, 110, 116, 0, 0, 0, 0, 36, 85, 110, 105, 116, 121, 46, 88, 82, 46, 67, 111, 114, 101, 85, 116, 105, 108, 115, 124, 86, 101, 99, 116, 111, 114, 50, 85, 110, 105, 116, 121, 69, 118, 101, 110, 116, 0, 0, 0, 0, 36, 85, 110, 105, 116, 121, 46, 88, 82, 46, 67, 111, 114, 101, 85, 116, 105, 108, 115, 124, 86, 101, 99, 116, 111, 114, 51, 85, 110, 105, 116, 121, 69, 118, 101, 110, 116, 0, 0, 0, 0, 36, 85, 110, 105, 116, 121, 46, 88, 82, 46, 67, 111, 114, 101, 85, 116, 105, 108, 115, 124, 86, 101, 99, 116, 111, 114, 52, 85, 110, 105, 116, 121, 69, 118, 101, 110, 116, 0, 0, 0, 0, 39, 85, 110, 105, 116, 121, 46, 88, 82, 46, 67, 111, 114, 101, 85, 116, 105, 108, 115, 124, 81, 117, 97, 116, 101, 114, 110, 105, 111, 110, 85, 110, 105, 116, 121, 69, 118, 101, 110, 116, 0, 0, 0, 0, 32, 85, 110, 105, 116, 121, 46, 88, 82, 46, 67, 111, 114, 101, 85, 116, 105, 108, 115, 124, 73, 110, 116, 85, 110, 105, 116, 121, 69, 118, 101, 110, 116, 0, 0, 0, 0, 34, 85, 110, 105, 116, 121, 46, 88, 82, 46, 67, 111, 114, 101, 85, 116, 105, 108, 115, 124, 67, 111, 108, 111, 114, 85, 110, 105, 116, 121, 69, 118, 101, 110, 116, 0, 0, 0, 0, 35, 85, 110, 105, 116, 121, 46, 88, 82, 46, 67, 111, 114, 101, 85, 116, 105, 108, 115, 124, 83, 116, 114, 105, 110, 103, 85, 110, 105, 116, 121, 69, 118, 101, 110, 116, 0, 0, 0, 0, 36, 85, 110, 105, 116, 121, 46, 88, 82, 46, 67, 111, 114, 101, 85, 116, 105, 108, 115, 124, 86, 101, 99, 116, 111, 114, 50, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 0, 0, 0, 0, 36, 85, 110, 105, 116, 121, 46, 88, 82, 46, 67, 111, 114, 101, 85, 116, 105, 108, 115, 124, 86, 101, 99, 116, 111, 114, 51, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 0, 0, 0, 0, 34, 85, 110, 105, 116, 121, 46, 88, 82, 46, 67, 111, 114, 101, 85, 116, 105, 108, 115, 124, 71, 97, 109, 101, 79, 98, 106, 101, 99, 116, 85, 116, 105, 108, 115, 0, 0, 0, 0, 32, 85, 110, 105, 116, 121, 46, 88, 82, 46, 67, 111, 114, 101, 85, 116, 105, 108, 115, 124, 71, 101, 111, 109, 101, 116, 114, 121, 85, 116, 105, 108, 115, 0, 0, 0, 0, 27, 85, 110, 105, 116, 121, 46, 88, 82, 46, 67, 111, 114, 101, 85, 116, 105, 108, 115, 124, 71, 117, 105, 100, 85, 116, 105, 108, 0, 0, 0, 0, 31, 85, 110, 105, 116, 121, 46, 88, 82, 46, 67, 111, 114, 101, 85, 116, 105, 108, 115, 124, 72, 97, 115, 104, 67, 111, 100, 101, 85, 116, 105, 108, 0, 0, 0, 0, 32, 85, 110, 105, 116, 121, 46, 88, 82, 46, 67, 111, 114, 101, 85, 116, 105, 108, 115, 124, 77, 97, 116, 101, 114, 105, 97, 108, 85, 116, 105, 108, 115, 0, 0, 0, 0, 30, 85, 110, 105, 116, 121, 46, 88, 82, 46, 67, 111, 114, 101, 85, 116, 105, 108, 115, 124, 77, 97, 116, 104, 85, 116, 105, 108, 105, 116, 121, 0, 0, 0, 0, 35, 85, 110, 105, 116, 121, 46, 88, 82, 46, 67, 111, 114, 101, 85, 116, 105, 108, 115, 124, 78, 97, 116, 105, 118, 101, 65, 114, 114, 97, 121, 85, 116, 105, 108, 115, 0, 0, 0, 0, 29, 85, 110, 105, 116, 121, 46, 88, 82, 46, 67, 111, 114, 101, 85, 116, 105, 108, 115, 124, 79, 98, 106, 101, 99, 116, 80, 111, 111, 108, 0, 0, 0, 0, 36, 85, 110, 105, 116, 121, 46, 88, 82, 46, 67, 111, 114, 101, 85, 116, 105, 108, 115, 124, 79, 110, 68, 101, 115, 116, 114, 111, 121, 78, 111, 116, 105, 102, 105, 101, 114, 0, 0, 0, 0, 34, 85, 110, 105, 116, 121, 46, 88, 82, 46, 67, 111, 114, 101, 85, 116, 105, 108, 115, 124, 82, 101, 102, 108, 101, 99, 116, 105, 111, 110, 85, 116, 105, 108, 115, 0, 0, 0, 0, 37, 85, 110, 105, 116, 121, 46, 88, 82, 46, 67, 111, 114, 101, 85, 116, 105, 108, 115, 124, 83, 99, 114, 105, 112, 116, 97, 98, 108, 101, 83, 101, 116, 116, 105, 110, 103, 115, 1, 0, 0, 0, 41, 85, 110, 105, 116, 121, 46, 88, 82, 46, 67, 111, 114, 101, 85, 116, 105, 108, 115, 124, 83, 99, 114, 105, 112, 116, 97, 98, 108, 101, 83, 101, 116, 116, 105, 110, 103, 115, 66, 97, 115, 101, 1, 0, 0, 0, 41, 85, 110, 105, 116, 121, 46, 88, 82, 46, 67, 111, 114, 101, 85, 116, 105, 108, 115, 124, 83, 99, 114, 105, 112, 116, 97, 98, 108, 101, 83, 101, 116, 116, 105, 110, 103, 115, 66, 97, 115, 101, 0, 0, 0, 0, 35, 85, 110, 105, 116, 121, 46, 88, 82, 46, 67, 111, 114, 101, 85, 116, 105, 108, 115, 124, 83, 101, 114, 105, 97, 108, 105, 122, 97, 98, 108, 101, 71, 117, 105, 100, 0, 0, 0, 0, 39, 85, 110, 105, 116, 121, 46, 88, 82, 46, 67, 111, 114, 101, 85, 116, 105, 108, 115, 124, 83, 101, 114, 105, 97, 108, 105, 122, 97, 98, 108, 101, 71, 117, 105, 100, 85, 116, 105, 108, 0, 0, 0, 0, 31, 85, 110, 105, 116, 121, 46, 88, 82, 46, 67, 111, 114, 101, 85, 116, 105, 108, 115, 124, 84, 101, 120, 116, 117, 114, 101, 85, 116, 105, 108, 115, 0, 0, 0, 0, 28, 85, 110, 105, 116, 121, 46, 88, 82, 46, 67, 111, 114, 101, 85, 116, 105, 108, 115, 124, 85, 110, 100, 111, 66, 108, 111, 99, 107, 0, 0, 0, 0, 35, 85, 110, 105, 116, 121, 46, 88, 82, 46, 67, 111, 114, 101, 85, 116, 105, 108, 115, 124, 85, 110, 105, 116, 121, 79, 98, 106, 101, 99, 116, 85, 116, 105, 108, 115, 0, 0, 0, 0, 33, 85, 110, 105, 116, 121, 46, 88, 82, 46, 67, 111, 114, 101, 85, 116, 105, 108, 115, 124, 88, 82, 76, 111, 103, 103, 105, 110, 103, 85, 116, 105, 108, 115, 0, 0, 0, 0, 27, 85, 110, 105, 116, 121, 46, 88, 82, 46, 67, 111, 114, 101, 85, 116, 105, 108, 115, 124, 88, 82, 79, 114, 105, 103, 105, 110 }, TotalFiles = 80, TotalTypes = 96, IsEditorOnly = false }; } } namespace Unity.XR.CoreUtils { public readonly struct ARTrackablesParentTransformChangedEventArgs : IEquatable { public XROrigin Origin { get; } public Transform TrackablesParent { get; } public ARTrackablesParentTransformChangedEventArgs(XROrigin origin, Transform trackablesParent) { if ((Object)(object)origin == (Object)null) { throw new ArgumentNullException("origin"); } if ((Object)(object)trackablesParent == (Object)null) { throw new ArgumentNullException("trackablesParent"); } Origin = origin; TrackablesParent = trackablesParent; } public bool Equals(ARTrackablesParentTransformChangedEventArgs other) { if ((Object)(object)Origin == (Object)(object)other.Origin) { return (Object)(object)TrackablesParent == (Object)(object)other.TrackablesParent; } return false; } public override bool Equals(object obj) { if (obj is ARTrackablesParentTransformChangedEventArgs other) { return Equals(other); } return false; } public override int GetHashCode() { return HashCodeUtil.Combine(HashCodeUtil.ReferenceHash(Origin), HashCodeUtil.ReferenceHash(TrackablesParent)); } public static bool operator ==(ARTrackablesParentTransformChangedEventArgs lhs, ARTrackablesParentTransformChangedEventArgs rhs) { return lhs.Equals(rhs); } public static bool operator !=(ARTrackablesParentTransformChangedEventArgs lhs, ARTrackablesParentTransformChangedEventArgs rhs) { return !lhs.Equals(rhs); } } public class ReadOnlyAttribute : PropertyAttribute { } [AttributeUsage(AttributeTargets.Class)] public class ScriptableSettingsPathAttribute : Attribute { private readonly string m_Path; public string Path => m_Path; public ScriptableSettingsPathAttribute(string path = "") { m_Path = path; } } public static class AwaitableUtils { private static AwaitableCompletionSource s_CompletionSource = new AwaitableCompletionSource(); public static Awaitable FromResult(T result) { Awaitable awaitable = s_CompletionSource.Awaitable; s_CompletionSource.SetResult(ref result); s_CompletionSource.Reset(); return awaitable; } } public static class BoundsUtils { private static readonly List k_Renderers = new List(); private static readonly List k_Transforms = new List(); public static Bounds GetBounds(List gameObjects) { //IL_001d: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_0039: Unknown result type (might be due to invalid IL or missing references) //IL_0043: Unknown result type (might be due to invalid IL or missing references) //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_0065: Unknown result type (might be due to invalid IL or missing references) Bounds? val = null; foreach (GameObject gameObject in gameObjects) { Bounds bounds = GetBounds(gameObject.transform); if (!val.HasValue) { val = bounds; continue; } ((Bounds)(ref bounds)).Encapsulate(val.Value); val = bounds; } return val.GetValueOrDefault(); } public static Bounds GetBounds(Transform[] transforms) { //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_0016: Unknown result type (might be due to invalid IL or missing references) //IL_004c: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Unknown result type (might be due to invalid IL or missing references) //IL_003a: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Unknown result type (might be due to invalid IL or missing references) Bounds? val = null; for (int i = 0; i < transforms.Length; i++) { Bounds bounds = GetBounds(transforms[i]); if (!val.HasValue) { val = bounds; continue; } ((Bounds)(ref bounds)).Encapsulate(val.Value); val = bounds; } return val.GetValueOrDefault(); } public static Bounds GetBounds(Transform transform) { //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_001d: Unknown result type (might be due to invalid IL or missing references) //IL_0093: Unknown result type (might be due to invalid IL or missing references) //IL_004e: Unknown result type (might be due to invalid IL or missing references) //IL_0070: Unknown result type (might be due to invalid IL or missing references) ((Component)transform).GetComponentsInChildren(k_Renderers); Bounds bounds = GetBounds(k_Renderers); if (((Bounds)(ref bounds)).size == Vector3.zero) { ((Component)transform).GetComponentsInChildren(k_Transforms); if (k_Transforms.Count > 0) { ((Bounds)(ref bounds)).center = k_Transforms[0].position; } foreach (Transform k_Transform in k_Transforms) { ((Bounds)(ref bounds)).Encapsulate(k_Transform.position); } } return bounds; } public static Bounds GetBounds(List renderers) { //IL_007e: Unknown result type (might be due to invalid IL or missing references) //IL_0084: Unknown result type (might be due to invalid IL or missing references) //IL_0019: Unknown result type (might be due to invalid IL or missing references) //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_003a: Unknown result type (might be due to invalid IL or missing references) //IL_003f: Unknown result type (might be due to invalid IL or missing references) //IL_0043: Unknown result type (might be due to invalid IL or missing references) //IL_0048: Unknown result type (might be due to invalid IL or missing references) //IL_0057: Unknown result type (might be due to invalid IL or missing references) //IL_007a: Unknown result type (might be due to invalid IL or missing references) Bounds result2; if (renderers.Count > 0) { Renderer val = renderers[0]; Bounds result = default(Bounds); ((Bounds)(ref result))..ctor(((Component)val).transform.position, Vector3.zero); { foreach (Renderer renderer in renderers) { result2 = renderer.bounds; if (((Bounds)(ref result2)).size != Vector3.zero) { ((Bounds)(ref result)).Encapsulate(renderer.bounds); } } return result; } } result2 = default(Bounds); return result2; } public static Bounds GetBounds(List colliders) where T : Collider { //IL_0090: Unknown result type (might be due to invalid IL or missing references) //IL_0096: Unknown result type (might be due to invalid IL or missing references) //IL_0021: Unknown result type (might be due to invalid IL or missing references) //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_0047: Unknown result type (might be due to invalid IL or missing references) //IL_004c: Unknown result type (might be due to invalid IL or missing references) //IL_0050: Unknown result type (might be due to invalid IL or missing references) //IL_0055: Unknown result type (might be due to invalid IL or missing references) //IL_0069: Unknown result type (might be due to invalid IL or missing references) //IL_008c: Unknown result type (might be due to invalid IL or missing references) Bounds result2; if (colliders.Count > 0) { T val = colliders[0]; Bounds result = default(Bounds); ((Bounds)(ref result))..ctor(((Component)(object)val).transform.position, Vector3.zero); { foreach (T collider in colliders) { result2 = ((Collider)collider).bounds; if (((Bounds)(ref result2)).size != Vector3.zero) { ((Bounds)(ref result)).Encapsulate(((Collider)collider).bounds); } } return result; } } result2 = default(Bounds); return result2; } public static Bounds GetBounds(List points) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_002b: Unknown result type (might be due to invalid IL or missing references) //IL_002d: Unknown result type (might be due to invalid IL or missing references) //IL_0034: Unknown result type (might be due to invalid IL or missing references) //IL_00ed: Unknown result type (might be due to invalid IL or missing references) //IL_00ee: Unknown result type (might be due to invalid IL or missing references) //IL_00f4: Unknown result type (might be due to invalid IL or missing references) //IL_004a: Unknown result type (might be due to invalid IL or missing references) //IL_0051: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Unknown result type (might be due to invalid IL or missing references) //IL_0067: Unknown result type (might be due to invalid IL or missing references) //IL_006e: Unknown result type (might be due to invalid IL or missing references) //IL_005b: Unknown result type (might be due to invalid IL or missing references) //IL_0084: Unknown result type (might be due to invalid IL or missing references) //IL_008b: Unknown result type (might be due to invalid IL or missing references) //IL_0078: Unknown result type (might be due to invalid IL or missing references) //IL_00a1: Unknown result type (might be due to invalid IL or missing references) //IL_00a8: Unknown result type (might be due to invalid IL or missing references) //IL_0095: Unknown result type (might be due to invalid IL or missing references) //IL_00be: Unknown result type (might be due to invalid IL or missing references) //IL_00c5: Unknown result type (might be due to invalid IL or missing references) //IL_00b2: Unknown result type (might be due to invalid IL or missing references) //IL_00cf: Unknown result type (might be due to invalid IL or missing references) Bounds result = default(Bounds); if (points.Count < 1) { return result; } Vector3 val = points[0]; Vector3 val2 = val; for (int i = 1; i < points.Count; i++) { Vector3 val3 = points[i]; if (val3.x < val.x) { val.x = val3.x; } if (val3.y < val.y) { val.y = val3.y; } if (val3.z < val.z) { val.z = val3.z; } if (val3.x > val2.x) { val2.x = val3.x; } if (val3.y > val2.y) { val2.y = val3.y; } if (val3.z > val2.z) { val2.z = val3.z; } } ((Bounds)(ref result)).SetMinMax(val, val2); return result; } } public interface IComponentHost where THostType : class { THostType[] HostedComponents { get; } } [Flags] public enum CachedSearchType { Children = 1, Self = 2, Parents = 4 } public class CachedComponentFilter : IDisposable where TFilterType : class where TRootType : Component { private readonly List m_MasterComponentStorage; private static readonly List k_TempComponentList = new List(); private static readonly List> k_TempHostComponentList = new List>(); private bool m_DisposedValue; public CachedComponentFilter(TRootType componentRoot, CachedSearchType cachedSearchType = CachedSearchType.Children | CachedSearchType.Self, bool includeDisabled = true) { //IL_00cf: Unknown result type (might be due to invalid IL or missing references) //IL_00d4: Unknown result type (might be due to invalid IL or missing references) m_MasterComponentStorage = CollectionPool, TFilterType>.GetCollection(); k_TempComponentList.Clear(); k_TempHostComponentList.Clear(); if ((cachedSearchType & CachedSearchType.Self) == CachedSearchType.Self) { ((Component)componentRoot).GetComponents(k_TempComponentList); ((Component)componentRoot).GetComponents>(k_TempHostComponentList); FilteredCopyToMaster(includeDisabled); } if ((cachedSearchType & CachedSearchType.Parents) == CachedSearchType.Parents) { Transform parent = ((Component)componentRoot).transform.parent; while ((Object)(object)parent != (Object)null && !((Object)(object)((Component)parent).GetComponent() != (Object)null)) { ((Component)parent).GetComponents(k_TempComponentList); ((Component)parent).GetComponents>(k_TempHostComponentList); FilteredCopyToMaster(includeDisabled); parent = ((Component)parent).transform.parent; } } if ((cachedSearchType & CachedSearchType.Children) != CachedSearchType.Children) { return; } foreach (Transform item in ((Component)componentRoot).transform) { ((Component)item).GetComponentsInChildren(k_TempComponentList); ((Component)item).GetComponentsInChildren>(k_TempHostComponentList); FilteredCopyToMaster(includeDisabled, componentRoot); } } public CachedComponentFilter(TFilterType[] componentList, bool includeDisabled = true) { if (componentList != null) { m_MasterComponentStorage = CollectionPool, TFilterType>.GetCollection(); k_TempComponentList.Clear(); k_TempComponentList.AddRange(componentList); FilteredCopyToMaster(includeDisabled); } } public void StoreMatchingComponents(List outputList) where TChildType : class, TFilterType { foreach (TFilterType item2 in m_MasterComponentStorage) { if (item2 is TChildType item) { outputList.Add(item); } } } public TChildType[] GetMatchingComponents() where TChildType : class, TFilterType { int num = 0; foreach (TFilterType item in m_MasterComponentStorage) { if (item is TChildType) { num++; } } TChildType[] array = new TChildType[num]; num = 0; foreach (TFilterType item2 in m_MasterComponentStorage) { if (item2 is TChildType val) { array[num] = val; num++; } } return array; } private void FilteredCopyToMaster(bool includeDisabled) { if (includeDisabled) { m_MasterComponentStorage.AddRange(k_TempComponentList); { foreach (IComponentHost k_TempHostComponent in k_TempHostComponentList) { m_MasterComponentStorage.AddRange(k_TempHostComponent.HostedComponents); } return; } } foreach (TFilterType k_TempComponent in k_TempComponentList) { Behaviour val = (Behaviour)(object)((k_TempComponent is Behaviour) ? k_TempComponent : null); if (!((Object)(object)val != (Object)null) || val.enabled) { m_MasterComponentStorage.Add(k_TempComponent); } } foreach (IComponentHost k_TempHostComponent2 in k_TempHostComponentList) { Behaviour val2 = (Behaviour)((k_TempHostComponent2 is Behaviour) ? k_TempHostComponent2 : null); if (!((Object)(object)val2 != (Object)null) || val2.enabled) { m_MasterComponentStorage.AddRange(k_TempHostComponent2.HostedComponents); } } } private void FilteredCopyToMaster(bool includeDisabled, TRootType requiredRoot) { if (includeDisabled) { foreach (TFilterType k_TempComponent in k_TempComponentList) { Component val = (Component)(object)((k_TempComponent is Component) ? k_TempComponent : null); if (!((Object)(object)val.transform == (Object)(object)requiredRoot) && !((Object)(object)val.GetComponentInParent() != (Object)(object)requiredRoot)) { m_MasterComponentStorage.Add(k_TempComponent); } } { foreach (IComponentHost k_TempHostComponent in k_TempHostComponentList) { Component val2 = (Component)((k_TempHostComponent is Component) ? k_TempHostComponent : null); if (!((Object)(object)val2.transform == (Object)(object)requiredRoot) && !((Object)(object)val2.GetComponentInParent() != (Object)(object)requiredRoot)) { m_MasterComponentStorage.AddRange(k_TempHostComponent.HostedComponents); } } return; } } foreach (TFilterType k_TempComponent2 in k_TempComponentList) { Behaviour val3 = (Behaviour)(object)((k_TempComponent2 is Behaviour) ? k_TempComponent2 : null); if (val3.enabled && !((Object)(object)((Component)val3).transform == (Object)(object)requiredRoot) && !((Object)(object)((Component)val3).GetComponentInParent() != (Object)(object)requiredRoot)) { m_MasterComponentStorage.Add(k_TempComponent2); } } foreach (IComponentHost k_TempHostComponent2 in k_TempHostComponentList) { Behaviour val4 = (Behaviour)((k_TempHostComponent2 is Behaviour) ? k_TempHostComponent2 : null); if (val4.enabled && !((Object)(object)((Component)val4).transform == (Object)(object)requiredRoot) && !((Object)(object)((Component)val4).GetComponentInParent() != (Object)(object)requiredRoot)) { m_MasterComponentStorage.AddRange(k_TempHostComponent2.HostedComponents); } } } protected virtual void Dispose(bool disposing) { if (!m_DisposedValue) { if (disposing && m_MasterComponentStorage != null) { CollectionPool, TFilterType>.RecycleCollection(m_MasterComponentStorage); } m_DisposedValue = true; } } public void Dispose() { Dispose(disposing: true); } } public static class CollectionPool where TCollection : ICollection, new() { private static readonly Queue k_CollectionQueue = new Queue(); public static TCollection GetCollection() { if (k_CollectionQueue.Count <= 0) { return new TCollection(); } return k_CollectionQueue.Dequeue(); } public static void RecycleCollection(TCollection collection) { collection.Clear(); k_CollectionQueue.Enqueue(collection); } } public static class ComponentUtils { private static readonly List k_RetrievalList = new List(); public static T GetComponent(GameObject gameObject) { T result = default(T); gameObject.GetComponents(k_RetrievalList); if (k_RetrievalList.Count > 0) { return k_RetrievalList[0]; } return result; } public static T GetComponentInChildren(GameObject gameObject) { T result = default(T); gameObject.GetComponentsInChildren(k_RetrievalList); if (k_RetrievalList.Count > 0) { return k_RetrievalList[0]; } return result; } } public static class ComponentUtils { public static T GetOrAddIf(GameObject gameObject, bool add) where T : Component { T val = gameObject.GetComponent(); if (add && (Object)(object)val == (Object)null) { val = gameObject.AddComponent(); } return val; } } public static class EnumValues { public static readonly T[] Values = (T[])Enum.GetValues(typeof(T)); } public static class BoundsExtensions { public static bool ContainsCompletely(this Bounds outerBounds, Bounds innerBounds) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_000a: Unknown result type (might be due to invalid IL or missing references) //IL_000f: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_0017: Unknown result type (might be due to invalid IL or missing references) //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Unknown result type (might be due to invalid IL or missing references) //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Unknown result type (might be due to invalid IL or missing references) //IL_0034: Unknown result type (might be due to invalid IL or missing references) //IL_003c: Unknown result type (might be due to invalid IL or missing references) //IL_0042: Unknown result type (might be due to invalid IL or missing references) //IL_004a: Unknown result type (might be due to invalid IL or missing references) //IL_0050: Unknown result type (might be due to invalid IL or missing references) //IL_0058: Unknown result type (might be due to invalid IL or missing references) //IL_005e: Unknown result type (might be due to invalid IL or missing references) //IL_0066: Unknown result type (might be due to invalid IL or missing references) //IL_006c: Unknown result type (might be due to invalid IL or missing references) Vector3 max = ((Bounds)(ref outerBounds)).max; Vector3 min = ((Bounds)(ref outerBounds)).min; Vector3 max2 = ((Bounds)(ref innerBounds)).max; Vector3 min2 = ((Bounds)(ref innerBounds)).min; if (max.x >= max2.x && max.y >= max2.y && max.z >= max2.z && min.x <= min2.x && min.y <= min2.y) { return min.z <= min2.z; } return false; } } public static class CameraExtensions { private const float k_OneOverSqrt2 = 0.70710677f; public static float GetVerticalFieldOfView(this Camera camera, float aspectNeutralFieldOfView) { return Mathf.Atan(Mathf.Tan(aspectNeutralFieldOfView * 0.5f * (MathF.PI / 180f)) * 0.70710677f / Mathf.Sqrt(camera.aspect)) * 2f * 57.29578f; } public static float GetHorizontalFieldOfView(this Camera camera) { float num = camera.fieldOfView * 0.5f; return 57.29578f * Mathf.Atan(Mathf.Tan(num * (MathF.PI / 180f)) * camera.aspect); } public static float GetVerticalOrthographicSize(this Camera camera, float size) { return size * 0.70710677f / Mathf.Sqrt(camera.aspect); } } public static class CollectionExtensions { private static readonly StringBuilder k_String = new StringBuilder(); public static string Stringify(this ICollection collection) { k_String.Length = 0; int num = collection.Count - 1; int num2 = 0; foreach (T item in collection) { k_String.AppendFormat((num2++ == num) ? "{0}" : "{0}, ", item); } return k_String.ToString(); } } public static class DictionaryExtensions { public static KeyValuePair First(this Dictionary dictionary) { KeyValuePair result = default(KeyValuePair); Dictionary.Enumerator enumerator = dictionary.GetEnumerator(); if (enumerator.MoveNext()) { result = enumerator.Current; } enumerator.Dispose(); return result; } } public static class GameObjectExtensions { public static void SetHideFlagsRecursively(this GameObject gameObject, HideFlags hideFlags) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_0025: Unknown result type (might be due to invalid IL or missing references) ((Object)gameObject).hideFlags = hideFlags; foreach (Transform item in gameObject.transform) { ((Component)item).gameObject.SetHideFlagsRecursively(hideFlags); } } public static void AddToHideFlagsRecursively(this GameObject gameObject, HideFlags hideFlags) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_002c: Unknown result type (might be due to invalid IL or missing references) ((Object)gameObject).hideFlags = (HideFlags)(((Object)gameObject).hideFlags | hideFlags); foreach (Transform item in gameObject.transform) { ((Component)item).gameObject.AddToHideFlagsRecursively(hideFlags); } } public static void SetLayerRecursively(this GameObject gameObject, int layer) { //IL_001b: Unknown result type (might be due to invalid IL or missing references) gameObject.layer = layer; foreach (Transform item in gameObject.transform) { ((Component)item).gameObject.SetLayerRecursively(layer); } } public static void SetLayerAndAddToHideFlagsRecursively(this GameObject gameObject, int layer, HideFlags hideFlags) { //IL_0009: Unknown result type (might be due to invalid IL or missing references) //IL_000e: Unknown result type (might be due to invalid IL or missing references) //IL_000f: Unknown result type (might be due to invalid IL or missing references) //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_0034: Unknown result type (might be due to invalid IL or missing references) gameObject.layer = layer; ((Object)gameObject).hideFlags = (HideFlags)(((Object)gameObject).hideFlags | hideFlags); foreach (Transform item in gameObject.transform) { ((Component)item).gameObject.SetLayerAndAddToHideFlagsRecursively(layer, hideFlags); } } public static void SetLayerAndHideFlagsRecursively(this GameObject gameObject, int layer, HideFlags hideFlags) { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_002d: Unknown result type (might be due to invalid IL or missing references) gameObject.layer = layer; ((Object)gameObject).hideFlags = hideFlags; foreach (Transform item in gameObject.transform) { ((Component)item).gameObject.SetLayerAndHideFlagsRecursively(layer, hideFlags); } } public static void SetRunInEditModeRecursively(this GameObject gameObject, bool enabled) { } } public static class GuidExtensions { public static void Decompose(this Guid guid, out ulong low, out ulong high) { byte[] value = guid.ToByteArray(); low = BitConverter.ToUInt64(value, 0); high = BitConverter.ToUInt64(value, 8); } } public static class HashSetExtensions { public static void ExceptWithNonAlloc(this HashSet self, HashSet other) { foreach (T item in other) { self.Remove(item); } } public static T First(this HashSet set) { HashSet.Enumerator enumerator = set.GetEnumerator(); T result = (enumerator.MoveNext() ? enumerator.Current : default(T)); enumerator.Dispose(); return result; } } public static class LayerMaskExtensions { public static int GetFirstLayerIndex(this LayerMask layerMask) { if (((LayerMask)(ref layerMask)).value == 0) { return -1; } int num = 0; int num2 = ((LayerMask)(ref layerMask)).value; while ((num2 & 1) == 0) { num2 >>= 1; num++; } return num; } public static bool Contains(this LayerMask mask, int layer) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) return ((uint)LayerMask.op_Implicit(mask) & (1 << layer)) > 0; } } public static class ListExtensions { public static List Fill(this List list, int count) where T : new() { for (int i = 0; i < count; i++) { list.Add(new T()); } return list; } public static void EnsureCapacity(this List list, int capacity) { if (list.Capacity < capacity) { list.Capacity = capacity; } } public static void SwapAtIndices(this List list, int first, int second) { T val = list[second]; T val2 = list[first]; T val3 = (list[first] = val); val3 = (list[second] = val2); } } public static class MonoBehaviourExtensions { } public static class PoseExtensions { public static Pose ApplyOffsetTo(this Pose pose, Pose otherPose) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_0009: Unknown result type (might be due to invalid IL or missing references) //IL_000e: Unknown result type (might be due to invalid IL or missing references) //IL_0013: Unknown result type (might be due to invalid IL or missing references) //IL_0014: Unknown result type (might be due to invalid IL or missing references) //IL_0019: Unknown result type (might be due to invalid IL or missing references) //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Unknown result type (might be due to invalid IL or missing references) //IL_0025: Unknown result type (might be due to invalid IL or missing references) //IL_002a: Unknown result type (might be due to invalid IL or missing references) Quaternion rotation = pose.rotation; return new Pose(rotation * otherPose.position + pose.position, rotation * otherPose.rotation); } public static Vector3 ApplyOffsetTo(this Pose pose, Vector3 position) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Unknown result type (might be due to invalid IL or missing references) return pose.rotation * position + pose.position; } public static Vector3 ApplyInverseOffsetTo(this Pose pose, Vector3 position) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_0017: Unknown result type (might be due to invalid IL or missing references) return Quaternion.Inverse(pose.rotation) * (position - pose.position); } } public static class QuaternionExtensions { public static Quaternion ConstrainYaw(this Quaternion rotation) { //IL_0018: Unknown result type (might be due to invalid IL or missing references) rotation.x = 0f; rotation.z = 0f; return rotation; } public static Quaternion ConstrainYawNormalized(this Quaternion rotation) { //IL_001f: Unknown result type (might be due to invalid IL or missing references) rotation.x = 0f; rotation.z = 0f; ((Quaternion)(ref rotation)).Normalize(); return rotation; } public static Quaternion ConstrainYawPitchNormalized(this Quaternion rotation) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_0014: Unknown result type (might be due to invalid IL or missing references) //IL_0015: Unknown result type (might be due to invalid IL or missing references) Vector3 eulerAngles = ((Quaternion)(ref rotation)).eulerAngles; eulerAngles.z = 0f; return Quaternion.Euler(eulerAngles); } } public static class StopwatchExtensions { public static void Restart(this Stopwatch stopwatch) { stopwatch.Stop(); stopwatch.Reset(); stopwatch.Start(); } } public static class StringExtensions { private static readonly StringBuilder k_StringBuilder = new StringBuilder(); public static string FirstToUpper(this string str) { if (string.IsNullOrEmpty(str)) { return string.Empty; } if (str.Length == 1) { return char.ToUpper(str[0]).ToString(); } return $"{char.ToUpper(str[0])}{str.Substring(1)}"; } public static string InsertSpacesBetweenWords(this string str) { if (string.IsNullOrEmpty(str)) { return string.Empty; } k_StringBuilder.Length = 0; k_StringBuilder.Append(str[0]); int length = str.Length; for (int i = 0; i < length - 1; i++) { char c = str[i]; char c2 = str[i + 1]; bool flag = char.IsLower(c); bool flag2 = char.IsLower(c2); bool flag3 = flag && !flag2; if (i + 2 < length) { bool flag4 = char.IsLower(str[i + 2]); flag3 = flag3 || (!flag && !flag2 && flag4); } if (flag3) { k_StringBuilder.Append(' '); } k_StringBuilder.Append(c2); } return k_StringBuilder.ToString(); } } public static class TransformExtensions { public static Pose GetLocalPose(this Transform transform) { //IL_000a: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Unknown result type (might be due to invalid IL or missing references) Vector3 val = default(Vector3); Quaternion val2 = default(Quaternion); transform.GetLocalPositionAndRotation(ref val, ref val2); return new Pose(val, val2); } public static Pose GetWorldPose(this Transform transform) { //IL_000a: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Unknown result type (might be due to invalid IL or missing references) Vector3 val = default(Vector3); Quaternion val2 = default(Quaternion); transform.GetPositionAndRotation(ref val, ref val2); return new Pose(val, val2); } public static void SetLocalPose(this Transform transform, Pose pose) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Unknown result type (might be due to invalid IL or missing references) transform.SetLocalPositionAndRotation(pose.position, pose.rotation); } public static void SetWorldPose(this Transform transform, Pose pose) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Unknown result type (might be due to invalid IL or missing references) transform.SetPositionAndRotation(pose.position, pose.rotation); } public static Pose TransformPose(this Transform transform, Pose pose) { //IL_0003: Unknown result type (might be due to invalid IL or missing references) return ((Pose)(ref pose)).GetTransformedBy(transform); } public static Pose InverseTransformPose(this Transform transform, Pose pose) { //IL_0016: Unknown result type (might be due to invalid IL or missing references) //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Unknown result type (might be due to invalid IL or missing references) //IL_0025: Unknown result type (might be due to invalid IL or missing references) //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_0032: Unknown result type (might be due to invalid IL or missing references) //IL_0037: Unknown result type (might be due to invalid IL or missing references) //IL_003c: Unknown result type (might be due to invalid IL or missing references) //IL_003d: Unknown result type (might be due to invalid IL or missing references) //IL_0042: Unknown result type (might be due to invalid IL or missing references) //IL_0047: Unknown result type (might be due to invalid IL or missing references) //IL_004c: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)transform == (Object)null) { throw new ArgumentNullException("transform"); } return new Pose { position = transform.InverseTransformPoint(pose.position), rotation = Quaternion.Inverse(transform.rotation) * pose.rotation }; } public static Ray InverseTransformRay(this Transform transform, Ray ray) { //IL_0017: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Unknown result type (might be due to invalid IL or missing references) //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)transform == (Object)null) { throw new ArgumentNullException("transform"); } return new Ray(transform.InverseTransformPoint(((Ray)(ref ray)).origin), transform.InverseTransformDirection(((Ray)(ref ray)).direction)); } } public static class TypeExtensions { private static readonly List k_Fields = new List(); private static readonly List k_TypeNames = new List(); public static void GetAssignableTypes(this Type type, List list, Func predicate = null) { ReflectionUtils.ForEachType(delegate(Type t) { if (type.IsAssignableFrom(t) && !t.IsInterface && !t.IsAbstract && (predicate == null || predicate(t))) { list.Add(t); } }); } public static void GetImplementationsOfInterface(this Type type, List list) { if (type.IsInterface) { type.GetAssignableTypes(list); } } public static void GetExtensionsOfClass(this Type type, List list) { if (type.IsClass) { type.GetAssignableTypes(list); } } public static void GetGenericInterfaces(this Type type, Type genericInterface, List interfaces) { Type[] interfaces2 = type.GetInterfaces(); foreach (Type type2 in interfaces2) { if (type2.IsGenericType && type2.GetGenericTypeDefinition() == genericInterface) { interfaces.Add(type2); } } } public static PropertyInfo GetPropertyRecursively(this Type type, string name, BindingFlags bindingAttr) { PropertyInfo propertyInfo = type.GetProperty(name, bindingAttr); if (propertyInfo != null) { return propertyInfo; } if (type.BaseType != null) { propertyInfo = type.BaseType.GetPropertyRecursively(name, bindingAttr); } return propertyInfo; } public static FieldInfo GetFieldRecursively(this Type type, string name, BindingFlags bindingAttr) { FieldInfo fieldInfo = type.GetField(name, bindingAttr); if (fieldInfo != null) { return fieldInfo; } if (type.BaseType != null) { fieldInfo = type.BaseType.GetFieldRecursively(name, bindingAttr); } return fieldInfo; } public static void GetFieldsRecursively(this Type type, List fields, BindingFlags bindingAttr = BindingFlags.DeclaredOnly | BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic) { while (true) { FieldInfo[] fields2 = type.GetFields(bindingAttr); foreach (FieldInfo item in fields2) { fields.Add(item); } Type baseType = type.BaseType; if (baseType != null) { type = baseType; continue; } break; } } public static void GetPropertiesRecursively(this Type type, List fields, BindingFlags bindingAttr = BindingFlags.DeclaredOnly | BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic) { while (true) { PropertyInfo[] properties = type.GetProperties(bindingAttr); foreach (PropertyInfo item in properties) { fields.Add(item); } Type baseType = type.BaseType; if (baseType != null) { type = baseType; continue; } break; } } public static void GetInterfaceFieldsFromClasses(this IEnumerable classes, List fields, List interfaceTypes, BindingFlags bindingAttr) { foreach (Type interfaceType in interfaceTypes) { if (!interfaceType.IsInterface) { throw new ArgumentException($"Type {interfaceType} in interfaceTypes is not an interface!"); } } foreach (Type @class in classes) { if (!@class.IsClass) { throw new ArgumentException($"Type {@class} in classes is not a class!"); } k_Fields.Clear(); @class.GetFieldsRecursively(k_Fields, bindingAttr); foreach (FieldInfo k_Field in k_Fields) { Type[] interfaces = k_Field.FieldType.GetInterfaces(); foreach (Type item in interfaces) { if (interfaceTypes.Contains(item)) { fields.Add(k_Field); break; } } } } } public static TAttribute GetAttribute(this Type type, bool inherit = false) where TAttribute : Attribute { return (TAttribute)type.GetCustomAttributes(typeof(TAttribute), inherit)[0]; } public static void IsDefinedGetInheritedTypes(this Type type, List types) where TAttribute : Attribute { while (type != null) { if (type.IsDefined(typeof(TAttribute), inherit: true)) { types.Add(type); } type = type.BaseType; } } public static FieldInfo GetFieldInTypeOrBaseType(this Type type, string fieldName) { FieldInfo field; while (true) { if (type == null) { return null; } field = type.GetField(fieldName, BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.FlattenHierarchy); if (field != null) { break; } type = type.BaseType; } return field; } public static string GetNameWithGenericArguments(this Type type) { string name = type.Name; name = name.Replace('+', '.'); if (!type.IsGenericType) { return name; } name = name.Split('`')[0]; Type[] genericArguments = type.GetGenericArguments(); int num = genericArguments.Length; string[] array = new string[num]; for (int i = 0; i < num; i++) { array[i] = genericArguments[i].GetNameWithGenericArguments(); } return name + "<" + string.Join(", ", array) + ">"; } public static string GetNameWithFullGenericArguments(this Type type) { string name = type.Name; name = name.Replace('+', '.'); if (!type.IsGenericType) { return name; } name = name.Split('`')[0]; Type[] genericArguments = type.GetGenericArguments(); int num = genericArguments.Length; string[] array = new string[num]; for (int i = 0; i < num; i++) { array[i] = genericArguments[i].GetFullNameWithGenericArgumentsInternal(); } return name + "<" + string.Join(", ", array) + ">"; } public static string GetFullNameWithGenericArguments(this Type type) { Type type2 = type.DeclaringType; if (type2 != null && !type.IsGenericParameter) { k_TypeNames.Clear(); string nameWithFullGenericArguments = type.GetNameWithFullGenericArguments(); k_TypeNames.Add(nameWithFullGenericArguments); while (true) { Type declaringType = type2.DeclaringType; if (declaringType == null) { break; } nameWithFullGenericArguments = type2.GetNameWithFullGenericArguments(); k_TypeNames.Insert(0, nameWithFullGenericArguments); type2 = declaringType; } nameWithFullGenericArguments = type2.GetFullNameWithGenericArguments(); k_TypeNames.Insert(0, nameWithFullGenericArguments); return string.Join(".", k_TypeNames.ToArray()); } return type.GetFullNameWithGenericArgumentsInternal(); } private static string GetFullNameWithGenericArgumentsInternal(this Type type) { string fullName = type.FullName; if (!type.IsGenericType) { return fullName; } fullName = fullName.Split('`')[0]; Type[] genericArguments = type.GetGenericArguments(); int num = genericArguments.Length; string[] array = new string[num]; for (int i = 0; i < num; i++) { array[i] = genericArguments[i].GetFullNameWithGenericArguments(); } return fullName + "<" + string.Join(", ", array) + ">"; } public static bool IsAssignableFromOrSubclassOf(this Type checkType, Type baseType) { if (!checkType.IsAssignableFrom(baseType)) { return checkType.IsSubclassOf(baseType); } return true; } public static MethodInfo GetMethodRecursively(this Type type, string name, BindingFlags bindingAttr) { MethodInfo methodInfo = type.GetMethod(name, bindingAttr); if (methodInfo != null) { return methodInfo; } if (type.BaseType != null) { methodInfo = type.BaseType.GetMethodRecursively(name, bindingAttr); } return methodInfo; } } [Serializable] public class BoolUnityEvent : UnityEvent { } [Serializable] public class FloatUnityEvent : UnityEvent { } [Serializable] public class Vector2UnityEvent : UnityEvent { } [Serializable] public class Vector3UnityEvent : UnityEvent { } [Serializable] public class Vector4UnityEvent : UnityEvent { } [Serializable] public class QuaternionUnityEvent : UnityEvent { } [Serializable] public class IntUnityEvent : UnityEvent { } [Serializable] public class ColorUnityEvent : UnityEvent { } [Serializable] public class StringUnityEvent : UnityEvent { } public static class Vector2Extensions { public static Vector2 Inverse(this Vector2 vector) { //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_0018: Unknown result type (might be due to invalid IL or missing references) return new Vector2(1f / vector.x, 1f / vector.y); } public static float MinComponent(this Vector2 vector) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0006: Unknown result type (might be due to invalid IL or missing references) return Mathf.Min(vector.x, vector.y); } public static float MaxComponent(this Vector2 vector) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0006: Unknown result type (might be due to invalid IL or missing references) return Mathf.Max(vector.x, vector.y); } public static Vector2 Abs(this Vector2 vector) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0014: Unknown result type (might be due to invalid IL or missing references) //IL_0024: Unknown result type (might be due to invalid IL or missing references) vector.x = Mathf.Abs(vector.x); vector.y = Mathf.Abs(vector.y); return vector; } } public static class Vector3Extensions { public static Vector3 Inverse(this Vector3 vector) { //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_001d: Unknown result type (might be due to invalid IL or missing references) //IL_0024: Unknown result type (might be due to invalid IL or missing references) return new Vector3(1f / vector.x, 1f / vector.y, 1f / vector.z); } public static float MinComponent(this Vector3 vector) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Unknown result type (might be due to invalid IL or missing references) return Mathf.Min(Mathf.Min(vector.x, vector.y), vector.z); } public static float MaxComponent(this Vector3 vector) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Unknown result type (might be due to invalid IL or missing references) return Mathf.Max(Mathf.Max(vector.x, vector.y), vector.z); } public static Vector3 Abs(this Vector3 vector) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0014: Unknown result type (might be due to invalid IL or missing references) //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Unknown result type (might be due to invalid IL or missing references) vector.x = Mathf.Abs(vector.x); vector.y = Mathf.Abs(vector.y); vector.z = Mathf.Abs(vector.z); return vector; } public static Vector3 Multiply(this Vector3 value, Vector3 scale) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0013: Unknown result type (might be due to invalid IL or missing references) //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Unknown result type (might be due to invalid IL or missing references) //IL_0027: Unknown result type (might be due to invalid IL or missing references) return new Vector3(value.x * scale.x, value.y * scale.y, value.z * scale.z); } public static Vector3 Divide(this Vector3 value, Vector3 scale) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0013: Unknown result type (might be due to invalid IL or missing references) //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Unknown result type (might be due to invalid IL or missing references) //IL_0027: Unknown result type (might be due to invalid IL or missing references) return new Vector3(value.x / scale.x, value.y / scale.y, value.z / scale.z); } public static Vector3 SafeDivide(this Vector3 value, Vector3 scale) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_0035: Unknown result type (might be due to invalid IL or missing references) //IL_0047: Unknown result type (might be due to invalid IL or missing references) //IL_004d: Unknown result type (might be due to invalid IL or missing references) //IL_006a: Unknown result type (might be due to invalid IL or missing references) //IL_007c: Unknown result type (might be due to invalid IL or missing references) //IL_0082: Unknown result type (might be due to invalid IL or missing references) //IL_00a2: Unknown result type (might be due to invalid IL or missing references) float num = (Mathf.Approximately(scale.x, 0f) ? 0f : (value.x / scale.x)); if (float.IsNaN(num)) { num = 0f; } float num2 = (Mathf.Approximately(scale.y, 0f) ? 0f : (value.y / scale.y)); if (float.IsNaN(num2)) { num2 = 0f; } float num3 = (Mathf.Approximately(scale.z, 0f) ? 0f : (value.z / scale.z)); if (float.IsNaN(num3)) { num3 = 0f; } return new Vector3(num, num2, num3); } } public static class GameObjectUtils { private static readonly List k_GameObjects = new List(); private static readonly List k_Transforms = new List(); public static event Action GameObjectInstantiated; public static GameObject Create() { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0006: Expected O, but got Unknown GameObject val = new GameObject(); GameObjectUtils.GameObjectInstantiated?.Invoke(val); return val; } public static GameObject Create(string name) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Expected O, but got Unknown GameObject val = new GameObject(name); GameObjectUtils.GameObjectInstantiated?.Invoke(val); return val; } public static GameObject Instantiate(GameObject original, Transform parent = null, bool worldPositionStays = true) { GameObject val = Object.Instantiate(original, parent, worldPositionStays); if ((Object)(object)val != (Object)null && GameObjectUtils.GameObjectInstantiated != null) { GameObjectUtils.GameObjectInstantiated(val); } return val; } public static GameObject Instantiate(GameObject original, Vector3 position, Quaternion rotation) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0003: Unknown result type (might be due to invalid IL or missing references) return Instantiate(original, null, position, rotation); } public static GameObject Instantiate(GameObject original, Transform parent, Vector3 position, Quaternion rotation) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0002: Unknown result type (might be due to invalid IL or missing references) GameObject val = Object.Instantiate(original, position, rotation, parent); if ((Object)(object)val != (Object)null && GameObjectUtils.GameObjectInstantiated != null) { GameObjectUtils.GameObjectInstantiated(val); } return val; } public static GameObject CloneWithHideFlags(GameObject original, Transform parent = null) { GameObject val = Object.Instantiate(original, parent); CopyHideFlagsRecursively(original, val); return val; } private static void CopyHideFlagsRecursively(GameObject copyFrom, GameObject copyTo) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) ((Object)copyTo).hideFlags = ((Object)copyFrom).hideFlags; Transform transform = copyFrom.transform; Transform transform2 = copyTo.transform; for (int i = 0; i < transform.childCount; i++) { CopyHideFlagsRecursively(((Component)transform.GetChild(i)).gameObject, ((Component)transform2.GetChild(i)).gameObject); } } public static T ExhaustiveComponentSearch(GameObject desiredSource) where T : Component { T val = default(T); if ((Object)(object)desiredSource != (Object)null) { val = desiredSource.GetComponentInChildren(true); } if ((Object)(object)val == (Object)null) { val = Object.FindAnyObjectByType(); } _ = (Object)(object)val != (Object)null; return val; } public static T ExhaustiveTaggedComponentSearch(GameObject desiredSource, string tag) where T : Component { T val = default(T); if ((Object)(object)desiredSource != (Object)null) { T[] componentsInChildren = desiredSource.GetComponentsInChildren(true); foreach (T val2 in componentsInChildren) { if (((Component)val2).gameObject.CompareTag(tag)) { val = val2; break; } } } if ((Object)(object)val == (Object)null) { GameObject[] array = GameObject.FindGameObjectsWithTag(tag); for (int i = 0; i < array.Length; i++) { val = array[i].GetComponent(); if ((Object)(object)val != (Object)null) { break; } } } if ((Object)(object)val == (Object)null) { val = Object.FindAnyObjectByType(); } return val; } public static T GetComponentInScene(Scene scene) where T : Component { ((Scene)(ref scene)).GetRootGameObjects(k_GameObjects); foreach (GameObject k_GameObject in k_GameObjects) { T componentInChildren = k_GameObject.GetComponentInChildren(); if (Object.op_Implicit((Object)(object)componentInChildren)) { return componentInChildren; } } return default(T); } public static void GetComponentsInScene(Scene scene, List components, bool includeInactive = false) where T : Component { ((Scene)(ref scene)).GetRootGameObjects(k_GameObjects); foreach (GameObject k_GameObject in k_GameObjects) { if (includeInactive || k_GameObject.activeInHierarchy) { components.AddRange(k_GameObject.GetComponentsInChildren(includeInactive)); } } } public static T GetComponentInActiveScene() where T : Component { //IL_0000: Unknown result type (might be due to invalid IL or missing references) return GetComponentInScene(SceneManager.GetActiveScene()); } public static void GetComponentsInActiveScene(List components, bool includeInactive = false) where T : Component { //IL_0000: Unknown result type (might be due to invalid IL or missing references) GetComponentsInScene(SceneManager.GetActiveScene(), components, includeInactive); } public static void GetComponentsInAllScenes(List components, bool includeInactive = false) where T : Component { //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_001a: Unknown result type (might be due to invalid IL or missing references) int sceneCount = SceneManager.sceneCount; for (int i = 0; i < sceneCount; i++) { Scene sceneAt = SceneManager.GetSceneAt(i); if (((Scene)(ref sceneAt)).isLoaded) { GetComponentsInScene(sceneAt, components, includeInactive); } } } public static void GetChildGameObjects(this GameObject go, List childGameObjects) { Transform transform = go.transform; int childCount = transform.childCount; if (childCount != 0) { ListExtensions.EnsureCapacity(childGameObjects, childCount); for (int i = 0; i < childCount; i++) { childGameObjects.Add(((Component)transform.GetChild(i)).gameObject); } } } public static GameObject GetNamedChild(this GameObject go, string name) { k_Transforms.Clear(); go.GetComponentsInChildren(k_Transforms); Transform val = k_Transforms.Find((Transform currentTransform) => ((Object)currentTransform).name == name); k_Transforms.Clear(); if ((Object)(object)val != (Object)null) { return ((Component)val).gameObject; } return null; } } public static class GeometryUtils { private const float k_TwoPi = MathF.PI * 2f; private static readonly Vector3 k_Up = Vector3.up; private static readonly Vector3 k_Forward = Vector3.forward; private static readonly Vector3 k_Zero = Vector3.zero; private static readonly Quaternion k_VerticalCorrection = Quaternion.AngleAxis(180f, k_Up); private const float k_MostlyVertical = 0.95f; private static readonly List k_HullEdgeDirections = new List(); private static readonly HashSet k_HullIndices = new HashSet(); public static bool FindClosestEdge(List vertices, Vector3 point, out Vector3 vertexA, out Vector3 vertexB) { //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Unknown result type (might be due to invalid IL or missing references) //IL_002f: Unknown result type (might be due to invalid IL or missing references) //IL_0034: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_0017: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Unknown result type (might be due to invalid IL or missing references) //IL_003d: Unknown result type (might be due to invalid IL or missing references) //IL_0042: Unknown result type (might be due to invalid IL or missing references) //IL_0050: Unknown result type (might be due to invalid IL or missing references) //IL_0055: Unknown result type (might be due to invalid IL or missing references) //IL_0057: Unknown result type (might be due to invalid IL or missing references) //IL_0058: Unknown result type (might be due to invalid IL or missing references) //IL_005a: Unknown result type (might be due to invalid IL or missing references) //IL_005c: Unknown result type (might be due to invalid IL or missing references) //IL_0061: Unknown result type (might be due to invalid IL or missing references) //IL_0063: Unknown result type (might be due to invalid IL or missing references) //IL_0064: Unknown result type (might be due to invalid IL or missing references) //IL_0066: Unknown result type (might be due to invalid IL or missing references) //IL_008c: Unknown result type (might be due to invalid IL or missing references) //IL_008d: Unknown result type (might be due to invalid IL or missing references) //IL_0093: Unknown result type (might be due to invalid IL or missing references) //IL_0094: Unknown result type (might be due to invalid IL or missing references) //IL_007a: Unknown result type (might be due to invalid IL or missing references) //IL_007c: Unknown result type (might be due to invalid IL or missing references) //IL_007d: Unknown result type (might be due to invalid IL or missing references) //IL_007f: Unknown result type (might be due to invalid IL or missing references) int count = vertices.Count; if (count < 1) { vertexA = Vector3.zero; vertexB = Vector3.zero; return false; } float num = float.MaxValue; Vector3 val = Vector3.zero; Vector3 val2 = Vector3.zero; for (int i = 0; i < count; i++) { Vector3 val3 = vertices[i]; Vector3 val4 = vertices[(i + 1) % vertices.Count]; Vector3 val5 = ClosestPointOnLineSegment(point, val3, val4); float num2 = Vector3.SqrMagnitude(point - val5); if (num2 < num) { num = num2; val = val3; val2 = val4; } } vertexA = val; vertexB = val2; return true; } public static Vector3 PointOnOppositeSideOfPolygon(List vertices, Vector3 point) { //IL_0013: Unknown result type (might be due to invalid IL or missing references) //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_0028: Unknown result type (might be due to invalid IL or missing references) //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Unknown result type (might be due to invalid IL or missing references) //IL_002f: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Unknown result type (might be due to invalid IL or missing references) //IL_0035: Unknown result type (might be due to invalid IL or missing references) //IL_003a: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Unknown result type (might be due to invalid IL or missing references) //IL_0043: Unknown result type (might be due to invalid IL or missing references) //IL_0044: Unknown result type (might be due to invalid IL or missing references) //IL_0049: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0057: Unknown result type (might be due to invalid IL or missing references) //IL_005c: Unknown result type (might be due to invalid IL or missing references) //IL_005e: Unknown result type (might be due to invalid IL or missing references) //IL_0060: Unknown result type (might be due to invalid IL or missing references) //IL_0062: Unknown result type (might be due to invalid IL or missing references) //IL_0067: Unknown result type (might be due to invalid IL or missing references) //IL_0082: Unknown result type (might be due to invalid IL or missing references) //IL_008c: Unknown result type (might be due to invalid IL or missing references) //IL_0091: Unknown result type (might be due to invalid IL or missing references) //IL_0093: Unknown result type (might be due to invalid IL or missing references) //IL_0094: Unknown result type (might be due to invalid IL or missing references) //IL_0096: Unknown result type (might be due to invalid IL or missing references) //IL_009b: Unknown result type (might be due to invalid IL or missing references) //IL_009c: Unknown result type (might be due to invalid IL or missing references) //IL_00a1: Unknown result type (might be due to invalid IL or missing references) //IL_00b3: Unknown result type (might be due to invalid IL or missing references) //IL_00b8: Unknown result type (might be due to invalid IL or missing references) //IL_013a: Unknown result type (might be due to invalid IL or missing references) //IL_00cc: Unknown result type (might be due to invalid IL or missing references) //IL_00c5: Unknown result type (might be due to invalid IL or missing references) //IL_00cd: Unknown result type (might be due to invalid IL or missing references) //IL_00cf: Unknown result type (might be due to invalid IL or missing references) //IL_00d4: Unknown result type (might be due to invalid IL or missing references) //IL_00d6: Unknown result type (might be due to invalid IL or missing references) //IL_00d8: Unknown result type (might be due to invalid IL or missing references) //IL_00da: Unknown result type (might be due to invalid IL or missing references) //IL_00dc: Unknown result type (might be due to invalid IL or missing references) //IL_00de: Unknown result type (might be due to invalid IL or missing references) //IL_00e8: Unknown result type (might be due to invalid IL or missing references) //IL_011b: Unknown result type (might be due to invalid IL or missing references) //IL_011d: Unknown result type (might be due to invalid IL or missing references) //IL_0121: Unknown result type (might be due to invalid IL or missing references) //IL_0126: Unknown result type (might be due to invalid IL or missing references) int count = vertices.Count; if (count < 3) { return Vector3.zero; } Vector3 val = vertices[0]; Vector3 val2 = vertices[1]; Vector3 val3 = vertices[2]; Vector3 val4 = Vector3.Cross(val2 - val, val3 - val); Vector3 normalized = ((Vector3)(ref val4)).normalized; Vector3 val5 = Vector3.zero; foreach (Vector3 vertex in vertices) { val5 += vertex; } val5 *= 1f / (float)count; Vector3 val6 = Vector3.ProjectOnPlane(point - val5, normalized); int num = count - 1; for (int i = 0; i < count; i++) { Vector3 val7 = vertices[i]; Vector3 val8 = ((i == num) ? val : vertices[i + 1]) - val7; ClosestTimesOnTwoLines(val7, val8, val5, -val6 * 100f, out var s, out var t); if (t >= 0f && s >= 0f && s <= 1f) { return val7 + val8 * s; } } return Vector3.zero; } public static void TriangulatePolygon(List indices, int vertCount, bool reverse = false) { vertCount -= 2; ListExtensions.EnsureCapacity(indices, vertCount * 3); if (reverse) { for (int i = 0; i < vertCount; i++) { indices.Add(0); indices.Add(i + 2); indices.Add(i + 1); } } else { for (int j = 0; j < vertCount; j++) { indices.Add(0); indices.Add(j + 1); indices.Add(j + 2); } } } public static bool ClosestTimesOnTwoLines(Vector3 positionA, Vector3 velocityA, Vector3 positionB, Vector3 velocityB, out float s, out float t, double parallelTest = double.Epsilon) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0009: Unknown result type (might be due to invalid IL or missing references) //IL_000a: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_0013: Unknown result type (might be due to invalid IL or missing references) //IL_003f: Unknown result type (might be due to invalid IL or missing references) //IL_0040: Unknown result type (might be due to invalid IL or missing references) //IL_0041: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Unknown result type (might be due to invalid IL or missing references) //IL_0048: Unknown result type (might be due to invalid IL or missing references) //IL_0049: Unknown result type (might be due to invalid IL or missing references) //IL_0052: Unknown result type (might be due to invalid IL or missing references) //IL_0053: Unknown result type (might be due to invalid IL or missing references) double num = Vector3.Dot(velocityA, velocityA); double num2 = Vector3.Dot(velocityA, velocityB); double num3 = Vector3.Dot(velocityB, velocityB); double num4 = num * num3 - num2 * num2; if (Math.Abs(num4) < parallelTest) { s = 0f; t = 0f; return false; } Vector3 val = positionA - positionB; float num5 = Vector3.Dot(velocityA, val); float num6 = Vector3.Dot(velocityB, val); s = (float)((num2 * (double)num6 - (double)num5 * num3) / num4); t = (float)((num * (double)num6 - (double)num5 * num2) / num4); return true; } public static bool ClosestTimesOnTwoLinesXZ(Vector3 positionA, Vector3 velocityA, Vector3 positionB, Vector3 velocityB, out float s, out float t, double parallelTest = double.Epsilon) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0013: Unknown result type (might be due to invalid IL or missing references) //IL_001d: Unknown result type (might be due to invalid IL or missing references) //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Unknown result type (might be due to invalid IL or missing references) //IL_003a: Unknown result type (might be due to invalid IL or missing references) //IL_0040: Unknown result type (might be due to invalid IL or missing references) //IL_0047: Unknown result type (might be due to invalid IL or missing references) //IL_004d: Unknown result type (might be due to invalid IL or missing references) //IL_007b: Unknown result type (might be due to invalid IL or missing references) //IL_007c: Unknown result type (might be due to invalid IL or missing references) //IL_007d: Unknown result type (might be due to invalid IL or missing references) //IL_0082: Unknown result type (might be due to invalid IL or missing references) //IL_0084: Unknown result type (might be due to invalid IL or missing references) //IL_008a: Unknown result type (might be due to invalid IL or missing references) //IL_0092: Unknown result type (might be due to invalid IL or missing references) //IL_0098: Unknown result type (might be due to invalid IL or missing references) //IL_00a3: Unknown result type (might be due to invalid IL or missing references) //IL_00a9: Unknown result type (might be due to invalid IL or missing references) //IL_00b1: Unknown result type (might be due to invalid IL or missing references) //IL_00b7: Unknown result type (might be due to invalid IL or missing references) double num = velocityA.x * velocityA.x + velocityA.z * velocityA.z; double num2 = velocityA.x * velocityB.x + velocityA.z * velocityB.z; double num3 = velocityB.x * velocityB.x + velocityB.z * velocityB.z; double num4 = num * num3 - num2 * num2; if (Math.Abs(num4) < parallelTest) { s = 0f; t = 0f; return false; } Vector3 val = positionA - positionB; float num5 = velocityA.x * val.x + velocityA.z * val.z; float num6 = velocityB.x * val.x + velocityB.z * val.z; s = (float)((num2 * (double)num6 - (double)num5 * num3) / num4); t = (float)((num * (double)num6 - (double)num5 * num2) / num4); return true; } public static bool ClosestPointsOnTwoLineSegments(Vector3 a, Vector3 aLineVector, Vector3 b, Vector3 bLineVector, out Vector3 resultA, out Vector3 resultB, double parallelTest = double.Epsilon) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0003: Unknown result type (might be due to invalid IL or missing references) //IL_0060: Unknown result type (might be due to invalid IL or missing references) //IL_0061: Unknown result type (might be due to invalid IL or missing references) //IL_0062: Unknown result type (might be due to invalid IL or missing references) //IL_0067: Unknown result type (might be due to invalid IL or missing references) //IL_0068: Unknown result type (might be due to invalid IL or missing references) //IL_0069: Unknown result type (might be due to invalid IL or missing references) //IL_006a: Unknown result type (might be due to invalid IL or missing references) //IL_006f: Unknown result type (might be due to invalid IL or missing references) //IL_0071: Unknown result type (might be due to invalid IL or missing references) //IL_0072: Unknown result type (might be due to invalid IL or missing references) //IL_0073: Unknown result type (might be due to invalid IL or missing references) //IL_0074: Unknown result type (might be due to invalid IL or missing references) //IL_0079: Unknown result type (might be due to invalid IL or missing references) //IL_007b: Unknown result type (might be due to invalid IL or missing references) //IL_007d: Unknown result type (might be due to invalid IL or missing references) //IL_007e: Unknown result type (might be due to invalid IL or missing references) //IL_007f: Unknown result type (might be due to invalid IL or missing references) //IL_0084: Unknown result type (might be due to invalid IL or missing references) //IL_0086: Unknown result type (might be due to invalid IL or missing references) //IL_0087: Unknown result type (might be due to invalid IL or missing references) //IL_0092: Unknown result type (might be due to invalid IL or missing references) //IL_0093: Unknown result type (might be due to invalid IL or missing references) //IL_009a: Unknown result type (might be due to invalid IL or missing references) //IL_009c: Unknown result type (might be due to invalid IL or missing references) //IL_00a1: Unknown result type (might be due to invalid IL or missing references) //IL_00a3: Unknown result type (might be due to invalid IL or missing references) //IL_00c8: Unknown result type (might be due to invalid IL or missing references) //IL_00c9: Unknown result type (might be due to invalid IL or missing references) //IL_00ca: Unknown result type (might be due to invalid IL or missing references) //IL_00cc: Unknown result type (might be due to invalid IL or missing references) //IL_00d1: Unknown result type (might be due to invalid IL or missing references) //IL_00d3: Unknown result type (might be due to invalid IL or missing references) //IL_00d4: Unknown result type (might be due to invalid IL or missing references) //IL_00b4: Unknown result type (might be due to invalid IL or missing references) //IL_00b6: Unknown result type (might be due to invalid IL or missing references) //IL_00bd: Unknown result type (might be due to invalid IL or missing references) //IL_00bf: Unknown result type (might be due to invalid IL or missing references) //IL_00f8: Unknown result type (might be due to invalid IL or missing references) //IL_00f9: Unknown result type (might be due to invalid IL or missing references) //IL_00fa: Unknown result type (might be due to invalid IL or missing references) //IL_00fc: Unknown result type (might be due to invalid IL or missing references) //IL_0101: Unknown result type (might be due to invalid IL or missing references) //IL_0103: Unknown result type (might be due to invalid IL or missing references) //IL_0104: Unknown result type (might be due to invalid IL or missing references) //IL_00e5: Unknown result type (might be due to invalid IL or missing references) //IL_00e7: Unknown result type (might be due to invalid IL or missing references) //IL_00ee: Unknown result type (might be due to invalid IL or missing references) //IL_00ef: Unknown result type (might be due to invalid IL or missing references) //IL_0115: Unknown result type (might be due to invalid IL or missing references) //IL_0117: Unknown result type (might be due to invalid IL or missing references) //IL_011e: Unknown result type (might be due to invalid IL or missing references) //IL_011f: Unknown result type (might be due to invalid IL or missing references) //IL_0035: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Unknown result type (might be due to invalid IL or missing references) //IL_0038: Unknown result type (might be due to invalid IL or missing references) //IL_003d: Unknown result type (might be due to invalid IL or missing references) //IL_0042: Unknown result type (might be due to invalid IL or missing references) //IL_0049: Unknown result type (might be due to invalid IL or missing references) //IL_004a: Unknown result type (might be due to invalid IL or missing references) //IL_004c: Unknown result type (might be due to invalid IL or missing references) //IL_0051: Unknown result type (might be due to invalid IL or missing references) //IL_0056: Unknown result type (might be due to invalid IL or missing references) //IL_012a: Unknown result type (might be due to invalid IL or missing references) //IL_012b: Unknown result type (might be due to invalid IL or missing references) //IL_01a9: Unknown result type (might be due to invalid IL or missing references) //IL_01ab: Unknown result type (might be due to invalid IL or missing references) //IL_01ac: Unknown result type (might be due to invalid IL or missing references) //IL_01b3: Unknown result type (might be due to invalid IL or missing references) //IL_01c4: Unknown result type (might be due to invalid IL or missing references) //IL_01c8: Unknown result type (might be due to invalid IL or missing references) //IL_01cf: Unknown result type (might be due to invalid IL or missing references) //IL_01d4: Unknown result type (might be due to invalid IL or missing references) //IL_01d9: Unknown result type (might be due to invalid IL or missing references) //IL_01db: Unknown result type (might be due to invalid IL or missing references) //IL_01de: Unknown result type (might be due to invalid IL or missing references) //IL_01e5: Unknown result type (might be due to invalid IL or missing references) //IL_01ea: Unknown result type (might be due to invalid IL or missing references) //IL_01ef: Unknown result type (might be due to invalid IL or missing references) //IL_0138: Unknown result type (might be due to invalid IL or missing references) //IL_0139: Unknown result type (might be due to invalid IL or missing references) //IL_013a: Unknown result type (might be due to invalid IL or missing references) //IL_0141: Unknown result type (might be due to invalid IL or missing references) //IL_0152: Unknown result type (might be due to invalid IL or missing references) //IL_0155: Unknown result type (might be due to invalid IL or missing references) //IL_015b: Unknown result type (might be due to invalid IL or missing references) //IL_0160: Unknown result type (might be due to invalid IL or missing references) //IL_0165: Unknown result type (might be due to invalid IL or missing references) //IL_0167: Unknown result type (might be due to invalid IL or missing references) //IL_016a: Unknown result type (might be due to invalid IL or missing references) //IL_0171: Unknown result type (might be due to invalid IL or missing references) //IL_0176: Unknown result type (might be due to invalid IL or missing references) //IL_017b: Unknown result type (might be due to invalid IL or missing references) //IL_0205: Unknown result type (might be due to invalid IL or missing references) //IL_0207: Unknown result type (might be due to invalid IL or missing references) //IL_020e: Unknown result type (might be due to invalid IL or missing references) //IL_0210: Unknown result type (might be due to invalid IL or missing references) //IL_0197: Unknown result type (might be due to invalid IL or missing references) //IL_0199: Unknown result type (might be due to invalid IL or missing references) //IL_01a0: Unknown result type (might be due to invalid IL or missing references) //IL_01a2: Unknown result type (might be due to invalid IL or missing references) float s; float t; bool flag = !ClosestTimesOnTwoLines(a, aLineVector, b, bLineVector, out s, out t, parallelTest); if (s > 0f && s <= 1f && t > 0f && t <= 1f) { resultA = a + aLineVector * s; resultB = b + bLineVector * t; } else { Vector3 val = b + bLineVector; Vector3 val2 = a + aLineVector; Vector3 val3 = ClosestPointOnLineSegment(a, b, val); Vector3 val4 = ClosestPointOnLineSegment(val2, b, val); float num = Vector3.Distance(a, val3); resultA = a; resultB = val3; float num2 = Vector3.Distance(val2, val4); if (num2 < num) { resultA = val2; resultB = val4; num = num2; } Vector3 val5 = ClosestPointOnLineSegment(b, a, val2); num2 = Vector3.Distance(b, val5); if (num2 < num) { resultA = val5; resultB = b; num = num2; } Vector3 val6 = ClosestPointOnLineSegment(val, a, val2); num2 = Vector3.Distance(val, val6); if (num2 < num) { resultA = val6; resultB = val; } if (flag) { if (Vector3.Dot(aLineVector, bLineVector) > 0f) { t = Vector3.Dot(val - a, ((Vector3)(ref aLineVector)).normalized) * 0.5f; Vector3 val7 = a + ((Vector3)(ref aLineVector)).normalized * t; Vector3 val8 = val + ((Vector3)(ref bLineVector)).normalized * (0f - t); if (t > 0f && t < ((Vector3)(ref aLineVector)).magnitude) { resultA = val7; resultB = val8; } } else { t = Vector3.Dot(val2 - val, ((Vector3)(ref aLineVector)).normalized) * 0.5f; Vector3 val9 = val2 + ((Vector3)(ref aLineVector)).normalized * (0f - t); Vector3 val10 = val + ((Vector3)(ref bLineVector)).normalized * (0f - t); if (t > 0f && t < ((Vector3)(ref aLineVector)).magnitude) { resultA = val9; resultB = val10; } } } } return flag; } public static Vector3 ClosestPointOnLineSegment(Vector3 point, Vector3 a, Vector3 b) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_000a: Unknown result type (might be due to invalid IL or missing references) //IL_000f: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_0017: Unknown result type (might be due to invalid IL or missing references) //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Unknown result type (might be due to invalid IL or missing references) //IL_0038: Unknown result type (might be due to invalid IL or missing references) //IL_0039: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Unknown result type (might be due to invalid IL or missing references) //IL_0034: Unknown result type (might be due to invalid IL or missing references) Vector3 val = b - a; Vector3 normalized = ((Vector3)(ref val)).normalized; float num = Vector3.Dot(point - a, normalized); if (num < 0f) { return a; } if (num * num > ((Vector3)(ref val)).sqrMagnitude) { return b; } return a + num * normalized; } public static void ClosestPolygonApproach(List verticesA, List verticesB, out Vector3 pointA, out Vector3 pointB, float parallelTest = 0f) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_002d: Unknown result type (might be due to invalid IL or missing references) //IL_0032: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Unknown result type (might be due to invalid IL or missing references) //IL_003b: Unknown result type (might be due to invalid IL or missing references) //IL_0048: Unknown result type (might be due to invalid IL or missing references) //IL_004d: Unknown result type (might be due to invalid IL or missing references) //IL_0060: Unknown result type (might be due to invalid IL or missing references) //IL_0059: Unknown result type (might be due to invalid IL or missing references) //IL_0062: Unknown result type (might be due to invalid IL or missing references) //IL_0064: Unknown result type (might be due to invalid IL or missing references) //IL_0069: Unknown result type (might be due to invalid IL or missing references) //IL_0076: Unknown result type (might be due to invalid IL or missing references) //IL_007b: Unknown result type (might be due to invalid IL or missing references) //IL_008f: Unknown result type (might be due to invalid IL or missing references) //IL_0088: Unknown result type (might be due to invalid IL or missing references) //IL_0091: Unknown result type (might be due to invalid IL or missing references) //IL_0093: Unknown result type (might be due to invalid IL or missing references) //IL_0098: Unknown result type (might be due to invalid IL or missing references) //IL_009a: Unknown result type (might be due to invalid IL or missing references) //IL_009c: Unknown result type (might be due to invalid IL or missing references) //IL_009e: Unknown result type (might be due to invalid IL or missing references) //IL_00a0: Unknown result type (might be due to invalid IL or missing references) //IL_00ae: Unknown result type (might be due to invalid IL or missing references) //IL_00b0: Unknown result type (might be due to invalid IL or missing references) //IL_00e4: Unknown result type (might be due to invalid IL or missing references) //IL_00e6: Unknown result type (might be due to invalid IL or missing references) //IL_00ec: Unknown result type (might be due to invalid IL or missing references) //IL_00ee: Unknown result type (might be due to invalid IL or missing references) //IL_00ca: Unknown result type (might be due to invalid IL or missing references) //IL_00cc: Unknown result type (might be due to invalid IL or missing references) //IL_00d2: Unknown result type (might be due to invalid IL or missing references) //IL_00d4: Unknown result type (might be due to invalid IL or missing references) pointA = default(Vector3); pointB = default(Vector3); float num = float.MaxValue; int count = verticesA.Count; int count2 = verticesB.Count; int num2 = count - 1; int num3 = count2 - 1; Vector3 val = verticesA[0]; Vector3 val2 = verticesB[0]; for (int i = 0; i < count; i++) { Vector3 val3 = verticesA[i]; Vector3 aLineVector = ((i == num2) ? val : verticesA[i + 1]) - val3; for (int j = 0; j < count2; j++) { Vector3 val4 = verticesB[j]; Vector3 bLineVector = ((j == num3) ? val2 : verticesB[j + 1]) - val4; Vector3 resultA; Vector3 resultB; bool num4 = ClosestPointsOnTwoLineSegments(val3, aLineVector, val4, bLineVector, out resultA, out resultB, parallelTest); float num5 = Vector3.Distance(resultA, resultB); if (num4) { if (num5 - num < parallelTest) { num = num5 - parallelTest; pointA = resultA; pointB = resultB; } } else if (num5 < num) { num = num5; pointA = resultA; pointB = resultB; } } } } public static bool PointInPolygon(Vector3 testPoint, List vertices) { //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_001d: Unknown result type (might be due to invalid IL or missing references) //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_0038: Unknown result type (might be due to invalid IL or missing references) //IL_0042: Unknown result type (might be due to invalid IL or missing references) //IL_004f: Unknown result type (might be due to invalid IL or missing references) //IL_0071: Unknown result type (might be due to invalid IL or missing references) //IL_007f: Unknown result type (might be due to invalid IL or missing references) //IL_00b2: Unknown result type (might be due to invalid IL or missing references) //IL_00b7: Unknown result type (might be due to invalid IL or missing references) //IL_00c2: Unknown result type (might be due to invalid IL or missing references) //IL_00d3: Unknown result type (might be due to invalid IL or missing references) //IL_00db: Unknown result type (might be due to invalid IL or missing references) //IL_00dd: Unknown result type (might be due to invalid IL or missing references) //IL_00de: Unknown result type (might be due to invalid IL or missing references) //IL_00e3: Unknown result type (might be due to invalid IL or missing references) //IL_00ee: Unknown result type (might be due to invalid IL or missing references) //IL_00f5: Unknown result type (might be due to invalid IL or missing references) //IL_00fd: Unknown result type (might be due to invalid IL or missing references) //IL_0104: Unknown result type (might be due to invalid IL or missing references) //IL_012c: Unknown result type (might be due to invalid IL or missing references) //IL_018a: Unknown result type (might be due to invalid IL or missing references) //IL_018c: Unknown result type (might be due to invalid IL or missing references) //IL_013a: Unknown result type (might be due to invalid IL or missing references) //IL_0152: Unknown result type (might be due to invalid IL or missing references) //IL_0158: Unknown result type (might be due to invalid IL or missing references) //IL_0160: Unknown result type (might be due to invalid IL or missing references) //IL_0166: Unknown result type (might be due to invalid IL or missing references) //IL_016f: Unknown result type (might be due to invalid IL or missing references) //IL_0175: Unknown result type (might be due to invalid IL or missing references) if (vertices.Count < 3) { return false; } int num = 0; int i = 0; Vector3 val = vertices[vertices.Count - 1]; val.x -= testPoint.x; val.z -= testPoint.z; bool flag = false; if (!MathUtility.ApproximatelyZero(val.z)) { flag = val.z < 0f; } else { for (int num2 = vertices.Count - 2; num2 >= 0; num2--) { float z = vertices[num2].z; z -= testPoint.z; if (!MathUtility.ApproximatelyZero(z)) { flag = z < 0f; break; } } } for (; i < vertices.Count; i++) { Vector3 val2 = vertices[i]; val2.x -= testPoint.x; val2.z -= testPoint.z; Vector3 val3 = val2 - val; float sqrMagnitude = ((Vector3)(ref val3)).sqrMagnitude; if (MathUtility.ApproximatelyZero(val3.x * val2.z - val3.z * val2.x) && ((Vector3)(ref val)).sqrMagnitude <= sqrMagnitude && ((Vector3)(ref val2)).sqrMagnitude <= sqrMagnitude) { return true; } if (!MathUtility.ApproximatelyZero(val2.z)) { bool flag2 = val2.z < 0f; if (flag2 != flag) { flag = flag2; if ((val.x * val2.z - val.z * val2.x) / (0f - (val.z - val2.z)) > 0f) { num++; } } } val = val2; } return num % 2 > 0; } public static bool PointInPolygon3D(Vector3 testPoint, List vertices) { //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Unknown result type (might be due to invalid IL or missing references) //IL_0021: Unknown result type (might be due to invalid IL or missing references) //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_0032: Unknown result type (might be due to invalid IL or missing references) //IL_0037: Unknown result type (might be due to invalid IL or missing references) //IL_0038: Unknown result type (might be due to invalid IL or missing references) //IL_003d: Unknown result type (might be due to invalid IL or missing references) //IL_005a: Unknown result type (might be due to invalid IL or missing references) //IL_005b: Unknown result type (might be due to invalid IL or missing references) if (vertices.Count < 3) { return false; } double num = 0.0; for (int i = 0; i < vertices.Count; i++) { Vector3 val = vertices[i] - testPoint; Vector3 val2 = vertices[(i + 1) % vertices.Count] - testPoint; float num2 = ((Vector3)(ref val)).sqrMagnitude * ((Vector3)(ref val2)).sqrMagnitude; if (num2 <= MathUtility.EpsilonScaled) { return true; } double num3 = Math.Acos(Vector3.Dot(val, val2) / Mathf.Sqrt(num2)); num += num3; } return Mathf.Abs((float)num - MathF.PI * 2f) < 0.01f; } public static Vector3 ProjectPointOnPlane(Vector3 planeNormal, Vector3 planePoint, Vector3 point) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_0009: Unknown result type (might be due to invalid IL or missing references) //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_0023: Unknown result type (might be due to invalid IL or missing references) float num = 0f - Vector3.Dot(((Vector3)(ref planeNormal)).normalized, point - planePoint); return point + ((Vector3)(ref planeNormal)).normalized * num; } public static bool ConvexHull2D(List points, List hull) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_003a: Unknown result type (might be due to invalid IL or missing references) //IL_003f: Unknown result type (might be due to invalid IL or missing references) //IL_0073: Unknown result type (might be due to invalid IL or missing references) //IL_0078: Unknown result type (might be due to invalid IL or missing references) //IL_007b: Unknown result type (might be due to invalid IL or missing references) //IL_0094: Unknown result type (might be due to invalid IL or missing references) //IL_0099: Unknown result type (might be due to invalid IL or missing references) //IL_00c4: Unknown result type (might be due to invalid IL or missing references) //IL_00c9: Unknown result type (might be due to invalid IL or missing references) //IL_00cb: Unknown result type (might be due to invalid IL or missing references) //IL_00cd: Unknown result type (might be due to invalid IL or missing references) //IL_00cf: Unknown result type (might be due to invalid IL or missing references) //IL_00d4: Unknown result type (might be due to invalid IL or missing references) //IL_00d6: Unknown result type (might be due to invalid IL or missing references) //IL_00d8: Unknown result type (might be due to invalid IL or missing references) //IL_00da: Unknown result type (might be due to invalid IL or missing references) //IL_00df: Unknown result type (might be due to invalid IL or missing references) //IL_00e1: Unknown result type (might be due to invalid IL or missing references) //IL_00e8: Unknown result type (might be due to invalid IL or missing references) //IL_00f0: Unknown result type (might be due to invalid IL or missing references) //IL_00f7: Unknown result type (might be due to invalid IL or missing references) //IL_0121: Unknown result type (might be due to invalid IL or missing references) //IL_0123: Unknown result type (might be due to invalid IL or missing references) //IL_0125: Unknown result type (might be due to invalid IL or missing references) //IL_012f: Unknown result type (might be due to invalid IL or missing references) //IL_0131: Unknown result type (might be due to invalid IL or missing references) //IL_0133: Unknown result type (might be due to invalid IL or missing references) //IL_015a: Unknown result type (might be due to invalid IL or missing references) //IL_015f: Unknown result type (might be due to invalid IL or missing references) //IL_0146: Unknown result type (might be due to invalid IL or missing references) //IL_014b: Unknown result type (might be due to invalid IL or missing references) if (points.Count < 3) { return false; } k_HullIndices.Clear(); int count = points.Count; int num = 0; for (int i = 1; i < count; i++) { Vector3 val = points[i]; float x = val.x; float z = val.z; Vector3 val2 = points[num]; float x2 = val2.x; float z2 = val2.z; if (x < x2 || (MathUtility.Approximately(x, x2) && z < z2)) { num = i; } } int num2 = num; do { Vector3 val3 = points[num2]; hull.Add(val3); k_HullIndices.Add(num2); int num3 = 0; Vector3 val4 = points[num3]; for (int j = 1; j < count; j++) { if (j == num2 || (k_HullIndices.Contains(j) && j != num)) { continue; } Vector3 val5 = points[j]; Vector3 val6 = val4 - val3; Vector3 val7 = val5 - val3; float num4 = val6.z * val7.x - val6.x * val7.z; bool flag = num4 < 0f; if ((flag ? (0f - num4) : num4) < MathUtility.EpsilonScaled) { if (Vector3.SqrMagnitude(val3 - val4) < Vector3.SqrMagnitude(val3 - val5)) { num3 = j; val4 = points[num3]; } } else if (flag) { num3 = j; val4 = points[num3]; } } num2 = num3; } while (num2 != num); return true; } public static Vector3 PolygonCentroid2D(List vertices) { //IL_002e: Unknown result type (might be due to invalid IL or missing references) //IL_0033: Unknown result type (might be due to invalid IL or missing references) //IL_0049: Unknown result type (might be due to invalid IL or missing references) //IL_004e: Unknown result type (might be due to invalid IL or missing references) //IL_0095: Unknown result type (might be due to invalid IL or missing references) //IL_009a: Unknown result type (might be due to invalid IL or missing references) //IL_00ad: Unknown result type (might be due to invalid IL or missing references) //IL_00b2: Unknown result type (might be due to invalid IL or missing references) //IL_0118: Unknown result type (might be due to invalid IL or missing references) int count = vertices.Count; double num = 0.0; double num2 = 0.0; double num3 = 0.0; int i; double num4; double num5; double num6; double num7; double num8; for (i = 0; i < count - 1; i++) { Vector3 val = vertices[i]; num4 = val.x; num5 = val.z; Vector3 val2 = vertices[i + 1]; num6 = val2.x; num7 = val2.z; num8 = num4 * num7 - num6 * num5; num += num8; num2 += (num4 + num6) * num8; num3 += (num5 + num7) * num8; } Vector3 val3 = vertices[i]; num4 = val3.x; num5 = val3.z; Vector3 val4 = vertices[0]; num6 = val4.x; num7 = val4.z; num8 = num4 * num7 - num6 * num5; num += num8; num2 += (num4 + num6) * num8; num3 += (num5 + num7) * num8; num *= 0.5; double num9 = 6.0 * num; num2 /= num9; num3 /= num9; return new Vector3((float)num2, 0f, (float)num3); } public static Vector2 OrientedMinimumBoundingBox2D(List convexHull, Vector3[] boundingBox) { //IL_0090: Unknown result type (might be due to invalid IL or missing references) //IL_0095: Unknown result type (might be due to invalid IL or missing references) //IL_0102: Unknown result type (might be due to invalid IL or missing references) //IL_010a: Unknown result type (might be due to invalid IL or missing references) //IL_010f: Unknown result type (might be due to invalid IL or missing references) //IL_0114: Unknown result type (might be due to invalid IL or missing references) //IL_0122: Unknown result type (might be due to invalid IL or missing references) //IL_0137: Unknown result type (might be due to invalid IL or missing references) //IL_013f: Unknown result type (might be due to invalid IL or missing references) //IL_0144: Unknown result type (might be due to invalid IL or missing references) //IL_0149: Unknown result type (might be due to invalid IL or missing references) //IL_0157: Unknown result type (might be due to invalid IL or missing references) //IL_0178: Unknown result type (might be due to invalid IL or missing references) //IL_017d: Unknown result type (might be due to invalid IL or missing references) //IL_0186: Unknown result type (might be due to invalid IL or missing references) //IL_018b: Unknown result type (might be due to invalid IL or missing references) //IL_0194: Unknown result type (might be due to invalid IL or missing references) //IL_0199: Unknown result type (might be due to invalid IL or missing references) //IL_01a2: Unknown result type (might be due to invalid IL or missing references) //IL_01a7: Unknown result type (might be due to invalid IL or missing references) //IL_01a9: Unknown result type (might be due to invalid IL or missing references) //IL_01af: Unknown result type (might be due to invalid IL or missing references) //IL_01b7: Unknown result type (might be due to invalid IL or missing references) //IL_01bd: Unknown result type (might be due to invalid IL or missing references) //IL_01ce: Unknown result type (might be due to invalid IL or missing references) //IL_01d4: Unknown result type (might be due to invalid IL or missing references) //IL_01dc: Unknown result type (might be due to invalid IL or missing references) //IL_01e2: Unknown result type (might be due to invalid IL or missing references) //IL_01f3: Unknown result type (might be due to invalid IL or missing references) //IL_01f9: Unknown result type (might be due to invalid IL or missing references) //IL_0201: Unknown result type (might be due to invalid IL or missing references) //IL_0207: Unknown result type (might be due to invalid IL or missing references) //IL_0218: Unknown result type (might be due to invalid IL or missing references) //IL_021e: Unknown result type (might be due to invalid IL or missing references) //IL_0226: Unknown result type (might be due to invalid IL or missing references) //IL_022c: Unknown result type (might be due to invalid IL or missing references) //IL_036a: Unknown result type (might be due to invalid IL or missing references) //IL_036f: Unknown result type (might be due to invalid IL or missing references) //IL_0372: Unknown result type (might be due to invalid IL or missing references) //IL_0380: Unknown result type (might be due to invalid IL or missing references) //IL_0390: Unknown result type (might be due to invalid IL or missing references) //IL_0278: Unknown result type (might be due to invalid IL or missing references) //IL_029a: Unknown result type (might be due to invalid IL or missing references) //IL_02bc: Unknown result type (might be due to invalid IL or missing references) //IL_02fe: Unknown result type (might be due to invalid IL or missing references) //IL_0300: Unknown result type (might be due to invalid IL or missing references) //IL_0302: Unknown result type (might be due to invalid IL or missing references) //IL_0307: Unknown result type (might be due to invalid IL or missing references) //IL_0310: Unknown result type (might be due to invalid IL or missing references) //IL_0312: Unknown result type (might be due to invalid IL or missing references) //IL_0314: Unknown result type (might be due to invalid IL or missing references) //IL_0319: Unknown result type (might be due to invalid IL or missing references) //IL_02de: Unknown result type (might be due to invalid IL or missing references) //IL_0337: Unknown result type (might be due to invalid IL or missing references) //IL_0339: Unknown result type (might be due to invalid IL or missing references) //IL_0340: Unknown result type (might be due to invalid IL or missing references) //IL_0342: Unknown result type (might be due to invalid IL or missing references) //IL_0349: Unknown result type (might be due to invalid IL or missing references) //IL_034b: Unknown result type (might be due to invalid IL or missing references) //IL_0352: Unknown result type (might be due to invalid IL or missing references) //IL_0354: Unknown result type (might be due to invalid IL or missing references) Vector3 caliperA = default(Vector3); ((Vector3)(ref caliperA))..ctor(0f, 0f, 1f); Vector3 caliperC = default(Vector3); ((Vector3)(ref caliperC))..ctor(0f, 0f, -1f); Vector3 caliperB = default(Vector3); ((Vector3)(ref caliperB))..ctor(1f, 0f, 0f); Vector3 caliperD = default(Vector3); ((Vector3)(ref caliperD))..ctor(-1f, 0f, 0f); float num = float.MaxValue; float num2 = float.MaxValue; float num3 = float.MinValue; float num4 = float.MinValue; int indexA = 0; int indexC = 0; int indexB = 0; int indexD = 0; int count = convexHull.Count; for (int i = 0; i < count; i++) { Vector3 val = convexHull[i]; float x = val.x; if (x < num) { num = x; indexA = i; } if (x > num3) { num3 = x; indexC = i; } float z = val.z; if (z < num2) { num2 = z; indexD = i; } if (z > num4) { num4 = z; indexB = i; } } k_HullEdgeDirections.Clear(); int num5 = count - 1; for (int j = 0; j < num5; j++) { Vector3 item = convexHull[j + 1] - convexHull[j]; ((Vector3)(ref item)).Normalize(); k_HullEdgeDirections.Add(item); } Vector3 item2 = convexHull[0] - convexHull[num5]; ((Vector3)(ref item2)).Normalize(); k_HullEdgeDirections.Add(item2); double num6 = double.MaxValue; for (int k = 0; k < count; k++) { Vector3 val2 = k_HullEdgeDirections[indexA]; Vector3 val3 = k_HullEdgeDirections[indexC]; Vector3 val4 = k_HullEdgeDirections[indexB]; Vector3 val5 = k_HullEdgeDirections[indexD]; double num7 = Math.Acos(caliperA.x * val2.x + caliperA.z * val2.z); double num8 = Math.Acos(caliperC.x * val3.x + caliperC.z * val3.z); double num9 = Math.Acos(caliperB.x * val4.x + caliperB.z * val4.z); double num10 = Math.Acos(caliperD.x * val5.x + caliperD.z * val5.z); int num11 = 0; double num12 = num7; if (num8 < num12) { num12 = num8; num11 = 1; } if (num9 < num12) { num12 = num9; num11 = 2; } if (num10 < num12) { num11 = 3; } Vector3 caliperAEndCorner; Vector3 caliperBEndCorner; Vector3 caliperCEndCorner; Vector3 caliperDEndCorner; switch (num11) { case 0: RotateCalipers(val2, convexHull, ref indexA, out indexB, out indexC, out indexD, out caliperA, out caliperB, out caliperC, out caliperD, out caliperAEndCorner, out caliperBEndCorner, out caliperCEndCorner, out caliperDEndCorner); break; case 1: RotateCalipers(val3, convexHull, ref indexC, out indexD, out indexA, out indexB, out caliperC, out caliperD, out caliperA, out caliperB, out caliperCEndCorner, out caliperDEndCorner, out caliperAEndCorner, out caliperBEndCorner); break; case 2: RotateCalipers(val4, convexHull, ref indexB, out indexC, out indexD, out indexA, out caliperB, out caliperC, out caliperD, out caliperA, out caliperBEndCorner, out caliperCEndCorner, out caliperDEndCorner, out caliperAEndCorner); break; default: RotateCalipers(val5, convexHull, ref indexD, out indexA, out indexB, out indexC, out caliperD, out caliperA, out caliperB, out caliperC, out caliperDEndCorner, out caliperAEndCorner, out caliperBEndCorner, out caliperCEndCorner); break; } Vector3 val6 = caliperAEndCorner - caliperBEndCorner; float sqrMagnitude = ((Vector3)(ref val6)).sqrMagnitude; val6 = caliperAEndCorner - caliperDEndCorner; float sqrMagnitude2 = ((Vector3)(ref val6)).sqrMagnitude; float num13 = sqrMagnitude * sqrMagnitude2; if ((double)num13 < num6) { num6 = num13; boundingBox[0] = caliperDEndCorner; boundingBox[1] = caliperCEndCorner; boundingBox[2] = caliperBEndCorner; boundingBox[3] = caliperAEndCorner; } } Vector3 val7 = boundingBox[0]; float num14 = Vector3.Distance(val7, boundingBox[3]); float num15 = Vector3.Distance(val7, boundingBox[1]); return new Vector2(num14, num15); } private static void RotateCalipers(Vector3 alignEdge, List vertices, ref int indexA, out int indexB, out int indexC, out int indexD, out Vector3 caliperA, out Vector3 caliperB, out Vector3 caliperC, out Vector3 caliperD, out Vector3 caliperAEndCorner, out Vector3 caliperBEndCorner, out Vector3 caliperCEndCorner, out Vector3 caliperDEndCorner) { //IL_0009: Unknown result type (might be due to invalid IL or missing references) //IL_000a: Unknown result type (might be due to invalid IL or missing references) //IL_0025: Unknown result type (might be due to invalid IL or missing references) //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_0033: Unknown result type (might be due to invalid IL or missing references) //IL_0038: Unknown result type (might be due to invalid IL or missing references) //IL_003d: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Unknown result type (might be due to invalid IL or missing references) //IL_004b: Unknown result type (might be due to invalid IL or missing references) //IL_0050: Unknown result type (might be due to invalid IL or missing references) //IL_0060: Unknown result type (might be due to invalid IL or missing references) //IL_0065: Unknown result type (might be due to invalid IL or missing references) //IL_0078: Unknown result type (might be due to invalid IL or missing references) //IL_007b: Unknown result type (might be due to invalid IL or missing references) //IL_0083: Unknown result type (might be due to invalid IL or missing references) //IL_008a: Unknown result type (might be due to invalid IL or missing references) //IL_00b2: Unknown result type (might be due to invalid IL or missing references) //IL_00b5: Unknown result type (might be due to invalid IL or missing references) //IL_00bb: Unknown result type (might be due to invalid IL or missing references) //IL_00c0: Unknown result type (might be due to invalid IL or missing references) //IL_00c5: Unknown result type (might be due to invalid IL or missing references) //IL_00cd: Unknown result type (might be due to invalid IL or missing references) //IL_00d2: Unknown result type (might be due to invalid IL or missing references) //IL_00e7: Unknown result type (might be due to invalid IL or missing references) //IL_00ea: Unknown result type (might be due to invalid IL or missing references) //IL_00f2: Unknown result type (might be due to invalid IL or missing references) //IL_00f9: Unknown result type (might be due to invalid IL or missing references) //IL_0122: Unknown result type (might be due to invalid IL or missing references) //IL_0125: Unknown result type (might be due to invalid IL or missing references) //IL_012b: Unknown result type (might be due to invalid IL or missing references) //IL_0130: Unknown result type (might be due to invalid IL or missing references) //IL_0135: Unknown result type (might be due to invalid IL or missing references) //IL_013e: Unknown result type (might be due to invalid IL or missing references) //IL_0143: Unknown result type (might be due to invalid IL or missing references) //IL_015a: Unknown result type (might be due to invalid IL or missing references) //IL_015e: Unknown result type (might be due to invalid IL or missing references) //IL_0166: Unknown result type (might be due to invalid IL or missing references) //IL_016d: Unknown result type (might be due to invalid IL or missing references) //IL_0196: Unknown result type (might be due to invalid IL or missing references) //IL_019a: Unknown result type (might be due to invalid IL or missing references) //IL_01a0: Unknown result type (might be due to invalid IL or missing references) //IL_01a5: Unknown result type (might be due to invalid IL or missing references) //IL_01aa: Unknown result type (might be due to invalid IL or missing references) //IL_01b3: Unknown result type (might be due to invalid IL or missing references) //IL_01ba: Unknown result type (might be due to invalid IL or missing references) //IL_01bf: Unknown result type (might be due to invalid IL or missing references) //IL_01c6: Unknown result type (might be due to invalid IL or missing references) //IL_01cb: Unknown result type (might be due to invalid IL or missing references) //IL_01d0: Unknown result type (might be due to invalid IL or missing references) int count = vertices.Count; caliperA = alignEdge; caliperB = new Vector3(caliperA.z, 0f, 0f - caliperA.x); caliperC = -caliperA; caliperD = -caliperB; indexA = (indexA + 1) % count; Vector3 val = vertices[indexA]; indexB = indexA; float num = 0f; float t; while (true) { int num2 = (indexB + 1) % count; ClosestTimesOnTwoLinesXZ(val, caliperA, vertices[num2], caliperD, out var s, out t); if (s <= num) { break; } num = s; indexB = num2; } caliperAEndCorner = val + caliperA * num; Vector3 val2 = vertices[indexB]; indexC = indexB; num = 0f; while (true) { int num3 = (indexC + 1) % count; ClosestTimesOnTwoLinesXZ(val2, caliperB, vertices[num3], caliperA, out var s2, out t); if (s2 <= num) { break; } num = s2; indexC = num3; } caliperBEndCorner = val2 + caliperB * num; Vector3 val3 = vertices[indexC]; indexD = indexC; num = 0f; while (true) { int num4 = (indexD + 1) % count; ClosestTimesOnTwoLinesXZ(val3, caliperC, vertices[num4], caliperB, out var s3, out t); if (s3 <= num) { break; } num = s3; indexD = num4; } caliperCEndCorner = val3 + caliperC * num; caliperDEndCorner = caliperCEndCorner + caliperAEndCorner - caliperBEndCorner; } public static Quaternion RotationForBox(Vector3[] vertices) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_000a: Unknown result type (might be due to invalid IL or missing references) //IL_000f: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_0016: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Unknown result type (might be due to invalid IL or missing references) Vector3 val = vertices[0]; Vector3 val2 = vertices[3] - val; return Quaternion.FromToRotation(Vector3.right, val2); } public static float ConvexPolygonArea(List vertices) { //IL_0013: Unknown result type (might be due to invalid IL or missing references) //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_0025: Unknown result type (might be due to invalid IL or missing references) //IL_002b: Unknown result type (might be due to invalid IL or missing references) //IL_0032: Unknown result type (might be due to invalid IL or missing references) //IL_0038: Unknown result type (might be due to invalid IL or missing references) //IL_004a: Unknown result type (might be due to invalid IL or missing references) //IL_004f: Unknown result type (might be due to invalid IL or missing references) //IL_0056: Unknown result type (might be due to invalid IL or missing references) //IL_005b: Unknown result type (might be due to invalid IL or missing references) //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_0066: Unknown result type (might be due to invalid IL or missing references) //IL_006e: Unknown result type (might be due to invalid IL or missing references) //IL_0075: Unknown result type (might be due to invalid IL or missing references) int count = vertices.Count; if (count < 3) { return 0f; } Vector3 val = vertices[0]; int num = count - 1; Vector3 val2 = vertices[num]; float num2 = val2.x * val.z - val.x * val2.z; for (int i = 0; i < num; i++) { Vector3 val3 = vertices[i]; Vector3 val4 = vertices[i + 1]; num2 += val3.x * val4.z - val4.x * val3.z; } return Math.Abs(num2 * 0.5f); } public static bool PolygonInPolygon(List polygonA, List polygonB) { //IL_0016: Unknown result type (might be due to invalid IL or missing references) if (polygonA.Count < 1) { return false; } foreach (Vector3 item in polygonA) { if (!PointInPolygon3D(item, polygonB)) { return false; } } return true; } public static bool PolygonsWithinRange(List polygonA, List polygonB, float maxDistance) { return PolygonsWithinSqRange(polygonA, polygonB, maxDistance * maxDistance); } public static bool PolygonsWithinSqRange(List polygonA, List polygonB, float maxSqDistance) { //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Unknown result type (might be due to invalid IL or missing references) ClosestPolygonApproach(polygonA, polygonB, out var pointA, out var pointB); if (!(Vector3.SqrMagnitude(pointB - pointA) <= maxSqDistance) && !PolygonInPolygon(polygonA, polygonB)) { return PolygonInPolygon(polygonB, polygonA); } return true; } public static bool PointOnPolygonBoundsXZ(Vector3 testPoint, List vertices, float epsilon = float.Epsilon) { //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_0016: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_0028: Unknown result type (might be due to invalid IL or missing references) //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_0038: Unknown result type (might be due to invalid IL or missing references) //IL_0039: Unknown result type (might be due to invalid IL or missing references) int count = vertices.Count; if (count < 2) { return false; } Vector3 lineStart = vertices[count - 1]; foreach (Vector3 vertex in vertices) { if (PointOnLineSegmentXZ(testPoint, lineStart, vertex, epsilon)) { return true; } lineStart = vertex; } return false; } public static bool PointOnLineSegmentXZ(Vector3 testPoint, Vector3 lineStart, Vector3 lineEnd, float epsilon = float.Epsilon) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_0009: Unknown result type (might be due to invalid IL or missing references) //IL_000a: Unknown result type (might be due to invalid IL or missing references) //IL_000f: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_0016: Unknown result type (might be due to invalid IL or missing references) //IL_001d: Unknown result type (might be due to invalid IL or missing references) //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Unknown result type (might be due to invalid IL or missing references) //IL_0044: Unknown result type (might be due to invalid IL or missing references) //IL_004b: Unknown result type (might be due to invalid IL or missing references) //IL_0051: Unknown result type (might be due to invalid IL or missing references) //IL_005a: Unknown result type (might be due to invalid IL or missing references) //IL_0060: Unknown result type (might be due to invalid IL or missing references) //IL_0067: Unknown result type (might be due to invalid IL or missing references) //IL_006d: Unknown result type (might be due to invalid IL or missing references) Vector3 val = lineEnd - lineStart; Vector3 val2 = testPoint - lineStart; float num = val.z * val2.x - val.x * val2.z; if (((num >= 0f) ? num : (0f - num)) >= epsilon) { return false; } float num2 = val.x * val2.x + val.z * val2.z; float num3 = val.x * val.x + val.z * val.z; if (num2 >= 0f - epsilon) { return num2 <= num3 + epsilon; } return false; } private static Quaternion NormalizeRotationKeepingUp(Quaternion rot) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_000e: Unknown result type (might be due to invalid IL or missing references) //IL_0013: Unknown result type (might be due to invalid IL or missing references) //IL_0014: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Unknown result type (might be due to invalid IL or missing references) //IL_0037: Unknown result type (might be due to invalid IL or missing references) //IL_003c: Unknown result type (might be due to invalid IL or missing references) //IL_0041: Unknown result type (might be due to invalid IL or missing references) //IL_0042: Unknown result type (might be due to invalid IL or missing references) //IL_0043: Unknown result type (might be due to invalid IL or missing references) //IL_0044: Unknown result type (might be due to invalid IL or missing references) //IL_0049: Unknown result type (might be due to invalid IL or missing references) //IL_0028: Unknown result type (might be due to invalid IL or missing references) //IL_002d: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Unknown result type (might be due to invalid IL or missing references) //IL_0033: Unknown result type (might be due to invalid IL or missing references) //IL_004a: Unknown result type (might be due to invalid IL or missing references) //IL_004b: Unknown result type (might be due to invalid IL or missing references) //IL_004c: Unknown result type (might be due to invalid IL or missing references) Vector3 val = rot * k_Up; Vector3 normalized = ((Vector3)(ref val)).normalized; Vector3 val2; if (Mathf.Abs(normalized.y) > 0.95f) { val2 = Vector3.Cross(k_Forward, normalized); } else { Vector3 val3 = Vector3.Cross(normalized, k_Up); val2 = Vector3.Cross(normalized, val3); } return Quaternion.LookRotation(val2, normalized); } public static Pose PolygonUVPoseFromPlanePose(Pose pose) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Unknown result type (might be due to invalid IL or missing references) return new Pose(k_Zero, NormalizeRotationKeepingUp(pose.rotation)); } public static Vector2 PolygonVertexToUV(Vector3 vertexPos, Pose planePose, Pose uvPose) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_0017: Unknown result type (might be due to invalid IL or missing references) //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_0019: Unknown result type (might be due to invalid IL or missing references) //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_0025: Unknown result type (might be due to invalid IL or missing references) //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_002f: Unknown result type (might be due to invalid IL or missing references) //IL_0034: Unknown result type (might be due to invalid IL or missing references) //IL_0035: Unknown result type (might be due to invalid IL or missing references) //IL_003a: Unknown result type (might be due to invalid IL or missing references) //IL_003b: Unknown result type (might be due to invalid IL or missing references) //IL_0040: Unknown result type (might be due to invalid IL or missing references) //IL_0041: Unknown result type (might be due to invalid IL or missing references) //IL_0047: Unknown result type (might be due to invalid IL or missing references) //IL_004d: Unknown result type (might be due to invalid IL or missing references) Vector3 val = planePose.position + planePose.rotation * vertexPos; Vector3 val2 = Quaternion.Inverse(uvPose.rotation) * (val - uvPose.position); val2 = k_VerticalCorrection * val2; return new Vector2(val2.x, val2.z); } } public static class GuidUtil { public static Guid Compose(ulong low, ulong high) { return new Guid((uint)(low & 0xFFFFFFFFu), (ushort)((low & 0xFFFF00000000L) >> 32), (ushort)((low & 0xFFFF000000000000uL) >> 48), (byte)(high & 0xFF), (byte)((high & 0xFF00) >> 8), (byte)((high & 0xFF0000) >> 16), (byte)((high & 0xFF000000u) >> 24), (byte)((high & 0xFF00000000L) >> 32), (byte)((high & 0xFF0000000000L) >> 40), (byte)((high & 0xFF000000000000L) >> 48), (byte)((high & 0xFF00000000000000uL) >> 56)); } } internal static class HashCodeUtil { public static int Combine(int hash1, int hash2) { return hash1 * 486187739 + hash2; } public static int ReferenceHash(object obj) { return obj?.GetHashCode() ?? 0; } public static int Combine(int hash1, int hash2, int hash3) { return Combine(Combine(hash1, hash2), hash3); } public static int Combine(int hash1, int hash2, int hash3, int hash4) { return Combine(Combine(hash1, hash2, hash3), hash4); } public static int Combine(int hash1, int hash2, int hash3, int hash4, int hash5) { return Combine(Combine(hash1, hash2, hash3, hash4), hash5); } public static int Combine(int hash1, int hash2, int hash3, int hash4, int hash5, int hash6) { return Combine(Combine(hash1, hash2, hash3, hash4, hash5), hash6); } public static int Combine(int hash1, int hash2, int hash3, int hash4, int hash5, int hash6, int hash7) { return Combine(Combine(hash1, hash2, hash3, hash4, hash5, hash6), hash7); } public static int Combine(int hash1, int hash2, int hash3, int hash4, int hash5, int hash6, int hash7, int hash8) { return Combine(Combine(hash1, hash2, hash3, hash4, hash5, hash6, hash7), hash8); } } public static class MaterialUtils { public static Material GetMaterialClone(Renderer renderer) { return renderer.material = Object.Instantiate(renderer.sharedMaterial); } public static Material GetMaterialClone(Graphic graphic) { return graphic.material = Object.Instantiate(graphic.material); } public static Material[] CloneMaterials(Renderer renderer) { Material[] sharedMaterials = renderer.sharedMaterials; for (int i = 0; i < sharedMaterials.Length; i++) { sharedMaterials[i] = Object.Instantiate(sharedMaterials[i]); } renderer.sharedMaterials = sharedMaterials; return sharedMaterials; } public static Color HexToColor(string hex) { //IL_007f: Unknown result type (might be due to invalid IL or missing references) //IL_0084: Unknown result type (might be due to invalid IL or missing references) hex = hex.Replace("0x", "").Replace("#", ""); byte num = byte.Parse(hex.Substring(0, 2), NumberStyles.HexNumber); byte b = byte.Parse(hex.Substring(2, 2), NumberStyles.HexNumber); byte b2 = byte.Parse(hex.Substring(4, 2), NumberStyles.HexNumber); byte b3 = ((hex.Length == 8) ? byte.Parse(hex.Substring(4, 2), NumberStyles.HexNumber) : byte.MaxValue); return Color32.op_Implicit(new Color32(num, b, b2, b3)); } public static Color HueShift(Color color, float shift) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_001d: Unknown result type (might be due to invalid IL or missing references) //IL_0034: Unknown result type (might be due to invalid IL or missing references) //IL_003a: Unknown result type (might be due to invalid IL or missing references) //IL_0040: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Unknown result type (might be due to invalid IL or missing references) Vector3 val = default(Vector3); Color.RGBToHSV(color, ref val.x, ref val.y, ref val.z); val.x = Mathf.Repeat(val.x + shift, 1f); return Color.HSVToRGB(val.x, val.y, val.z); } public static void AddMaterial(this Renderer renderer, Material material) { Material[] sharedMaterials = renderer.sharedMaterials; int num = sharedMaterials.Length; Material[] array = (Material[])(object)new Material[num + 1]; Array.Copy(sharedMaterials, array, num); array[num] = material; renderer.sharedMaterials = array; } } public static class MathUtility { internal static readonly float EpsilonScaled = Mathf.Epsilon * 8f; [MethodImpl(MethodImplOptions.AggressiveInlining)] public static bool Approximately(float a, float b) { float num = b - a; return ((num >= 0f) ? num : (0f - num)) < EpsilonScaled; } [MethodImpl(MethodImplOptions.AggressiveInlining)] public static bool ApproximatelyZero(float a) { return ((a >= 0f) ? a : (0f - a)) < EpsilonScaled; } public static double Clamp(double input, double min, double max) { if (input > max) { return max; } if (!(input < min)) { return input; } return min; } public static double ShortestAngleDistance(double start, double end, double halfMax, double max) { double value = end - start; int num = Math.Sign(value); value = Math.Abs(value) % max; if (value > halfMax) { value = 0.0 - (max - value); } return value * (double)num; } public static float ShortestAngleDistance(float start, float end, float halfMax, float max) { float num = end - start; float num2 = Mathf.Sign(num); num = Math.Abs(num) % max; if (num > halfMax) { num = 0f - (max - num); } return num * num2; } public static bool IsUndefined(this float value) { if (!float.IsInfinity(value)) { return float.IsNaN(value); } return true; } public static bool IsAxisAligned(this Vector3 v) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_0014: Unknown result type (might be due to invalid IL or missing references) //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_0028: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Unknown result type (might be due to invalid IL or missing references) if (ApproximatelyZero(v.x * v.y) && ApproximatelyZero(v.y * v.z)) { return ApproximatelyZero(v.z * v.x); } return false; } public static bool IsPositivePowerOfTwo(int value) { if (value > 0) { return (value & (value - 1)) == 0; } return false; } public static int FirstActiveFlagIndex(int value) { if (value == 0) { return 0; } for (int i = 0; i < 32; i++) { if ((value & (1 << i)) != 0) { return i; } } return 0; } } public static class NativeArrayUtils { public static void EnsureCapacity(ref NativeArray array, int capacity, Allocator allocator, NativeArrayOptions options = (NativeArrayOptions)1) where T : struct { //IL_0019: Unknown result type (might be due to invalid IL or missing references) //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Unknown result type (might be due to invalid IL or missing references) if (array.Length < capacity) { if (array.IsCreated) { array.Dispose(); } array = new NativeArray(capacity, allocator, options); } } public static void EnsureExactSize(ref NativeArray array, int size, Allocator allocator, NativeArrayOptions options = (NativeArrayOptions)1) where T : struct { //IL_0028: Unknown result type (might be due to invalid IL or missing references) //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_002f: Unknown result type (might be due to invalid IL or missing references) if (size < 0) { Debug.LogError((object)"EnsureExactSize must be called with a non-negative size."); } else if (array.Length != size) { if (array.IsCreated) { array.Dispose(); } array = new NativeArray(size, allocator, options); } } } public class ObjectPool where T : class, new() { protected readonly Queue PooledQueue = new Queue(); public virtual T Get() { if (PooledQueue.Count != 0) { return PooledQueue.Dequeue(); } return new T(); } public void Recycle(T instance) { ClearInstance(instance); PooledQueue.Enqueue(instance); } protected virtual void ClearInstance(T instance) { } } [AddComponentMenu("")] [ExecuteInEditMode] [HelpURL("https://docs.unity3d.com/Packages/com.unity.xr.core-utils@2.0/api/Unity.XR.CoreUtils.OnDestroyNotifier.html")] public class OnDestroyNotifier : MonoBehaviour { public Action Destroyed { private get; set; } private void OnDestroy() { Destroyed?.Invoke(this); } } public static class ReflectionUtils { private static Assembly[] s_Assemblies; private static List s_TypesPerAssembly; private static List> s_AssemblyTypeMaps; private static Assembly[] GetCachedAssemblies() { return s_Assemblies ?? (s_Assemblies = AppDomain.CurrentDomain.GetAssemblies()); } private static List GetCachedTypesPerAssembly() { if (s_TypesPerAssembly == null) { Assembly[] assemblies = AppDomain.CurrentDomain.GetAssemblies(); s_TypesPerAssembly = new List(assemblies.Length); Assembly[] array = assemblies; foreach (Assembly assembly in array) { try { s_TypesPerAssembly.Add(assembly.GetTypes()); } catch (ReflectionTypeLoadException) { } } } return s_TypesPerAssembly; } private static List> GetCachedAssemblyTypeMaps() { if (s_AssemblyTypeMaps == null) { List cachedTypesPerAssembly = GetCachedTypesPerAssembly(); s_AssemblyTypeMaps = new List>(cachedTypesPerAssembly.Count); foreach (Type[] item in cachedTypesPerAssembly) { try { Dictionary dictionary = new Dictionary(); Type[] array = item; foreach (Type type in array) { dictionary[type.FullName] = type; } s_AssemblyTypeMaps.Add(dictionary); } catch (ReflectionTypeLoadException) { } } } return s_AssemblyTypeMaps; } public static void PreWarmTypeCache() { GetCachedAssemblyTypeMaps(); } public static void ForEachAssembly(Action callback) { Assembly[] cachedAssemblies = GetCachedAssemblies(); foreach (Assembly obj in cachedAssemblies) { try { callback(obj); } catch (ReflectionTypeLoadException) { } } } public static void ForEachType(Action callback) { foreach (Type[] item in GetCachedTypesPerAssembly()) { foreach (Type obj in item) { callback(obj); } } } public static Type FindType(Func predicate) { foreach (Type[] item in GetCachedTypesPerAssembly()) { foreach (Type type in item) { if (predicate(type)) { return type; } } } return null; } public static Type FindTypeByFullName(string fullName) { foreach (Dictionary cachedAssemblyTypeMap in GetCachedAssemblyTypeMaps()) { if (cachedAssemblyTypeMap.TryGetValue(fullName, out var value)) { return value; } } return null; } public static void FindTypesBatch(List> predicates, List resultList) { List cachedTypesPerAssembly = GetCachedTypesPerAssembly(); for (int i = 0; i < predicates.Count; i++) { Func func = predicates[i]; foreach (Type[] item in cachedTypesPerAssembly) { foreach (Type type in item) { if (func(type)) { resultList[i] = type; } } } } } public static void FindTypesByFullNameBatch(List typeNames, List resultList) { List> cachedAssemblyTypeMaps = GetCachedAssemblyTypeMaps(); foreach (string typeName in typeNames) { bool flag = false; foreach (Dictionary item in cachedAssemblyTypeMaps) { if (item.TryGetValue(typeName, out var value)) { resultList.Add(value); flag = true; break; } } if (!flag) { resultList.Add(null); } } } public static Type FindTypeInAssemblyByFullName(string assemblyName, string typeName) { Assembly[] cachedAssemblies = GetCachedAssemblies(); List> cachedAssemblyTypeMaps = GetCachedAssemblyTypeMaps(); for (int i = 0; i < cachedAssemblies.Length; i++) { if (!(cachedAssemblies[i].GetName().Name != assemblyName)) { if (!cachedAssemblyTypeMaps[i].TryGetValue(typeName, out var value)) { return null; } return value; } } return null; } public static string NicifyVariableName(string name) { if (name.StartsWith("m_")) { name = name.Substring(2, name.Length - 2); } else if (name.StartsWith("_")) { name = name.Substring(1, name.Length - 1); } if (name[0] == 'k' && name[1] >= 'A' && name[1] <= 'Z') { name = name.Substring(1, name.Length - 1); } name = Regex.Replace(name, "(\\B[A-Z]+?(?=[A-Z][^A-Z])|\\B[A-Z]+?(?=[^A-Z]))", " $1"); name = CultureInfo.CurrentCulture.TextInfo.ToTitleCase(name); return name; } } public abstract class ScriptableSettings : ScriptableSettingsBase where T : ScriptableObject { private const string k_CustomSavePathFormat = "{0}Resources/{1}.asset"; private const string k_SavePathFormat = "{0}Resources/ScriptableSettings/{1}.asset"; private const string k_LoadPathFormat = "ScriptableSettings/{0}"; public static T Instance { get { if ((Object)(object)ScriptableSettingsBase.BaseInstance == (Object)null) { CreateAndLoad(); } return ScriptableSettingsBase.BaseInstance; } } internal static T CreateAndLoad() { Object obj = Resources.Load(ScriptableSettingsBase.HasCustomPath ? ScriptableSettingsBase.GetFilePath() : $"ScriptableSettings/{ScriptableSettingsBase.GetFilePath()}"); ScriptableSettingsBase.BaseInstance = (T)(object)((obj is T) ? obj : null); if ((Object)(object)ScriptableSettingsBase.BaseInstance == (Object)null) { ScriptableSettingsBase.BaseInstance = ScriptableObject.CreateInstance(); ScriptableSettingsBase.Save(ScriptableSettingsBase.HasCustomPath ? "{0}Resources/{1}.asset" : "{0}Resources/ScriptableSettings/{1}.asset"); } return ScriptableSettingsBase.BaseInstance; } } public abstract class ScriptableSettingsBase : ScriptableObject { private const string k_AbsolutePathMessage = "Path cannot be absolute"; protected const string PathExceptionMessage = "Exception caught trying to create path."; internal const string NullPathMessage = "Path cannot be null"; internal const string PathWithPeriodMessage = "Path cannot contain the character '.' before or after a directory separator"; internal const string PathWithInvalidCharacterMessage = "Paths on Windows cannot contain the following characters: ':', '*', '?', '\"', '<', '>', '|'"; private static readonly char[] k_PathTrimChars = new char[3] { Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar, ' ' }; private static readonly char[] k_InvalidCharacters = new char[8] { ':', '*', '?', '"', '<', '>', '|', '\\' }; private static readonly string[] k_InvalidStrings = new string[4] { "\\.", "/.", ".\\", "./" }; public static ScriptableSettingsBase GetInstanceByType(Type settingsType) { return (ScriptableSettingsBase)settingsType.GetProperty("Instance", BindingFlags.Static | BindingFlags.Public | BindingFlags.FlattenHierarchy | BindingFlags.GetProperty).GetValue(null, null); } private void Awake() { } private void OnEnable() { OnLoaded(); } protected virtual void OnLoaded() { } internal static bool ValidatePath(string path, out string cleanedPath) { cleanedPath = path; if (cleanedPath == null) { Debug.LogWarning((object)"Path cannot be null"); return false; } char[] array = k_InvalidCharacters; foreach (char c in array) { if (cleanedPath.Contains(c.ToString())) { Debug.LogWarning((object)"Paths on Windows cannot contain the following characters: ':', '*', '?', '\"', '<', '>', '|'"); return false; } } string[] array2 = k_InvalidStrings; foreach (string value in array2) { if (cleanedPath.Contains(value)) { Debug.LogWarning((object)"Path cannot contain the character '.' before or after a directory separator"); return false; } } try { if (Path.IsPathRooted(cleanedPath)) { Debug.LogWarning((object)"Path cannot be absolute"); return false; } } catch (Exception arg) { Debug.LogWarning((object)string.Format("{0}\n{1}", "Exception caught trying to create path.", arg)); return false; } cleanedPath = cleanedPath.Trim(k_PathTrimChars); int num = 0; for (int num2 = cleanedPath.Length - 1; num2 >= 0; num2--) { if (cleanedPath[num2] == '\\' || cleanedPath[num2] == '/') { num++; } else if (num > 0) { cleanedPath = cleanedPath.Remove(num2 + 1, num - 1); num = 0; } } if (cleanedPath != "") { cleanedPath += "/"; } return true; } } public abstract class ScriptableSettingsBase : ScriptableSettingsBase where T : ScriptableObject { protected static readonly bool HasCustomPath = typeof(T).IsDefined(typeof(ScriptableSettingsPathAttribute), inherit: true); protected static T BaseInstance; protected ScriptableSettingsBase() { if ((Object)(object)BaseInstance != (Object)null) { XRLoggingUtils.LogWarning($"ScriptableSingleton {typeof(T)} already exists. This can happen if " + "there are two copies of the asset or if you query the singleton in a constructor.", (Object)(object)BaseInstance); } } protected static void Save(string savePathFormat) { } protected static string GetFilePath() { return typeof(T).Name; } } [Serializable] public struct SerializableGuid : IEquatable { private static readonly SerializableGuid k_Empty = new SerializableGuid(0uL, 0uL); [SerializeField] [HideInInspector] private ulong m_GuidLow; [SerializeField] [HideInInspector] private ulong m_GuidHigh; public static SerializableGuid Empty => k_Empty; public Guid Guid => GuidUtil.Compose(m_GuidLow, m_GuidHigh); public SerializableGuid(ulong guidLow, ulong guidHigh) { m_GuidLow = guidLow; m_GuidHigh = guidHigh; } public override int GetHashCode() { return m_GuidLow.GetHashCode() * 486187739 + m_GuidHigh.GetHashCode(); } public override bool Equals(object obj) { if (!(obj is SerializableGuid other)) { return false; } return Equals(other); } public override string ToString() { return Guid.ToString(); } public string ToString(string format) { return Guid.ToString(format); } public string ToString(string format, IFormatProvider provider) { return Guid.ToString(format, provider); } public bool Equals(SerializableGuid other) { if (m_GuidLow == other.m_GuidLow) { return m_GuidHigh == other.m_GuidHigh; } return false; } public static bool operator ==(SerializableGuid lhs, SerializableGuid rhs) { return lhs.Equals(rhs); } public static bool operator !=(SerializableGuid lhs, SerializableGuid rhs) { return !lhs.Equals(rhs); } } public static class SerializableGuidUtil { public static SerializableGuid Create(Guid guid) { guid.Decompose(out var low, out var high); return new SerializableGuid(low, high); } } public static class TextureUtils { public static void RenderTextureToTexture2D(RenderTexture renderTexture, Texture2D texture) { //IL_001f: Unknown result type (might be due to invalid IL or missing references) RenderTexture.active = renderTexture; texture.ReadPixels(new Rect(0f, 0f, (float)((Texture)texture).width, (float)((Texture)texture).height), 0, 0); texture.Apply(); } } public class UndoBlock : IDisposable { private int m_UndoGroup; private bool m_DisposedValue; public UndoBlock(string undoLabel, bool testMode = false) { m_UndoGroup = -1; } public void RegisterCreatedObject(Object objectToUndo) { } public void RecordObject(Object objectToUndo) { } public void SetTransformParent(Transform transform, Transform newParent) { transform.parent = newParent; } public T AddComponent(GameObject gameObject) where T : Component { return gameObject.AddComponent(); } protected virtual void Dispose(bool disposing) { if (!m_DisposedValue) { if (disposing) { _ = m_UndoGroup; _ = -1; } m_DisposedValue = true; } } public void Dispose() { Dispose(disposing: true); } } public static class UnityObjectUtils { public static void Destroy(Object obj, bool withUndo = false) { if (Application.isPlaying) { Object.Destroy(obj); } } public static T ConvertUnityObjectToType(Object objectIn) where T : class { T val = objectIn as T; if (val == null && objectIn != (Object)null) { GameObject val2 = (GameObject)(object)((objectIn is GameObject) ? objectIn : null); if ((Object)(object)val2 != (Object)null) { return val2.GetComponent(); } Component val3 = (Component)(object)((objectIn is Component) ? objectIn : null); if ((Object)(object)val3 != (Object)null) { val = val3.GetComponent(); } } return val; } public static void RemoveDestroyedObjects(List list) where T : Object { List collection = CollectionPool, T>.GetCollection(); foreach (T item in list) { if ((Object)(object)item == (Object)null) { collection.Add(item); } } foreach (T item2 in collection) { list.Remove(item2); } CollectionPool, T>.RecycleCollection(collection); } public static void RemoveDestroyedKeys(Dictionary dictionary) where TKey : Object { List collection = CollectionPool, TKey>.GetCollection(); foreach (KeyValuePair item in dictionary) { TKey key = item.Key; if ((Object)(object)key == (Object)null) { collection.Add(key); } } foreach (TKey item2 in collection) { dictionary.Remove(item2); } CollectionPool, TKey>.RecycleCollection(collection); } } public static class XRLoggingUtils { private static readonly bool k_DontLogAnything; static XRLoggingUtils() { k_DontLogAnything = Environment.GetCommandLineArgs().Contains("-runTests"); } public static void Log(string message, Object context = null) { if (!k_DontLogAnything) { Debug.Log((object)message, context); } } public static void LogWarning(string message, Object context = null) { if (!k_DontLogAnything) { Debug.LogWarning((object)message, context); } } public static void LogError(string message, Object context = null) { if (!k_DontLogAnything) { Debug.LogError((object)message, context); } } public static void LogException(Exception exception, Object context = null) { if (!k_DontLogAnything) { Debug.LogException(exception, context); } } } [AddComponentMenu("XR/XR Origin")] [DisallowMultipleComponent] [HelpURL("https://docs.unity3d.com/Packages/com.unity.xr.core-utils@2.0/api/Unity.XR.CoreUtils.XROrigin.html")] public class XROrigin : MonoBehaviour { public enum TrackingOriginMode { NotSpecified, Device, Floor, Unbounded } [SerializeField] [Tooltip("The Camera to associate with the XR device.")] private Camera m_Camera; private const float k_DefaultCameraYOffset = 1.1176f; [SerializeField] [FormerlySerializedAs("m_RigBaseGameObject")] private GameObject m_OriginBaseGameObject; [SerializeField] private GameObject m_CameraFloorOffsetObject; [SerializeField] private TrackingOriginMode m_RequestedTrackingOriginMode; [SerializeField] private float m_CameraYOffset = 1.1176f; private static readonly List s_InputSubsystems = new List(); private bool m_CameraInitialized; private bool m_CameraInitializing; public Camera Camera { get { return m_Camera; } set { m_Camera = value; } } public Transform TrackablesParent { get; private set; } public GameObject Origin { get { return m_OriginBaseGameObject; } set { m_OriginBaseGameObject = value; } } public GameObject CameraFloorOffsetObject { get { return m_CameraFloorOffsetObject; } set { m_CameraFloorOffsetObject = value; MoveOffsetHeight(); } } public TrackingOriginMode RequestedTrackingOriginMode { get { return m_RequestedTrackingOriginMode; } set { m_RequestedTrackingOriginMode = value; TryInitializeCamera(); } } public float CameraYOffset { get { return m_CameraYOffset; } set { m_CameraYOffset = value; MoveOffsetHeight(); } } public TrackingOriginModeFlags CurrentTrackingOriginMode { get; private set; } public Vector3 OriginInCameraSpacePos => ((Component)m_Camera).transform.InverseTransformPoint(m_OriginBaseGameObject.transform.position); public Vector3 CameraInOriginSpacePos => m_OriginBaseGameObject.transform.InverseTransformPoint(((Component)m_Camera).transform.position); public float CameraInOriginSpaceHeight => CameraInOriginSpacePos.y; public event Action TrackablesParentTransformChanged; private void MoveOffsetHeight() { //IL_0009: Unknown result type (might be due to invalid IL or missing references) //IL_000e: Unknown result type (might be due to invalid IL or missing references) //IL_000f: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Invalid comparison between Unknown and I4 //IL_0013: Unknown result type (might be due to invalid IL or missing references) //IL_0015: Invalid comparison between Unknown and I4 //IL_0017: Unknown result type (might be due to invalid IL or missing references) //IL_0019: Invalid comparison between Unknown and I4 if (!Application.isPlaying) { return; } TrackingOriginModeFlags currentTrackingOriginMode = CurrentTrackingOriginMode; if ((int)currentTrackingOriginMode != 1) { if ((int)currentTrackingOriginMode == 2) { MoveOffsetHeight(0f); return; } if ((int)currentTrackingOriginMode != 8) { return; } } MoveOffsetHeight(m_CameraYOffset); } private void MoveOffsetHeight(float y) { //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_0028: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)m_CameraFloorOffsetObject != (Object)null) { Transform transform = m_CameraFloorOffsetObject.transform; Vector3 localPosition = transform.localPosition; localPosition.y = y; transform.localPosition = localPosition; } } private void TryInitializeCamera() { if (Application.isPlaying) { m_CameraInitialized = SetupCamera(); if (!m_CameraInitialized & !m_CameraInitializing) { ((MonoBehaviour)this).StartCoroutine(RepeatInitializeCamera()); } } } private bool SetupCamera() { bool result = true; SubsystemManager.GetSubsystems(s_InputSubsystems); if (s_InputSubsystems.Count > 0) { foreach (XRInputSubsystem s_InputSubsystem in s_InputSubsystems) { if (SetupCamera(s_InputSubsystem)) { s_InputSubsystem.trackingOriginUpdated -= OnInputSubsystemTrackingOriginUpdated; s_InputSubsystem.trackingOriginUpdated += OnInputSubsystemTrackingOriginUpdated; } else { result = false; } } } return result; } private bool SetupCamera(XRInputSubsystem inputSubsystem) { //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Unknown result type (might be due to invalid IL or missing references) //IL_0033: Unknown result type (might be due to invalid IL or missing references) //IL_0034: Unknown result type (might be due to invalid IL or missing references) //IL_00ca: Unknown result type (might be due to invalid IL or missing references) //IL_00d0: Invalid comparison between Unknown and I4 //IL_003f: Unknown result type (might be due to invalid IL or missing references) //IL_0044: Unknown result type (might be due to invalid IL or missing references) //IL_0045: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Unknown result type (might be due to invalid IL or missing references) //IL_0047: Unknown result type (might be due to invalid IL or missing references) //IL_0096: Unknown result type (might be due to invalid IL or missing references) //IL_0053: Unknown result type (might be due to invalid IL or missing references) //IL_0062: Unknown result type (might be due to invalid IL or missing references) //IL_0072: Unknown result type (might be due to invalid IL or missing references) //IL_0079: Unknown result type (might be due to invalid IL or missing references) //IL_00dc: Unknown result type (might be due to invalid IL or missing references) //IL_00e2: Invalid comparison between Unknown and I4 if (inputSubsystem == null) { return false; } bool flag = true; switch (m_RequestedTrackingOriginMode) { case TrackingOriginMode.NotSpecified: CurrentTrackingOriginMode = inputSubsystem.GetTrackingOriginMode(); break; case TrackingOriginMode.Device: case TrackingOriginMode.Floor: case TrackingOriginMode.Unbounded: { TrackingOriginModeFlags supportedTrackingOriginModes = inputSubsystem.GetSupportedTrackingOriginModes(); if ((int)supportedTrackingOriginModes == 0) { return false; } TrackingOriginModeFlags val = ConvertTrackingOriginModeToFlag(m_RequestedTrackingOriginMode); if ((supportedTrackingOriginModes & val) == 0) { m_RequestedTrackingOriginMode = TrackingOriginMode.NotSpecified; CurrentTrackingOriginMode = inputSubsystem.GetTrackingOriginMode(); Debug.LogWarning((object)($"Attempting to set the tracking origin mode to {val}, but that is not supported by the SDK." + $" Supported types: {supportedTrackingOriginModes:F}. Using the current mode of {CurrentTrackingOriginMode} instead."), (Object)(object)this); } else { flag = inputSubsystem.TrySetTrackingOriginMode(val); } break; } default: Debug.LogError((object)string.Format("Unhandled {0}={1}", "TrackingOriginMode", m_RequestedTrackingOriginMode)); return false; } if (flag) { MoveOffsetHeight(); } if ((int)CurrentTrackingOriginMode == 1 || m_RequestedTrackingOriginMode == TrackingOriginMode.Device || (int)CurrentTrackingOriginMode == 8 || m_RequestedTrackingOriginMode == TrackingOriginMode.Unbounded) { flag = inputSubsystem.TryRecenter(); } return flag; } private void OnInputSubsystemTrackingOriginUpdated(XRInputSubsystem inputSubsystem) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) CurrentTrackingOriginMode = inputSubsystem.GetTrackingOriginMode(); MoveOffsetHeight(); } private IEnumerator RepeatInitializeCamera() { m_CameraInitializing = true; while (!m_CameraInitialized) { yield return null; if (!m_CameraInitialized) { m_CameraInitialized = SetupCamera(); } } m_CameraInitializing = false; } public bool RotateAroundCameraUsingOriginUp(float angleDegrees) { //IL_000c: Unknown result type (might be due to invalid IL or missing references) return RotateAroundCameraPosition(m_OriginBaseGameObject.transform.up, angleDegrees); } public bool RotateAroundCameraPosition(Vector3 vector, float angleDegrees) { //IL_0034: Unknown result type (might be due to invalid IL or missing references) //IL_0039: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)m_Camera == (Object)null || (Object)(object)m_OriginBaseGameObject == (Object)null) { return false; } m_OriginBaseGameObject.transform.RotateAround(((Component)m_Camera).transform.position, vector, angleDegrees); return true; } public bool MatchOriginUp(Vector3 destinationUp) { //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Unknown result type (might be due to invalid IL or missing references) //IL_0035: Unknown result type (might be due to invalid IL or missing references) //IL_003a: Unknown result type (might be due to invalid IL or missing references) //IL_003b: Unknown result type (might be due to invalid IL or missing references) //IL_0040: Unknown result type (might be due to invalid IL or missing references) //IL_004c: Unknown result type (might be due to invalid IL or missing references) //IL_0053: Unknown result type (might be due to invalid IL or missing references) //IL_0058: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)m_OriginBaseGameObject == (Object)null) { return false; } if (m_OriginBaseGameObject.transform.up == destinationUp) { return true; } Quaternion val = Quaternion.FromToRotation(m_OriginBaseGameObject.transform.up, destinationUp); m_OriginBaseGameObject.transform.rotation = val * ((Component)this).transform.rotation; return true; } public bool MatchOriginUpCameraForward(Vector3 destinationUp, Vector3 destinationForward) { //IL_000f: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_0028: Unknown result type (might be due to invalid IL or missing references) //IL_002d: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Unknown result type (might be due to invalid IL or missing references) //IL_0035: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)m_Camera != (Object)null && MatchOriginUp(destinationUp)) { Vector3 val = Vector3.ProjectOnPlane(((Component)m_Camera).transform.forward, destinationUp); float angleDegrees = Vector3.SignedAngle(((Vector3)(ref val)).normalized, destinationForward, destinationUp); RotateAroundCameraPosition(destinationUp, angleDegrees); return true; } return false; } public bool MatchOriginUpOriginForward(Vector3 destinationUp, Vector3 destinationForward) { //IL_000f: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_0028: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)m_OriginBaseGameObject != (Object)null && MatchOriginUp(destinationUp)) { float angleDegrees = Vector3.SignedAngle(m_OriginBaseGameObject.transform.forward, destinationForward, destinationUp); RotateAroundCameraPosition(destinationUp, angleDegrees); return true; } return false; } public bool MoveCameraToWorldLocation(Vector3 desiredWorldLocation) { //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Unknown result type (might be due to invalid IL or missing references) //IL_0025: Unknown result type (might be due to invalid IL or missing references) //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Unknown result type (might be due to invalid IL or missing references) //IL_0033: Unknown result type (might be due to invalid IL or missing references) //IL_003f: Unknown result type (might be due to invalid IL or missing references) //IL_0040: Unknown result type (might be due to invalid IL or missing references) //IL_0041: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)m_Camera == (Object)null) { return false; } Matrix4x4 val = Matrix4x4.Rotate(((Component)m_Camera).transform.rotation); Vector3 val2 = ((Matrix4x4)(ref val)).MultiplyPoint3x4(OriginInCameraSpacePos); m_OriginBaseGameObject.transform.position = val2 + desiredWorldLocation; return true; } protected void Awake() { //IL_005c: Unknown result type (might be due to invalid IL or missing references) //IL_0083: Unknown result type (might be due to invalid IL or missing references) //IL_0093: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)m_CameraFloorOffsetObject == (Object)null) { Debug.LogWarning((object)"No Camera Floor Offset GameObject specified for XR Origin, using attached GameObject.", (Object)(object)this); m_CameraFloorOffsetObject = ((Component)this).gameObject; } if ((Object)(object)m_Camera == (Object)null) { Camera main = Camera.main; if ((Object)(object)main != (Object)null) { m_Camera = main; } else { Debug.LogWarning((object)"No Main Camera is found for XR Origin, please assign the Camera field manually.", (Object)(object)this); } } TrackablesParent = new GameObject("Trackables").transform; TrackablesParent.SetParent(((Component)this).transform, false); TrackablesParent.SetLocalPose(Pose.identity); TrackablesParent.localScale = Vector3.one; if (Object.op_Implicit((Object)(object)m_Camera)) { TrackedPoseDriver component = ((Component)m_Camera).GetComponent(); TrackedPoseDriver component2 = ((Component)m_Camera).GetComponent(); if ((Object)(object)component == (Object)null && (Object)(object)component2 == (Object)null) { Debug.LogWarning((object)("Camera \"" + ((Object)m_Camera).name + "\" does not use a Tracked Pose Driver (Input System), so its transform will not be updated by an XR device. In order for this to be updated, please add a Tracked Pose Driver (Input System) with bindings for position and rotation of the center eye."), (Object)(object)this); } } } private Pose GetCameraOriginPose() { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_001f: Unknown result type (might be due to invalid IL or missing references) Pose identity = Pose.identity; Transform parent = ((Component)m_Camera).transform.parent; if (!Object.op_Implicit((Object)(object)parent)) { return identity; } return parent.TransformPose(identity); } protected void OnEnable() { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Expected O, but got Unknown Application.onBeforeRender += new UnityAction(OnBeforeRender); } protected void OnDisable() { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Expected O, but got Unknown Application.onBeforeRender -= new UnityAction(OnBeforeRender); } private void OnBeforeRender() { //IL_000e: Unknown result type (might be due to invalid IL or missing references) //IL_0013: Unknown result type (might be due to invalid IL or missing references) //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_002b: Unknown result type (might be due to invalid IL or missing references) //IL_002c: Unknown result type (might be due to invalid IL or missing references) if (Object.op_Implicit((Object)(object)m_Camera)) { Pose cameraOriginPose = GetCameraOriginPose(); TrackablesParent.position = cameraOriginPose.position; TrackablesParent.rotation = cameraOriginPose.rotation; } if (TrackablesParent.hasChanged) { this.TrackablesParentTransformChanged?.Invoke(new ARTrackablesParentTransformChangedEventArgs(this, TrackablesParent)); TrackablesParent.hasChanged = false; } } protected void OnValidate() { if ((Object)(object)m_OriginBaseGameObject == (Object)null) { m_OriginBaseGameObject = ((Component)this).gameObject; } if (Application.isPlaying && ((Behaviour)this).isActiveAndEnabled) { if (IsModeStale()) { TryInitializeCamera(); } else { MoveOffsetHeight(); } } bool IsModeStale() { //IL_0028: Unknown result type (might be due to invalid IL or missing references) //IL_002d: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Unknown result type (might be due to invalid IL or missing references) //IL_0039: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Unknown result type (might be due to invalid IL or missing references) if (s_InputSubsystems.Count > 0) { foreach (XRInputSubsystem s_InputSubsystem in s_InputSubsystems) { TrackingOriginModeFlags val = ConvertTrackingOriginModeToFlag(m_RequestedTrackingOriginMode); if ((int)val == 0) { return false; } if (s_InputSubsystem != null && s_InputSubsystem.GetTrackingOriginMode() != val) { return true; } } } return false; } } private static TrackingOriginModeFlags ConvertTrackingOriginModeToFlag(TrackingOriginMode mode) { return (TrackingOriginModeFlags)(mode switch { TrackingOriginMode.NotSpecified => 0, TrackingOriginMode.Device => 1, TrackingOriginMode.Floor => 2, TrackingOriginMode.Unbounded => 8, _ => 0, }); } protected void Start() { TryInitializeCamera(); } protected void OnDestroy() { foreach (XRInputSubsystem s_InputSubsystem in s_InputSubsystems) { if (s_InputSubsystem != null) { s_InputSubsystem.trackingOriginUpdated -= OnInputSubsystemTrackingOriginUpdated; } } } } } namespace Unity.XR.CoreUtils.Datums { [CreateAssetMenu(fileName = "AnimationCurveDatum", menuName = "XR/Value Datums/AnimationCurve Datum", order = 0)] public class AnimationCurveDatum : Datum { } [Serializable] public class AnimationCurveDatumProperty : DatumProperty { public AnimationCurveDatumProperty(AnimationCurve value) : base(value) { } public AnimationCurveDatumProperty(AnimationCurveDatum datum) : base(datum) { } } public abstract class Datum : ScriptableObject { [Multiline] [SerializeField] private string m_Comments; [SerializeField] private bool m_ReadOnly = true; [SerializeField] private T m_Value; private readonly BindableVariableAlloc m_BindableVariableReference = new BindableVariableAlloc(); public string Comments { get { return m_Comments; } set { m_Comments = value; } } public bool ReadOnly { get { return m_ReadOnly; } set { m_ReadOnly = value; } } public IReadOnlyBindableVariable BindableVariableReference => m_BindableVariableReference; public T Value { get { return m_Value; } set { if (m_ReadOnly) { Debug.LogWarning((object)$"{this} ValueDatum is set to read-only, variable can't be changed!", (Object)(object)this); return; } m_Value = value; m_BindableVariableReference.Value = value; } } protected void OnEnable() { m_BindableVariableReference.Value = Value; } } [Serializable] public abstract class DatumProperty where TDatum : Datum { [SerializeField] private bool m_UseConstant; [SerializeField] private TValue m_ConstantValue; [SerializeField] private TDatum m_Variable; public TValue Value { get { if (!m_UseConstant) { if (!((Object)(object)Datum != (Object)null)) { return default(TValue); } return Datum.Value; } return m_ConstantValue; } set { if (m_UseConstant) { m_ConstantValue = value; } else { Datum.Value = value; } } } protected Datum Datum => m_Variable; protected TValue ConstantValue => m_ConstantValue; protected DatumProperty() { m_UseConstant = false; } protected DatumProperty(TValue value) { m_UseConstant = true; m_ConstantValue = value; } protected DatumProperty(TDatum datum) { m_UseConstant = false; m_Variable = datum; } public static implicit operator TValue(DatumProperty datumProperty) { return datumProperty.Value; } } [CreateAssetMenu(fileName = "FloatDatum", menuName = "XR/Value Datums/Float Datum", order = 0)] public class FloatDatum : Datum { } [Serializable] public class FloatDatumProperty : DatumProperty { public FloatDatumProperty(float value) : base(value) { } public FloatDatumProperty(FloatDatum datum) : base(datum) { } } [CreateAssetMenu(fileName = "IntDatum", menuName = "XR/Value Datums/Int Datum", order = 0)] public class IntDatum : Datum { public void SetValueRounded(float value) { base.Value = Mathf.RoundToInt(value); } } [Serializable] public class IntDatumProperty : DatumProperty { public IntDatumProperty(int value) : base(value) { } public IntDatumProperty(IntDatum datum) : base(datum) { } } [CreateAssetMenu(fileName = "StringDatum", menuName = "XR/Value Datums/String Datum", order = 0)] public class StringDatum : Datum { } [Serializable] public class StringDatumProperty : DatumProperty { public StringDatumProperty(string value) : base(value) { } public StringDatumProperty(StringDatum datum) : base(datum) { } } } namespace Unity.XR.CoreUtils.Collections { public class HashSetList : ICollection, IEnumerable, IEnumerable, ISerializable, IDeserializationCallback, ISet, IReadOnlyCollection { private readonly List m_InternalList; private readonly HashSet m_InternalHashSet; private int m_Count; public int Count => m_Count; bool ICollection.IsReadOnly => false; public T this[int index] => m_InternalList[index]; public HashSetList(int capacity = 0) : this(capacity, (IEqualityComparer)null) { } public HashSetList(IEqualityComparer comparer) : this(0, comparer) { } public HashSetList(int capacity, IEqualityComparer comparer = null) { m_InternalList = new List(capacity); m_InternalHashSet = new HashSet(capacity, comparer); } public List.Enumerator GetEnumerator() { return m_InternalList.GetEnumerator(); } IEnumerator IEnumerable.GetEnumerator() { return m_InternalList.GetEnumerator(); } IEnumerator IEnumerable.GetEnumerator() { return GetEnumerator(); } void ICollection.Add(T item) { if (m_InternalHashSet.Add(item)) { m_InternalList.Add(item); m_Count++; } } public bool Add(T item) { bool num = m_InternalHashSet.Add(item); if (num) { m_InternalList.Add(item); m_Count++; } return num; } public bool Remove(T item) { if (m_Count == 0) { return false; } bool num = m_InternalHashSet.Remove(item); if (num) { m_InternalList.Remove(item); m_Count--; } return num; } public void ExceptWith(IEnumerable other) { m_InternalHashSet.ExceptWith(other); RefreshList(); } public void IntersectWith(IEnumerable other) { m_InternalHashSet.IntersectWith(other); RefreshList(); } public bool IsProperSubsetOf(IEnumerable other) { return m_InternalHashSet.IsProperSubsetOf(other); } public bool IsProperSupersetOf(IEnumerable other) { return m_InternalHashSet.IsProperSupersetOf(other); } public bool IsSubsetOf(IEnumerable other) { return m_InternalHashSet.IsSubsetOf(other); } public bool IsSupersetOf(IEnumerable other) { return m_InternalHashSet.IsSupersetOf(other); } public bool Overlaps(IEnumerable other) { return m_InternalHashSet.Overlaps(other); } public bool SetEquals(IEnumerable other) { return m_InternalHashSet.SetEquals(other); } public void SymmetricExceptWith(IEnumerable other) { m_InternalHashSet.SymmetricExceptWith(other); RefreshList(); } public void UnionWith(IEnumerable other) { m_InternalHashSet.UnionWith(other); RefreshList(); } public void Clear() { m_InternalHashSet.Clear(); m_InternalList.Clear(); m_Count = 0; } public bool Contains(T item) { return m_InternalHashSet.Contains(item); } public void CopyTo(T[] array, int arrayIndex) { m_InternalList.CopyTo(array, arrayIndex); } public void GetObjectData(SerializationInfo info, StreamingContext context) { m_InternalHashSet.GetObjectData(info, context); RefreshList(); } public void OnDeserialization(object sender) { m_InternalHashSet.OnDeserialization(sender); RefreshList(); } private void RefreshList() { m_InternalList.Clear(); m_InternalList.AddRange(m_InternalHashSet); m_Count = m_InternalList.Count; } public IReadOnlyList AsList() { return m_InternalList; } } public interface IReadOnlySet : IReadOnlyCollection, IEnumerable, IEnumerable { bool Contains(T element); } public class ReadOnlyHashSet : IReadOnlySet, IReadOnlyCollection, IEnumerable, IEnumerable, IEquatable> { private static ReadOnlyHashSet s_EmptySet; private readonly HashSet m_Set; public int Count => m_Set.Count; public ReadOnlyHashSet(HashSet set) { m_Set = set ?? throw new ArgumentNullException("set"); } public static ReadOnlyHashSet Empty() { if (s_EmptySet == null) { s_EmptySet = new ReadOnlyHashSet(new HashSet(0)); } return s_EmptySet; } public bool Contains(T element) { return m_Set.Contains(element); } public HashSet.Enumerator GetEnumerator() { return m_Set.GetEnumerator(); } IEnumerator IEnumerable.GetEnumerator() { return GetEnumerator(); } IEnumerator IEnumerable.GetEnumerator() { return GetEnumerator(); } public bool Equals(ReadOnlyHashSet other) { if (other == null) { return false; } if (this != other) { return object.Equals(m_Set, other.m_Set); } return true; } public override bool Equals(object obj) { if (obj == null) { return false; } if (this == obj) { return true; } if (obj.GetType() == GetType()) { return Equals((ReadOnlyHashSet)obj); } return false; } public override int GetHashCode() { if (m_Set == null) { return 0; } return m_Set.GetHashCode(); } public void CopyTo(T[] array) { m_Set.CopyTo(array); } public void CopyTo(List list) { list.AddRange(m_Set); } public override string ToString() { StringBuilder stringBuilder = new StringBuilder(); stringBuilder.AppendLine("{"); foreach (T item in m_Set) { stringBuilder.AppendLine((item == null) ? " null," : (" " + item.ToString() + ",")); } stringBuilder.Append("}"); return stringBuilder.ToString(); } } public static class ReadOnlyHashSetExtensions { public static void CopyTo(this ReadOnlyHashSet set, NativeArray array) where T : struct { int num = 0; foreach (T item in set) { array[num] = item; num++; } } } public class ReadOnlyList : IReadOnlyList, IEnumerable, IEnumerable, IReadOnlyCollection, IEquatable> { private static readonly ReadOnlyList s_EmptyList = new ReadOnlyList(new List(0)); private readonly List m_List; public int Count => m_List.Count; public T this[int index] => m_List[index]; public ReadOnlyList(List list) { m_List = list ?? throw new ArgumentNullException("list"); } public static ReadOnlyList Empty() { return s_EmptyList; } public List.Enumerator GetEnumerator() { return m_List.GetEnumerator(); } IEnumerator IEnumerable.GetEnumerator() { return GetEnumerator(); } IEnumerator IEnumerable.GetEnumerator() { return GetEnumerator(); } public bool Equals(ReadOnlyList other) { if ((object)other == null) { return false; } if ((object)this != other) { return object.Equals(m_List, other.m_List); } return true; } public override bool Equals(object obj) { if (obj == null) { return false; } if (this == obj) { return true; } if (obj.GetType() == GetType()) { return Equals((ReadOnlyList)obj); } return false; } public static bool operator ==(ReadOnlyList lhs, ReadOnlyList rhs) { if ((object)lhs == null && (object)rhs == null) { return true; } return lhs?.Equals(rhs) ?? false; } public static bool operator !=(ReadOnlyList lhs, ReadOnlyList rhs) { return !(lhs == rhs); } public override int GetHashCode() { if (m_List == null) { return 0; } return m_List.GetHashCode(); } public override string ToString() { StringBuilder stringBuilder = new StringBuilder(); stringBuilder.AppendLine("{"); foreach (T item in m_List) { stringBuilder.AppendLine((item == null) ? " null," : (" " + item.ToString() + ",")); } stringBuilder.Append("}"); return stringBuilder.ToString(); } } public struct ReadOnlyListSpan : IReadOnlyList, IEnumerable, IEnumerable, IReadOnlyCollection, IEquatable> { public struct Enumerator : IEnumerator, IEnumerator, IDisposable, IEquatable { internal IReadOnlyList list; private int m_CurrentIndex; public int start { get; } public int end { get; } public T Current { get { if (m_CurrentIndex < start || m_CurrentIndex >= end) { throw new ArgumentOutOfRangeException(); } return list[m_CurrentIndex]; } } object IEnumerator.Current => Current; internal Enumerator(IReadOnlyList list) : this(list, 0, list.Count) { } internal Enumerator(IReadOnlyList list, int start, int end) { this.list = list; this.start = start; this.end = end; m_CurrentIndex = this.start - 1; } public bool MoveNext() { m_CurrentIndex++; return m_CurrentIndex < end; } public void Reset() { m_CurrentIndex = start - 1; } public override int GetHashCode() { return HashCode.Combine(list, m_CurrentIndex, start, end); } void IDisposable.Dispose() { } public bool Equals(Enumerator other) { if (object.Equals(list, other.list) && m_CurrentIndex == other.m_CurrentIndex && start == other.start) { return end == other.end; } return false; } public override bool Equals(object obj) { if (obj is Enumerator other) { return Equals(other); } return false; } } private static readonly ReadOnlyListSpan s_EmptyList; private Enumerator m_Enumerator; public int Count => m_Enumerator.end - m_Enumerator.start; public T this[int index] { get { index += m_Enumerator.start; if (index < m_Enumerator.start || index >= m_Enumerator.end) { throw new ArgumentOutOfRangeException(); } return m_Enumerator.list[index]; } } public ReadOnlyListSpan(IReadOnlyList list) { if (list == null) { throw new ArgumentNullException("list"); } m_Enumerator = new Enumerator(list); } public ReadOnlyListSpan(IReadOnlyList list, int start, int length) { if (list == null) { throw new ArgumentNullException("list"); } if (start < 0 || start + length > list.Count) { throw new ArgumentOutOfRangeException(); } m_Enumerator = new Enumerator(list, start, start + length); } public ReadOnlyListSpan Slice(int start, int length) { int num = m_Enumerator.start + start; if (num < m_Enumerator.start || num + length > m_Enumerator.end) { throw new ArgumentOutOfRangeException(); } return new ReadOnlyListSpan(m_Enumerator.list, m_Enumerator.start + start, length); } public static ReadOnlyListSpan Empty() { return s_EmptyList; } public Enumerator GetEnumerator() { return m_Enumerator; } IEnumerator IEnumerable.GetEnumerator() { return GetEnumerator(); } IEnumerator IEnumerable.GetEnumerator() { return GetEnumerator(); } public bool Equals(ReadOnlyListSpan other) { return m_Enumerator.Equals(other.m_Enumerator); } public override bool Equals(object obj) { if (obj is ReadOnlyListSpan other) { return Equals(other); } return false; } public static bool operator ==(ReadOnlyListSpan lhs, ReadOnlyListSpan rhs) { return lhs.Equals(rhs); } public static bool operator !=(ReadOnlyListSpan lhs, ReadOnlyListSpan rhs) { return !(lhs == rhs); } public override int GetHashCode() { return m_Enumerator.GetHashCode(); } public override string ToString() { StringBuilder stringBuilder = new StringBuilder(); stringBuilder.AppendLine("{"); for (int i = m_Enumerator.start; i < m_Enumerator.end; i++) { T val = m_Enumerator.list[i]; stringBuilder.AppendLine((val == null) ? " null," : (" " + m_Enumerator.list[i].ToString() + ",")); } stringBuilder.Append("}"); return stringBuilder.ToString(); } } public struct ReadOnlyStructSpan : IReadOnlyList, IEnumerable, IEnumerable, IReadOnlyCollection, IEquatable> where T : struct { public struct Enumerator : IEnumerator, IEnumerator, IDisposable { private ReadOnlyStructSpan m_Span; private int m_CurrentIndex; public T Current { get { if (m_CurrentIndex < 0 || m_CurrentIndex >= m_Span.Count) { throw new ArgumentOutOfRangeException(); } return m_Span[m_CurrentIndex]; } } object IEnumerator.Current => Current; internal Enumerator(ReadOnlyStructSpan span) { m_Span = span; m_CurrentIndex = -1; } public bool MoveNext() { m_CurrentIndex++; return m_CurrentIndex < m_Span.Count; } public void Reset() { m_CurrentIndex = -1; } void IDisposable.Dispose() { } } private IReadOnlyList m_List; private NativeArray m_NativeArray; public int Start { get; } public int End { get; } public int Count { get; } public T this[int index] { get { index += Start; if (index < Start || index >= End) { throw new ArgumentOutOfRangeException(); } if (m_List != null) { return m_List[index]; } return m_NativeArray[index]; } } public ReadOnlyStructSpan(IReadOnlyList list) { //IL_001c: Unknown result type (might be due to invalid IL or missing references) m_List = list ?? throw new ArgumentNullException("list"); m_NativeArray = default(NativeArray); Start = 0; End = list.Count; Count = End - Start; } public ReadOnlyStructSpan(IReadOnlyList list, int start, int length) { //IL_0042: Unknown result type (might be due to invalid IL or missing references) m_List = list ?? throw new ArgumentNullException("list"); if (start < 0 || start + length > list.Count) { throw new ArgumentOutOfRangeException("list", "start and length must be within list bounds"); } m_List = list; m_NativeArray = default(NativeArray); Start = start; End = start + length; Count = End - Start; } public ReadOnlyStructSpan(NativeArray nativeArray) { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_0009: Unknown result type (might be due to invalid IL or missing references) m_List = null; m_NativeArray = nativeArray; Start = 0; End = nativeArray.Length; Count = End - Start; } public ReadOnlyStructSpan(NativeArray nativeArray, int start, int length) { //IL_0028: Unknown result type (might be due to invalid IL or missing references) //IL_0029: Unknown result type (might be due to invalid IL or missing references) if (start < 0 || start + length > nativeArray.Length) { throw new ArgumentOutOfRangeException("nativeArray", "start and length must be within array bounds"); } m_List = null; m_NativeArray = nativeArray; Start = start; End = start + length; Count = End - Start; } public ReadOnlyStructSpan Slice(int start, int length) { //IL_0041: Unknown result type (might be due to invalid IL or missing references) int num = Start + start; if (num < Start || num + length > End) { throw new ArgumentOutOfRangeException(); } if (m_List != null) { return new ReadOnlyStructSpan(m_List, Start + start, length); } return new ReadOnlyStructSpan(m_NativeArray, Start + start, length); } public static ReadOnlyStructSpan Empty() { return default(ReadOnlyStructSpan); } public Enumerator GetEnumerator() { return new Enumerator(this); } IEnumerator IEnumerable.GetEnumerator() { return GetEnumerator(); } IEnumerator IEnumerable.GetEnumerator() { return GetEnumerator(); } public bool Equals(ReadOnlyStructSpan other) { //IL_000f: Unknown result type (might be due to invalid IL or missing references) //IL_0015: Unknown result type (might be due to invalid IL or missing references) if (m_List == other.m_List && m_NativeArray == other.m_NativeArray && Start == other.Start) { return End == other.End; } return false; } public override bool Equals(object obj) { if (obj is ReadOnlyStructSpan other) { return Equals(other); } return false; } public static bool operator ==(ReadOnlyStructSpan lhs, ReadOnlyStructSpan rhs) { return lhs.Equals(rhs); } public static bool operator !=(ReadOnlyStructSpan lhs, ReadOnlyStructSpan rhs) { return !(lhs == rhs); } public override int GetHashCode() { //IL_0007: Unknown result type (might be due to invalid IL or missing references) return HashCode.Combine, NativeArray, int, int>(m_List, m_NativeArray, Start, End); } public override string ToString() { StringBuilder stringBuilder = new StringBuilder(); stringBuilder.AppendLine("{"); for (int i = Start; i < End; i++) { stringBuilder.AppendLine(" " + this[i].ToString() + ","); } stringBuilder.Append("}"); return stringBuilder.ToString(); } } [Serializable] public class SerializableDictionary : Dictionary, ISerializationCallbackReceiver { [Serializable] public struct Item { public TKey Key; public TValue Value; } [SerializeField] private List m_Items = new List(); public List SerializedItems => m_Items; public SerializableDictionary() { } public SerializableDictionary(IDictionary input) : base(input) { } public virtual void OnBeforeSerialize() { m_Items.Clear(); using Enumerator enumerator = GetEnumerator(); while (enumerator.MoveNext()) { KeyValuePair current = enumerator.Current; m_Items.Add(new Item { Key = current.Key, Value = current.Value }); } } public virtual void OnAfterDeserialize() { Clear(); foreach (Item item in m_Items) { if (ContainsKey(item.Key)) { Debug.LogWarning((object)string.Format("The key \"{0}\" is duplicated in the {1}.{2} and will be ignored.", item.Key, GetType().Name, "SerializedItems")); } else { Add(item.Key, item.Value); } } } } } namespace Unity.XR.CoreUtils.Capabilities { public abstract class CapabilityProfile : ScriptableObject { public static event Action CapabilityChanged; public void ReportCapabilityChanged() { CapabilityProfile.CapabilityChanged?.Invoke(this); } } [Serializable] public sealed class CapabilityDictionary : SerializableDictionary { public void ForceSerialize() { base.OnBeforeSerialize(); } public override void OnBeforeSerialize() { } } [AttributeUsage(AttributeTargets.Field)] public sealed class CustomCapabilityKeyAttribute : Attribute { public readonly int Order; public CustomCapabilityKeyAttribute(int order = 1000) { Order = order; } } public interface ICapabilityModifier { bool TryGetCapabilityValue(string capabilityKey, out bool capabilityValue); } public static class StandardCapabilityKeys { public const string ControllersInput = "Controllers Input"; public const string HandsInput = "Hands Input"; public const string EyeGazeInput = "Eye Gaze Input"; public const string WorldDataInput = "World Data Input"; public const string FaceTracking = "Face Tracking"; } } namespace Unity.XR.CoreUtils.Bindings { public class BindingsGroup { private readonly List m_Bindings = new List(); public void AddBinding(IEventBinding binding) { m_Bindings.Add(binding); } public void ClearBinding(IEventBinding binding) { m_Bindings.Remove(binding); binding?.ClearBinding(); } public void Bind() { for (int i = 0; i < m_Bindings.Count; i++) { m_Bindings[i]?.Bind(); } } public void Unbind() { for (int i = 0; i < m_Bindings.Count; i++) { m_Bindings[i]?.Unbind(); } } public void Clear() { for (int i = 0; i < m_Bindings.Count; i++) { m_Bindings[i]?.ClearBinding(); } m_Bindings.Clear(); } } public struct EventBinding : IEventBinding { private bool m_IsBound; public Action BindAction { get; set; } public Action UnbindAction { get; set; } public bool IsBound => m_IsBound; public EventBinding(Action bindAction, Action unBindAction) { BindAction = bindAction; UnbindAction = unBindAction; m_IsBound = false; } public void Bind() { if (!m_IsBound) { BindAction?.Invoke(); } m_IsBound = true; } public void Unbind() { if (m_IsBound) { UnbindAction?.Invoke(); } m_IsBound = false; } public void ClearBinding() { Unbind(); BindAction = null; UnbindAction = null; } } public interface IEventBinding { bool IsBound { get; } void Bind(); void Unbind(); void ClearBinding(); } } namespace Unity.XR.CoreUtils.Bindings.Variables { public class BindableEnum : BindableVariableBase where T : struct, IConvertible { public BindableEnum(T initialValue = default(T), bool checkEquality = true, Func equalityMethod = null, bool startInitialized = false) : base(initialValue, checkEquality, equalityMethod, startInitialized) { } public override bool ValueEquals(T other) { return base.Value.GetHashCode() == other.GetHashCode(); } } public class BindableVariable : BindableVariableBase where T : IEquatable { public BindableVariable(T initialValue = default(T), bool checkEquality = true, Func equalityMethod = null, bool startInitialized = false) : base(initialValue, checkEquality, equalityMethod, startInitialized) { } public override bool ValueEquals(T other) { return base.Value.Equals(other); } } public class BindableVariableAlloc : BindableVariableBase { public BindableVariableAlloc(T initialValue = default(T), bool checkEquality = true, Func equalityMethod = null, bool startInitialized = false) : base(initialValue, checkEquality, equalityMethod, startInitialized) { } } [Serializable] public abstract class BindableVariableBase : IReadOnlyBindableVariable { private T m_InternalValue; private readonly bool m_CheckEquality; private bool m_IsInitialized; private readonly Func m_EqualityMethod; private int m_BindingCount; public T Value { get { return m_InternalValue; } set { if (SetValueWithoutNotify(value)) { BroadcastValue(); } } } public int BindingCount => m_BindingCount; private event Action valueUpdated; public bool SetValueWithoutNotify(T value) { if (m_BindingCount == 0) { m_IsInitialized = true; m_InternalValue = value; return false; } if (m_IsInitialized && m_CheckEquality && (m_EqualityMethod?.Invoke(m_InternalValue, value) ?? ValueEquals(value))) { return false; } m_IsInitialized = true; m_InternalValue = value; return true; } public IEventBinding Subscribe(Action callback) { EventBinding eventBinding = default(EventBinding); if (callback != null) { Action callbackReference = callback; eventBinding.BindAction = delegate { valueUpdated += callbackReference; IncrementReferenceCount(); }; eventBinding.UnbindAction = delegate { valueUpdated -= callbackReference; DecrementReferenceCount(); }; eventBinding.Bind(); } return eventBinding; } public IEventBinding SubscribeAndUpdate(Action callback) { callback?.Invoke(m_InternalValue); return Subscribe(callback); } public void Unsubscribe(Action callback) { if (callback != null) { valueUpdated -= callback; DecrementReferenceCount(); } } private void IncrementReferenceCount() { m_BindingCount++; } private void DecrementReferenceCount() { m_BindingCount = Mathf.Max(0, m_BindingCount - 1); } protected BindableVariableBase(T initialValue = default(T), bool checkEquality = true, Func equalityMethod = null, bool startInitialized = false) { m_IsInitialized = startInitialized; m_InternalValue = initialValue; m_CheckEquality = checkEquality; m_EqualityMethod = equalityMethod; m_BindingCount = 0; } public void BroadcastValue() { this.valueUpdated?.Invoke(m_InternalValue); } public Task Task(Func awaitPredicate, CancellationToken token = default(CancellationToken)) { if (awaitPredicate != null && awaitPredicate(m_InternalValue)) { return System.Threading.Tasks.Task.FromResult(m_InternalValue); } return new BindableVariableTaskPredicate(this, awaitPredicate, token).Task; } public Task Task(T awaitState, CancellationToken token = default(CancellationToken)) { if (ValueEquals(awaitState)) { return System.Threading.Tasks.Task.FromResult(m_InternalValue); } return new BindableVariableTaskState(this, awaitState, token).task; } public virtual bool ValueEquals(T other) { ref T internalValue = ref m_InternalValue; object obj = other; return internalValue.Equals(obj); } } internal struct BindableVariableTaskPredicate { private readonly TaskCompletionSource m_Tcs; private readonly Func m_AwaitPredicate; private readonly IReadOnlyBindableVariable m_BindableVariable; public Task Task => m_Tcs.Task; public BindableVariableTaskPredicate(IReadOnlyBindableVariable bindableVariable, Func awaitPredicate, CancellationToken cancellationToken = default(CancellationToken)) { m_Tcs = new TaskCompletionSource(); m_AwaitPredicate = awaitPredicate; m_BindableVariable = bindableVariable; if (m_AwaitPredicate != null && m_AwaitPredicate(m_BindableVariable.Value)) { m_Tcs.SetResult(m_BindableVariable.Value); return; } cancellationToken.Register(Cancelled); m_BindableVariable.Subscribe(Await); } private void Cancelled() { m_BindableVariable.Unsubscribe(Await); m_Tcs.SetResult(m_BindableVariable.Value); } private void Await(T state) { if (m_AwaitPredicate != null) { if (m_AwaitPredicate(state)) { m_BindableVariable.Unsubscribe(Await); m_Tcs.SetResult(state); } } else { m_BindableVariable.Unsubscribe(Await); m_Tcs.SetResult(state); } } } internal struct BindableVariableTaskState { private readonly TaskCompletionSource m_Tcs; private readonly T m_AwaitState; private readonly IReadOnlyBindableVariable m_BindableVariable; public Task task => m_Tcs.Task; public BindableVariableTaskState(IReadOnlyBindableVariable bindableVariable, T awaitState, CancellationToken cancellationToken = default(CancellationToken)) { m_Tcs = new TaskCompletionSource(); m_AwaitState = awaitState; m_BindableVariable = bindableVariable; if (m_BindableVariable.ValueEquals(awaitState)) { m_Tcs.SetResult(m_BindableVariable.Value); return; } cancellationToken.Register(Cancelled); m_BindableVariable.Subscribe(Await); } private void Cancelled() { m_BindableVariable.Unsubscribe(Await); m_Tcs.SetResult(m_BindableVariable.Value); } private void Await(T state) { if (m_BindableVariable.ValueEquals(m_AwaitState)) { m_BindableVariable.Unsubscribe(Await); m_Tcs.SetResult(state); } } } public interface IReadOnlyBindableVariable { T Value { get; } int BindingCount { get; } IEventBinding Subscribe(Action callback); IEventBinding SubscribeAndUpdate(Action callback); void Unsubscribe(Action callback); bool ValueEquals(T other); Task Task(Func awaitPredicate, CancellationToken token = default(CancellationToken)); Task Task(T awaitState, CancellationToken token = default(CancellationToken)); } } namespace Unity.XR.CoreUtils.GUI { public sealed class EnumDisplayAttribute : PropertyAttribute { public string[] Names; public int[] Values; public EnumDisplayAttribute(params object[] enumValues) { Names = new string[enumValues.Length]; Values = new int[enumValues.Length]; int num = 0; while (num < Values.Length) { if (!(enumValues[num] is Enum obj)) { Debug.LogError((object)$"Non-enum passed into EnumDisplay Attribute: {enumValues[num]}"); continue; } Names[num] = obj.ToString(); Values[num] = Convert.ToInt32(obj); num++; } } } public sealed class FlagsPropertyAttribute : PropertyAttribute { } }