UNPKG

@polygonjs/polygonjs

Version:

node-based WebGL 3D engine https://polygonjs.com

135 lines (134 loc) 4.93 kB
import { Number2 } from '../../types/GlobalTypes'; import { Object3D, LineSegments, InstancedMesh, Mesh, Points, Group, Scene } from 'three'; import type { AmbientLight, CubeCamera, DirectionalLight, HemisphereLight, LightProbe, Material, LOD, OrthographicCamera, PerspectiveCamera, PointLight, RectAreaLight, SpotLight } from 'three'; import { GroupCollectionData } from './EntityGroupCollection'; import { CoreObjectType, ObjectContent } from './ObjectContent'; import type { PhysicalCamera, ShapedAreaLight, PhysicalSpotLight } from '../render/PBR/three-gpu-pathtracer'; interface MaterialsByString { [propName: string]: Material; } export declare enum ObjectType { AMBIENT_LIGHT = "AmbientLight", AREA_LIGHT = "AreaLight", CUBE_CAMERA = "CubeCamera", DIRECTIONAL_LIGHT = "DirectionalLight", GROUP = "Group", HEMISPHERE_LIGHT = "HemisphereLight", INSTANCED_MESH = "InstancedMesh", LIGHT_PROBE = "LightProbe", LINE_SEGMENTS = "LineSegments", LOD = "LOD", MESH = "Mesh", OBJECT3D = "Object3D", ORTHOGRAPHIC_CAMERA = "OrthographicCamera", PERSPECTIVE_CAMERA = "PerspectiveCamera", PHYSICAL_CAMERA = "PhysicalCamera", PHYSICAL_SPOT_LIGHT = "PhysicalSpotLight", POINT_LIGHT = "PointLight", POINTS = "Points", SCENE = "Scene", SHAPED_AREA_LIGHT = "ShapedAreaLight", SPOT_LIGHT = "SpotLight", UNKNOWN = "Unknown", QUAD = "Quad" } export declare const OBJECT_TYPES: ObjectType[]; interface ObjectContentConstructor<T extends CoreObjectType> { new (arg0: any, arg1?: any, arg2?: any): ObjectContent<T>; } export type DefaultObjectContentConstructor = ObjectContentConstructor<CoreObjectType>; export interface ObjectByObjectType { [ObjectType.AMBIENT_LIGHT]: AmbientLight; [ObjectType.AREA_LIGHT]: RectAreaLight; [ObjectType.CUBE_CAMERA]: CubeCamera; [ObjectType.DIRECTIONAL_LIGHT]: DirectionalLight; [ObjectType.GROUP]: Group; [ObjectType.HEMISPHERE_LIGHT]: HemisphereLight; [ObjectType.INSTANCED_MESH]: InstancedMesh; [ObjectType.LIGHT_PROBE]: LightProbe; [ObjectType.LINE_SEGMENTS]: LineSegments; [ObjectType.LOD]: LOD; [ObjectType.MESH]: Mesh; [ObjectType.OBJECT3D]: Object3D; [ObjectType.POINT_LIGHT]: PointLight; [ObjectType.POINTS]: Points; [ObjectType.ORTHOGRAPHIC_CAMERA]: OrthographicCamera; [ObjectType.PERSPECTIVE_CAMERA]: PerspectiveCamera; [ObjectType.PHYSICAL_CAMERA]: PhysicalCamera; [ObjectType.PHYSICAL_SPOT_LIGHT]: PhysicalSpotLight; [ObjectType.SCENE]: Scene; [ObjectType.SHAPED_AREA_LIGHT]: ShapedAreaLight; [ObjectType.SPOT_LIGHT]: SpotLight; [ObjectType.UNKNOWN]: null; [ObjectType.QUAD]: null; } export interface ObjectData { type: ObjectType; name: string | null; childrenCount: number; groupData: GroupCollectionData; verticesCount: number; pointsCount: number; primitivesCount: number; primitiveName: string; } type ObjectTypeCheckFunction = (object: ObjectContent<CoreObjectType>) => ObjectType | undefined; export interface ObjectTypeData { type: ObjectType; checkFunc: ObjectTypeCheckFunction; ctor: DefaultObjectContentConstructor; humanName: string; } export declare function registerObjectType(data: ObjectTypeData): void; export declare function objectTypeFromObject(object: ObjectContent<CoreObjectType>): ObjectType; export declare function dataFromObject(object: ObjectContent<CoreObjectType>): ObjectTypeData; export declare function objectConstructorByObjectType<O extends ObjectType>(objectType: O): ObjectByObjectType[O]; export declare const DEFAULT_MATERIALS: MaterialsByString; export declare enum AttribClass { POINT = "point", VERTEX = "vertex", PRIMITIVE = "primitive", OBJECT = "object", CORE_GROUP = "coreGroup" } export declare const ATTRIBUTE_CLASSES: Array<AttribClass>; export declare const ATTRIBUTE_CLASSES_WITHOUT_CORE_GROUP: Array<AttribClass>; export declare const AttribClassMenuEntries: { name: AttribClass; value: number; }[]; export declare const AttribClassMenuEntriesWithoutCoreGroup: { name: AttribClass; value: number; }[]; export declare enum AttribType { NUMERIC = "numeric", STRING = "string" } export declare const ATTRIBUTE_TYPES: Array<AttribType>; export declare const AttribTypeMenuEntries: { name: AttribType; value: number; }[]; export declare enum AttribSize { FLOAT = 1, VECTOR2 = 2, VECTOR3 = 3, VECTOR4 = 4 } export declare const ATTRIBUTE_SIZES: Array<AttribSize>; export declare const ATTRIBUTE_SIZE_RANGE: Number2; export declare enum ComponentName { x = "x", y = "y", z = "z", w = "w", r = "r", g = "g", b = "b" } export type ComponentIndex = 0 | 1 | 2 | 3; export declare const COMPONENT_INDICES: Record<ComponentName, ComponentIndex>; export declare const DOT = "."; export type GroupString = string; export {};