muffin v7.5.11
This commit is contained in:
parent
addf2d530f
commit
3102923ce2
522 changed files with 41082 additions and 211592 deletions
|
|
@ -1,7 +1,7 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Numerics;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Threading;
|
||||
using Dalamud.Plugin.Services;
|
||||
using LLib.GameData;
|
||||
|
|
@ -16,16 +16,28 @@ namespace SmartNav.Data;
|
|||
|
||||
public sealed class LgbZoneBoundarySource : IZoneBoundarySource
|
||||
{
|
||||
private const uint BoundaryFileMagic = 1112425562u;
|
||||
|
||||
private const int BoundaryFileFormatVersion = 1;
|
||||
|
||||
private const string CacheFileName = "zone-boundary-cache.bin";
|
||||
|
||||
private readonly IDataManager _dataManager;
|
||||
|
||||
private readonly ILogger<LgbZoneBoundarySource> _logger;
|
||||
|
||||
private readonly Lazy<IReadOnlyList<ZoneBoundary>> _boundaries;
|
||||
|
||||
public LgbZoneBoundarySource(IDataManager dataManager, ILogger<LgbZoneBoundarySource> logger)
|
||||
private readonly string? _cacheDirectory;
|
||||
|
||||
private readonly string? _gameVersion;
|
||||
|
||||
public LgbZoneBoundarySource(IDataManager dataManager, ILogger<LgbZoneBoundarySource> logger, SmartNavDataOptions? dataOptions = null)
|
||||
{
|
||||
_dataManager = dataManager;
|
||||
_logger = logger;
|
||||
_cacheDirectory = dataOptions?.UserOverrideDirectory?.FullName;
|
||||
_gameVersion = dataOptions?.GameVersion;
|
||||
_boundaries = new Lazy<IReadOnlyList<ZoneBoundary>>(Build, LazyThreadSafetyMode.ExecutionAndPublication);
|
||||
}
|
||||
|
||||
|
|
@ -34,378 +46,195 @@ public sealed class LgbZoneBoundarySource : IZoneBoundarySource
|
|||
return _boundaries.Value;
|
||||
}
|
||||
|
||||
IReadOnlyList<ZoneBoundary> IZoneBoundarySource.GetBoundaries()
|
||||
{
|
||||
//ILSpy generated this explicit interface implementation from .override directive in GetBoundaries
|
||||
return this.GetBoundaries();
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.NoInlining)]
|
||||
private IReadOnlyList<ZoneBoundary> Build()
|
||||
{
|
||||
try
|
||||
{
|
||||
(List<ExitRangeEntry> ExitRanges, Dictionary<(ushort TerritoryId, uint InstanceId), PopRangeEntry> PopRangeIndex) tuple = CollectLgbData();
|
||||
List<ExitRangeEntry> item = tuple.ExitRanges;
|
||||
Dictionary<(ushort, uint), PopRangeEntry> item2 = tuple.PopRangeIndex;
|
||||
(List<ExitRangeEntry>, Dictionary<(ushort, uint), PopRangeEntry>)? tuple = TryLoadFromDisk();
|
||||
if (!tuple.HasValue)
|
||||
{
|
||||
_logger.LogInformation("No boundary cache found, falling back to in-process LGB scan");
|
||||
}
|
||||
(List<ExitRangeEntry>, Dictionary<(ushort, uint), PopRangeEntry>) obj = tuple ?? CollectLgbData();
|
||||
List<ExitRangeEntry> item = obj.Item1;
|
||||
Dictionary<(ushort, uint), PopRangeEntry> item2 = obj.Item2;
|
||||
List<ZoneBoundary> list = ZoneBoundaryDerivation.Derive(item, item2, _logger);
|
||||
ZoneBoundaryDerivation.ApplyOverrides(list, ZoneBoundaryOverrides.FlyingPairs, ZoneBoundaryOverrides.PositionOverrides, _logger);
|
||||
_206C_200B_206A_202D_206B_206B_206B_202B_202C_202E_202D_206B_206B_202C_200E_202E_206A_202E_200D_206E_206E_206D_206A_206C_206A_202E_206B_202E_202B_206E_202C_200C_206B_202B_206F_206C_206C_202E_202C_206D_202E((ILogger)_logger, global::_003CModule_003E._206C_206C_200C_206D_206C_206F_202D_206B_206F_202C_200F_206A_200E_202A_202C_206F_200E_206A_200B_200F_202A_202C_206F_206A_200C_200D_200E_200E_202A_200C_206B_200E_206E_206C_200D_202B_206F_200C_202E_206E_202E<string>(-981985917), new object[2] { list.Count, item.Count });
|
||||
_logger.LogDebug("Derived {Count} zone boundaries from {ExitCount} ExitRanges{Source}", list.Count, item.Count, tuple.HasValue ? " (from cache)" : "");
|
||||
return list;
|
||||
}
|
||||
catch (Exception ex)
|
||||
catch (Exception exception)
|
||||
{
|
||||
_202A_200E_202B_202E_200D_200F_200E_206F_206A_206C_202C_202B_200B_200C_200E_206A_206A_200E_202C_206F_202D_200B_202D_206A_200C_206D_200B_206D_206D_202B_206E_206B_206F_200E_202B_202D_200E_206C_202C_202D_202E((ILogger)_logger, ex, global::_003CModule_003E._206C_200D_200D_206D_202E_200F_206A_206A_206D_202A_202D_200D_206F_206A_200F_206C_200F_202D_206B_202B_200B_202A_200B_202A_206A_206A_200D_206B_202E_206B_206F_206D_200E_202B_202C_202B_200B_202A_202C_206A_202E<string>(927516533), Array.Empty<object>());
|
||||
_logger.LogError(exception, "Zone boundary derivation failed - building graph without boundary edges");
|
||||
return Array.Empty<ZoneBoundary>();
|
||||
}
|
||||
}
|
||||
|
||||
private (List<ExitRangeEntry> ExitRanges, Dictionary<(ushort TerritoryId, uint InstanceId), PopRangeEntry> PopRangeIndex)? TryLoadFromDisk()
|
||||
{
|
||||
if (string.IsNullOrEmpty(_cacheDirectory) || string.IsNullOrEmpty(_gameVersion))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
string path = Path.Combine(_cacheDirectory, "zone-boundary-cache.bin");
|
||||
if (!File.Exists(path))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
try
|
||||
{
|
||||
using BinaryReader binaryReader = new BinaryReader(File.OpenRead(path));
|
||||
if (binaryReader.ReadUInt32() != 1112425562 || binaryReader.ReadInt32() != 1)
|
||||
{
|
||||
_logger.LogDebug("Zone boundary cache has unknown header, discarding");
|
||||
return null;
|
||||
}
|
||||
if (binaryReader.ReadString() != _gameVersion)
|
||||
{
|
||||
_logger.LogDebug("Zone boundary cache is for a different game version, discarding");
|
||||
return null;
|
||||
}
|
||||
int num = binaryReader.ReadInt32();
|
||||
List<ExitRangeEntry> list = new List<ExitRangeEntry>(num);
|
||||
for (int i = 0; i < num; i++)
|
||||
{
|
||||
list.Add(new ExitRangeEntry(binaryReader.ReadUInt16(), binaryReader.ReadUInt32(), new Vector3(binaryReader.ReadSingle(), binaryReader.ReadSingle(), binaryReader.ReadSingle()), binaryReader.ReadUInt16(), binaryReader.ReadUInt32(), binaryReader.ReadUInt32(), new Vector3(binaryReader.ReadSingle(), binaryReader.ReadSingle(), binaryReader.ReadSingle()), new Vector3(binaryReader.ReadSingle(), binaryReader.ReadSingle(), binaryReader.ReadSingle())));
|
||||
}
|
||||
int num2 = binaryReader.ReadInt32();
|
||||
Dictionary<(ushort, uint), PopRangeEntry> dictionary = new Dictionary<(ushort, uint), PopRangeEntry>(num2);
|
||||
for (int j = 0; j < num2; j++)
|
||||
{
|
||||
ushort num3 = binaryReader.ReadUInt16();
|
||||
uint num4 = binaryReader.ReadUInt32();
|
||||
Vector3 position = new Vector3(binaryReader.ReadSingle(), binaryReader.ReadSingle(), binaryReader.ReadSingle());
|
||||
dictionary[(num3, num4)] = new PopRangeEntry(num3, num4, position);
|
||||
}
|
||||
_logger.LogDebug("Zone boundary cache loaded from disk ({ExitCount} exits, {PopCount} pops)", list.Count, dictionary.Count);
|
||||
return (list, dictionary);
|
||||
}
|
||||
catch (Exception exception)
|
||||
{
|
||||
_logger.LogWarning(exception, "Failed to load zone boundary cache, falling back to LGB scan");
|
||||
}
|
||||
try
|
||||
{
|
||||
File.Delete(path);
|
||||
}
|
||||
catch
|
||||
{
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private (List<ExitRangeEntry> ExitRanges, Dictionary<(ushort TerritoryId, uint InstanceId), PopRangeEntry> PopRangeIndex) CollectLgbData()
|
||||
{
|
||||
List<ExitRangeEntry> list = new List<ExitRangeEntry>();
|
||||
Dictionary<(ushort, uint), PopRangeEntry> dictionary = new Dictionary<(ushort, uint), PopRangeEntry>();
|
||||
HashSet<uint> hashSet = new HashSet<uint>();
|
||||
using (ExcelSheet<Aetheryte>.Enumerator enumerator = _dataManager.GetExcelSheet<Aetheryte>().GetEnumerator())
|
||||
foreach (Aetheryte item in _dataManager.GetExcelSheet<Aetheryte>())
|
||||
{
|
||||
int num = 1763362761;
|
||||
while (true)
|
||||
{
|
||||
int num2 = num;
|
||||
int num3 = 1763362761;
|
||||
int num4 = num2;
|
||||
switch ((num4 | num3) - (num4 & num3))
|
||||
{
|
||||
case 3:
|
||||
num = 1763362761;
|
||||
break;
|
||||
case 0:
|
||||
num = (enumerator.MoveNext() ? 1763362760 : 1763362763);
|
||||
break;
|
||||
case 1:
|
||||
hashSet.Add(enumerator.Current.Territory.RowId);
|
||||
num = 1763362761;
|
||||
break;
|
||||
case 2:
|
||||
goto end_IL_003b;
|
||||
}
|
||||
continue;
|
||||
end_IL_003b:
|
||||
break;
|
||||
}
|
||||
hashSet.Add(item.Territory.RowId);
|
||||
}
|
||||
ExcelSheet<TerritoryType> excelSheet = _dataManager.GetExcelSheet<TerritoryType>();
|
||||
HashSet<string> visitedLgbPaths = new HashSet<string>();
|
||||
using (ExcelSheet<TerritoryType>.Enumerator enumerator2 = excelSheet.GetEnumerator())
|
||||
bool cacheFileResources = _dataManager.GameData.Options.CacheFileResources;
|
||||
_dataManager.GameData.Options.CacheFileResources = false;
|
||||
try
|
||||
{
|
||||
int num = -1445218693;
|
||||
TerritoryType current = default(TerritoryType);
|
||||
while (true)
|
||||
foreach (TerritoryType item2 in excelSheet)
|
||||
{
|
||||
int num5 = num;
|
||||
int num3 = -1445218689;
|
||||
int num4 = num5;
|
||||
int num6 = num4 + num3;
|
||||
int num7 = num4 & num3;
|
||||
switch (num6 - (num7 + num7))
|
||||
if (hashSet.Contains(item2.RowId))
|
||||
{
|
||||
case 3:
|
||||
num = -1445218693;
|
||||
break;
|
||||
case 1:
|
||||
current = enumerator2.Current;
|
||||
num = ((!hashSet.Contains(current.RowId)) ? (-1445218693) : (-1445218691));
|
||||
break;
|
||||
case 2:
|
||||
ScanTerritory(list, dictionary, visitedLgbPaths, current);
|
||||
num = -1445218693;
|
||||
break;
|
||||
case 4:
|
||||
num = (enumerator2.MoveNext() ? (-1445218690) : (-1445218689));
|
||||
break;
|
||||
case 0:
|
||||
goto end_IL_010c;
|
||||
ScanTerritory(list, dictionary, visitedLgbPaths, item2);
|
||||
}
|
||||
continue;
|
||||
end_IL_010c:
|
||||
break;
|
||||
}
|
||||
foreach (TerritoryType item3 in excelSheet)
|
||||
{
|
||||
ScanTerritory(list, dictionary, visitedLgbPaths, item3);
|
||||
}
|
||||
}
|
||||
using (ExcelSheet<TerritoryType>.Enumerator enumerator2 = excelSheet.GetEnumerator())
|
||||
finally
|
||||
{
|
||||
int num = -1007277372;
|
||||
while (true)
|
||||
{
|
||||
int num8 = num;
|
||||
int num3 = -1007277372;
|
||||
int num4 = num8;
|
||||
int num9 = num4 + num3;
|
||||
int num10 = num4 & num3;
|
||||
switch (num9 - (num10 + num10))
|
||||
{
|
||||
case 2:
|
||||
num = -1007277372;
|
||||
break;
|
||||
case 1:
|
||||
{
|
||||
TerritoryType current2 = enumerator2.Current;
|
||||
ScanTerritory(list, dictionary, visitedLgbPaths, current2);
|
||||
num = -1007277372;
|
||||
break;
|
||||
}
|
||||
case 0:
|
||||
num = (enumerator2.MoveNext() ? (-1007277371) : (-1007277369));
|
||||
break;
|
||||
case 3:
|
||||
goto end_IL_01e4;
|
||||
}
|
||||
continue;
|
||||
end_IL_01e4:
|
||||
break;
|
||||
}
|
||||
_dataManager.GameData.Options.CacheFileResources = cacheFileResources;
|
||||
}
|
||||
return (ExitRanges: list, PopRangeIndex: dictionary);
|
||||
}
|
||||
|
||||
private static bool IsNavigableOverworld(ETerritoryIntendedUse use)
|
||||
{
|
||||
int num = ((use > ETerritoryIntendedUse.HousingOutdoor) ? (-754120289) : (-754120291));
|
||||
bool result = default(bool);
|
||||
while (true)
|
||||
switch (use)
|
||||
{
|
||||
int num2 = num;
|
||||
int num3 = -754120292;
|
||||
int num4 = num2;
|
||||
switch ((num4 | num3) - (num4 & num3))
|
||||
{
|
||||
case 5:
|
||||
num = ((use == ETerritoryIntendedUse.Eureka) ? (-754120298) : (-754120294));
|
||||
break;
|
||||
case 12:
|
||||
num = ((use - 21 <= ETerritoryIntendedUse.Inn) ? (-754120298) : (-754120295));
|
||||
break;
|
||||
case 11:
|
||||
num = ((use - 60 > ETerritoryIntendedUse.Overworld) ? (-754120300) : (-754120298));
|
||||
break;
|
||||
case 0:
|
||||
num = -754120291;
|
||||
break;
|
||||
case 6:
|
||||
num = -754120300;
|
||||
break;
|
||||
case 3:
|
||||
num = ((use > ETerritoryIntendedUse.Eureka) ? (-754120290) : (-754120304));
|
||||
break;
|
||||
case 1:
|
||||
num = ((use <= ETerritoryIntendedUse.Overworld) ? (-754120298) : (-754120303));
|
||||
break;
|
||||
case 8:
|
||||
result = false;
|
||||
num = -754120296;
|
||||
break;
|
||||
case 10:
|
||||
result = true;
|
||||
num = -754120296;
|
||||
break;
|
||||
case 9:
|
||||
num = ((use == ETerritoryIntendedUse.HousingOutdoor) ? (-754120298) : (-754120293));
|
||||
break;
|
||||
case 13:
|
||||
num = ((use == ETerritoryIntendedUse.OpeningArea) ? (-754120298) : (-754120299));
|
||||
break;
|
||||
case 4:
|
||||
return result;
|
||||
case 2:
|
||||
num = ((use - 48 <= ETerritoryIntendedUse.Overworld) ? (-754120298) : (-754120297));
|
||||
break;
|
||||
case 7:
|
||||
num = -754120300;
|
||||
break;
|
||||
}
|
||||
case ETerritoryIntendedUse.Town:
|
||||
case ETerritoryIntendedUse.Overworld:
|
||||
case ETerritoryIntendedUse.OpeningArea:
|
||||
case ETerritoryIntendedUse.HousingOutdoor:
|
||||
case ETerritoryIntendedUse.Firmament:
|
||||
case ETerritoryIntendedUse.SanctumOfTheTwelve:
|
||||
case ETerritoryIntendedUse.GoldSaucer:
|
||||
case ETerritoryIntendedUse.Eureka:
|
||||
case ETerritoryIntendedUse.Bozja:
|
||||
case ETerritoryIntendedUse.IslandSanctuary:
|
||||
case ETerritoryIntendedUse.CosmicExploration:
|
||||
case ETerritoryIntendedUse.OccultCrescent:
|
||||
return true;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.NoInlining)]
|
||||
private void ScanTerritory(List<ExitRangeEntry> exitRanges, Dictionary<(ushort TerritoryId, uint InstanceId), PopRangeEntry> popRangeIndex, HashSet<string> visitedLgbPaths, TerritoryType territory)
|
||||
{
|
||||
int num = ((territory.RowId != 0) ? 954333098 : 954333094);
|
||||
string text4 = default(string);
|
||||
int num16 = default(int);
|
||||
string text = default(string);
|
||||
int num9 = default(int);
|
||||
LayerCommon.InstanceObject instanceObject = default(LayerCommon.InstanceObject);
|
||||
int num11 = default(int);
|
||||
LayerCommon.Layer[] array = default(LayerCommon.Layer[]);
|
||||
LayerCommon.InstanceObject[] instanceObjects = default(LayerCommon.InstanceObject[]);
|
||||
while (true)
|
||||
if (territory.RowId == 0 || !IsNavigableOverworld((ETerritoryIntendedUse)territory.TerritoryIntendedUse.RowId))
|
||||
{
|
||||
int num2 = num;
|
||||
int num3 = 954333091;
|
||||
int num4 = num2;
|
||||
int num5 = num4 + num3;
|
||||
int num6 = num4 & num3;
|
||||
switch (num5 - (num6 + num6))
|
||||
return;
|
||||
}
|
||||
string text = territory.Bg.ExtractText();
|
||||
if (string.IsNullOrEmpty(text))
|
||||
{
|
||||
return;
|
||||
}
|
||||
int num = text.IndexOf("/level/", StringComparison.Ordinal);
|
||||
if (num < 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
string text2 = "bg/" + text.Substring(0, num + 1) + "level/planmap.lgb";
|
||||
if (!visitedLgbPaths.Add(text2))
|
||||
{
|
||||
return;
|
||||
}
|
||||
ushort num2 = (ushort)territory.RowId;
|
||||
LgbFile file;
|
||||
try
|
||||
{
|
||||
file = _dataManager.GetFile<LgbFile>(text2);
|
||||
}
|
||||
catch (Exception exception)
|
||||
{
|
||||
_logger.LogTrace(exception, "Failed to load {Path}", text2);
|
||||
return;
|
||||
}
|
||||
if (file == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
LayerCommon.Layer[] layers = file.Layers;
|
||||
for (int i = 0; i < layers.Length; i++)
|
||||
{
|
||||
LayerCommon.InstanceObject[] instanceObjects = layers[i].InstanceObjects;
|
||||
for (int j = 0; j < instanceObjects.Length; j++)
|
||||
{
|
||||
case 0:
|
||||
num = 954333094;
|
||||
break;
|
||||
case 5:
|
||||
return;
|
||||
case 4:
|
||||
{
|
||||
string text2 = global::_003CModule_003E._202E_200F_206C_202A_202D_200C_200C_200B_202B_200E_202C_202C_202D_206B_202E_206A_200D_206F_206F_200B_206F_206B_202E_206D_202C_202B_200B_206B_200E_202E_200D_200D_202A_206B_206C_202D_206B_202C_200B_200E_202E<string>(-747831667);
|
||||
string text3 = text4;
|
||||
int num15 = num16;
|
||||
num3 = 1;
|
||||
num4 = num15;
|
||||
text = _206A_206C_202B_202E_200D_200B_206E_206D_206D_206E_200B_202A_200F_202C_202B_200F_202D_200F_200D_202A_206E_200B_200E_202A_202E_206C_206E_202C_200D_200F_200E_206F_200E_202A_206E_206B_206F_200B_200C_206D_202E(text2, _200F_200B_206F_202B_202D_206F_200D_202C_206F_206C_206E_202E_202D_206E_206B_206C_202E_202D_206E_202E_206D_200B_202D_200D_202A_202D_206C_200C_206B_206B_200C_200B_200F_200D_200C_206B_206B_206A_206B_200C_202E(text3, 0, (num4 | num3) + (num4 & num3)), global::_003CModule_003E._200B_200C_206E_200D_206E_206D_200D_206D_206B_206F_202C_206B_206D_202D_206D_206D_202D_202E_200B_200E_206D_206A_206F_202A_202A_200F_206F_202E_206F_206A_206C_206F_202B_202B_206C_200E_200E_200D_206E_206D_202E<string>(-1939239349));
|
||||
num = (visitedLgbPaths.Add(text) ? 954333092 : 954333089);
|
||||
break;
|
||||
}
|
||||
case 1:
|
||||
num16 = _202A_206F_200D_202A_202C_206A_200C_202A_206C_206A_206F_200E_206D_206F_206C_200D_200B_202E_206F_202E_200E_206B_200C_206D_202A_202E_206E_200C_206E_206A_202B_206F_200F_206C_206A_200B_206B_202B_202E_200D_202E(text4, global::_003CModule_003E._202E_200F_206C_202A_202D_200C_200C_200B_202B_200E_202C_202C_202D_206B_202E_206A_200D_206F_206F_200B_206F_206B_202E_206D_202C_202B_200B_206B_200E_202E_200D_200D_202A_206B_206C_202D_206B_202C_200B_200E_202E<string>(16137996), StringComparison.Ordinal);
|
||||
num = ((num16 >= 0) ? 954333095 : 954333099);
|
||||
break;
|
||||
case 9:
|
||||
num = (IsNavigableOverworld((ETerritoryIntendedUse)territory.TerritoryIntendedUse.RowId) ? 954333093 : 954333088);
|
||||
break;
|
||||
case 8:
|
||||
return;
|
||||
case 10:
|
||||
return;
|
||||
case 3:
|
||||
return;
|
||||
case 2:
|
||||
return;
|
||||
case 6:
|
||||
text4 = territory.Bg.ExtractText();
|
||||
num = ((!_206E_206A_200C_200E_202E_202D_202C_200B_206E_206A_200F_206E_202C_206F_200D_200C_200D_200D_202E_206C_206D_202E_206F_206E_200D_202E_206A_206A_200E_206B_200C_202C_202B_200F_206D_200C_202E_206F_202A_206C_202E(text4)) ? 954333090 : 954333097);
|
||||
break;
|
||||
case 7:
|
||||
{
|
||||
ushort num7 = (ushort)territory.RowId;
|
||||
LgbFile file;
|
||||
try
|
||||
LayerCommon.InstanceObject instanceObject = instanceObjects[j];
|
||||
if (instanceObject.AssetType == LayerEntryType.ExitRange)
|
||||
{
|
||||
file = _dataManager.GetFile<LgbFile>(text);
|
||||
LayerCommon.ExitRangeInstanceObject exitRangeInstanceObject = (LayerCommon.ExitRangeInstanceObject)(object)instanceObject.Object;
|
||||
exitRanges.Add(new ExitRangeEntry(num2, instanceObject.InstanceId, new Vector3(instanceObject.Transform.Translation.X, instanceObject.Transform.Translation.Y, instanceObject.Transform.Translation.Z), exitRangeInstanceObject.TerritoryType, exitRangeInstanceObject.DestInstanceId, exitRangeInstanceObject.ReturnInstanceId, new Vector3(instanceObject.Transform.Rotation.X, instanceObject.Transform.Rotation.Y, instanceObject.Transform.Rotation.Z), new Vector3(instanceObject.Transform.Scale.X, instanceObject.Transform.Scale.Y, instanceObject.Transform.Scale.Z)));
|
||||
}
|
||||
catch (Exception ex)
|
||||
else if (instanceObject.AssetType == LayerEntryType.PopRange)
|
||||
{
|
||||
_206D_206B_200C_200C_200E_200F_202D_206E_200E_206C_206A_200C_200E_202E_202A_200B_206C_206B_206F_200D_202A_202B_206A_200C_202C_202D_200B_202A_202E_206F_206D_202A_206C_200D_200F_200B_200E_206F_206E_206B_202E((ILogger)_logger, ex, global::_003CModule_003E._206C_206C_200C_206D_206C_206F_202D_206B_206F_202C_200F_206A_200E_202A_202C_206F_200E_206A_200B_200F_202A_202C_206F_206A_200C_200D_200E_200E_202A_200C_206B_200E_206E_206C_200D_202B_206F_200C_202E_206E_202E<string>(422414557), new object[1] { text });
|
||||
return;
|
||||
popRangeIndex[(num2, instanceObject.InstanceId)] = new PopRangeEntry(num2, instanceObject.InstanceId, new Vector3(instanceObject.Transform.Translation.X, instanceObject.Transform.Translation.Y, instanceObject.Transform.Translation.Z));
|
||||
}
|
||||
num = ((file != null) ? (-1034574211) : (-1034574214));
|
||||
while (true)
|
||||
{
|
||||
int num8 = num;
|
||||
num3 = -1034574218;
|
||||
num4 = num8;
|
||||
switch ((num4 | num3) - (num4 & num3))
|
||||
{
|
||||
case 6:
|
||||
{
|
||||
int num12 = num9;
|
||||
num3 = 1;
|
||||
num4 = num12;
|
||||
int num13 = num4 ^ num3;
|
||||
int num14 = num4 & num3;
|
||||
num9 = num13 + (num14 + num14);
|
||||
num = -1034574220;
|
||||
break;
|
||||
}
|
||||
case 0:
|
||||
popRangeIndex[(num7, instanceObject.InstanceId)] = new PopRangeEntry(num7, instanceObject.InstanceId, new Vector3(instanceObject.Transform.Translation.X, instanceObject.Transform.Translation.Y, instanceObject.Transform.Translation.Z));
|
||||
num = -1034574224;
|
||||
break;
|
||||
case 9:
|
||||
num = ((num11 < array.Length) ? (-1034574210) : (-1034574219));
|
||||
break;
|
||||
case 11:
|
||||
array = _206B_202A_206C_200B_200F_202D_200C_202D_206C_206E_206C_206E_202E_200B_202D_202C_206F_206F_202B_200E_202A_200C_202E_206E_206D_206E_202B_206E_200F_206F_200F_200E_206F_202D_202C_206E_200D_200F_202A_200E_202E(file);
|
||||
num11 = 0;
|
||||
num = -1034574209;
|
||||
break;
|
||||
case 12:
|
||||
return;
|
||||
case 8:
|
||||
instanceObjects = array[num11].InstanceObjects;
|
||||
num9 = 0;
|
||||
num = -1034574220;
|
||||
break;
|
||||
case 7:
|
||||
{
|
||||
int num10 = num11;
|
||||
num3 = 1;
|
||||
num4 = num10;
|
||||
num11 = (num4 | num3) + (num4 & num3);
|
||||
num = -1034574209;
|
||||
break;
|
||||
}
|
||||
case 3:
|
||||
return;
|
||||
case 10:
|
||||
num = -1034574214;
|
||||
break;
|
||||
case 2:
|
||||
num = ((num9 < instanceObjects.Length) ? (-1034574222) : (-1034574223));
|
||||
break;
|
||||
case 1:
|
||||
{
|
||||
LayerCommon.ExitRangeInstanceObject exitRangeInstanceObject = (LayerCommon.ExitRangeInstanceObject)(object)instanceObject.Object;
|
||||
exitRanges.Add(new ExitRangeEntry(num7, instanceObject.InstanceId, new Vector3(instanceObject.Transform.Translation.X, instanceObject.Transform.Translation.Y, instanceObject.Transform.Translation.Z), exitRangeInstanceObject.TerritoryType, exitRangeInstanceObject.DestInstanceId, exitRangeInstanceObject.ReturnInstanceId, new Vector3(instanceObject.Transform.Rotation.X, instanceObject.Transform.Rotation.Y, instanceObject.Transform.Rotation.Z), new Vector3(instanceObject.Transform.Scale.X, instanceObject.Transform.Scale.Y, instanceObject.Transform.Scale.Z)));
|
||||
num = -1034574224;
|
||||
break;
|
||||
}
|
||||
case 5:
|
||||
num = ((instanceObject.AssetType != LayerEntryType.PopRange) ? (-1034574224) : (-1034574218));
|
||||
break;
|
||||
case 4:
|
||||
instanceObject = instanceObjects[num9];
|
||||
num = ((instanceObject.AssetType != LayerEntryType.ExitRange) ? (-1034574221) : (-1034574217));
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void _206C_200B_206A_202D_206B_206B_206B_202B_202C_202E_202D_206B_206B_202C_200E_202E_206A_202E_200D_206E_206E_206D_206A_206C_206A_202E_206B_202E_202B_206E_202C_200C_206B_202B_206F_206C_206C_202E_202C_206D_202E(ILogger P_0, string P_1, object[] P_2)
|
||||
{
|
||||
P_0.LogDebug(P_1, P_2);
|
||||
}
|
||||
|
||||
static void _202A_200E_202B_202E_200D_200F_200E_206F_206A_206C_202C_202B_200B_200C_200E_206A_206A_200E_202C_206F_202D_200B_202D_206A_200C_206D_200B_206D_206D_202B_206E_206B_206F_200E_202B_202D_200E_206C_202C_202D_202E(ILogger P_0, Exception P_1, string P_2, object[] P_3)
|
||||
{
|
||||
P_0.LogError(P_1, P_2, P_3);
|
||||
}
|
||||
|
||||
static bool _206E_206A_200C_200E_202E_202D_202C_200B_206E_206A_200F_206E_202C_206F_200D_200C_200D_200D_202E_206C_206D_202E_206F_206E_200D_202E_206A_206A_200E_206B_200C_202C_202B_200F_206D_200C_202E_206F_202A_206C_202E(string P_0)
|
||||
{
|
||||
return string.IsNullOrEmpty(P_0);
|
||||
}
|
||||
|
||||
static int _202A_206F_200D_202A_202C_206A_200C_202A_206C_206A_206F_200E_206D_206F_206C_200D_200B_202E_206F_202E_200E_206B_200C_206D_202A_202E_206E_200C_206E_206A_202B_206F_200F_206C_206A_200B_206B_202B_202E_200D_202E(string P_0, string P_1, StringComparison P_2)
|
||||
{
|
||||
return P_0.IndexOf(P_1, P_2);
|
||||
}
|
||||
|
||||
static string _200F_200B_206F_202B_202D_206F_200D_202C_206F_206C_206E_202E_202D_206E_206B_206C_202E_202D_206E_202E_206D_200B_202D_200D_202A_202D_206C_200C_206B_206B_200C_200B_200F_200D_200C_206B_206B_206A_206B_200C_202E(string P_0, int P_1, int P_2)
|
||||
{
|
||||
return P_0.Substring(P_1, P_2);
|
||||
}
|
||||
|
||||
static string _206A_206C_202B_202E_200D_200B_206E_206D_206D_206E_200B_202A_200F_202C_202B_200F_202D_200F_200D_202A_206E_200B_200E_202A_202E_206C_206E_202C_200D_200F_200E_206F_200E_202A_206E_206B_206F_200B_200C_206D_202E(string P_0, string P_1, string P_2)
|
||||
{
|
||||
return P_0 + P_1 + P_2;
|
||||
}
|
||||
|
||||
static void _206D_206B_200C_200C_200E_200F_202D_206E_200E_206C_206A_200C_200E_202E_202A_200B_206C_206B_206F_200D_202A_202B_206A_200C_202C_202D_200B_202A_202E_206F_206D_202A_206C_200D_200F_200B_200E_206F_206E_206B_202E(ILogger P_0, Exception P_1, string P_2, object[] P_3)
|
||||
{
|
||||
P_0.LogTrace(P_1, P_2, P_3);
|
||||
}
|
||||
|
||||
static LayerCommon.Layer[] _206B_202A_206C_200B_200F_202D_200C_202D_206C_206E_206C_206E_202E_200B_202D_202C_206F_206F_202B_200E_202A_200C_202E_206E_206D_206E_202B_206E_200F_206F_200F_200E_206F_202D_202C_206E_200D_200F_202A_200E_202E(LgbFile P_0)
|
||||
{
|
||||
return P_0.Layers;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue