UNPKG

@polygonjs/polygonjs

Version:

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

54 lines (48 loc) 1.55 kB
// import {BaseNodeType} from '../../../nodes/_Base'; export enum AssemblerName { GL_CLOTH = 'GL_CLOTH', GL_LINE = 'GL_LINE', GL_MESH_BASIC = 'GL_MESH_BASIC', GL_MESH_DEPTH = 'GL_MESH_DEPTH', GL_MESH_DISTANCE = 'GL_MESH_DISTANCE', GL_MESH_LAMBERT = 'GL_MESH_LAMBERT', GL_MESH_PHONG = 'GL_MESH_PHONG', GL_MESH_PHYSICAL = 'GL_MESH_PHYSICAL', GL_MESH_STANDARD = 'GL_MESH_STANDARD', GL_MESH_TOON = 'GL_MESH_TOON', GL_PARTICLES = 'GL_PARTICLES', GL_POINTS = 'GL_POINTS', GL_POST = 'GL_POST', GL_RAYMARCHING = 'GL_RAYMARCHING', GL_TEXTURE = 'GL_TEXTURE', GL_TEXTURE_2D_ARRAY = 'GL_TEXTURE_2D_ARRAY', GL_VOLUME = 'GL_VOLUME', // JS_ACTOR = 'JS_ACTOR', JS_ENTITY_BUILDER = 'JS_ENTITY_BUILDER', JS_INSTANCE_BUILDER = 'JS_INSTANCE_BUILDER', JS_OBJECT_BUILDER = 'JS_OBJECT_BUILDER', JS_POINT_BUILDER = 'JS_POINT_BUILDER', JS_SDF = 'JS_SDF', JS_SOFT_BODY = 'JS_SOFT_BODY', } export interface ControllerAssemblerPair { controller: any; assembler: any; } type TraverseCallback = (pair: ControllerAssemblerPair, name: AssemblerName) => void; export class BaseAssemblersRegister { protected _controllerAssemblerByName: Map<AssemblerName, ControllerAssemblerPair> = new Map(); register(name: AssemblerName, controller: any, assembler: any) { this._controllerAssemblerByName.set(name, { controller: controller, assembler: assembler, }); } unregister(name: AssemblerName) { this._controllerAssemblerByName.delete(name); } traverse(callback: TraverseCallback) { this._controllerAssemblerByName.forEach(callback); } }