private void LoadDependencies_BeforeFlags(FAssetRegistryArchive Ar, FAssetRegistryVersionType version) { foreach (var dependsNode in PreallocatedDependsNodeDataBuffers) { dependsNode.SerializeLoad_BeforeFlags(Ar, version, PreallocatedDependsNodeDataBuffers); } }
private void Load(FAssetRegistryArchive Ar, FAssetRegistryVersionType version) { PreallocatedAssetDataBuffers = Ar.ReadArray(() => new FAssetData(Ar)); if (version < FAssetRegistryVersionType.AddedDependencyFlags) { var localNumDependsNodes = Ar.Read <int>(); PreallocatedDependsNodeDataBuffers = Ar.ReadArray(localNumDependsNodes, () => new FDependsNode()); if (localNumDependsNodes > 0) { LoadDependencies_BeforeFlags(Ar, version); } } else { var dependencySectionSize = Ar.Read <long>(); var dependencySectionEnd = Ar.Position + dependencySectionSize; var localNumDependsNodes = Ar.Read <int>(); PreallocatedDependsNodeDataBuffers = Ar.ReadArray(localNumDependsNodes, () => new FDependsNode()); if (localNumDependsNodes > 0) { LoadDependencies(Ar); } Ar.Seek(dependencySectionEnd, SeekOrigin.Begin); } var serializeHash = version < FAssetRegistryVersionType.AddedCookedMD5Hash; PreallocatedPackageDataBuffers = Ar.ReadArray(() => new FAssetPackageData(Ar, serializeHash)); }
public FAssetPackageData(FAssetRegistryArchive Ar, FAssetRegistryVersionType version) { PackageName = Ar.ReadFName(); DiskSize = Ar.Read <long>(); PackageGuid = Ar.Read <FGuid>(); if (version >= FAssetRegistryVersionType.AddedCookedMD5Hash) { CookedHash = new FMD5Hash(Ar); } if (version >= FAssetRegistryVersionType.WorkspaceDomain) { if (version >= FAssetRegistryVersionType.PackageFileSummaryVersionChange) { FileVersionUE = Ar.Read <FPackageFileVersion>(); } else { var ue4Version = Ar.Read <int>(); FileVersionUE = FPackageFileVersion.CreateUE4Version(ue4Version); } FileVersionLicenseeUE = Ar.Read <int>(); Flags = Ar.Read <uint>(); CustomVersions = Ar.ReadArray <FCustomVersion>(); } if (version >= FAssetRegistryVersionType.PackageImportedClasses) { ImportedClasses = Ar.ReadArray(Ar.ReadFName); } }
public void SerializeLoad_BeforeFlags(FAssetRegistryArchive Ar, FAssetRegistryVersionType version, FDependsNode[] a) { Identifier = new FAssetIdentifier(Ar); var numHard = Ar.Read <int>(); var numSoft = Ar.Read <int>(); var numName = Ar.Read <int>(); var numSoftManage = Ar.Read <int>(); var numHardManage = version >= FAssetRegistryVersionType.AddedHardManage ? Ar.Read <int>() : 0; var numReferencers = Ar.Read <int>(); PackageDependencies = new List <FDependsNode>(numHard + numSoft); NameDependencies = new List <FDependsNode>(numName); ManageDependencies = new List <FDependsNode>(numSoftManage + numHardManage); Referencers = new List <FDependsNode>(numReferencers); void SerializeNodeArray(int num, ref List <FDependsNode> dependencies) { for (var i = 0; i < num; i++) { var index = Ar.Read <int>(); if (index < 0 || index >= a.Length) { throw new ParserException(""); } var dependsNodes = a[index]; dependencies.Add(dependsNodes); } } SerializeNodeArray(numHard, ref PackageDependencies); SerializeNodeArray(numSoft, ref PackageDependencies); SerializeNodeArray(numName, ref NameDependencies); SerializeNodeArray(numSoftManage, ref ManageDependencies); SerializeNodeArray(numHardManage, ref ManageDependencies); SerializeNodeArray(numReferencers, ref Referencers); }
public void SerializeLoad_BeforeFlags(FAssetRegistryArchive Ar, FAssetRegistryVersionType version, FDependsNode[] preallocatedDependsNodeDataBuffer) { Identifier = new FAssetIdentifier(Ar); var numHard = Ar.Read <int>(); var numSoft = Ar.Read <int>(); var numName = Ar.Read <int>(); var numSoftManage = Ar.Read <int>(); var numHardManage = version >= FAssetRegistryVersionType.AddedHardManage ? Ar.Read <int>() : 0; var numReferencers = Ar.Read <int>(); PackageDependencies = new List <FDependsNode>(numHard + numSoft); NameDependencies = new List <FDependsNode>(numName); ManageDependencies = new List <FDependsNode>(numSoftManage + numHardManage); Referencers = new List <FDependsNode>(numReferencers); void SerializeNodeArray(int num, ref List <FDependsNode> outNodes) { for (var dependencyIndex = 0; dependencyIndex < num; ++dependencyIndex) { var index = Ar.Read <int>(); if (index < 0 || index >= preallocatedDependsNodeDataBuffer.Length) { throw new ParserException($"Index {index} doesn't exist in 'PreallocatedDependsNodeDataBuffers'"); } var dependsNode = preallocatedDependsNodeDataBuffer[index]; outNodes.Add(dependsNode); } } SerializeNodeArray(numHard, ref PackageDependencies); SerializeNodeArray(numSoft, ref PackageDependencies); SerializeNodeArray(numName, ref NameDependencies); SerializeNodeArray(numSoftManage, ref ManageDependencies); SerializeNodeArray(numHardManage, ref ManageDependencies); SerializeNodeArray(numReferencers, ref Referencers); }
private void Load(FAssetRegistryArchive Ar, FAssetRegistryVersionType version) { PreallocatedAssetDataBuffers = Ar.ReadArray(() => new FAssetData(Ar)); if (version < FAssetRegistryVersionType.AddedDependencyFlags) { var localNumDependsNodes = Ar.Read <int>(); PreallocatedDependsNodeDataBuffers = new FDependsNode[localNumDependsNodes]; for (int i = 0; i < localNumDependsNodes; i++) { PreallocatedDependsNodeDataBuffers[i] = new FDependsNode(i); } if (localNumDependsNodes > 0) { LoadDependencies_BeforeFlags(Ar, version); } } else { var dependencySectionSize = Ar.Read <long>(); var dependencySectionEnd = Ar.Position + dependencySectionSize; var localNumDependsNodes = Ar.Read <int>(); PreallocatedDependsNodeDataBuffers = new FDependsNode[localNumDependsNodes]; for (int i = 0; i < localNumDependsNodes; i++) { PreallocatedDependsNodeDataBuffers[i] = new FDependsNode(i); } if (localNumDependsNodes > 0) { LoadDependencies(Ar); } Ar.Position = dependencySectionEnd; } PreallocatedPackageDataBuffers = Ar.ReadArray(() => new FAssetPackageData(Ar, version)); }