using System; using System.Collections.Generic; using System.Numerics; using System.Runtime.CompilerServices; using System.Threading; using System.Threading.Tasks; using Dalamud.Plugin; using Dalamud.Plugin.Ipc; using Dalamud.Plugin.Ipc.Exceptions; using Dalamud.Plugin.Services; using Microsoft.Extensions.Logging; namespace Questionable.External; internal sealed class NavmeshIpc { private sealed class Subscribers { public readonly ICallGateSubscriber IsNavReady; public readonly ICallGateSubscriber>> NavPathfind; public readonly ICallGateSubscriber>> NavPathfindWithTolerance; public readonly ICallGateSubscriber NavPathfindInProgress; public readonly ICallGateSubscriber NavNumQueuedRequests; public readonly ICallGateSubscriber, bool, object> PathMoveTo; public readonly ICallGateSubscriber PathStop; public readonly ICallGateSubscriber PathIsRunning; public readonly ICallGateSubscriber> PathListWaypoints; public readonly ICallGateSubscriber PathSetTolerance; public readonly ICallGateSubscriber QueryPointOnFloor; public readonly ICallGateSubscriber QueryNearestPoint; public readonly ICallGateSubscriber QueryNearestPointReachable; public readonly ICallGateSubscriber BuildProgress; public readonly ICallGateSubscriber NavReload; public readonly ICallGateSubscriber NavRebuild; [MethodImpl(MethodImplOptions.NoInlining)] public Subscribers(IDalamudPluginInterface pluginInterface, Configuration.ENavigationProvider provider) { string text = ((provider == Configuration.ENavigationProvider.WigglyNavShim) ? 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(400780601) : 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(281533512)); IsNavReady = pluginInterface.GetIpcSubscriber(_206A_206C_202A_200E_200F_206C_206B_202C_200B_206C_200B_202A_206D_206D_202A_200B_200E_200F_202D_206D_206A_206D_206A_202E_200B_202D_200C_206C_202D_200C_200C_200B_206B_206B_206F_206C_200D_206F_200E_206B_202E(text, 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(-2043293393))); NavPathfind = pluginInterface.GetIpcSubscriber>>(_206A_206C_202A_200E_200F_206C_206B_202C_200B_206C_200B_202A_206D_206D_202A_200B_200E_200F_202D_206D_206A_206D_206A_202E_200B_202D_200C_206C_202D_200C_200C_200B_206B_206B_206F_206C_200D_206F_200E_206B_202E(text, 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(1869644565))); NavPathfindWithTolerance = pluginInterface.GetIpcSubscriber>>(_206A_206C_202A_200E_200F_206C_206B_202C_200B_206C_200B_202A_206D_206D_202A_200B_200E_200F_202D_206D_206A_206D_206A_202E_200B_202D_200C_206C_202D_200C_200C_200B_206B_206B_206F_206C_200D_206F_200E_206B_202E(text, 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(-1343590681))); NavPathfindInProgress = pluginInterface.GetIpcSubscriber(_206A_206C_202A_200E_200F_206C_206B_202C_200B_206C_200B_202A_206D_206D_202A_200B_200E_200F_202D_206D_206A_206D_206A_202E_200B_202D_200C_206C_202D_200C_200C_200B_206B_206B_206F_206C_200D_206F_200E_206B_202E(text, 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(-1113861054))); NavNumQueuedRequests = pluginInterface.GetIpcSubscriber(_206A_206C_202A_200E_200F_206C_206B_202C_200B_206C_200B_202A_206D_206D_202A_200B_200E_200F_202D_206D_206A_206D_206A_202E_200B_202D_200C_206C_202D_200C_200C_200B_206B_206B_206F_206C_200D_206F_200E_206B_202E(text, 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(1214172476))); PathMoveTo = pluginInterface.GetIpcSubscriber, bool, object>(_206A_206C_202A_200E_200F_206C_206B_202C_200B_206C_200B_202A_206D_206D_202A_200B_200E_200F_202D_206D_206A_206D_206A_202E_200B_202D_200C_206C_202D_200C_200C_200B_206B_206B_206F_206C_200D_206F_200E_206B_202E(text, 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(2135724883))); PathStop = pluginInterface.GetIpcSubscriber(_206A_206C_202A_200E_200F_206C_206B_202C_200B_206C_200B_202A_206D_206D_202A_200B_200E_200F_202D_206D_206A_206D_206A_202E_200B_202D_200C_206C_202D_200C_200C_200B_206B_206B_206F_206C_200D_206F_200E_206B_202E(text, 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(1489726535))); PathIsRunning = pluginInterface.GetIpcSubscriber(_206A_206C_202A_200E_200F_206C_206B_202C_200B_206C_200B_202A_206D_206D_202A_200B_200E_200F_202D_206D_206A_206D_206A_202E_200B_202D_200C_206C_202D_200C_200C_200B_206B_206B_206F_206C_200D_206F_200E_206B_202E(text, 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(-1992325887))); PathListWaypoints = pluginInterface.GetIpcSubscriber>(_206A_206C_202A_200E_200F_206C_206B_202C_200B_206C_200B_202A_206D_206D_202A_200B_200E_200F_202D_206D_206A_206D_206A_202E_200B_202D_200C_206C_202D_200C_200C_200B_206B_206B_206F_206C_200D_206F_200E_206B_202E(text, 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(-1844977859))); PathSetTolerance = pluginInterface.GetIpcSubscriber(_206A_206C_202A_200E_200F_206C_206B_202C_200B_206C_200B_202A_206D_206D_202A_200B_200E_200F_202D_206D_206A_206D_206A_202E_200B_202D_200C_206C_202D_200C_200C_200B_206B_206B_206F_206C_200D_206F_200E_206B_202E(text, 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(1161845014))); QueryPointOnFloor = pluginInterface.GetIpcSubscriber(_206A_206C_202A_200E_200F_206C_206B_202C_200B_206C_200B_202A_206D_206D_202A_200B_200E_200F_202D_206D_206A_206D_206A_202E_200B_202D_200C_206C_202D_200C_200C_200B_206B_206B_206F_206C_200D_206F_200E_206B_202E(text, 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(865017884))); QueryNearestPoint = pluginInterface.GetIpcSubscriber(_206A_206C_202A_200E_200F_206C_206B_202C_200B_206C_200B_202A_206D_206D_202A_200B_200E_200F_202D_206D_206A_206D_206A_202E_200B_202D_200C_206C_202D_200C_200C_200B_206B_206B_206F_206C_200D_206F_200E_206B_202E(text, 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(2130817597))); QueryNearestPointReachable = pluginInterface.GetIpcSubscriber(_206A_206C_202A_200E_200F_206C_206B_202C_200B_206C_200B_202A_206D_206D_202A_200B_200E_200F_202D_206D_206A_206D_206A_202E_200B_202D_200C_206C_202D_200C_200C_200B_206B_206B_206F_206C_200D_206F_200E_206B_202E(text, 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(-1867865423))); BuildProgress = pluginInterface.GetIpcSubscriber(_206A_206C_202A_200E_200F_206C_206B_202C_200B_206C_200B_202A_206D_206D_202A_200B_200E_200F_202D_206D_206A_206D_206A_202E_200B_202D_200C_206C_202D_200C_200C_200B_206B_206B_206F_206C_200D_206F_200E_206B_202E(text, 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(2132035295))); NavReload = pluginInterface.GetIpcSubscriber(_206A_206C_202A_200E_200F_206C_206B_202C_200B_206C_200B_202A_206D_206D_202A_200B_200E_200F_202D_206D_206A_206D_206A_202E_200B_202D_200C_206C_202D_200C_200C_200B_206B_206B_206F_206C_200D_206F_200E_206B_202E(text, 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(885142654))); NavRebuild = pluginInterface.GetIpcSubscriber(_206A_206C_202A_200E_200F_206C_206B_202C_200B_206C_200B_202A_206D_206D_202A_200B_200E_200F_202D_206D_206A_206D_206A_202E_200B_202D_200C_206C_202D_200C_200C_200B_206B_206B_206F_206C_200D_206F_200E_206B_202E(text, 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(-819256700))); } static string _206A_206C_202A_200E_200F_206C_206B_202C_200B_206C_200B_202A_206D_206D_202A_200B_200E_200F_202D_206D_206A_206D_206A_202E_200B_202D_200C_206C_202D_200C_200C_200B_206B_206B_206F_206C_200D_206F_200E_206B_202E(string P_0, string P_1) { return P_0 + P_1; } } private readonly IDalamudPluginInterface _pluginInterface; private readonly Configuration _configuration; private readonly WigglyNavIpc _wigglyNavIpc; private readonly WigglyNavAvailability _wigglyNavAvailability; private readonly IChatGui _chatGui; private readonly ILogger _logger; private readonly ICallGateSubscriber _vnavmeshStop; private Configuration.ENavigationProvider _activeProvider; private Subscribers _subscribers; private bool _fallbackNoticed; private bool UseNative { get { int num = ((_configuration.General.NavigationProvider != Configuration.ENavigationProvider.WigglyNav) ? (-1473368197) : (-1473368200)); while (true) { int num2 = num; int num3 = -1473368199; int num4 = num2; int num5 = num4 + num3; int num6 = num4 & num3; switch (num5 - (num6 + num6)) { case 0: goto IL_0053; case 2: return false; case 1: return _wigglyNavAvailability.IsCompatible; } continue; IL_0053: num = -1473368200; } } } private Subscribers S { get { Configuration.ENavigationProvider navigationProvider = _configuration.General.NavigationProvider; int num = ((navigationProvider == _activeProvider) ? (-590675720) : (-590675719)); while (true) { int num2 = num; int num3 = -590675720; int num4 = num2; switch ((num4 | num3) - (num4 & num3)) { case 0: return _subscribers; case 1: _subscribers = new Subscribers(_pluginInterface, navigationProvider); _activeProvider = navigationProvider; num = -590675720; break; case 2: num = -590675719; break; } } } } public bool IsNavmeshAvailable { get { int num = ((!UseNative) ? 876244421 : 876244422); while (true) { int num2 = num; int num3 = 876244423; int num4 = num2; int num5 = num4 + num3; int num6 = num4 & num3; switch (num5 - (num6 + num6)) { case 0: goto IL_0048; case 1: return _wigglyNavIpc.IsNavmeshAvailable; case 2: try { S.IsNavReady.InvokeFunc(); return true; } catch (IpcNotReadyError) { return false; } catch (IpcError) { return true; } } continue; IL_0048: num = 876244422; } } } public bool IsReady { get { int num = ((!UseNative) ? (-1348520719) : (-1348520720)); while (true) { int num2 = num; int num3 = -1348520719; int num4 = num2; int num5 = num4 + num3; int num6 = num4 & num3; switch (num5 - (num6 + num6)) { case 2: goto IL_0048; case 1: return _wigglyNavIpc.IsReady; case 0: try { return S.IsNavReady.InvokeFunc(); } catch (IpcError) { return false; } } continue; IL_0048: num = -1348520720; } } } public bool IsPathRunning { get { int num = ((!UseNative) ? (-678709680) : (-678709679)); while (true) { int num2 = num; int num3 = -678709680; int num4 = num2; int num5 = num4 + num3; int num6 = num4 & num3; switch (num5 - (num6 + num6)) { case 2: goto IL_0048; case 1: return _wigglyNavIpc.IsPathRunning; case 0: try { return S.PathIsRunning.InvokeFunc(); } catch (IpcError) { return false; } } continue; IL_0048: num = -678709679; } } } public bool IsPathfindInProgress { get { int num = ((!UseNative) ? 552109104 : 552109107); while (true) { int num2 = num; int num3 = 552109106; int num4 = num2; switch ((num4 | num3) - (num4 & num3)) { case 0: goto IL_0046; case 1: return _wigglyNavIpc.IsPathfindInProgress; case 2: try { return S.NavPathfindInProgress.InvokeFunc(); } catch (IpcError) { return false; } } continue; IL_0046: num = 552109107; } } } public int NumQueuedPathfindRequests { get { int num = ((!UseNative) ? 1053516825 : 1053516826); while (true) { int num2 = num; int num3 = 1053516827; int num4 = num2; switch ((num4 | num3) - (num4 & num3)) { case 0: goto IL_0046; case 1: return _wigglyNavIpc.NumQueuedPathfindRequests; case 2: try { return S.NavNumQueuedRequests.InvokeFunc(); } catch (IpcError) { return 0; } } continue; IL_0046: num = 1053516826; } } } [MethodImpl(MethodImplOptions.NoInlining)] public NavmeshIpc(IDalamudPluginInterface pluginInterface, Configuration configuration, WigglyNavIpc wigglyNavIpc, WigglyNavAvailability wigglyNavAvailability, IChatGui chatGui, ILogger logger) { _pluginInterface = pluginInterface; _configuration = configuration; _wigglyNavIpc = wigglyNavIpc; _wigglyNavAvailability = wigglyNavAvailability; _chatGui = chatGui; _logger = logger; _activeProvider = configuration.General.NavigationProvider; _subscribers = new Subscribers(pluginInterface, _activeProvider); _vnavmeshStop = 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(1557569534)); } internal void StopAll() { _wigglyNavIpc.Stop(); try { _vnavmeshStop.InvokeAction(); } catch (IpcError) { } } [MethodImpl(MethodImplOptions.NoInlining)] private void NoticeFallbackToVnavmesh() { int num = (UseNative ? 1523716478 : 1523716477); while (true) { int num2 = num; int num3 = 1523716478; int num4 = num2; int num5 = num4 + num3; int num6 = num4 & num3; switch (num5 - (num6 + num6)) { case 0: _fallbackNoticed = false; return; case 3: num = ((_configuration.General.NavigationProvider == Configuration.ENavigationProvider.WigglyNav) ? 1523716479 : 1523716478); break; case 1: num = ((!_fallbackNoticed) ? 1523716475 : 1523716474); break; case 4: return; case 2: num = 1523716477; break; case 5: _fallbackNoticed = true; _200F_206F_200D_206C_202A_206D_206C_202A_202A_200E_200D_206C_206E_206B_206E_200C_206A_200C_200F_206C_200D_202C_202D_206E_200E_206A_206F_206C_206A_200D_200F_202C_206A_202D_206D_206A_206E_200B_202A_206A_202E(_chatGui, 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(-381498460), 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(467221712), (ushort?)(ushort)576); return; } } } private async Task PathfindNative(Vector3 localPlayerPosition, Vector3 targetPosition, bool fly, float tolerance, CancellationToken cancellationToken) { int num = 1290670332; ConfiguredTaskAwaitable.ConfiguredTaskAwaiter configuredTaskAwaiter = default(ConfiguredTaskAwaitable.ConfiguredTaskAwaiter); ConfiguredTaskAwaitable.ConfiguredTaskAwaiter configuredTaskAwaiter2 = default(ConfiguredTaskAwaitable.ConfiguredTaskAwaiter); while (true) { int num2 = num; int num3 = 1290670335; int num4 = num2; switch ((num4 | num3) - (num4 & num3)) { case 2: num = 1290670332; break; case 4: await configuredTaskAwaiter; num = 1290670334; break; case 1: configuredTaskAwaiter = configuredTaskAwaiter2; configuredTaskAwaiter2 = default(ConfiguredTaskAwaitable.ConfiguredTaskAwaiter); num = 1290670335; break; case 3: configuredTaskAwaiter = _wigglyNavIpc.Pathfind(localPlayerPosition, targetPosition, fly, tolerance, cancellationToken).ConfigureAwait(continueOnCapturedContext: false).GetAwaiter(); num = (configuredTaskAwaiter.IsCompleted ? 1290670335 : 1290670331); break; case 0: { PathfindResult result = configuredTaskAwaiter.GetResult(); return new NavPathfindResult(result.Waypoints, HasPartialInfo: true, result.IsPartial, result.EndDistance); } } } } private static async Task WrapLegacyPathfind(Task> pathfind) { int num = -802136330; ConfiguredTaskAwaitable>.ConfiguredTaskAwaiter configuredTaskAwaiter = default(ConfiguredTaskAwaitable>.ConfiguredTaskAwaiter); ConfiguredTaskAwaitable>.ConfiguredTaskAwaiter configuredTaskAwaiter2 = default(ConfiguredTaskAwaitable>.ConfiguredTaskAwaiter); while (true) { int num2 = num; int num3 = -802136334; int num4 = num2; int num5 = num4 + num3; int num6 = num4 & num3; switch (num5 - (num6 + num6)) { case 0: num = -802136330; break; case 2: await configuredTaskAwaiter; num = -802136335; break; case 3: configuredTaskAwaiter = configuredTaskAwaiter2; configuredTaskAwaiter2 = default(ConfiguredTaskAwaitable>.ConfiguredTaskAwaiter); num = -802136333; break; case 4: configuredTaskAwaiter = pathfind.ConfigureAwait(continueOnCapturedContext: false).GetAwaiter(); num = (configuredTaskAwaiter.IsCompleted ? (-802136333) : (-802136336)); break; case 1: return new NavPathfindResult(configuredTaskAwaiter.GetResult(), HasPartialInfo: false, IsPartial: false, 0f); } } } [MethodImpl(MethodImplOptions.NoInlining)] public void Stop() { int num = ((!UseNative) ? 1744217165 : 1744217166); while (true) { int num2 = num; int num3 = 1744217164; int num4 = num2; switch ((num4 | num3) - (num4 & num3)) { case 3: return; case 2: _wigglyNavIpc.Stop(); return; case 0: num = 1744217166; break; case 1: num = (IsNavmeshAvailable ? 1744217160 : 1744217167); break; case 4: try { S.PathStop.InvokeAction(); return; } catch (IpcError ipcError) { _202D_206A_206A_206E_202E_200C_206D_202C_200B_200E_200F_202B_200D_206B_200C_202B_206C_200D_206E_206C_200F_200D_206A_200B_200C_200B_206F_206B_200F_206E_206B_202C_202E_202B_200D_200D_200E_202C_200D_206B_202E((ILogger)_logger, (Exception)ipcError, 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(-1450190224), Array.Empty()); return; } } } } [MethodImpl(MethodImplOptions.NoInlining)] public void Reload() { int num = ((!UseNative) ? (-215489094) : (-215489092)); while (true) { int num2 = num; int num3 = -215489090; int num4 = num2; switch ((num4 | num3) - (num4 & num3)) { case 3: return; case 2: _wigglyNavIpc.Reload(); return; case 0: num = -215489092; break; case 4: num = (IsNavmeshAvailable ? (-215489089) : (-215489091)); break; case 1: try { S.NavReload.InvokeFunc(); return; } catch (IpcError ipcError) { _202D_206A_206A_206E_202E_200C_206D_202C_200B_200E_200F_202B_200D_206B_200C_202B_206C_200D_206E_206C_200F_200D_206A_200B_200C_200B_206F_206B_200F_206E_206B_202C_202E_202B_200D_200D_200E_202C_200D_206B_202E((ILogger)_logger, (Exception)ipcError, 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(-282340693), Array.Empty()); return; } } } } [MethodImpl(MethodImplOptions.NoInlining)] public void Rebuild() { int num = ((!UseNative) ? (-428977095) : (-428977089)); while (true) { int num2 = num; int num3 = -428977091; int num4 = num2; switch ((num4 | num3) - (num4 & num3)) { case 1: return; case 4: num = (IsNavmeshAvailable ? (-428977090) : (-428977092)); break; case 2: _wigglyNavIpc.Rebuild(); return; case 0: num = -428977089; break; case 3: try { S.NavRebuild.InvokeFunc(); return; } catch (IpcError ipcError) { _202D_206A_206A_206E_202E_200C_206D_202C_200B_200E_200F_202B_200D_206B_200C_202B_206C_200D_206E_206C_200F_200D_206A_200B_200C_200B_206F_206B_200F_206E_206B_202C_202E_202B_200D_200D_200E_202C_200D_206B_202E((ILogger)_logger, (Exception)ipcError, 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(856449063), Array.Empty()); return; } } } } [MethodImpl(MethodImplOptions.NoInlining)] public Task Pathfind(Vector3 localPlayerPosition, Vector3 targetPosition, bool fly, CancellationToken cancellationToken) { NoticeFallbackToVnavmesh(); int num = ((!UseNative) ? (-990840737) : (-990840738)); while (true) { int num2 = num; int num3 = -990840737; int num4 = num2; switch ((num4 | num3) - (num4 & num3)) { case 4: num = -990840738; break; case 0: num = (IsNavmeshAvailable ? (-990840740) : (-990840739)); break; case 1: return PathfindNative(localPlayerPosition, targetPosition, fly, 0f, cancellationToken); case 2: return Task.FromResult(EmptyPathfindResult()); case 3: try { S.PathSetTolerance.InvokeAction(0.25f); return WrapLegacyPathfind(S.NavPathfind.InvokeFunc(localPlayerPosition, targetPosition, fly, cancellationToken)); } catch (IpcError ipcError) { _202D_206A_206A_206E_202E_200C_206D_202C_200B_200E_200F_202B_200D_206B_200C_202B_206C_200D_206E_206C_200F_200D_206A_200B_200C_200B_206F_206B_200F_206E_206B_202C_202E_202B_200D_200D_200E_202C_200D_206B_202E((ILogger)_logger, (Exception)ipcError, 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(-1378323233), Array.Empty()); return Task.FromException(ipcError); } } } } [MethodImpl(MethodImplOptions.NoInlining)] public Task PathfindWithTolerance(Vector3 localPlayerPosition, Vector3 targetPosition, bool fly, float tolerance) { NoticeFallbackToVnavmesh(); int num = ((!UseNative) ? 104441860 : 104441857); while (true) { int num2 = num; int num3 = 104441856; int num4 = num2; int num5 = num4 + num3; int num6 = num4 & num3; switch (num5 - (num6 + num6)) { case 3: return Task.FromResult(EmptyPathfindResult()); case 4: num = (IsNavmeshAvailable ? 104441856 : 104441859); break; case 1: return PathfindNative(localPlayerPosition, targetPosition, fly, tolerance, CancellationToken.None); case 2: num = 104441857; break; case 0: try { S.PathSetTolerance.InvokeAction(tolerance); return WrapLegacyPathfind(S.NavPathfindWithTolerance.InvokeFunc(localPlayerPosition, targetPosition, fly, tolerance)); } catch (IpcError ipcError) { _202D_206A_206A_206E_202E_200C_206D_202C_200B_200E_200F_202B_200D_206B_200C_202B_206C_200D_206E_206C_200F_200D_206A_200B_200C_200B_206F_206B_200F_206E_206B_202C_202E_202B_200D_200D_200E_202C_200D_206B_202E((ILogger)_logger, (Exception)ipcError, 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(1825421646), Array.Empty()); return Task.FromException(ipcError); } } } } [MethodImpl(MethodImplOptions.NoInlining)] public void MoveTo(List position, bool fly, float arrivalTolerance) { NoticeFallbackToVnavmesh(); int num = ((!UseNative) ? (-101859239) : (-101859237)); while (true) { int num2 = num; int num3 = -101859238; int num4 = num2; switch ((num4 | num3) - (num4 & num3)) { case 6: return; case 3: num = (IsNavmeshAvailable ? (-101859233) : (-101859234)); break; case 0: num = -101859237; break; case 4: return; case 1: num = (_wigglyNavIpc.MoveTo(position, fly, arrivalTolerance) ? (-101859236) : (-101859240)); break; case 2: _200E_200D_206A_206C_202A_202E_206D_202D_206B_200E_206B_200E_200F_206E_200C_200C_206D_206D_206B_200C_200C_206B_200C_200B_206D_202A_200D_200E_200C_206F_206E_206F_206B_202E_206C_200B_202B_200C_200E_206C_202E((ILogger)_logger, 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(1935526843), Array.Empty()); num = -101859236; break; case 5: Stop(); try { S.PathMoveTo.InvokeAction(position, fly); return; } catch (IpcError ipcError) { _202D_206A_206A_206E_202E_200C_206D_202C_200B_200E_200F_202B_200D_206B_200C_202B_206C_200D_206E_206C_200F_200D_206A_200B_200C_200B_206F_206B_200F_206E_206B_202C_202E_202B_200D_200D_200E_202C_200D_206B_202E((ILogger)_logger, (Exception)ipcError, 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(-45410338), Array.Empty()); return; } } } } public Vector3? GetPointOnFloor(Vector3 position, bool unlandable) { int num = ((!UseNative) ? (-1834554284) : (-1834554281)); while (true) { int num2 = num; int num3 = -1834554283; int num4 = num2; switch ((num4 | num3) - (num4 & num3)) { case 0: goto IL_0049; case 2: return _wigglyNavIpc.GetPointOnFloor(position, unlandable, 0.2f); case 1: try { return S.QueryPointOnFloor.InvokeFunc(position, unlandable, 0.2f); } catch (IpcError) { return null; } } continue; IL_0049: num = -1834554281; } } public Vector3? GetPointOnFloor(Vector3 position, bool unlandable, float halfExtentXZ) { int num = ((!UseNative) ? 1192134162 : 1192134163); while (true) { int num2 = num; int num3 = 1192134162; int num4 = num2; switch ((num4 | num3) - (num4 & num3)) { case 2: goto IL_0049; case 1: return _wigglyNavIpc.GetPointOnFloor(position, unlandable, halfExtentXZ); case 0: try { return S.QueryPointOnFloor.InvokeFunc(position, unlandable, halfExtentXZ); } catch (IpcError) { return null; } } continue; IL_0049: num = 1192134163; } } public Vector3? FindNearestMeshPoint(Vector3 position, float halfExtentXZ, float halfExtentY) { int num = ((!UseNative) ? 564309347 : 564309346); while (true) { int num2 = num; int num3 = 564309347; int num4 = num2; int num5 = num4 + num3; int num6 = num4 & num3; switch (num5 - (num6 + num6)) { case 2: goto IL_004b; case 1: return _wigglyNavIpc.FindNearestMeshPoint(position, halfExtentXZ, halfExtentY); case 0: try { return S.QueryNearestPoint.InvokeFunc(position, halfExtentXZ, halfExtentY); } catch (IpcError) { return null; } } continue; IL_004b: num = 564309346; } } public Vector3? FindNearestReachableMeshPoint(Vector3 position, float halfExtentXZ, float halfExtentY) { int num = ((!UseNative) ? 1954017115 : 1954017114); while (true) { int num2 = num; int num3 = 1954017115; int num4 = num2; switch ((num4 | num3) - (num4 & num3)) { case 2: goto IL_0049; case 1: return _wigglyNavIpc.FindNearestReachableMeshPoint(position, halfExtentXZ, halfExtentY); case 0: try { return S.QueryNearestPointReachable.InvokeFunc(position, halfExtentXZ, halfExtentY); } catch (IpcError) { return null; } } continue; IL_0049: num = 1954017114; } } public List GetWaypoints() { int num = ((!UseNative) ? 59476464 : 59476467); while (true) { int num2 = num; int num3 = 59476466; int num4 = num2; int num5 = num4 + num3; int num6 = num4 & num3; switch (num5 - (num6 + num6)) { case 0: goto IL_0048; case 1: return _wigglyNavIpc.GetWaypoints(); case 2: if (IsPathRunning) { try { return S.PathListWaypoints.InvokeFunc(); } catch (IpcError) { return new List(); } } return new List(); } continue; IL_0048: num = 59476467; } } public int GetBuildProgress() { int num = ((!UseNative) ? 1484625177 : 1484625178); while (true) { int num2 = num; int num3 = 1484625179; int num4 = num2; int num5 = num4 + num3; int num6 = num4 & num3; switch (num5 - (num6 + num6)) { case 0: goto IL_004b; case 1: return _wigglyNavIpc.GetBuildProgress(); case 2: try { float num7 = S.BuildProgress.InvokeFunc(); num = ((!(num7 < 0f)) ? 405562124 : 405562127); while (true) { int num8 = num; num3 = 405562125; num4 = num8; int num9 = num4 + num3; int num10 = num4 & num3; switch (num9 - (num10 + num10)) { case 0: goto IL_00bf; case 2: return 100; case 1: return (int)(num7 * 100f); } continue; IL_00bf: num = 405562127; } } catch (IpcError) { return 0; } } continue; IL_004b: num = 1484625178; } } private static NavPathfindResult EmptyPathfindResult() { return new NavPathfindResult(new List(), HasPartialInfo: false, IsPartial: false, 0f); } static void _200F_206F_200D_206C_202A_206D_206C_202A_202A_200E_200D_206C_206E_206B_206E_200C_206A_200C_200F_206C_200D_202C_202D_206E_200E_206A_206F_206C_206A_200D_200F_202C_206A_202D_206D_206A_206E_200B_202A_206A_202E(IChatGui P_0, string P_1, string P_2, ushort? P_3) { P_0.Print(P_1, P_2, P_3); } static void _202D_206A_206A_206E_202E_200C_206D_202C_200B_200E_200F_202B_200D_206B_200C_202B_206C_200D_206E_206C_200F_200D_206A_200B_200C_200B_206F_206B_200F_206E_206B_202C_202E_202B_200D_200D_200E_202C_200D_206B_202E(ILogger P_0, Exception P_1, string P_2, object[] P_3) { P_0.LogWarning(P_1, P_2, P_3); } static void _200E_200D_206A_206C_202A_202E_206D_202D_206B_200E_206B_200E_200F_206E_200C_200C_206D_206D_206B_200C_200C_206B_200C_200B_206D_202A_200D_200E_200C_206F_206E_206F_206B_202E_206C_200B_202B_200C_200E_206C_202E(ILogger P_0, string P_1, object[] P_2) { P_0.LogWarning(P_1, P_2); } }