UNPKG

@lightningjs/renderer

Version:
28 lines (27 loc) 1.37 kB
import type { FpsUpdatePayload, FrameTickPayload } from '../common/CommonTypes.js'; import type { ShaderMap } from '../core/CoreShaderManager.js'; import type { INode, INodeWritableProps, ITextNode, ITextNodeWritableProps } from './INode.js'; import type { IShaderController } from './IShaderController.js'; import type { RendererMain, RendererMainSettings, SpecificShaderRef } from './RendererMain.js'; /** * This interface is to be implemented by Core Drivers * * @remarks * Both the {@link MainCoreDriver} and the {@link ThreadXCoreDriver} exist * that implement this interface to support both the single-threaded and * multi-threaded Core modes. */ export interface ICoreDriver { init(rendererMain: RendererMain, rendererSettings: Required<RendererMainSettings>, canvas: HTMLCanvasElement): Promise<void>; createNode(props: INodeWritableProps): INode; createTextNode(props: ITextNodeWritableProps): ITextNode; createShaderController<ShType extends keyof ShaderMap>(shaderRef: SpecificShaderRef<ShType>): IShaderController; destroyNode(node: INode): void; getRootNode(): INode; releaseTexture(textureDescId: number): void; onCreateNode(node: INode): void; onBeforeDestroyNode(node: INode): void; onFpsUpdate(fpsData: FpsUpdatePayload): void; onFrameTick(frameTickData: FrameTickPayload): void; onIdle?(): void; }