Files
Nitrox/NitroxServer-Subnautica/Resources/Parsers/WorldEntityInfoParser.cs
2025-07-06 00:23:46 +02:00

38 lines
1.4 KiB
C#

using System.Collections.Generic;
using AssetsTools.NET;
using AssetsTools.NET.Extra;
using NitroxServer_Subnautica.Resources.Parsers.Abstract;
using NitroxServer_Subnautica.Resources.Parsers.Helper;
using UWE;
namespace NitroxServer_Subnautica.Resources.Parsers;
public class WorldEntityInfoParser : ResourceFileParser<Dictionary<string, WorldEntityInfo>>
{
public override Dictionary<string, WorldEntityInfo> ParseFile()
{
Dictionary<string, WorldEntityInfo> worldEntitiesByClassId = new();
AssetFileInfo assetFileInfo = resourceFile.GetAssetInfo(assetsManager, "WorldEntityData", AssetClassID.MonoBehaviour);
AssetTypeValueField assetValue = assetsManager.GetBaseField(resourceInst, assetFileInfo);
foreach (AssetTypeValueField info in assetValue["infos"])
{
WorldEntityInfo entityData = new()
{
classId = info["classId"].AsString,
techType = (TechType)info["techType"].AsInt,
slotType = (EntitySlot.Type)info["slotType"].AsInt,
prefabZUp = info["prefabZUp"].AsBool,
cellLevel = (LargeWorldEntity.CellLevel)info["cellLevel"].AsInt,
localScale = info["localScale"].ToVector3()
};
worldEntitiesByClassId.Add(entityData.classId, entityData);
}
assetsManager.UnloadAll();
return worldEntitiesByClassId;
}
}