UNPKG

@pmndrs/uikit

Version:

Build performant 3D user interfaces with Three.js and yoga.

63 lines (62 loc) 2.71 kB
import { InstancedBufferAttribute, Object3D } from 'three'; import { MaterialClass } from './panel-material.js'; import { InstancedPanel } from './instanced-panel.js'; import { OrderInfo, WithReversePainterSortStableCache } from '../order.js'; import { Signal } from '@preact/signals-core'; import { MergedProperties } from '../properties/merged.js'; import { RootContext } from '../context.js'; export type ShadowProperties = { receiveShadow?: boolean; castShadow?: boolean; }; export type RenderProperties = { depthWrite?: boolean; depthTest?: boolean; renderOrder?: number; }; export type PanelGroupProperties = { panelMaterialClass?: MaterialClass; } & ShadowProperties & RenderProperties; export declare function computedPanelGroupDependencies(propertiesSignal: Signal<MergedProperties>): import("@preact/signals-core").ReadonlySignal<Required<PanelGroupProperties>>; export declare class PanelGroupManager { private readonly root; private readonly objectRef; private map; constructor(root: WithReversePainterSortStableCache & Pick<RootContext, 'onFrameSet' | 'requestFrame' | 'requestRender' | 'pixelSize'>, objectRef: { current?: Object3D | null; }); init(abortSignal: AbortSignal): void; private traverse; getGroup(majorIndex: number, properties: Required<PanelGroupProperties>): InstancedPanelGroup; } export declare class InstancedPanelGroup { private readonly object; readonly root: WithReversePainterSortStableCache & Pick<RootContext, 'requestFrame' | 'requestRender' | 'pixelSize'>; private readonly orderInfo; private readonly panelGroupProperties; private mesh?; instanceMatrix: InstancedBufferAttribute; instanceData: InstancedBufferAttribute; instanceClipping: InstancedBufferAttribute; private readonly instanceMaterial; private buckets; private elementCount; private bufferElementSize; instanceDataOnUpdate: InstancedBufferAttribute['addUpdateRange']; private nextUpdateTime; private nextUpdateTimeoutRef; private activateElement; private setElementIndex; private bufferCopyWithin; private clearBufferAt; constructor(object: Object3D, root: WithReversePainterSortStableCache & Pick<RootContext, 'requestFrame' | 'requestRender' | 'pixelSize'>, orderInfo: OrderInfo, panelGroupProperties: Required<PanelGroupProperties>); private updateCount; private requestUpdate; private requestUpdateNextFrame; insert(bucketIndex: number, panel: InstancedPanel): void; delete(bucketIndex: number, elementIndex: number | undefined, panel: InstancedPanel): void; onFrame(): void; private update; private resize; destroy(): void; }