Runtime Management

Bundle downloads and memory are managed by the RuntimeBundleManager. Each bundle has a custom manifest which contains the CRC and file hash, as well as dependencies in the form of a list of identifiers. These are downloaded and loaded first, before the requested bundle gets loaded.

Empty Slots

LoadReplaceAsync treats BundleIdentifier.None as an empty slot rather than an error, and drops it from both the load and the replace list. Callers track visuals per slot - VisualManager holds one identifier for the avatar and one for the environment - so a slot that holds nothing (startup, an empty stage, the in-scene orb, or an agent with no environment) naturally passes None down on the next switch. A warning about a bundle that could not be unloaded therefore always names a real identifier, and means the manager’s tracking has desynced from what is loaded.