forked from aly/qstbak
626 lines
26 KiB
C#
626 lines
26 KiB
C#
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<string>? _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<PathfindResult> _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<string>.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<string>.ConfiguredTaskAwaiter awaiter = default(ConfiguredTaskAwaitable<string>.ConfiguredTaskAwaiter);
|
|
Task<string> task = default(Task<string>);
|
|
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<string>.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<string>(433157232), Array.Empty<object>());
|
|
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<PathfindResult>(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<string>(1821206779), Array.Empty<object>());
|
|
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<string>(-1517525166), Array.Empty<object>());
|
|
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<WigglyNavIpc> _logger;
|
|
|
|
private readonly ICallGateSubscriber<(int, int)> _apiVersion;
|
|
|
|
private readonly ICallGateSubscriber<NavStatus> _status;
|
|
|
|
private readonly ICallGateSubscriber<bool> _rebuild;
|
|
|
|
private readonly ICallGateSubscriber<PathfindQuery, CancellationToken, Task<string>> _pathfind;
|
|
|
|
private readonly ICallGateSubscriber<MoveCommand, bool> _move;
|
|
|
|
private readonly ICallGateSubscriber<object> _stop;
|
|
|
|
private readonly ICallGateSubscriber<bool> _isRunning;
|
|
|
|
private readonly ICallGateSubscriber<List<Vector3>> _waypoints;
|
|
|
|
private readonly ICallGateSubscriber<Vector3, float, bool, Vector3?> _floorPoint;
|
|
|
|
private readonly ICallGateSubscriber<Vector3, float, Vector3?> _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<WigglyNavIpc> 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<string>(-210373295));
|
|
_status = pluginInterface.GetIpcSubscriber<NavStatus>(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<string>(-1180852660));
|
|
_rebuild = pluginInterface.GetIpcSubscriber<bool>(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<string>(-1824704594));
|
|
_pathfind = pluginInterface.GetIpcSubscriber<PathfindQuery, CancellationToken, Task<string>>(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<string>(-1256767723));
|
|
_move = pluginInterface.GetIpcSubscriber<MoveCommand, bool>(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<string>(-2010421691));
|
|
_stop = pluginInterface.GetIpcSubscriber<object>(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<string>(1146720717));
|
|
_isRunning = pluginInterface.GetIpcSubscriber<bool>(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<string>(-2133174746));
|
|
_waypoints = pluginInterface.GetIpcSubscriber<List<Vector3>>(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<string>(206019124));
|
|
_floorPoint = pluginInterface.GetIpcSubscriber<Vector3, float, bool, Vector3?>(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<string>(1729999483));
|
|
_nearestPoint = pluginInterface.GetIpcSubscriber<Vector3, float, Vector3?>(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<string>(-229973248));
|
|
}
|
|
|
|
private static T Guarded<T>(Func<T> 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<PathfindResult> 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<string>.ConfiguredTaskAwaiter configuredTaskAwaiter = default(ConfiguredTaskAwaitable<string>.ConfiguredTaskAwaiter);
|
|
ConfiguredTaskAwaitable<string>.ConfiguredTaskAwaiter configuredTaskAwaiter2 = default(ConfiguredTaskAwaitable<string>.ConfiguredTaskAwaiter);
|
|
Task<string> task = default(Task<string>);
|
|
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<string>.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<string>(433157232), Array.Empty<object>());
|
|
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<PathfindResult>(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<string>(1821206779), Array.Empty<object>());
|
|
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<string>(-1517525166), Array.Empty<object>());
|
|
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<Vector3> 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<Vector3> GetWaypoints()
|
|
{
|
|
return Guarded(() => _waypoints.InvokeFunc()) ?? new List<Vector3>();
|
|
}
|
|
|
|
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<string>(-1801615064), Array.Empty<object>());
|
|
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<Vector3>(), 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<string>(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);
|
|
}
|
|
}
|