using System; using System.Collections.Generic; using System.Diagnostics; using System.Numerics; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Threading; using System.Threading.Tasks; using Dalamud.Plugin; using Dalamud.Plugin.Ipc; using Dalamud.Plugin.Ipc.Exceptions; using Microsoft.Extensions.Logging; using Newtonsoft.Json; namespace Questionable.External; internal sealed class WigglyNavIpc { [CompilerGenerated] private sealed class _003C_003Ec__DisplayClass26_0 { public WigglyNavIpc _003C_003E4__this; public CancellationToken cancellationToken; public PathfindQuery query; internal Task? _003CPathfind_003Eb__0() { return _003C_003E4__this._pathfind.InvokeFunc(query, cancellationToken); } } [CompilerGenerated] private sealed class _003C_003Ec__DisplayClass31_0 { public WigglyNavIpc _003C_003E4__this; public Vector3 position; public float halfExtentXZ; public float halfExtentY; internal Vector3? _003CFindNearestMeshPoint_003Eb__0() { return _003C_003E4__this._nearestPoint.InvokeFunc(position, _202B_206C_200C_200E_200F_202E_202E_200F_206A_200D_200E_202B_206B_202A_200D_200B_202A_202C_202E_202C_206F_206B_200F_206B_200E_200B_200F_206D_200E_200C_206B_200B_206B_200F_200E_200B_202A_202B_202D_202E_202E(halfExtentXZ, halfExtentY)); } static float _202B_206C_200C_200E_200F_202E_202E_200F_206A_200D_200E_202B_206B_202A_200D_200B_202A_202C_202E_202C_206F_206B_200F_206B_200E_200B_200F_206D_200E_200C_206B_200B_206B_200F_200E_200B_202A_202B_202D_202E_202E(float P_0, float P_1) { return MathF.Max(P_0, P_1); } } [StructLayout(LayoutKind.Auto)] [CompilerGenerated] private struct _003CPathfind_003Ed__26 : IAsyncStateMachine { public int _003C_003E1__state; public AsyncTaskMethodBuilder _003C_003Et__builder; public WigglyNavIpc _003C_003E4__this; public CancellationToken cancellationToken; public Vector3 from; public Vector3 to; public bool fly; public float tolerance; private ConfiguredTaskAwaitable.ConfiguredTaskAwaiter _003C_003Eu__1; [MethodImpl(MethodImplOptions.NoInlining)] private void MoveNext() { int num = _003C_003E1__state; WigglyNavIpc wigglyNavIpc = _003C_003E4__this; PathfindResult result2; try { int num2 = ((num == 0) ? (-1011094235) : (-1011094234)); _003C_003Ec__DisplayClass26_0 _003C_003Ec__DisplayClass26_ = default(_003C_003Ec__DisplayClass26_0); ConfiguredTaskAwaitable.ConfiguredTaskAwaiter awaiter = default(ConfiguredTaskAwaitable.ConfiguredTaskAwaiter); Task task = default(Task); while (true) { int num3 = num2; int num4 = -1011094236; int num5 = num3; int num6 = num5 + num4; int num7 = num5 & num4; switch (num6 - (num7 + num7)) { case 0: num2 = -1011094234; break; case 2: _003C_003Ec__DisplayClass26_ = new _003C_003Ec__DisplayClass26_0 { _003C_003E4__this = _003C_003E4__this, cancellationToken = cancellationToken }; _200F_206C_206B_202E_202C_206F_202C_206A_206F_206C_206D_200E_206E_206A_202B_200B_206D_206D_206F_206E_200C_202B_202B_200F_206F_200B_202A_206D_206D_206E_206A_200B_206B_200D_202C_206F_200F_200E_200C_202D_202E(ref wigglyNavIpc._outstandingPathfinds); num2 = -1011094235; break; case 1: try { num2 = ((num == 0) ? 1011479215 : 1011479213); while (true) { int num8 = num2; num4 = 1011479211; num5 = num8; int num9 = num5 + num4; int num10 = num5 & num4; switch (num9 - (num10 + num10)) { case 4: awaiter = _003C_003Eu__1; _003C_003Eu__1 = default(ConfiguredTaskAwaitable.ConfiguredTaskAwaiter); num = (_003C_003E1__state = -1); num2 = 1011479208; break; case 6: _003C_003Ec__DisplayClass26_.query = new PathfindQuery(from, to, fly, tolerance); task = Guarded(_003C_003Ec__DisplayClass26_._003CPathfind_003Eb__0); num2 = ((task != null) ? 1011479209 : 1011479210); break; case 1: _200C_202A_206B_200B_206E_206E_202B_202B_200E_202B_206C_206E_206B_202A_200C_200D_206D_200D_200F_206F_202B_202D_206C_200B_202D_202B_200F_202E_202D_206E_206E_202A_202C_206B_200B_202A_206F_200F_202A_206B_202E((ILogger)wigglyNavIpc._logger, global::_003CModule_003E._202D_206D_206A_206E_202C_202B_200C_206C_200E_206A_206D_200E_206A_202A_200C_202E_206E_202C_206F_200B_206D_206F_200C_202C_200B_202B_200F_200B_206A_206F_200F_202E_206B_200E_202B_202A_200F_200B_202A_200E_202E(433157232), Array.Empty()); result2 = EmptyPathfindResult(); goto end_IL_00bb; case 5: num2 = 1011479213; break; case 2: awaiter = task.ConfigureAwait(continueOnCapturedContext: false).GetAwaiter(); num2 = (awaiter.IsCompleted ? 1011479208 : 1011479211); break; case 0: num = (_003C_003E1__state = 0); _003C_003Eu__1 = awaiter; _003C_003Et__builder.AwaitUnsafeOnCompleted(ref awaiter, ref this); return; case 3: { string result = awaiter.GetResult(); try { PathfindResult pathfindResult = JsonConvert.DeserializeObject(result); num2 = (((object)pathfindResult == null) ? 1753402747 : 1753402745); while (true) { int num11 = num2; num4 = 1753402744; num5 = num11; switch ((num5 | num4) - (num5 & num4)) { case 0: num2 = 1753402745; break; case 1: num2 = ((pathfindResult.Waypoints != null) ? 1753402746 : 1753402747); break; case 3: _200C_202A_206B_200B_206E_206E_202B_202B_200E_202B_206C_206E_206B_202A_200C_200D_206D_200D_200F_206F_202B_202D_206C_200B_202D_202B_200F_202E_202D_206E_206E_202A_202C_206B_200B_202A_206F_200F_202A_206B_202E((ILogger)wigglyNavIpc._logger, global::_003CModule_003E._202D_206D_206A_206E_202C_202B_200C_206C_200E_206A_206D_200E_206A_202A_200C_202E_206E_202C_206F_200B_206D_206F_200C_202C_200B_202B_200F_200B_206A_206F_200F_202E_206B_200E_202B_202A_200F_200B_202A_200E_202E(1821206779), Array.Empty()); result2 = EmptyPathfindResult(); goto end_IL_024d; case 2: result2 = pathfindResult; goto end_IL_024d; } continue; end_IL_024d: break; } } catch (JsonException ex) { _206B_200D_200C_206C_200B_202B_202D_200B_206E_206F_200F_200D_206A_206B_200E_206B_200D_200C_206D_200F_200E_206B_200F_202A_200E_200E_206C_200D_206C_206B_206A_206F_206F_206B_206F_200B_206E_206F_200F_206F_202E((ILogger)wigglyNavIpc._logger, (Exception)ex, global::_003CModule_003E._206C_202A_206D_206A_206E_202A_202B_206F_206D_200F_202D_200F_202D_206A_202C_202B_206D_206A_200E_200E_202D_202D_200D_200C_200D_200D_206D_206E_202A_200F_206E_206C_206D_206A_206D_202B_200F_200D_206E_200C_202E(-1517525166), Array.Empty()); result2 = EmptyPathfindResult(); } goto end_IL_00bb; } } continue; end_IL_00bb: break; } } finally { num2 = ((num >= 0) ? (-420000776) : (-420000773)); while (true) { int num12 = num2; num4 = -420000774; num5 = num12; switch ((num5 | num4) - (num5 & num4)) { case 0: num2 = -420000773; break; case 2: goto end_IL_032e; case 1: _200C_200C_202A_200C_200F_206D_206A_206B_206D_202E_200E_200D_200E_206F_202B_202C_200F_202A_202D_206C_202A_206D_202B_200D_202C_206C_200E_202C_200B_200C_202B_200E_200F_202C_206F_202D_202A_200C_206B_206B_202E(ref wigglyNavIpc._outstandingPathfinds); num2 = -420000776; break; } continue; end_IL_032e: break; } } goto end_IL_002c; } continue; end_IL_002c: break; } } catch (Exception exception) { _003C_003E1__state = -2; _003C_003Et__builder.SetException(exception); return; } _003C_003E1__state = -2; _003C_003Et__builder.SetResult(result2); } void IAsyncStateMachine.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext this.MoveNext(); } [DebuggerHidden] private void SetStateMachine(IAsyncStateMachine stateMachine) { _003C_003Et__builder.SetStateMachine(stateMachine); } void IAsyncStateMachine.SetStateMachine(IAsyncStateMachine stateMachine) { //ILSpy generated this explicit interface implementation from .override directive in SetStateMachine this.SetStateMachine(stateMachine); } static int _200F_206C_206B_202E_202C_206F_202C_206A_206F_206C_206D_200E_206E_206A_202B_200B_206D_206D_206F_206E_200C_202B_202B_200F_206F_200B_202A_206D_206D_206E_206A_200B_206B_200D_202C_206F_200F_200E_200C_202D_202E(ref int P_0) { return Interlocked.Increment(ref P_0); } static void _200C_202A_206B_200B_206E_206E_202B_202B_200E_202B_206C_206E_206B_202A_200C_200D_206D_200D_200F_206F_202B_202D_206C_200B_202D_202B_200F_202E_202D_206E_206E_202A_202C_206B_200B_202A_206F_200F_202A_206B_202E(ILogger P_0, string P_1, object[] P_2) { P_0.LogWarning(P_1, P_2); } static void _206B_200D_200C_206C_200B_202B_202D_200B_206E_206F_200F_200D_206A_206B_200E_206B_200D_200C_206D_200F_200E_206B_200F_202A_200E_200E_206C_200D_206C_206B_206A_206F_206F_206B_206F_200B_206E_206F_200F_206F_202E(ILogger P_0, Exception P_1, string P_2, object[] P_3) { P_0.LogWarning(P_1, P_2, P_3); } static int _200C_200C_202A_200C_200F_206D_206A_206B_206D_202E_200E_200D_200E_206F_202B_202C_200F_202A_202D_206C_202A_206D_202B_200D_202C_206C_200E_202C_200B_200C_202B_200E_200F_202C_206F_202D_202A_200C_206B_206B_202E(ref int P_0) { return Interlocked.Decrement(ref P_0); } } private readonly ILogger _logger; private readonly ICallGateSubscriber<(int, int)> _apiVersion; private readonly ICallGateSubscriber _status; private readonly ICallGateSubscriber _rebuild; private readonly ICallGateSubscriber> _pathfind; private readonly ICallGateSubscriber _move; private readonly ICallGateSubscriber _stop; private readonly ICallGateSubscriber _isRunning; private readonly ICallGateSubscriber> _waypoints; private readonly ICallGateSubscriber _floorPoint; private readonly ICallGateSubscriber _nearestPoint; private int _outstandingPathfinds; public bool IsNavmeshAvailable => TryGetApiVersion().HasValue; public bool IsReady { get { NavStatus status = GetStatus(); int num = (((object)status == null) ? (-1445089980) : (-1445089979)); while (true) { int num2 = num; int num3 = -1445089980; int num4 = num2; switch ((num4 | num3) - (num4 & num3)) { case 2: goto IL_0048; case 0: return false; case 1: return status.Ready; } continue; IL_0048: num = -1445089979; } } } public bool IsPathRunning => Guarded(() => _isRunning.InvokeFunc(), fallback: false); public bool IsPathfindInProgress => _200B_200F_200B_202C_200F_202B_202E_206F_200F_202C_206B_200D_206D_202B_202E_206D_202A_202D_206F_202E_206D_202E_200F_202D_206C_202A_206D_200F_206F_206F_202C_202B_202C_200C_202B_202C_202E_206B_206B_206A_202E(ref _outstandingPathfinds) > 0; public int NumQueuedPathfindRequests => _202C_202D_202B_202E_206B_200B_206F_206B_206F_200D_206F_202B_202E_202C_200C_200B_202D_202A_206B_206D_206D_206E_202E_206B_206B_206C_206E_200F_202B_202D_202D_202E_206D_200F_202C_202D_202B_206D_202A_206C_202E(0, _200B_200F_200B_202C_200F_202B_202E_206F_200F_202C_206B_200D_206D_202B_202E_206D_202A_202D_206F_202E_206D_202E_200F_202D_206C_202A_206D_200F_206F_206F_202C_202B_202C_200C_202B_202C_202E_206B_206B_206A_202E(ref _outstandingPathfinds) - 1); [MethodImpl(MethodImplOptions.NoInlining)] public WigglyNavIpc(IDalamudPluginInterface pluginInterface, ILogger logger) { _logger = logger; _apiVersion = pluginInterface.GetIpcSubscriber<(int, int)>(global::_003CModule_003E._202E_206C_200F_206B_206A_202A_202C_206F_200C_206C_202B_206B_206D_206D_206D_202D_206E_202E_206C_206E_206D_202C_206F_200D_202D_202E_206A_206D_202A_206A_202B_200D_200C_206D_202B_200B_200D_200C_206E_206B_202E(-210373295)); _status = pluginInterface.GetIpcSubscriber(global::_003CModule_003E._200B_206B_206B_200E_200B_206A_206D_206B_206E_200F_206A_206F_206E_202B_200F_206C_202B_206D_206E_200F_200C_200E_206F_200D_200F_200B_202B_202B_202B_202B_206D_202C_206A_206D_200B_206E_200D_206A_206F_200F_202E(-1180852660)); _rebuild = pluginInterface.GetIpcSubscriber(global::_003CModule_003E._206C_202A_206D_206A_206E_202A_202B_206F_206D_200F_202D_200F_202D_206A_202C_202B_206D_206A_200E_200E_202D_202D_200D_200C_200D_200D_206D_206E_202A_200F_206E_206C_206D_206A_206D_202B_200F_200D_206E_200C_202E(-1824704594)); _pathfind = pluginInterface.GetIpcSubscriber>(global::_003CModule_003E._202E_206C_200F_206B_206A_202A_202C_206F_200C_206C_202B_206B_206D_206D_206D_202D_206E_202E_206C_206E_206D_202C_206F_200D_202D_202E_206A_206D_202A_206A_202B_200D_200C_206D_202B_200B_200D_200C_206E_206B_202E(-1256767723)); _move = pluginInterface.GetIpcSubscriber(global::_003CModule_003E._202A_206B_206D_200C_206B_200E_200E_202A_200B_202E_206A_206F_206A_206B_200E_200D_200F_206D_206E_206A_206F_200C_206C_202C_202A_206E_202C_200B_206E_202A_206E_202B_206B_202E_202E_206A_206D_206D_202C_200F_202E(-2010421691)); _stop = pluginInterface.GetIpcSubscriber(global::_003CModule_003E._206C_202A_206D_206A_206E_202A_202B_206F_206D_200F_202D_200F_202D_206A_202C_202B_206D_206A_200E_200E_202D_202D_200D_200C_200D_200D_206D_206E_202A_200F_206E_206C_206D_206A_206D_202B_200F_200D_206E_200C_202E(1146720717)); _isRunning = pluginInterface.GetIpcSubscriber(global::_003CModule_003E._202D_206D_206A_206E_202C_202B_200C_206C_200E_206A_206D_200E_206A_202A_200C_202E_206E_202C_206F_200B_206D_206F_200C_202C_200B_202B_200F_200B_206A_206F_200F_202E_206B_200E_202B_202A_200F_200B_202A_200E_202E(-2133174746)); _waypoints = pluginInterface.GetIpcSubscriber>(global::_003CModule_003E._202E_206C_200F_206B_206A_202A_202C_206F_200C_206C_202B_206B_206D_206D_206D_202D_206E_202E_206C_206E_206D_202C_206F_200D_202D_202E_206A_206D_202A_206A_202B_200D_200C_206D_202B_200B_200D_200C_206E_206B_202E(206019124)); _floorPoint = pluginInterface.GetIpcSubscriber(global::_003CModule_003E._202A_206B_206D_200C_206B_200E_200E_202A_200B_202E_206A_206F_206A_206B_200E_200D_200F_206D_206E_206A_206F_200C_206C_202C_202A_206E_202C_200B_206E_202A_206E_202B_206B_202E_202E_206A_206D_206D_202C_200F_202E(1729999483)); _nearestPoint = pluginInterface.GetIpcSubscriber(global::_003CModule_003E._200B_206B_206B_200E_200B_206A_206D_206B_206E_200F_206A_206F_206E_202B_200F_206C_202B_206D_206E_200F_200C_200E_206F_200D_200F_200B_202B_202B_202B_202B_206D_202C_206A_206D_200B_206E_200D_206A_206F_200F_202E(-229973248)); } private static T Guarded(Func invoke, T fallback = default(T)) { try { return invoke(); } catch (IpcError) { return fallback; } } public (int Major, int Minor)? TryGetApiVersion() { return Guarded((Func<(int, int)?>)(() => _apiVersion.InvokeFunc()), ((int, int)?)null); } public int GetBuildProgress() { NavStatus status = GetStatus(); int num = ((!(status == null)) ? (-1561729010) : (-1561729012)); while (true) { int num2 = num; int num3 = -1561729009; int num4 = num2; switch ((num4 | num3) - (num4 & num3)) { case 4: return _200E_200C_202A_206A_202D_206A_200B_200B_200D_206D_202A_206A_202D_202B_206D_200E_202C_202B_206E_206C_200F_202A_206A_202A_206A_200C_206C_206B_202D_202D_206D_202C_200E_206F_206E_200C_206D_202A_206C_202A_202E(status.TilesBuilt * 100 / status.TilesTotal, 0, 100); case 0: return 100; case 1: num = ((status.TilesTotal <= 0) ? (-1561729014) : (-1561729013)); break; case 6: num = -1561729012; break; case 2: return 0; case 5: num = (status.Ready ? (-1561729009) : (-1561729011)); break; case 3: return 0; } } } public async Task Pathfind(Vector3 from, Vector3 to, bool fly, float tolerance, CancellationToken cancellationToken) { int num = -1011094234; _003C_003Ec__DisplayClass26_0 _003C_003Ec__DisplayClass26_ = default(_003C_003Ec__DisplayClass26_0); ConfiguredTaskAwaitable.ConfiguredTaskAwaiter configuredTaskAwaiter = default(ConfiguredTaskAwaitable.ConfiguredTaskAwaiter); ConfiguredTaskAwaitable.ConfiguredTaskAwaiter configuredTaskAwaiter2 = default(ConfiguredTaskAwaitable.ConfiguredTaskAwaiter); Task task = default(Task); while (true) { int num2 = num; int num3 = -1011094236; int num4 = num2; int num5 = num4 + num3; int num6 = num4 & num3; switch (num5 - (num6 + num6)) { case 0: num = -1011094234; break; case 2: _003C_003Ec__DisplayClass26_ = new _003C_003Ec__DisplayClass26_0(); _003C_003Ec__DisplayClass26_._003C_003E4__this = this; _003C_003Ec__DisplayClass26_.cancellationToken = cancellationToken; _003CPathfind_003Ed__26._200F_206C_206B_202E_202C_206F_202C_206A_206F_206C_206D_200E_206E_206A_202B_200B_206D_206D_206F_206E_200C_202B_202B_200F_206F_200B_202A_206D_206D_206E_206A_200B_206B_200D_202C_206F_200F_200E_200C_202D_202E(ref _outstandingPathfinds); num = -1011094235; break; case 1: try { num = 1011479213; while (true) { int num7 = num; num3 = 1011479211; num4 = num7; int num8 = num4 + num3; int num9 = num4 & num3; switch (num8 - (num9 + num9)) { case 4: configuredTaskAwaiter = configuredTaskAwaiter2; configuredTaskAwaiter2 = default(ConfiguredTaskAwaitable.ConfiguredTaskAwaiter); num = 1011479208; break; case 6: _003C_003Ec__DisplayClass26_.query = new PathfindQuery(from, to, fly, tolerance); task = Guarded(_003C_003Ec__DisplayClass26_._003CPathfind_003Eb__0); num = ((task != null) ? 1011479209 : 1011479210); break; case 1: _003CPathfind_003Ed__26._200C_202A_206B_200B_206E_206E_202B_202B_200E_202B_206C_206E_206B_202A_200C_200D_206D_200D_200F_206F_202B_202D_206C_200B_202D_202B_200F_202E_202D_206E_206E_202A_202C_206B_200B_202A_206F_200F_202A_206B_202E((ILogger)_logger, global::_003CModule_003E._202D_206D_206A_206E_202C_202B_200C_206C_200E_206A_206D_200E_206A_202A_200C_202E_206E_202C_206F_200B_206D_206F_200C_202C_200B_202B_200F_200B_206A_206F_200F_202E_206B_200E_202B_202A_200F_200B_202A_200E_202E(433157232), Array.Empty()); return EmptyPathfindResult(); case 5: num = 1011479213; break; case 2: configuredTaskAwaiter = task.ConfigureAwait(continueOnCapturedContext: false).GetAwaiter(); num = (configuredTaskAwaiter.IsCompleted ? 1011479208 : 1011479211); break; case 0: await configuredTaskAwaiter; num = 1011479215; break; case 3: { string result = configuredTaskAwaiter.GetResult(); try { PathfindResult pathfindResult = JsonConvert.DeserializeObject(result); num = (((object)pathfindResult == null) ? 1753402747 : 1753402745); while (true) { int num10 = num; num3 = 1753402744; num4 = num10; switch ((num4 | num3) - (num4 & num3)) { case 0: num = 1753402745; break; case 1: num = ((pathfindResult.Waypoints != null) ? 1753402746 : 1753402747); break; case 3: _003CPathfind_003Ed__26._200C_202A_206B_200B_206E_206E_202B_202B_200E_202B_206C_206E_206B_202A_200C_200D_206D_200D_200F_206F_202B_202D_206C_200B_202D_202B_200F_202E_202D_206E_206E_202A_202C_206B_200B_202A_206F_200F_202A_206B_202E((ILogger)_logger, global::_003CModule_003E._202D_206D_206A_206E_202C_202B_200C_206C_200E_206A_206D_200E_206A_202A_200C_202E_206E_202C_206F_200B_206D_206F_200C_202C_200B_202B_200F_200B_206A_206F_200F_202E_206B_200E_202B_202A_200F_200B_202A_200E_202E(1821206779), Array.Empty()); return EmptyPathfindResult(); case 2: return pathfindResult; } } } catch (JsonException ex) { _003CPathfind_003Ed__26._206B_200D_200C_206C_200B_202B_202D_200B_206E_206F_200F_200D_206A_206B_200E_206B_200D_200C_206D_200F_200E_206B_200F_202A_200E_200E_206C_200D_206C_206B_206A_206F_206F_206B_206F_200B_206E_206F_200F_206F_202E((ILogger)_logger, (Exception)ex, global::_003CModule_003E._206C_202A_206D_206A_206E_202A_202B_206F_206D_200F_202D_200F_202D_206A_202C_202B_206D_206A_200E_200E_202D_202D_200D_200C_200D_200D_206D_206E_202A_200F_206E_206C_206D_206A_206D_202B_200F_200D_206E_200C_202E(-1517525166), Array.Empty()); return EmptyPathfindResult(); } } } } } finally { num = -420000773; while (true) { int num11 = num; num3 = -420000774; num4 = num11; switch ((num4 | num3) - (num4 & num3)) { case 0: num = -420000773; break; case 2: goto end_IL_032e; case 1: _003CPathfind_003Ed__26._200C_200C_202A_200C_200F_206D_206A_206B_206D_202E_200E_200D_200E_206F_202B_202C_200F_202A_202D_206C_202A_206D_202B_200D_202C_206C_200E_202C_200B_200C_202B_200E_200F_202C_206F_202D_202A_200C_206B_206B_202E(ref _outstandingPathfinds); num = -420000776; break; } continue; end_IL_032e: break; } } } } } public bool MoveTo(List waypoints, bool fly, float arrivalTolerance) { Stop(); MoveCommand command = new MoveCommand(waypoints, fly, arrivalTolerance); return Guarded(() => _move.InvokeFunc(command), fallback: false); } public void Stop() { Guarded(delegate { _stop.InvokeAction(); return true; }, fallback: false); } public List GetWaypoints() { return Guarded(() => _waypoints.InvokeFunc()) ?? new List(); } public Vector3? GetPointOnFloor(Vector3 position, bool unlandable, float halfExtentXZ) { return Guarded(() => _floorPoint.InvokeFunc(position, halfExtentXZ, unlandable)); } public Vector3? FindNearestMeshPoint(Vector3 position, float halfExtentXZ, float halfExtentY) { return Guarded(() => _nearestPoint.InvokeFunc(position, _003C_003Ec__DisplayClass31_0._202B_206C_200C_200E_200F_202E_202E_200F_206A_200D_200E_202B_206B_202A_200D_200B_202A_202C_202E_202C_206F_206B_200F_206B_200E_200B_200F_206D_200E_200C_206B_200B_206B_200F_200E_200B_202A_202B_202D_202E_202E(halfExtentXZ, halfExtentY))); } public Vector3? FindNearestReachableMeshPoint(Vector3 position, float halfExtentXZ, float halfExtentY) { return FindNearestMeshPoint(position, halfExtentXZ, halfExtentY); } public void Reload() { Rebuild(); } [MethodImpl(MethodImplOptions.NoInlining)] public void Rebuild() { int num = (Guarded(() => _rebuild.InvokeFunc(), fallback: false) ? 890598497 : 890598498); while (true) { int num2 = num; int num3 = 890598496; int num4 = num2; switch ((num4 | num3) - (num4 & num3)) { case 1: return; case 2: _202D_202D_200D_202C_202A_200E_206D_202D_206A_200F_206B_200C_206D_200F_202C_202E_202A_206D_206E_206E_206A_206F_206E_202A_200D_206D_202C_200D_206D_206B_202C_206E_206D_202A_206C_202A_200F_202C_206A_202C_202E((ILogger)_logger, global::_003CModule_003E._202D_206D_206A_206E_202C_202B_200C_206C_200E_206A_206D_200E_206A_202A_200C_202E_206E_202C_206F_200B_206D_206F_200C_202C_200B_202B_200F_200B_206A_206F_200F_202E_206B_200E_202B_202A_200F_200B_202A_200E_202E(-1801615064), Array.Empty()); num = 890598497; break; case 0: num = 890598498; break; } } } private NavStatus? GetStatus() { return Guarded(() => _status.InvokeFunc()); } [MethodImpl(MethodImplOptions.NoInlining)] private static PathfindResult EmptyPathfindResult() { return new PathfindResult(new List(), IsPartial: false, global::_003CModule_003E._202E_206C_200F_206B_206A_202A_202C_206F_200C_206C_202B_206B_206D_206D_206D_202D_206E_202E_206C_206E_206D_202C_206F_200D_202D_202E_206A_206D_202A_206A_202B_200D_200C_206D_202B_200B_200D_200C_206E_206B_202E(1706749360), 0f); } static int _200B_200F_200B_202C_200F_202B_202E_206F_200F_202C_206B_200D_206D_202B_202E_206D_202A_202D_206F_202E_206D_202E_200F_202D_206C_202A_206D_200F_206F_206F_202C_202B_202C_200C_202B_202C_202E_206B_206B_206A_202E(ref int P_0) { return Volatile.Read(in P_0); } static int _202C_202D_202B_202E_206B_200B_206F_206B_206F_200D_206F_202B_202E_202C_200C_200B_202D_202A_206B_206D_206D_206E_202E_206B_206B_206C_206E_200F_202B_202D_202D_202E_206D_200F_202C_202D_202B_206D_202A_206C_202E(int P_0, int P_1) { return Math.Max(P_0, P_1); } static int _200E_200C_202A_206A_202D_206A_200B_200B_200D_206D_202A_206A_202D_202B_206D_200E_202C_202B_206E_206C_200F_202A_206A_202A_206A_200C_206C_206B_202D_202D_206D_202C_200E_206F_206E_200C_206D_202A_206C_202A_202E(int P_0, int P_1, int P_2) { return Math.Clamp(P_0, P_1, P_2); } static void _202D_202D_200D_202C_202A_200E_206D_202D_206A_200F_206B_200C_206D_200F_202C_202E_202A_206D_206E_206E_206A_206F_206E_202A_200D_206D_202C_200D_206D_206B_202C_206E_206D_202A_206C_202A_200F_202C_206A_202C_202E(ILogger P_0, string P_1, object[] P_2) { P_0.LogWarning(P_1, P_2); } }