Allocation-safe asset reading

Try to not pre-allocate memory during asset reading
This commit is contained in:
VaDiM
2025-07-24 04:06:14 +03:00
parent 925f5c12a3
commit 35b24990c6
40 changed files with 617 additions and 706 deletions

View File

@@ -237,7 +237,7 @@ namespace AssetStudioCLI
#region Face
int sum = 0;
for (var i = 0; i < m_Mesh.m_SubMeshes.Length; i++)
for (var i = 0; i < m_Mesh.m_SubMeshes.Count; i++)
{
sb.AppendLine($"g {m_Mesh.m_Name}_{i}");
int indexCount = (int)m_Mesh.m_SubMeshes[i].indexCount;

View File

@@ -198,7 +198,7 @@ namespace AssetStudioCLI
var i = 0;
foreach (var assetsFile in assetsManager.assetsFileList)
{
var preloadTable = Array.Empty<PPtr<AssetStudio.Object>>();
var preloadTable = new List<PPtr<AssetStudio.Object>>();
foreach (var asset in assetsFile.Objects)
{
var assetItem = new AssetItem(asset);
@@ -221,7 +221,7 @@ namespace AssetStudioCLI
foreach (var m_Container in m_AssetBundle.m_Container)
{
var preloadIndex = m_Container.Value.preloadIndex;
var preloadSize = isStreamedSceneAssetBundle ? preloadTable.Length : m_Container.Value.preloadSize;
var preloadSize = isStreamedSceneAssetBundle ? preloadTable.Count : m_Container.Value.preloadSize;
var preloadEnd = preloadIndex + preloadSize;
for (var k = preloadIndex; k < preloadEnd; k++)
{