@polygonjs/polygonjs
Version:
node-based WebGL 3D engine https://polygonjs.com
42 lines (41 loc) • 1.26 kB
JavaScript
;
import { Box3 } from "three";
import { SDFObject } from "./SDFObject";
import { BaseCoreObject } from "../../entities/object/BaseCoreObject";
import { SDFLoaderSync } from "./SDFLoaderSync";
const _box = new Box3();
export class SDFCoreObject extends BaseCoreObject {
constructor(_object, index) {
super(_object, index);
this._object = _object;
}
static position(object, target) {
object.boundingBox(_box);
_box.getCenter(target);
}
boundingBox(target) {
this._object.boundingBox(target);
}
boundingSphere(target) {
this._object.boundingSphere(target);
}
static applyMatrix(object, matrix, transformTargetType, transformSpace, transformMode) {
object.applyMatrix4(matrix);
}
static mergeCompact(options) {
const manifold = SDFLoaderSync.manifold();
const { objects, mergedObjects } = options;
const sdfObjects = objects;
let previousGeometry;
for (const object of sdfObjects) {
if (previousGeometry) {
previousGeometry = manifold.Manifold.union(previousGeometry, object.SDFGeometry());
} else {
previousGeometry = object.SDFGeometry();
}
}
if (previousGeometry) {
mergedObjects.push(new SDFObject(previousGeometry));
}
}
}