public sealed class ContentCatalogThe index a build produces and the runtime reads: address in, chunk out.
No guide page documents this yet — the page shows what the code says about itself.
Remarks
Everything downstream of the content build is a lookup in here. A game asks for ui/textures/hero; the catalog says which chunk that is, which bundle holds it, whether that bundle is on the device or has to be downloaded first, and what else has to be loaded alongside it. Without the catalog an address is just a string.
It is immutable, and that is what makes the remote update story work. A shipped application carries a local catalog; a content update publishes a remote one; the runtime merges the second over the first and gets a third. Nothing is mutated, so a half-applied update cannot exist — either the merge produced a catalog or the old one is still in use. See MergedWith.
Addresses are not paths. They are slash-separated by convention because that is what people type, and Match globs over them, but nothing here resolves .., normalises case or touches a filesystem. An address is a name a build chose.
Fields and properties (7)
public int VersionThe catalog format's version, so an old runtime refuses a new file rather than misreading it.
public ObjectId BuildHashWhat the build hashed to. Two catalogs with the same value describe the same content.
public string TargetWhich target this was built for — Windows, Android/Vulkan.
public IReadOnlyCollection<CatalogEntry> EntriesEvery entry, in address order.
public IReadOnlyCollection<CatalogBundle> BundlesEvery bundle.
public IReadOnlyCollection<string> LabelsEvery label that anything carries.
public int CountHow many addresses there are.
Methods (13)
public ContentCatalog(int version, ObjectId buildHash, string target, IEnumerable<CatalogEntry> entries, IEnumerable<CatalogBundle> bundles)Builds a catalog.
public bool TryGet(string address, out CatalogEntry entry)Finds one address.
public bool TryGetAddress(AssetReference reference, out string address)What address answers a vx: reference.
public bool TryGetAddress(AssetId asset, out string address)What address answers an asset's main object.
public bool TryGetBundle(string name, out CatalogBundle bundle)Finds the bundle an entry names.
public ImmutableArray<string> ByLabel(string label)Every address carrying a label, in address order.
public ImmutableArray<string> Match(string pattern)Every address matching a glob, in address order.
public ImmutableArray<string> Closure(params ReadOnlySpan<string> addresses)Everything that has to be loaded for an address to be usable, the address itself included, in dependency-first order.
public ContentCatalog MergedWith(ContentCatalog update)A catalog with another laid over it: the remote update applied to what shipped.
public static bool Matches(string address, string pattern)Whether an address matches a glob.
public long DownloadSize(IEnumerable<string> addresses, Func<CatalogBundle, bool>? isCached = null)How many bytes would have to be downloaded to make an address loadable.
public ImmutableArray<CatalogBundle> RemoteBundlesFor(IEnumerable<string> addresses)Every remote bundle that has to be present before some addresses can load.
public CatalogEntry Get(string address)Finds the entry for an address, or says which one is missing.
Used by (38)
- ContentAddressablesRemote
- GameModelsThirdPersonShooter
- PlayerRigThirdPersonShooter
- ProgramAddressablesRemote
- AssetManagerVixen.Assets
- AssetMaterialSourceTestsVixen.Engine.Renderer.Tests
- AssetTextureSourceTestsVixen.Engine.Renderer.Tests
- CatalogFormatVixen.Assets
- CatalogFormatTestsVixen.Assets.Tests
- CatalogReferenceTestsVixen.Assets.Tests
- ClaimResolverVixen.Assets
- CompositorContentTestsVixen.Assets.Tests
- ContentCatalogExtensionsVixen.Assets
- ContentCatalogTestsVixen.Assets.Tests
- ContentMountVixen.App.Hosting
- ContentUpdateVixen.Assets
- ContentUpdateResultVixen.Assets
- LooseContentSourceVixen.Assets
- ReferenceWorldVixen.Assets.Tests
- RemoteContentTestsVixen.Assets.Tests
- RemoteWorldVixen.Assets.Tests
- StreamedContentTestsVixen.Assets.Tests
- UpdateWorldVixen.Assets.Tests
- VixenApplicationVixen.App.Hosting
- WorldVixen.Assets.Tests
- WorldRendererTestsVixen.Engine.Renderer.Tests
- BuildPlannerTestsVixen.Editor.Assets.Tests
- ContentBuildResultVixen.Editor.Assets
- ContentBuilderVixen.Editor.Assets
- ContentBuilderTestsVixen.Editor.Assets.Tests
- ContentMountTestsVixen.App.Tests
- DoctorRunnerVixen.Cli
- LooseContentVixen.Editor.Assets
- LooseContentTestsVixen.Editor.Assets.Tests
- RemoteContentMountTestsVixen.App.Tests
- SceneManifestTestsVixen.Editor.Assets.Tests
- StartupSceneTestsVixen.App.Tests
- VixenCommandTestsVixen.Cli.Tests