未验证 提交 bc949fd0 编写于 作者: M Mr.doob 提交者: GitHub

Merge pull request #17833 from kaisalmen/Issue17769

OBJLoader2: Fuse WorkerRunner and ObjectManipulator and clean-up
......@@ -16,10 +16,10 @@ import { OBJLoader2 } from "./OBJLoader2.js";
// Imports only related to worker (when standard workers (modules aren't supported) are used)
import { OBJLoader2Parser } from "./obj2/worker/parallel/OBJLoader2Parser.js";
import { ObjectManipulator } from "./obj2/utils/ObjectManipulator.js";
import {
WorkerRunner,
DefaultWorkerPayloadHandler
DefaultWorkerPayloadHandler,
ObjectManipulator
} from "./obj2/worker/parallel/WorkerRunner.js";
......@@ -40,7 +40,7 @@ const OBJLoader2Parallel = function ( manager ) {
};
OBJLoader2Parallel.OBJLOADER2_PARALLEL_VERSION = '3.1.1';
OBJLoader2Parallel.OBJLOADER2_PARALLEL_VERSION = '3.1.2';
console.info( 'Using OBJLoader2Parallel version: ' + OBJLoader2Parallel.OBJLOADER2_PARALLEL_VERSION );
......
export namespace ObjectManipulator {
export function applyProperties( objToAlter: object, params: object, forceCreation: boolean ): void;
}
/**
* @author Kai Salmen / https://kaisalmen.de
* Development repository: https://github.com/kaisalmen/WWOBJLoader
*/
const ObjectManipulator = {
/**
* Applies values from parameter object via set functions or via direct assignment.
*
* @param {Object} objToAlter The objToAlter instance
* @param {Object} params The parameter object
*/
applyProperties: function ( objToAlter, params, forceCreation ) {
// fast-fail
if ( objToAlter === undefined || objToAlter === null || params === undefined || params === null ) return;
let property, funcName, values;
for ( property in params ) {
funcName = 'set' + property.substring( 0, 1 ).toLocaleUpperCase() + property.substring( 1 );
values = params[ property ];
if ( typeof objToAlter[ funcName ] === 'function' ) {
objToAlter[ funcName ]( values );
} else if ( objToAlter.hasOwnProperty( property ) || forceCreation ) {
objToAlter[ property ] = values;
}
}
}
};
export { ObjectManipulator };
import { OBJLoader2Parser } from './OBJLoader2Parser';
export namespace ObjectManipulator {
export function applyProperties(objToAlter: object, params: object, forceCreation: boolean): void;
}
export class DefaultWorkerPayloadHandler {
constructor( parser: OBJLoader2Parser );
constructor( parser: object );
logging: {
enabled: boolean;
debug: boolean;
};
parser: OBJLoader2Parser;
parser: object;
handlePayload( payload: object ): void;
......@@ -16,11 +20,6 @@ export class DefaultWorkerPayloadHandler {
export class WorkerRunner {
constructor( payloadHandler: object );
logging: {
enabled: boolean;
debug: boolean;
};
resourceDescriptors: OBJLoader2Parser;
payloadHandler: object;
processMessage( payload: object ): void;
......
......@@ -3,7 +3,39 @@
* Development repository: https://github.com/kaisalmen/WWOBJLoader
*/
import { ObjectManipulator } from "../../utils/ObjectManipulator.js";
const ObjectManipulator = {
/**
* Applies values from parameter object via set functions or via direct assignment.
*
* @param {Object} objToAlter The objToAlter instance
* @param {Object} params The parameter object
*/
applyProperties: function (objToAlter, params, forceCreation) {
// fast-fail
if (objToAlter === undefined || objToAlter === null || params === undefined || params === null) return;
let property, funcName, values;
for (property in params) {
funcName = 'set' + property.substring(0, 1).toLocaleUpperCase() + property.substring(1);
values = params[property];
if (typeof objToAlter[funcName] === 'function') {
objToAlter[funcName](values);
} else if (objToAlter.hasOwnProperty(property) || forceCreation) {
objToAlter[property] = values;
}
}
}
};
const DefaultWorkerPayloadHandler = function ( parser ) {
......@@ -52,17 +84,7 @@ DefaultWorkerPayloadHandler.prototype = {
ObjectManipulator.applyProperties( parser, payload.params, false );
ObjectManipulator.applyProperties( parser, callbacks, false );
let arraybuffer;
if ( payload.params && payload.params.index !== undefined && payload.params.index !== null ) {
arraybuffer = this.resourceDescriptors[ payload.params.index ].content;
} else {
arraybuffer = payload.data.input;
}
let arraybuffer = payload.data.input;
let executeFunctionName = 'execute';
if ( typeof parser.getParseFunctionName === 'function' ) executeFunctionName = parser.getParseFunctionName();
if ( payload.usesMeshDisassembler ) {
......@@ -97,7 +119,6 @@ DefaultWorkerPayloadHandler.prototype = {
*/
const WorkerRunner = function ( payloadHandler ) {
this.resourceDescriptors = [];
this.payloadHandler = payloadHandler;
let scope = this;
......@@ -121,16 +142,6 @@ WorkerRunner.prototype = {
*/
processMessage: function ( payload ) {
if ( payload.data.resourceDescriptors && this.resourceDescriptors.length === 0 ) {
for ( let name in payload.data.resourceDescriptors ) {
this.resourceDescriptors.push( payload.data.resourceDescriptors[ name ] );
}
}
this.payloadHandler.handlePayload( payload );
}
......@@ -139,5 +150,6 @@ WorkerRunner.prototype = {
export {
WorkerRunner,
DefaultWorkerPayloadHandler
DefaultWorkerPayloadHandler,
ObjectManipulator
};
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册