Table of Contents

Method FillMissingLoadables

Namespace
GrindFest.Content.Editor
Assembly
GrindFest.dll

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

root ContentRootAsset
scope string

Returns

int

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.