@lightningjs/renderer
Version:
Lightning 3 Renderer
71 lines (70 loc) • 2.23 kB
TypeScript
import type { FpsUpdatePayload, FrameTickPayload } from '../../common/CommonTypes.js';
/**
* @module
* @description
* Message types / utils for communication between the main worker and the
* worker worker.
*/
/**
* Defines the shape of a message sent from the main worker to the worker
*/
export interface ThreadXRendererMessage {
type: string;
}
/**
* An initialization message sent from the main worker to the renderer worker
*/
export interface ThreadXRendererInitMessage extends ThreadXRendererMessage {
type: 'init';
canvas: OffscreenCanvas;
appWidth: number;
appHeight: number;
txMemByteThreshold: number;
boundsMargin: number | [number, number, number, number];
deviceLogicalPixelRatio: number;
devicePhysicalPixelRatio: number;
clearColor: number;
fpsUpdateInterval: number;
enableContextSpy: boolean;
numImageWorkers: number;
coreExtensionModule: string | null;
}
/**
* A message sent from the main worker to the renderer worker to release a
* texture
*/
export interface ThreadXRendererReleaseTextureMessage extends ThreadXRendererMessage {
type: 'releaseTexture';
textureDescId: number;
}
/**
* A message sent from the renderer worker to the main worker to update the FPS
*/
export interface ThreadXRendererFpsUpdateMessage extends ThreadXRendererMessage {
type: 'fpsUpdate';
fpsData: FpsUpdatePayload;
}
/**
* A message sent from the renderer worker to the main worker to update the FPS
*/
export interface ThreadXRendererFrameTickMessage extends ThreadXRendererMessage {
type: 'frameTick';
frameTickData: FrameTickPayload;
}
/**
* A map of message types to message shapes
*/
export interface ThreadXRendererMessageMap {
init: ThreadXRendererInitMessage;
releaseTexture: ThreadXRendererReleaseTextureMessage;
fpsUpdate: ThreadXRendererFpsUpdateMessage;
frameTick: ThreadXRendererFrameTickMessage;
}
/**
* Type guard util for a message sent from the main worker to the renderer worker
*
* @param type
* @param message
* @returns
*/
export declare function isThreadXRendererMessage<Type extends keyof ThreadXRendererMessageMap>(type: Type, message: unknown): message is ThreadXRendererMessageMap[Type];