UNPKG

@polygonjs/polygonjs

Version:

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

82 lines (73 loc) 2.78 kB
// import {BaseSopOperation} from './_Base'; // import {CoreGroup} from '../../../core/geometry/Group'; // import {Mesh} from 'three'; // import {BufferGeometry} from 'three'; // import {Object3D} from 'three'; // import {CoreLoaderGeometry, GeometryFormat} from '../../../core/loader/Geometry'; // import {ASSETS_ROOT} from '../../../core/loader/AssetsUtils'; // import {PolyScene} from '../../scene/PolyScene'; // import {BaseNodeType} from '../../nodes/_Base'; // import {DefaultOperationParams} from '../../../core/operations/_Base'; // interface FileSopParams extends DefaultOperationParams { // url: string; // format: string; // matrixAutoUpdate: boolean; // } // export class FileSopOperation extends BaseSopOperation { // static override readonly DEFAULT_PARAMS: FileSopParams = { // url: `${ASSETS_ROOT}/models/wolf.obj`, // format: GeometryFormat.AUTO, // matrixAutoUpdate: false, // }; // static override type(): Readonly<'file'> { // return 'file'; // } // static loader(params: FileSopParams, scene: PolyScene, node: BaseNodeType) { // return new CoreLoaderGeometry({url: params.url, format: params.format as GeometryFormat}, scene, node); // } // override cook(input_contents: CoreGroup[], params: FileSopParams): CoreGroup | Promise<CoreGroup> { // if (!this._node) { // return this.createCoreGroupFromObjects([]); // } // const loader = FileSopOperation.loader(params, this.scene(), this._node); // return new Promise((resolve) => { // loader.load( // (objects: Object3D[]) => { // const new_objects = this._onLoad(objects, params); // resolve(this.createCoreGroupFromObjects(new_objects)); // }, // (message: string) => { // this._onError(message, params); // } // ); // }); // } // // clearLoadedBlob(params: FileSopParams) { // // const loader = FileSopOperation.loader(params, this.scene(), this._node); // // loader.deregisterUrl(); // // } // private _onLoad(objects: Object3D[], params: FileSopParams) { // // .flat() is overzealous and could break the hierarchy // // objects = objects.flat(); // for (let object of objects) { // object.traverse((child) => { // this._ensureGeometryHasIndex(child); // if (!params.matrixAutoUpdate) { // child.updateMatrix(); // } // child.matrixAutoUpdate = params.matrixAutoUpdate; // }); // } // return objects; // } // private _onError(message: string, params: FileSopParams) { // this.states?.error.set(`could not load geometry from ${params.url} (${message})`); // } // private _ensureGeometryHasIndex(object: Object3D) { // const mesh = object as Mesh; // const geometry = mesh.geometry; // if (geometry) { // this.createIndexIfNone(geometry as BufferGeometry); // } // } // }