UNPKG

@polygonjs/polygonjs

Version:

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

42 lines (41 loc) 1.26 kB
"use strict"; 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)); } } }