@polygonjs/polygonjs
Version:
node-based WebGL 3D engine https://polygonjs.com
107 lines (106 loc) • 3.31 kB
JavaScript
;
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
};