@polygonjs/polygonjs
Version:
node-based WebGL 3D engine https://polygonjs.com
135 lines (134 loc) • 4.93 kB
TypeScript
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 {};