AssetManager PrimaryAssetIdからChunkIDを確認する方法について

HttpChunkInstallerによるダウンロード対象のChunkを、PrimaryAssetIdから確認し、
各Chunkのダウンロード管理を行いたいのですが、
PrimaryAssetIdからChunkIdを取得する方法が分かりませんので、ご教示いただけないでしょうか。

以上、ご回答よろしくお願い致します。

お世話になっております。

返答が遅れてしまい申し訳ありません。

現在調査を進めておりますので、もう少々お待ちいただけますでしょうか。

よろしくお願いします。

了解致しました。

引き続き、よろしくお願い致します。

お世話になっております。

了解致しました。
引き続き、よろしくお願い致します。

お世話になっております。

以下のコードを用いることで、エディタ上でもPrimaryAssetIdからChunkIDを取得することができました。

FAssetData AssetData;
TArray FoundChunks;
if (AssetManager.GetPrimaryAssetData(PrimaryAssetId, AssetData))
{
	if (AssetManager.GetPackageChunkIds(AssetData.PackageName, nullptr, AssetData.ChunkIDs, FoundChunks))
	{
		if (FoundChunks.Num() > 0)
		{
			return FoundChunks[0];
		}
	}
}

ただし、GetPackageChunkIds関数はエディタ限定の関数であるため、パッケージではAssetDataのChunkIDsの値を返すようにする必要があるかと思います。

こちら一度挙動をご確認頂けますと幸いです。
よろしくお願いいたします。

お世話になっております。

こちら長らくの間おまたせしており、大変申し訳ありません。
優先度を上げて調査いたしますので、後もう少々お待ちいただけますと幸いです。

よろしくお願いいたします。

お世話になっております。

UAssetManager::GetPrimaryAssetData で取得した FAssetData が持つChunkIDs を使うことで、指定のPrimaryAssetIdからChunkIDを取得できることを確認いたしました。しかし、パッケージでは正常に動作するのですが、エディタ上ではChunkIDsが空になっているためChunkIDを取得できない問題も同時に確認しています。

現在エディタ上でもPrimaryAssetIdからChunkIDを取得する方法について調査しています。
よろしくお願いいたします。

お世話になっております。

ご回答ありがとうございます。

確認させていただいたところ、PackageModeでは、AssetManager::GetPrimaryAssetData にて、
正しいChunkIdが取得できることを確認できました。

ただ、EditorModeでは、ご教示いただいた方法では、ChunkIdは取得できませんでしたが、
初期化時に、AssetManager.UpdateManagementDatabase() をコールしたところ、
ChunkIdが取得できるようになりました。

また、上記の初期化済み条件でしたら、AssetManager.GetPrimaryAssetRules(PrimaryAssetId)で
取得できるChunkIdに正しい値が設定されておりましたので、暫定的で利用しておりました。

現在、UE4.19で確認しておりますが、この挙動について確認いただけると幸いです。

以上、よろしくお願い致します。

お世話になっております。

GetPrimaryAssetRules での取得方法を再確認したところ、
常駐リソース(ChunkID=0)の場合のみ、1が返る挙動でしたので補足させていただきます。

ご教示いただいた実装方法であれば、全てのチャンクにおいて
正しいIDを取得できましたので、こちらを採用させていただいたいと思います。

以上、よろしくお願いします。

お世話になっております。

大変申し訳ありません。ご指摘の通り、ChunkIDを取得するためにはデータベースの構築・更新が必要になります。そのため、該当関数を直前に呼び出すフローで問題ありません。

よろしくお願いいたします。

お世話になっております。

本件について、パッケージモードおよびエディタモード共に、
ご教示していただいた方法で、PrimaryAssetId からChunkIDを確認することができました。

ご対応ありがとうございました。

以上、よろしくお願い致します。

お世話になっております。

ご報告いただきありがとうございます。正常に動いて何よりです。
解決までお時間をいただき、本当に申し訳ありませんでした。

引き続きよろしくお願いいたします。