@polygonjs/polygonjs
Version:
node-based WebGL 3D engine https://polygonjs.com
57 lines (56 loc) • 2.2 kB
TypeScript
import { ColorRepresentation, PerspectiveCamera, RectAreaLight, SpotLight } from 'three';
export interface PerspectiveCameraOptions {
fov: number;
aspect: number;
near: number;
far: number;
}
type PerspectiveCameraConstructor = (options: PerspectiveCameraOptions) => PerspectiveCamera;
export interface PerspectiveCameraUpdateOptions<C extends PerspectiveCamera> {
camera: C;
params: {
apertureBlades: number;
fStop: number;
focusDistance: number;
apertureRotation: number;
anamorphicRatio: number;
};
}
export type PerspectiveCameraUpdate<C extends PerspectiveCamera> = (options: PerspectiveCameraUpdateOptions<C>) => void;
export interface AreaLightOptions {
color: ColorRepresentation;
intensity: number;
width: number;
height: number;
}
type AreaLightConstructor = (options: AreaLightOptions) => RectAreaLight;
type SpotLightConstructor = () => SpotLight;
export interface SpotLightUpdateOptions<L extends SpotLight> {
spotLight: L;
textureName: string;
}
export type SpotLightUpdate<L extends SpotLight> = (options: SpotLightUpdateOptions<L>) => void;
export declare enum GeneratorName {
PERSPECTIVE_CAMERA = "perspectiveCamera",
PERSPECTIVE_CAMERA_UPDATE = "perspectiveCameraUpdate",
AREA_LIGHT = "areaLight",
SPOT_LIGHT = "spotLight",
SPOT_LIGHT_UPDATE = "spotLightUpdate"
}
type GeneratorMap = {
[GeneratorName.PERSPECTIVE_CAMERA]: PerspectiveCameraConstructor;
[GeneratorName.PERSPECTIVE_CAMERA_UPDATE]: PerspectiveCameraUpdate<PerspectiveCamera>;
[GeneratorName.AREA_LIGHT]: AreaLightConstructor;
[GeneratorName.SPOT_LIGHT]: SpotLightConstructor;
[GeneratorName.SPOT_LIGHT_UPDATE]: SpotLightUpdate<SpotLight>;
};
declare class CoreSceneObjectsFactoryClass {
private constructor();
private static _instance;
static instance(): CoreSceneObjectsFactoryClass;
private _generators;
generator<G extends GeneratorName>(generatorName: G): GeneratorMap[G];
registerGenerator<G extends GeneratorName>(generatorName: G, generator: GeneratorMap[G]): void;
}
export declare const CoreSceneObjectsFactory: CoreSceneObjectsFactoryClass;
export {};