Skip to main content

Interface: EnvironmentPort

Defined in: webxr-environment/src/ports.ts:31

Applies an environment to a scene.

Every method takes the whole slot, or null to remove it. The director calls a method ONLY when that slot's value actually changed, so an adapter may treat each call as "this is new, act on it" and does not need to diff. That matters on IWSDK, where applying a change means setting _needsUpdate and re-running a system.

Methods​

applyAmbient()​

applyAmbient(light: AmbientLightSpec | null): void;

Defined in: webxr-environment/src/ports.ts:34

Parameters​

ParameterType
lightAmbientLightSpec | null

Returns​

void


applyFog()​

applyFog(fog: FogSpec | null): void;

Defined in: webxr-environment/src/ports.ts:33

Parameters​

ParameterType
fogFogSpec | null

Returns​

void


applyIbl()​

applyIbl(ibl: IblSpec | null): void;

Defined in: webxr-environment/src/ports.ts:41

The environment map. Required like the other four, because a slot the director flushes and a port may quietly not have is a slot that goes missing on one engine and nowhere else.

Parameters​

ParameterType
iblIblSpec | null

Returns​

void


applyKeyLight()​

applyKeyLight(light: KeyLightSpec | null): void;

Defined in: webxr-environment/src/ports.ts:35

Parameters​

ParameterType
lightKeyLightSpec | null

Returns​

void


applyLightEstimation()?​

optional applyLightEstimation(estimation: ResolvedLightEstimation | null): void;

Defined in: webxr-environment/src/ports.ts:62

Start or stop light estimation, with every default already resolved.

A port that implements this reports what happens through observe: pending once the runtime accepted the request, active with each estimate, unavailable when the session did not grant it. A port that does not implement it should report unsupported from observe, so the absence is visible instead of silent.

Parameters​

ParameterType
estimationResolvedLightEstimation | null

Returns​

void


applyOcclusion()?​

optional applyOcclusion(spec: OcclusionSpec | null): void;

Defined in: webxr-environment/src/ports.ts:51

Turn real-world depth occlusion on, or off with null.

OPTIONAL, because a host without depth is a host that has nothing to implement here - and because the director only calls it while passthrough is on, a port that never sees it is not necessarily a port on a device without depth. Report through observe rather than throwing.

Parameters​

ParameterType
specOcclusionSpec | null

Returns​

void


applySky()​

applySky(sky: SkySpec | null): void;

Defined in: webxr-environment/src/ports.ts:32

Parameters​

ParameterType
skySkySpec | null

Returns​

void


dispose()?​

optional dispose(): void;

Defined in: webxr-environment/src/ports.ts:86

Release anything the port created. Optional.

Returns​

void


observe()?​

optional observe(host: EnvironmentPortHost): void | (() => void);

Defined in: webxr-environment/src/ports.ts:71

Hand the port the object it talks back through.

Called once, at construction, before anything is applied. The returned function is called on dispose. This is the ONLY inbound path: see sensing.ts for why there is one and why it carries what it does.

Parameters​

ParameterType
hostEnvironmentPortHost

Returns​

void | (() => void)


update()?​

optional update(deltaMs: number): void;

Defined in: webxr-environment/src/ports.ts:83

Called from EnvironmentDirector.update, before any transition advances.

Only a port that has to POLL its host needs this, and both of the ones that do are sensor-backed: three.js reports depth sensing through a renderer flag that flips some frames after the session starts, and a light estimate has to be read out of the current XRFrame or not at all. Neither host pushes those, so without a tick they would need a loop of their own - which is the thing this package refuses to own.

Parameters​

ParameterType
deltaMsnumber

Returns​

void