Class: World
Defined in: packages/core/src/ecs/world.ts:101
World is the root ECS container, Three.js scene/renderer owner, and XR session gateway.
Remarks
- Construct a world with World.create (recommended) which wires the renderer, scene, default systems (Input, UI, Audio, Level) and starts the render loop.
- The world exposes convenience handles like input, player (the persistent player/XR origin), and World.assetManager.
- Feature systems (Grabbing, Locomotion) are opt‑in via WorldOptions.features.
Example
import { World, SessionMode } from '@iwsdk/core';
const container = document.getElementById('scene-container') as HTMLElement;
const world = await World.create(container, {
xr: { sessionMode: SessionMode.ImmersiveVR },
features: { enableLocomotion: true, enableGrabbing: true },
level: '/scenes/main.iwsdk.scene.json'
});Extends
World
Constructors
Constructor
new World():
World
Defined in: packages/core/src/ecs/world.ts:152
Returns
World
Overrides
ElicsWorld.constructor
Other
_rejectLevelLoad()
_rejectLevelLoad: (
reason) =>void
Defined in: packages/core/src/ecs/world.ts:123
Parameters
reason
unknown
Returns
void
_resolveLevelLoad()
_resolveLevelLoad: () =>
void
Defined in: packages/core/src/ecs/world.ts:122
Returns
void
activeLevel
activeLevel:
Signal<Entity>
Defined in: packages/core/src/ecs/world.ts:111
activeLevelId
activeLevelId:
string='level:default'
Defined in: packages/core/src/ecs/world.ts:112
assetManager
assetManager: typeof
AssetManager
Defined in: packages/core/src/ecs/world.ts:104
assets
assets:
RenderableAssetRegistry
Defined in: packages/core/src/ecs/world.ts:106
Renderable assets registered by the application manifest.
camera
camera:
PerspectiveCamera
Defined in: packages/core/src/ecs/world.ts:113
cameraEntity
cameraEntity:
Entity
Defined in: packages/core/src/ecs/world.ts:114
componentCatalog
componentCatalog:
SceneComponentCatalog
Defined in: packages/core/src/ecs/world.ts:108
Component definitions shared by scene validation and editor tooling.
input
input:
InputManager
Defined in: packages/core/src/ecs/world.ts:102
mcpRuntime?
optionalmcpRuntime:MCPRuntime
Defined in: packages/core/src/ecs/world.ts:127
MCP runtime for framework-specific tools. Set automatically during World.create().
player
player:
XROrigin
Defined in: packages/core/src/ecs/world.ts:103
playerEntity
playerEntity:
Entity
Defined in: packages/core/src/ecs/world.ts:141
Entity wrapping the XROrigin Group (persistent, survives level changes).
playerHeadEntity
playerHeadEntity:
Entity
Defined in: packages/core/src/ecs/world.ts:143
Entity wrapping the player head Group (persistent).
playerSpaceEntities
playerSpaceEntities:
object
Defined in: packages/core/src/ecs/world.ts:145
Entities for all XR input space Groups under the player rig (all persistent).
gripSpaces
gripSpaces:
object
gripSpaces.left
left:
Entity
gripSpaces.right
right:
Entity
head
head:
Entity
indexTipSpaces
indexTipSpaces:
object
indexTipSpaces.left
left:
Entity
indexTipSpaces.right
right:
Entity
raySpaces
raySpaces:
object
raySpaces.left
left:
Entity
raySpaces.right
right:
Entity
renderer
renderer:
WebGLRenderer
Defined in: packages/core/src/ecs/world.ts:115
requestedLevelDocument
requestedLevelDocument:
SceneDocument
Defined in: packages/core/src/ecs/world.ts:121
requestedLevelUrl
requestedLevelUrl:
string
Defined in: packages/core/src/ecs/world.ts:120
scene
scene:
Scene
Defined in: packages/core/src/ecs/world.ts:109
sceneEntity
sceneEntity:
Entity
Defined in: packages/core/src/ecs/world.ts:110
session
session:
XRSession
Defined in: packages/core/src/ecs/world.ts:116
visibilityState
visibilityState:
Signal<VisibilityState>
Defined in: packages/core/src/ecs/world.ts:117
xrDefaults
xrDefaults:
XROptions
Defined in: packages/core/src/ecs/world.ts:125
Default XR options used when calling World.launchXR without overrides.
xrEnabled
xrEnabled:
boolean=true
Defined in: packages/core/src/ecs/world.ts:119
Whether this world was created with XR support enabled.
createEntity()
createEntity():
Entity
Defined in: packages/core/src/ecs/world.ts:215
Returns
Entity
Overrides
ElicsWorld.createEntity
createTransformEntity()
createTransformEntity(
object?,parentOrOptions?):Entity
Defined in: packages/core/src/ecs/world.ts:237
Parameters
object?
Object3D
parentOrOptions?
Entity | { parent?: Entity; persistent?: boolean; }
Returns
Entity
destroy()
destroy():
void
Defined in: packages/core/src/ecs/world.ts:567
Tear down the world: destroy all registered systems (running their cleanupFuncs), then run world-level teardown callbacks (stop the render loop, remove the window resize listener). After calling this the world instance should be discarded.
Returns
void
Remarks
Not invoked during normal single-world app usage (where the world lives for the page lifetime); provided so tests, hot-reload, and multi-world hosts can release the render loop, listeners, and per-system subscriptions instead of leaking them. Individual failures are caught so one bad teardown does not block the rest.
exitXR()
exitXR():
void
Defined in: packages/core/src/ecs/world.ts:373
Returns
void
getActiveRoot()
getActiveRoot():
Object3D
Defined in: packages/core/src/ecs/world.ts:600
Returns
Object3D
getPersistentRoot()
getPersistentRoot():
Object3D
Defined in: packages/core/src/ecs/world.ts:604
Returns
Object3D
getSceneEntity()
getSceneEntity(
nodeId):Entity
Defined in: packages/core/src/ecs/world.ts:329
Find the ECS entity that owns an authored scene node.
Parameters
nodeId
string
Returns
Entity
getSceneObject()
getSceneObject<
T>(nodeId):T
Defined in: packages/core/src/ecs/world.ts:294
Find an authored scene object by its stable scene node id.
Type Parameters
T
T extends Object3D<Object3DEventMap> = Object3D<Object3DEventMap>
Parameters
nodeId
string
Returns
T
launchXR()
launchXR(
xrOptions?):void
Defined in: packages/core/src/ecs/world.ts:347
Parameters
xrOptions?
Partial<XROptions>
Returns
void
loadLevel()
loadLevel(
url?):Promise<void>
Defined in: packages/core/src/ecs/world.ts:352
Request a native scene JSON level change; LevelSystem performs the work and resolves.
Parameters
url?
string
Returns
Promise<void>
loadSceneDocument()
loadSceneDocument(
document):Promise<void>
Defined in: packages/core/src/ecs/world.ts:363
Request an in-memory native scene document level load; LevelSystem performs the work and resolves.
Parameters
document
SceneDocument
Returns
Promise<void>
registerComponent()
registerComponent(
component):this
Defined in: packages/core/src/ecs/world.ts:595
Parameters
component
Component
Returns
this
Overrides
ElicsWorld.registerComponent
requireSceneEntity()
requireSceneEntity(
nodeId):Entity
Defined in: packages/core/src/ecs/world.ts:337
Find the ECS entity for an authored scene node or throw.
Parameters
nodeId
string
Returns
Entity
requireSceneObject()
requireSceneObject<
T>(nodeId):T
Defined in: packages/core/src/ecs/world.ts:318
Find an authored scene object or throw a node-oriented lookup error.
Type Parameters
T
T extends Object3D<Object3DEventMap> = Object3D<Object3DEventMap>
Parameters
nodeId
string
Returns
T
update()
update(
delta,time):void
Defined in: packages/core/src/ecs/world.ts:591
Parameters
delta
number
time
number
Returns
void
Overrides
ElicsWorld.update
create()
staticcreate(container,options?):Promise<World>
Defined in: packages/core/src/ecs/world.ts:629
Initialize a new WebXR world with renderer, scene, default systems, and optional level.
Parameters
container
HTMLElement
HTML container to which the renderer canvas will be appended.
options?
Runtime configuration, see WorldOptions.
Returns
Promise<World>
A promise that resolves to the initialized World.
Remarks
- This call enables the Input, UI and Audio systems by default.
- Use WorldOptions.features to enable Locomotion or Grabbing.
- If WorldOptions.level is provided, the LevelSystem will load it after assets are preloaded.
See
/getting-started/01-hello-xr
XR Runtime
xrFrame
Get Signature
get xrFrame():
XRFrame
Defined in: packages/core/src/ecs/world.ts:413
The current XRFrame for this animation-loop tick, or null outside XR. Use it for raw WebXR access such as frame.getViewerPose(...), frame.getHitTestResults(...), or frame.getDepthInformation(...).
Remarks
Read this synchronously inside an World.onXRFrame callback or a System update() — the frame object is only valid for the current tick and must not be retained across frames.
Returns
XRFrame
xrReferenceSpace
Get Signature
get xrReferenceSpace():
XRReferenceSpace
Defined in: packages/core/src/ecs/world.ts:423
The active XRReferenceSpace that IWSDK resolved for the session, or null outside XR. Pass it to XRHitTestResult.getPose(space) or XRFrame.getViewerPose(space) to obtain poses in the world's tracking space.
Returns
XRReferenceSpace
xrSession
Get Signature
get xrSession():
XRSession
Defined in: packages/core/src/ecs/world.ts:398
The active XRSession, or undefined outside XR. Alias of World.session, exposed for discoverability alongside World.xrFrame and World.xrReferenceSpace.
Remarks
Enable WebXR features your app needs (e.g. hit-test, depth sensing) via World.create(container, { xr: { features: { hitTest: true, depthSensing: true } } }). Once granted, they appear in world.xrSession.enabledFeatures.
Returns
XRSession
getHitTestResults()
getHitTestResults(
source):XRHitTestResult[]
Defined in: packages/core/src/ecs/world.ts:535
Read the hit-test results for a source from the current XRFrame. Returns an empty array when there is no active frame.
Parameters
source
XRHitTestSource
Returns
XRHitTestResult[]
onXRFrame()
onXRFrame(
callback): () =>void
Defined in: packages/core/src/ecs/world.ts:447
Register a callback that runs once per render-loop tick with the live XRFrame, without having to author a System. Useful for per-pixel world alignment, hit-test queries, depth sampling, and object-anchored overlays.
Parameters
callback
Invoked with (frame, delta, time) while an XR session is active.
Returns
An unsubscribe function; call it to stop receiving frames.
():
void
Returns
void
Example
const source = await world.requestHitTestSource({ space: world.xrReferenceSpace! });
const stop = world.onXRFrame((frame) => {
if (!source) return;
const [hit] = world.getHitTestResults(source);
const pose = hit?.getPose(world.xrReferenceSpace!);
// place a world-locked label at pose.transform.position ...
});requestHitTestSource()
requestHitTestSource(
options):Promise<XRHitTestSource>
Defined in: packages/core/src/ecs/world.ts:484
Request an XRHitTestSource on the active session. Requires the hit-test feature (enable via World.create(container, { xr: { features: { hitTest: true } } })).
Parameters
options
XRHitTestOptionsInit
Returns
Promise<XRHitTestSource>
The hit-test source, or undefined if there is no active session or the request is unavailable/unsupported. The underlying XRSession.requestHitTestSource rejects when the hit-test feature was not granted; that rejection is caught and surfaced as undefined (logged as a warning) so callers can await without their own try/catch.
requestHitTestSourceForTransientInput()
requestHitTestSourceForTransientInput(
options):Promise<XRTransientInputHitTestSource>
Defined in: packages/core/src/ecs/world.ts:512
Request an XRTransientInputHitTestSource (e.g. for screen taps or transient controllers). Requires the hit-test feature.
Parameters
options
XRTransientInputHitTestOptionsInit
Returns
Promise<XRTransientInputHitTestSource>
The transient hit-test source, or undefined if unavailable. As with World.requestHitTestSource, a rejection from the underlying WebXR call (e.g. feature not granted) is caught and surfaced as undefined.