Skip to content

Class: LocomotionSystem

Defined in: packages/core/src/locomotion/locomotion.ts:64

Physics‑driven locomotion (slide, teleport, turn) backed by the @iwsdk/locomotor!Locomotor engine.

Remarks

  • Enable this system via WorldOptions.features.enableLocomotion.
  • Add LocomotionEnvironment to level meshes to make them walkable.
  • For moving platforms, use EnvironmentType.KINEMATIC and keep transforms updated.
  • In hand‑tracking mode, micro‑gesture controls can toggle turn/teleport using swipe gestures.

Example

ts
world.registerSystem(LocomotionSystem, {
  configData: { turningAngle: 45, slidingSpeed: 4.5 }
});

Extends

  • System<{ comfortAssist: { default: number; type: Float32; }; initialPlayerPosition: { default: [number, number, number]; type: Vec3; }; jumpButton: { default: any; type: String; }; jumpCooldown: { default: number; type: Float32; }; jumpHeight: { default: number; type: Float32; }; maxDropDistance: { default: number; type: Float32; }; rayGravity: { default: number; type: Float32; }; slidingSpeed: { default: number; type: Float32; }; turningAngle: { default: number; type: Float32; }; turningMethod: { default: TurningMethod; type: Int8; }; turningSpeed: { default: number; type: Float32; }; useWorker: { default: true; type: Boolean; }; }, { envs: { required: Component<{ _envHandle: { default: number; type: Float32; }; _initialized: { default: false; type: Boolean; }; type: { default: any; enum: any; type: Enum; }; }>[]; }; }, this>

Constructors

Constructor

new LocomotionSystem(_w, _qm, _p): LocomotionSystem

Defined in: node_modules/.pnpm/elics@3.3.0/node_modules/elics/lib/system.d.ts:73

Parameters

_w

World

_qm

QueryManager

_p

number

Returns

LocomotionSystem

Inherited from

createSystem( { envs: { required: [LocomotionEnvironment] }, }, { /** Starting player position before the first update. */ initialPlayerPosition: { type: Types.Vec3, default: [0, 0, 0] }, /** Run the locomotion engine in a WebWorker for better main‑thread perf. */ useWorker: { type: Types.Boolean, default: true }, /** Comfort vignette strength forwarded to SlideSystem. */ comfortAssist: { type: Types.Float32, default: 0.5 }, /** Maximum sliding speed (m/s). */ slidingSpeed: { type: Types.Float32, default: 5 }, /** Turning mode: snap vs smooth. */ turningMethod: { type: Types.Int8, default: TurningMethod.SnapTurn }, /** Degrees per snap turn. */ turningAngle: { type: Types.Float32, default: 45 }, /** Degrees per second for smooth turning. */ turningSpeed: { type: Types.Float32, default: 180 }, /** Parabolic ray gravity for teleport guide (negative). */ rayGravity: { type: Types.Float32, default: -0.4 }, /** Max drop allowed when projecting the player onto walkable surfaces. */ maxDropDistance: { type: Types.Float32, default: 5.0 }, /** Jump apex height in meters. */ jumpHeight: { type: Types.Float32, default: 1.5 }, /** Minimum seconds between jumps. */ jumpCooldown: { type: Types.Float32, default: 0.1 }, /** Button used to jump in SlideSystem. */ jumpButton: { type: Types.String, default: InputComponent.A_Button }, }, ).constructor

Properties

camera

readonly camera: PerspectiveCamera

Defined in: packages/core/src/ecs/system.ts:60

Inherited from

System.camera


cleanupFuncs

readonly cleanupFuncs: () => void[]

Defined in: packages/core/src/ecs/system.ts:63

Returns

void

Inherited from

System.cleanupFuncs


config

config: SystemConfigSignals<S>

Defined in: packages/core/src/ecs/system.ts:48

Inherited from

System.config


createEntity()

createEntity: () => Entity

Defined in: packages/core/src/ecs/system.ts:69

Returns

Entity

Inherited from

System.createEntity


globals

globals: Record<string, any>

Defined in: packages/core/src/ecs/system.ts:53

Inherited from

System.globals


input

readonly input: XRInputManager

Defined in: packages/core/src/ecs/system.ts:58

Inherited from

System.input


isPaused

isPaused: boolean

Defined in: packages/core/src/ecs/system.ts:47

Inherited from

System.isPaused


player

readonly player: XROrigin

Defined in: packages/core/src/ecs/system.ts:57

Inherited from

System.player


priority

priority: number

Defined in: packages/core/src/ecs/system.ts:52

Inherited from

System.priority


queries

queries: Record<keyof Q, Query>

Defined in: packages/core/src/ecs/system.ts:49

Inherited from

System.queries


queryManager

queryManager: QueryManager

Defined in: packages/core/src/ecs/system.ts:51

Inherited from

System.queryManager


renderer

readonly renderer: WebGLRenderer

Defined in: packages/core/src/ecs/system.ts:61

Inherited from

System.renderer


scene

readonly scene: Scene

Defined in: packages/core/src/ecs/system.ts:59

Inherited from

System.scene


visibilityState

readonly visibilityState: Signal<VisibilityState>

Defined in: packages/core/src/ecs/system.ts:62

Inherited from

System.visibilityState


world

world: World

Defined in: packages/core/src/ecs/system.ts:50

Inherited from

System.world


xrFrame

xrFrame: XRFrame

Defined in: packages/core/src/ecs/system.ts:55

Inherited from

System.xrFrame


xrManager

xrManager: WebXRManager

Defined in: packages/core/src/ecs/system.ts:54

Inherited from

System.xrManager

Methods

destroy()

destroy(): void

Defined in: packages/core/src/locomotion/locomotion.ts:276

Returns

void

Overrides

createSystem( { envs: { required: [LocomotionEnvironment] }, }, { /** Starting player position before the first update. */ initialPlayerPosition: { type: Types.Vec3, default: [0, 0, 0] }, /** Run the locomotion engine in a WebWorker for better main‑thread perf. */ useWorker: { type: Types.Boolean, default: true }, /** Comfort vignette strength forwarded to SlideSystem. */ comfortAssist: { type: Types.Float32, default: 0.5 }, /** Maximum sliding speed (m/s). */ slidingSpeed: { type: Types.Float32, default: 5 }, /** Turning mode: snap vs smooth. */ turningMethod: { type: Types.Int8, default: TurningMethod.SnapTurn }, /** Degrees per snap turn. */ turningAngle: { type: Types.Float32, default: 45 }, /** Degrees per second for smooth turning. */ turningSpeed: { type: Types.Float32, default: 180 }, /** Parabolic ray gravity for teleport guide (negative). */ rayGravity: { type: Types.Float32, default: -0.4 }, /** Max drop allowed when projecting the player onto walkable surfaces. */ maxDropDistance: { type: Types.Float32, default: 5.0 }, /** Jump apex height in meters. */ jumpHeight: { type: Types.Float32, default: 1.5 }, /** Minimum seconds between jumps. */ jumpCooldown: { type: Types.Float32, default: 0.1 }, /** Button used to jump in SlideSystem. */ jumpButton: { type: Types.String, default: InputComponent.A_Button }, }, ).destroy


init()

init(): void

Defined in: packages/core/src/locomotion/locomotion.ts:102

Returns

void

Overrides

System.init


play()

play(): void

Defined in: packages/core/src/ecs/system.ts:67

Returns

void

Inherited from

System.play


stop()

stop(): void

Defined in: packages/core/src/ecs/system.ts:68

Returns

void

Inherited from

System.stop


update()

update(delta): void

Defined in: packages/core/src/locomotion/locomotion.ts:241

Parameters

delta

number

Returns

void

Overrides

System.update