sorcherer
Version:
A library for attaching dynamic HTML overlays to Three.js Object3D instances with distance-based scaling, rotation, auto-centering, and DOM culling.
56 lines (48 loc) • 2.08 kB
TypeScript
import type { Camera, Object3D, Vector3 } from 'three';
export interface SorchererBootstrapOptions {
interval?: number;
autoAttach?: boolean;
autoRegister?: boolean;
}
export declare class Sorcherer {
static allLoadedElements: Set<Sorcherer>;
static objectRegistry: Map<string, Object3D>;
static instancesById: Record<string, Sorcherer>;
static readonly elements: Record<string, Sorcherer>;
static defaultScaleMultiplier: number;
static container: HTMLDivElement | null;
static autoUpdateRunning: boolean;
object: Object3D | null;
offset: Vector3;
simulate3D: boolean;
simulateRotation: boolean;
autoCenter: boolean;
scaleMultiplier: number;
template: string;
dynamicVars: Record<string, string>;
[key: string]: any;
constructor(
object: Object3D,
offset?: Vector3,
simulate3D?: boolean,
simulateRotation?: boolean,
autoCenter?: boolean,
scaleMultiplier?: number
);
createSpan(): HTMLElement | { style: Record<string, string>; classList: { add(): void }; innerHTML: string; parentElement: null };
attach(innerHTML: string): void;
renderDynamicVars(): void;
setDynamicVar(varName: string, value: string): void;
getDynamicVar(varName: string): string | undefined;
bufferInstance(camera: Camera, renderer: { domElement: { clientWidth?: number; clientHeight?: number; width?: number; height?: number } }): void;
dispose(): void;
attachClone(targetObject: Object3D, newName?: string): Sorcherer;
static ensureContainerAttached(): void;
static bufferAll(camera: Camera, renderer: { domElement: { clientWidth?: number; clientHeight?: number; width?: number; height?: number } }): void;
static autoSetup(camera: Camera, renderer: { domElement: any }, interval?: number): void;
static stopAutoSetup(): void;
static registerObject3D(object: Object3D): void;
static registerScene(scene: Object3D): void;
static bootstrap(scene: Object3D, camera: Camera, renderer: { domElement: any }, options?: SorchererBootstrapOptions): void;
static attachFromRealm(root?: Document | Element): void;
}