UNPKG

@polygonjs/polygonjs

Version:

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

107 lines (106 loc) 3.31 kB
"use strict"; import { isObject3D } from "../../ObjectContent"; import { ThreejsPoint } from "./ThreejsPoint"; import { ThreejsVertex } from "./ThreejsVertex"; import { ThreejsCoreObject } from "./ThreejsCoreObject"; import { ThreejsPrimitiveTriangle } from "./ThreejsPrimitiveTriangle"; import { ThreejsPrimitiveLineSegment } from "./ThreejsPrimitiveLineSegment"; import { ThreejsPrimitivePoint } from "./ThreejsPrimitivePoint"; const pointClassFactory = (object) => { if (isObject3D(object)) { return ThreejsPoint; } }; export const pointClassFactoryEnsured = () => ThreejsPoint; const pointInstanceFactory = (object, index = 0) => { if (isObject3D(object)) { return new ThreejsPoint(object, index); } }; export const pointInstanceFactoryEnsured = (object, index = 0) => { return new ThreejsPoint(object, index); }; const vertexClassFactory = (object) => { if (isObject3D(object)) { return ThreejsVertex; } }; export const vertexClassFactoryEnsured = () => ThreejsVertex; const vertexInstanceFactory = (object, index = 0) => { if (isObject3D(object)) { return new ThreejsVertex(object, index); } }; export const vertexInstanceFactoryEnsured = (object, index = 0) => { return new ThreejsVertex(object, index); }; export const primitiveClassFactoryNonAbstract = (object) => { if (isObject3D(object)) { if (object.isMesh) { return ThreejsPrimitiveTriangle; } if (object.isLineSegments) { return ThreejsPrimitiveLineSegment; } if (object.isPoints) { return ThreejsPrimitivePoint; } return ThreejsPrimitiveTriangle; } }; export const primitiveClassFactoryEnsured = () => ThreejsPrimitiveTriangle; const primitiveClassFactory = primitiveClassFactoryNonAbstract; export const primitiveInstanceFactory = (object, index = 0) => { if (isObject3D(object)) { if (object.isMesh) { return new ThreejsPrimitiveTriangle(object, index); } if (object.isLineSegments) { return new ThreejsPrimitiveLineSegment(object, index); } if (object.isPoints) { return new ThreejsPrimitivePoint(object, index); } } }; export const primitiveInstanceFactoryEnsured = (object, index = 0) => { return new ThreejsPrimitiveTriangle(object, index); }; export const primitiveVerticesCountFactory = (object) => { if (isObject3D(object)) { if (object.isMesh) { return 3; } if (object.isLineSegments) { return 2; } if (object.isPoints) { return 1; } } return 0; }; const objectClassFactory = (object) => { if (isObject3D(object) || object.isObject3D) { return ThreejsCoreObject; } }; export const objectClassFactoryEnsured = () => ThreejsCoreObject; const objectInstanceFactory = (object, index = 0) => { if (isObject3D(object)) { return new ThreejsCoreObject(object, index); } }; export const objectInstanceFactoryEnsured = (object, index = 0) => { return new ThreejsCoreObject(object, index); }; export const object3DFactory = { pointClass: pointClassFactory, pointInstance: pointInstanceFactory, vertexClass: vertexClassFactory, vertexInstance: vertexInstanceFactory, primitiveClass: primitiveClassFactory, primitiveInstance: primitiveInstanceFactory, objectClass: objectClassFactory, objectInstance: objectInstanceFactory };