Method FillMissingLoadables
FillMissingLoadables(ContentRootAsset, string)
Give a root that was not written by Generate() the references its entries need: a resolved
Loadable per entry, created from the entry's own assetPath.
public static int FillMissingLoadables(ContentRootAsset root, string scope)
Parameters
rootContentRootAssetscopestring
Returns
Remarks
A root the generator writes carries a Loadable per entry (CreateLoadableObjectId), and that is what the
runtime reads to find the asset in the built directory - ContentDirectoryStore.TryRegister skips any
entry whose Loadable is not valid, so an entry without one is an entry that does not exist at runtime.
A mod's root is written by hand (or by its tooling), where a key and a path are the whole declaration -
see ModAssetBuilder, which is documented as finding roots "a modder adds". Nothing filled the
references for those, and the failure is silent all the way down: the directory builds, ships one entry
whose Loadable reads Invalid, and every key is skipped at registration. Measured 2026-09-23 on the
__dt_modbundle fixture: Registered '…' — 1 root(s), 0 key(s), and the play-mode gate failed on
"the refresh must register the mod's content directory" while the registration was the part that worked.
The rule for picking the object out of the file is ResolveEntryTarget(string, string, string, string, StringBuilder, string) — the same one the
generator uses - so a mod's …/Model.fbx[Clip] resolves by the same rule as the game's own.