Skip to content

@relu-interactives/spatial-ecs


@relu-interactives/spatial-ecs / index / World

Class: World ​

Defined in: World.ts:68

Constructors ​

Constructor ​

ts
new World(options): World;

Defined in: World.ts:99

Parameters ​

ParameterType
options{ scene: Scene; camera: PerspectiveCamera; renderer: WebGLRenderer; featureFlags?: WorldFeatureFlags; }
options.sceneScene
options.cameraPerspectiveCamera
options.rendererWebGLRenderer
options.featureFlags?WorldFeatureFlags

Returns ​

World

Methods ​

createEntity() ​

ts
createEntity(): number;

Defined in: World.ts:118

Returns ​

number


destroyEntity() ​

ts
destroyEntity(entityId): void;

Defined in: World.ts:126

Parameters ​

ParameterType
entityIdnumber

Returns ​

void


hasEntity() ​

ts
hasEntity(entityId): boolean;

Defined in: World.ts:153

Parameters ​

ParameterType
entityIdnumber

Returns ​

boolean


getEntities() ​

ts
getEntities(): number[];

Defined in: World.ts:157

Returns ​

number[]


getEntityCount() ​

ts
getEntityCount(): number;

Defined in: World.ts:161

Returns ​

number


addComponent() ​

ts
addComponent<T>(entityId, component): void;

Defined in: World.ts:165

Type Parameters ​

Type Parameter
T extends Component

Parameters ​

ParameterType
entityIdnumber
componentT

Returns ​

void


addComponents() ​

ts
addComponents<T>(entityId, components): void;

Defined in: World.ts:180

Type Parameters ​

Type Parameter
T extends Component

Parameters ​

ParameterType
entityIdnumber
componentsT[]

Returns ​

void


removeComponent() ​

ts
removeComponent<T>(entityId, componentType): void;

Defined in: World.ts:201

Type Parameters ​

Type Parameter
T extends Component

Parameters ​

ParameterType
entityIdnumber
componentTypeComponentClass<T>

Returns ​

void


getComponent() ​

ts
getComponent<T>(entityId, componentType): T | undefined;

Defined in: World.ts:209

Type Parameters ​

Type Parameter
T extends Component

Parameters ​

ParameterType
entityIdnumber
componentTypeComponentClass<T>

Returns ​

T | undefined


hasComponent() ​

ts
hasComponent<T>(entityId, componentType): boolean;

Defined in: World.ts:216

Type Parameters ​

Type Parameter
T extends Component

Parameters ​

ParameterType
entityIdnumber
componentTypeComponentClass<T>

Returns ​

boolean


query() ​

ts
query(...componentTypes): number[];

Defined in: World.ts:223

Parameters ​

ParameterType
...componentTypesComponentClass<Component>[]

Returns ​

number[]


isEntityVisible() ​

ts
isEntityVisible(entityId): boolean;

Defined in: World.ts:237

Returns true if the entity is currently visible (its Object3DRef.visibility is true), or if the entity has no Object3DRef component (entities without a scene object are always considered active). Systems use this to skip per-entity updates for hidden objects.

Parameters ​

ParameterType
entityIdnumber

Returns ​

boolean


getInputSystem() ​

ts
getInputSystem(): EcsSystem | null;

Defined in: World.ts:242

Returns ​

EcsSystem | null


getKeyDown() ​

ts
getKeyDown(key): boolean;

Defined in: World.ts:254

Parameters ​

ParameterType
keyKeyboardKey

Returns ​

boolean


getKeyUp() ​

ts
getKeyUp(key): boolean;

Defined in: World.ts:263

Parameters ​

ParameterType
keyKeyboardKey

Returns ​

boolean


getKey() ​

ts
getKey(key): boolean;

Defined in: World.ts:272

Parameters ​

ParameterType
keyKeyboardKey

Returns ​

boolean


getMouse() ​

ts
getMouse(button): boolean;

Defined in: World.ts:281

Parameters ​

ParameterType
buttonstring | number

Returns ​

boolean


getMouseDown() ​

ts
getMouseDown(button): boolean;

Defined in: World.ts:290

Parameters ​

ParameterType
buttonstring | number

Returns ​

boolean


getMouseUp() ​

ts
getMouseUp(button): boolean;

Defined in: World.ts:299

Parameters ​

ParameterType
buttonstring | number

Returns ​

boolean


getScrollClick() ​

ts
getScrollClick(): boolean;

Defined in: World.ts:308

Returns ​

boolean


getScrollClickDown() ​

ts
getScrollClickDown(): boolean;

Defined in: World.ts:317

Returns ​

boolean


getScrollClickUp() ​

ts
getScrollClickUp(): boolean;

Defined in: World.ts:326

Returns ​

boolean


getScrollDelta() ​

ts
getScrollDelta(): {
  x: number;
  y: number;
};

Defined in: World.ts:335

Returns ​

ts
{
  x: number;
  y: number;
}
NameTypeDefined in
xnumberWorld.ts:335
ynumberWorld.ts:335

consumeScrollDelta() ​

ts
consumeScrollDelta(): {
  x: number;
  y: number;
};

Defined in: World.ts:344

Returns ​

ts
{
  x: number;
  y: number;
}
NameTypeDefined in
xnumberWorld.ts:344
ynumberWorld.ts:344

getMousePosition() ​

ts
getMousePosition(): {
  x: number;
  y: number;
};

Defined in: World.ts:353

Returns ​

ts
{
  x: number;
  y: number;
}
NameTypeDefined in
xnumberWorld.ts:353
ynumberWorld.ts:353

getMouseDelta() ​

ts
getMouseDelta(): {
  x: number;
  y: number;
};

Defined in: World.ts:362

Returns ​

ts
{
  x: number;
  y: number;
}
NameTypeDefined in
xnumberWorld.ts:362
ynumberWorld.ts:362

consumeMouseDelta() ​

ts
consumeMouseDelta(): {
  x: number;
  y: number;
};

Defined in: World.ts:371

Returns ​

ts
{
  x: number;
  y: number;
}
NameTypeDefined in
xnumberWorld.ts:371
ynumberWorld.ts:371

getRapierModule() ​

ts
getRapierModule(): Promise<__module>;

Defined in: World.ts:380

Returns ​

Promise<__module>


getPhysicsWorld() ​

ts
getPhysicsWorld(): World | null;

Defined in: World.ts:398

Returns ​

World | null


setPhysicsWorld() ​

ts
setPhysicsWorld(physicsWorld): void;

Defined in: World.ts:402

Parameters ​

ParameterType
physicsWorldWorld | null

Returns ​

void


createPhysicsWorld() ​

ts
createPhysicsWorld(options?): Promise<World | null>;

Defined in: World.ts:406

Parameters ​

ParameterType
options?{ gravity?: { x?: number; y?: number; z?: number; }; }
options.gravity?{ x?: number; y?: number; z?: number; }
options.gravity.x?number
options.gravity.y?number
options.gravity.z?number

Returns ​

Promise<World | null>


lockMousePointer() ​

ts
lockMousePointer(): boolean;

Defined in: World.ts:425

Returns ​

boolean


unlockMousePointer() ​

ts
unlockMousePointer(): boolean;

Defined in: World.ts:456

Returns ​

boolean


isMousePointerLocked() ​

ts
isMousePointerLocked(): boolean;

Defined in: World.ts:477

Returns ​

boolean


getSystem() ​

ts
getSystem<T>(system): T;

Defined in: World.ts:493

Type Parameters ​

Type Parameter
T extends EcsSystem

Parameters ​

ParameterType
systemT

Returns ​

T


hasSystem() ​

ts
hasSystem<T>(system): boolean;

Defined in: World.ts:510

Type Parameters ​

Type Parameter
T extends EcsSystem

Parameters ​

ParameterType
systemT

Returns ​

boolean


addSystem() ​

ts
addSystem(system): void;

Defined in: World.ts:519

Parameters ​

ParameterType
systemEcsSystem

Returns ​

void


addSystems() ​

ts
addSystems(systems): void;

Defined in: World.ts:523

Parameters ​

ParameterType
systemsEcsSystem[]

Returns ​

void


setup() ​

ts
setup(__namedParameters): {
  objectManagementSystem: ObjectManagementSystem;
  transformSyncSystem: TransformSyncSystem;
  renderSystem: RenderSystem;
};

Defined in: World.ts:529

Parameters ​

ParameterType
__namedParameters{ systems: EcsSystem[]; isEditor?: boolean; }
__namedParameters.systemsEcsSystem[]
__namedParameters.isEditor?boolean

Returns ​

ts
{
  objectManagementSystem: ObjectManagementSystem;
  transformSyncSystem: TransformSyncSystem;
  renderSystem: RenderSystem;
}
NameTypeDefined in
objectManagementSystemObjectManagementSystemWorld.ts:530
transformSyncSystemTransformSyncSystemWorld.ts:531
renderSystemRenderSystemWorld.ts:532

isEditorMode() ​

ts
isEditorMode(): boolean;

Defined in: World.ts:627

Returns ​

boolean


isXrPresenting() ​

ts
isXrPresenting(): boolean;

Defined in: World.ts:644

true while an immersive WebXR session is actively presenting.

While presenting, three's WebXRManager OWNS the render camera: each frame updateUserCamera() writes the headset pose into the camera's position/quaternion/scale and copies the XR projection (including a derived fov) onto it. Systems that also drive the camera must stand down for the duration, or they ping-pong with the headset every frame and defeat their own dirty-checks.

Locomotion therefore moves the camera's PARENT (the XR rig) — three composes the head pose as parent.matrixWorld × headPose.

Returns ​

boolean


isXrPassthrough() ​

ts
isXrPassthrough(): boolean;

Defined in: World.ts:661

true while the session is compositing over the real world (passthrough).

Read from the session's environmentBlendMode rather than from what the app ASKED for: a request for immersive-ar can be granted as a plain opaque session, and the blend mode is the only thing that says what the user is actually looking at. additive (optical see-through) and alpha-blend (video passthrough) both mean the real world is visible behind the render.

The load-bearing consequence is that nothing may paint an opaque background: a skybox drawn over the whole framebuffer hides the room completely, which looks exactly like passthrough having failed.

Returns ​

boolean


pause() ​

ts
pause(): void;

Defined in: World.ts:674

Pauses world simulation. While paused, update() skips all system ticks so physics, animation, scripts, and rendering stop advancing. The last rendered frame remains frozen on-screen.

Call resume to continue.

Returns ​

void


resume() ​

ts
resume(): void;

Defined in: World.ts:682

Resumes world simulation after a previous pause call. Has no effect if the world is not paused.

Returns ​

void


isPaused() ​

ts
isPaused(): boolean;

Defined in: World.ts:696

Returns true if the world is currently paused.

Returns ​

boolean

Example ​

ts
if (this.world.isPaused()) {
  this.world.resume();
}

getScene() ​

ts
getScene(): Scene;

Defined in: World.ts:700

Returns ​

Scene


getCamera() ​

ts
getCamera(): PerspectiveCamera;

Defined in: World.ts:704

Returns ​

PerspectiveCamera


getRenderer() ​

ts
getRenderer(): WebGLRenderer;

Defined in: World.ts:708

Returns ​

WebGLRenderer


update() ​

ts
update(deltaTime): void;

Defined in: World.ts:712

Parameters ​

ParameterType
deltaTimenumber

Returns ​

void


dispose() ​

ts
dispose(): void;

Defined in: World.ts:719

Returns ​

void


setSelectedEntity() ​

ts
setSelectedEntity(entityId): void;

Defined in: World.ts:731

Parameters ​

ParameterType
entityIdnumber | null

Returns ​

void


getSelectedEntity() ​

ts
getSelectedEntity(): number | null;

Defined in: World.ts:753

Returns ​

number | null


getEntitiesByComponent() ​

ts
getEntitiesByComponent(component): WorldEntityView[];

Defined in: World.ts:813

Parameters ​

ParameterType
componentComponent

Returns ​

WorldEntityView[]


getEntitiesByName() ​

ts
getEntitiesByName(name): WorldEntityView[];

Defined in: World.ts:827

Parameters ​

ParameterType
namestring

Returns ​

WorldEntityView[]


getEntityByName() ​

ts
getEntityByName(name): WorldEntityView | null;

Defined in: World.ts:836

Parameters ​

ParameterType
namestring

Returns ​

WorldEntityView | null


getEntityById() ​

ts
getEntityById(entityId): WorldEntityView | null;

Defined in: World.ts:841

Parameters ​

ParameterType
entityIdnumber

Returns ​

WorldEntityView | null


getEntitiesChildren() ​

ts
getEntitiesChildren(entityId): WorldEntityView[];

Defined in: World.ts:849

Parameters ​

ParameterType
entityIdnumber

Returns ​

WorldEntityView[]


getEntitiesParent() ​

ts
getEntitiesParent(entityId): WorldEntityView | null;

Defined in: World.ts:863

Parameters ​

ParameterType
entityIdnumber

Returns ​

WorldEntityView | null


spawnPrefab() ​

ts
spawnPrefab(source, options?): Promise<number>;

Defined in: World.ts:878

Instantiate a prefab asset into this world at runtime — see spawnPrefab. Convenience wrapper so scripts and embedding apps can spawn without reaching for the object management system.

Parameters ​

ParameterType
sourceSpawnPrefabSource
options?SpawnPrefabOptions

Returns ​

Promise<number>


despawnPrefab() ​

ts
despawnPrefab(rootEntityId): number;

Defined in: World.ts:886

Remove a spawned prefab instance (root + descendants).

Parameters ​

ParameterType
rootEntityIdnumber

Returns ​

number


getObjectManagementSystem() ​

ts
getObjectManagementSystem(): ObjectManagementSystem;

Defined in: World.ts:890

Returns ​

ObjectManagementSystem


getEnvironmentComponent() ​

ts
getEnvironmentComponent(): Environment | undefined;

Defined in: World.ts:918

Returns the singleton Environment component for the scene, or undefined if no environment entity exists yet.

Mutate component.values directly to change skybox, fog, or gravity at runtime — EnvironmentSyncSystem picks up the changes next frame.

Returns ​

Environment | undefined

Example ​

ts
const env = this.world.getEnvironmentComponent();
if (env) {
  env.values.fog.type = "exponential";
  env.values.fog.exponential.density = 0.01;
}

getPostprocessingComponent() ​

ts
getPostprocessingComponent(): 
  | Postprocessing
  | undefined;

Defined in: World.ts:941

Returns the singleton Postprocessing component for the scene, or undefined if no postprocessing entity exists yet.

Mutate component.values directly to enable/disable effects or tweak parameters at runtime — PostprocessingSyncSystem picks up the changes next frame.

Returns ​

| Postprocessing | undefined

Example ​

ts
const pp = this.world.getPostprocessingComponent();
if (pp) {
  pp.values.bloom.enabled = true;
  pp.values.bloom.intensity = 2.0;
}

raycast() ​

ts
raycast(
   origin, 
   direction, 
   near?, 
   far?): IntersectionResult[];

Defined in: World.ts:971

Cast a ray from origin along direction and return every intersected entity-bound mesh, sorted by distance. Each result is a standard THREE.Intersection augmented with the owning entityId (or null if the hit object is not part of any tracked entity).

Parameters ​

ParameterTypeDefault valueDescription
originVec3undefinedWorld-space origin of the ray (THREE.Vector3 or { x, y, z }).
directionVec3undefinedWorld-space direction of the ray. Will be normalized internally; magnitude is ignored.
nearnumber0Minimum hit distance from the origin. Defaults to 0.
farnumberInfinityMaximum hit distance from the origin. Defaults to Infinity.

Returns ​

IntersectionResult[]

Example ​

ts
const hits = world.raycast(
  { x: 0, y: 1, z: 0 },
  { x: 0, y: 0, z: -1 },
);
if (hits[0]?.entityId !== null) {
  console.log("hit entity", hits[0].entityId, "at", hits[0].point);
}

raycastFrom() ​

ts
raycastFrom(
   entityId, 
   near?, 
   far?): IntersectionResult[];

Defined in: World.ts:1022

Cast a ray from an entity's world-space position along its forward direction (the +Z axis of its world matrix). Returns intersected entity-bound meshes sorted by distance, with the source entity itself filtered out so the ray does not hit the caster.

Parameters ​

ParameterTypeDefault valueDescription
entityIdnumberundefinedEntity to cast the ray from. Must have an Object3DRef.
nearnumber0Minimum hit distance from the origin. Defaults to 0.
farnumberInfinityMaximum hit distance from the origin. Defaults to Infinity.

Returns ​

IntersectionResult[]

Example ​

ts
const hits = world.raycastFrom(this.entityId, 0, 50);
const closest = hits[0];
if (closest && closest.entityId !== null) {
  console.log("looking at", closest.entityId);
}

getEntityScript() ​

ts
getEntityScript<T>(entityId): T | null;

Defined in: World.ts:1105

Type Parameters ​

Type ParameterDefault type
Tunknown

Parameters ​

ParameterType
entityIdnumber

Returns ​

T | null


getScripts() ​

ts
getScripts<T>(className): T[];

Defined in: World.ts:1118

Type Parameters ​

Type ParameterDefault type
Tunknown

Parameters ​

ParameterType
classNamestring

Returns ​

T[]


getScript() ​

ts
getScript<T>(className): T | null;

Defined in: World.ts:1159

Type Parameters ​

Type ParameterDefault type
Tunknown

Parameters ​

ParameterType
classNamestring

Returns ​

T | null


getAllEntities() ​

ts
getAllEntities(): WorldEntityView[];

Defined in: World.ts:1164

Returns ​

WorldEntityView[]


onSelectionChanged() ​

ts
onSelectionChanged(listener): () => void;

Defined in: World.ts:1170

Parameters ​

ParameterType
listenerSelectionListener

Returns ​

() => void


subscribe() ​

ts
subscribe(listener): () => void;

Defined in: World.ts:1178

Parameters ​

ParameterType
listenerStoreListener

Returns ​

() => void


getDebugSnapshot() ​

ts
getDebugSnapshot(maxDepth?): unknown;

Defined in: World.ts:1186

Parameters ​

ParameterTypeDefault value
maxDepthnumber3

Returns ​

unknown


getDebugSignature() ​

ts
getDebugSignature(maxDepth?): string;

Defined in: World.ts:1236

Parameters ​

ParameterTypeDefault value
maxDepthnumber3

Returns ​

string


getEntitiesSnapshot() ​

ts
getEntitiesSnapshot(entityIds, maxDepth?): {
  entities: number[];
  components: {
     component: string;
     entries: {
        entityId: number;
        value: unknown;
     }[];
  }[];
};

Defined in: World.ts:1245

Serialize ONLY the given entities into the same columnar {entities, components} shape as getDebugSnapshot (no systems, no selection). Used by prefab/scene subtree serialization.

Parameters ​

ParameterTypeDefault value
entityIdsnumber[]undefined
maxDepthnumber10

Returns ​

ts
{
  entities: number[];
  components: {
     component: string;
     entries: {
        entityId: number;
        value: unknown;
     }[];
  }[];
}
NameTypeDefined in
entitiesnumber[]World.ts:1249
components{ component: string; entries: { entityId: number; value: unknown; }[]; }[]World.ts:1250

createHistorySnapshot() ​

ts
createHistorySnapshot(): WorldHistorySnapshot;

Defined in: World.ts:1287

Returns ​

WorldHistorySnapshot


applyHistorySnapshot() ​

ts
applyHistorySnapshot(snapshot): void;

Defined in: World.ts:1308

Parameters ​

ParameterType
snapshotWorldHistorySnapshot

Returns ​

void