Skip to content

@modoki/engine / index / LoadSceneOptions

Interface: LoadSceneOptions ​

Scene & Prefabs ​

clearMarks? ​

optional clearMarks?: boolean

Drop EVERY override mark before spawning (default true).

The global clear defends against ecs-id reuse ACROSS WORLDS — a world-scoped concern that was attached to a call back when one loadSceneFile call WAS one world. Phase 5 (base scenes) broke that equivalence: a chain loads N scene files into ONE world, bases first and the primary last, so the primary's call wiped the marks the base's call had just seeded and every carried/chained prefab instance serialized with EMPTY overrides (finding "A9" — docs/reviews/a9-carried-instance-overrides-investigation.md, defect 1).

SceneManager therefore clears ONCE per staging world and passes false for every chain + carry call. Left true by default so every other caller (tests, and any future single-scene caller) keeps byte-identical behaviour — per-entity hygiene against id reuse is independent of this flag and always runs (clearOverrideMarks(entity.id()) on each fresh spawn, below).


fetchPrefab ​

fetchPrefab: (path) => Promise<object | null>

Fetch a prefab JSON file given its path. Returns null if not found.

Parameters ​

path ​

string

Returns ​

Promise<object | null>


loadModels? ​

optional loadModels?: boolean

Whether to preload model templates from ModelSource entities


onDeletePlaceholder? ​

optional onDeletePlaceholder?: (entityId) => void

Called before deleting a placeholder entity during prefab re-instantiation

Parameters ​

entityId ​

number

Returns ​

void


onEntitySpawned? ​

optional onEntitySpawned?: (entity, oldId) => void

Called after all entities are spawned (runtime: registerEntity, editor: undo tracking)

Parameters ​

entity ​

any

oldId ​

number

Returns ​

void


onInstantiatePrefab? ​

optional onInstantiatePrefab?: (source, parentId, rootTransform, oldEntityId, rootExtraTraits?, overrides?, structure?, nestedOverrides?, rootGuid?, rootEditorFolder?) => void

Called to re-instantiate a prefab instance. The caller handles prefab fetch + entity creation. rootExtraTraits are traits the scene file added on the prefab-instance root beyond what the prefab itself defines (e.g. user-added Rotate3D, AnimatePosition). overrides carries per-localId field-level edits captured at save time so children's local edits survive reload.

Parameters ​

source ​

string

parentId ​

number

rootTransform ​

Record<string, unknown> | undefined

oldEntityId ​

number

rootExtraTraits? ​

Record<string, unknown>

overrides? ​

Record<number, Record<string, Record<string, unknown>>>

structure? ​

InstanceStructureData

nestedOverrides? ​

Record<number, Record<number, Record<string, Record<string, unknown>>>>

rootGuid? ​

string

The scene-authored stable guid for the instance root (SceneEntityEntry.guid), applied to the spawned root so it's addressable and anchors member derivation.

rootEditorFolder? ​

string

The editor Hierarchy folder tag (EntityAttributes.editorFolder) captured on the instance root, re-applied so a foldered prefab instance stays in its folder across reload. Empty/undefined = ungrouped.

Returns ​

void


world? ​

optional world?: World

Target world for entity spawning. Defaults to getCurrentWorld(). SceneManager passes the staging nextWorld so entities are isolated until the swap.

Built with Modoki.