Skip to content

Class: World

Defined in: packages/core/src/ecs/world.ts:81

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

ts
import { World, SessionMode } from '@iwsdk/core';

const container = document.getElementById('scene-container') as HTMLDivElement;
const world = await World.create(container, {
  xr: { sessionMode: SessionMode.ImmersiveVR },
  features: { enableLocomotion: true, enableGrabbing: true },
  level: '/glxf/Composition.glxf'
});

Extends

  • World

Constructors

Constructor

new World(): World

Defined in: packages/core/src/ecs/world.ts:118

Returns

World

Overrides

ElicsWorld.constructor

Properties

_resolveLevelLoad()

_resolveLevelLoad: () => void

Defined in: packages/core/src/ecs/world.ts:95

Returns

void


activeLevel

activeLevel: Signal<Entity>

Defined in: packages/core/src/ecs/world.ts:87


activeLevelId

activeLevelId: string = 'level:default'

Defined in: packages/core/src/ecs/world.ts:88


assetManager

assetManager: typeof AssetManager

Defined in: packages/core/src/ecs/world.ts:84


camera

camera: PerspectiveCamera

Defined in: packages/core/src/ecs/world.ts:89


cameraEntity

cameraEntity: Entity

Defined in: packages/core/src/ecs/world.ts:90


input

input: InputManager

Defined in: packages/core/src/ecs/world.ts:82


mcpRuntime?

optional mcpRuntime: MCPRuntime

Defined in: packages/core/src/ecs/world.ts:99

MCP runtime for framework-specific tools. Set automatically during World.create().


player

player: XROrigin

Defined in: packages/core/src/ecs/world.ts:83


playerEntity

playerEntity: Entity

Defined in: packages/core/src/ecs/world.ts:107

Entity wrapping the XROrigin Group (persistent, survives level changes).


playerHeadEntity

playerHeadEntity: Entity

Defined in: packages/core/src/ecs/world.ts:109

Entity wrapping the player head Group (persistent).


playerSpaceEntities

playerSpaceEntities: object

Defined in: packages/core/src/ecs/world.ts:111

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: 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:91


requestedLevelUrl

requestedLevelUrl: string

Defined in: packages/core/src/ecs/world.ts:94


scene

scene: Scene

Defined in: packages/core/src/ecs/world.ts:85


sceneEntity

sceneEntity: Entity

Defined in: packages/core/src/ecs/world.ts:86


session

session: XRSession

Defined in: packages/core/src/ecs/world.ts:92


visibilityState

visibilityState: Signal<VisibilityState>

Defined in: packages/core/src/ecs/world.ts:93


xrDefaults

xrDefaults: XROptions

Defined in: packages/core/src/ecs/world.ts:97

Default XR options used when calling World.launchXR without overrides.

Methods

createEntity()

createEntity(): Entity

Defined in: packages/core/src/ecs/world.ts:176

Returns

Entity

Overrides

ElicsWorld.createEntity


createTransformEntity()

createTransformEntity(object?, parentOrOptions?): Entity

Defined in: packages/core/src/ecs/world.ts:180

Parameters

object?

Object3D

parentOrOptions?

Entity | { parent?: Entity; persistent?: boolean; }

Returns

Entity


destroy()

destroy(): void

Defined in: packages/core/src/ecs/world.ts:269

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:241

Returns

void


getActiveRoot()

getActiveRoot(): Object3D

Defined in: packages/core/src/ecs/world.ts:302

Returns

Object3D


getPersistentRoot()

getPersistentRoot(): Object3D

Defined in: packages/core/src/ecs/world.ts:306

Returns

Object3D


launchXR()

launchXR(xrOptions?): void

Defined in: packages/core/src/ecs/world.ts:229

Parameters

xrOptions?

Partial<XROptions>

Returns

void


loadLevel()

loadLevel(url?): Promise<void>

Defined in: packages/core/src/ecs/world.ts:234

Request a level change; LevelSystem performs the work and resolves.

Parameters

url?

string

Returns

Promise<void>


registerComponent()

registerComponent(component): this

Defined in: packages/core/src/ecs/world.ts:297

Parameters

component

Component

Returns

this

Overrides

ElicsWorld.registerComponent


update()

update(delta, time): void

Defined in: packages/core/src/ecs/world.ts:293

Parameters

delta

number

time

number

Returns

void

Overrides

ElicsWorld.update


create()

static create(container, options?): Promise<World>

Defined in: packages/core/src/ecs/world.ts:331

Initialize a new WebXR world with renderer, scene, default systems, and optional level.

Parameters

container

HTMLDivElement

HTML container to which the renderer canvas will be appended.

options?

WorldOptions

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

Privacy | Terms