Skip to content

Commit

Permalink
Align with next iteration of wtd-core and wtd-three
Browse files Browse the repository at this point in the history
  • Loading branch information
Kai Salmen committed Oct 22, 2023
1 parent 49bd88a commit f46d300
Show file tree
Hide file tree
Showing 9 changed files with 421 additions and 718 deletions.
1,018 changes: 357 additions & 661 deletions package-lock.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion packages/examples/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@
},
"dependencies": {
"@react-three/fiber": "~8.15.1",
"wwobjloader2": "~6.1.0",
"wwobjloader2": "~6.2.0-next.0",
"lil-gui": "~0.18.2",
"react": "~18.2.0",
"react-dom": "~18.2.0",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ export class OBJLoader2BasicExampleOffscreen {
const resize = () => {
const intermediateMessage = new WorkerTaskMessage();
const dataPayload = new DataPayload();
dataPayload.params = {
dataPayload.message.params = {
$type: 'resize',
width: canvas.offsetWidth,
height: canvas.offsetHeight,
Expand All @@ -44,7 +44,7 @@ export class OBJLoader2BasicExampleOffscreen {
// once the init Promise returns enqueue the execution
const execMessage = new WorkerTaskMessage({ name: taskName });
const dataPayload = new DataPayload();
dataPayload.params = {
dataPayload.message.params = {
drawingSurface: offscreen,
width: canvas.clientWidth,
height: canvas.clientHeight,
Expand Down
36 changes: 19 additions & 17 deletions packages/examples/src/worker/BasicExampleOffscreenWorker.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
import {
DataPayload,
WorkerTaskDefaultWorker,
WorkerTaskMessage,
WorkerTaskMessageType
WorkerTaskMessageType,
createFromExisting,
pack
} from 'wtd-core';
import { OBJLoader2BasicExample } from '../examples/OBJLoader2BasicExample.js';
import { executeExample, resizeDisplayGL } from '../examples/ExampleCommons.js';
Expand All @@ -15,39 +17,39 @@ export class HelloWorlThreedWorker extends WorkerTaskDefaultWorker {
init(message: WorkerTaskMessageType) {
console.log(`HelloWorldWorker#init: name: ${message.name} id: ${message.id} cmd: ${message.cmd} workerId: ${message.workerId}`);

const initComplete = WorkerTaskMessage.createFromExisting(message, 'initComplete');
const initComplete = createFromExisting(message, 'initComplete');
self.postMessage(initComplete);
}

intermediate(message: WorkerTaskMessageType): void {
console.log(`HelloWorldWorker#intermediateMessage: name: ${message.name} id: ${message.id} cmd: ${message.cmd} workerId: ${message.workerId}`);

const dataPayload = message.payloads[0];
if (dataPayload.params?.$type === 'resize' && this.objLoader2BasicExample) {
const dataPayload = message.payloads[0] as DataPayload;
if (dataPayload.message.params?.$type === 'resize' && this.objLoader2BasicExample) {
const canvasDimensions = this.objLoader2BasicExample.getSetup().canvasDimensions;
canvasDimensions.width = dataPayload.params?.width as number;
canvasDimensions.height = dataPayload.params?.height as number;
canvasDimensions.pixelRatio = dataPayload.params?.pixelRatio as number;
canvasDimensions.width = dataPayload.message.params?.width as number;
canvasDimensions.height = dataPayload.message.params?.height as number;
canvasDimensions.pixelRatio = dataPayload.message.params?.pixelRatio as number;
resizeDisplayGL(this.objLoader2BasicExample.getSetup());
}
if (dataPayload.params?.$type === 'terminate') {
const execComplete = WorkerTaskMessage.createFromExisting(message, 'execComplete');
const transferables = execComplete.pack(false);
if (dataPayload.message.params?.$type === 'terminate') {
const execComplete = createFromExisting(message, 'execComplete');
const transferables = pack(execComplete.payloads, false);
self.postMessage(execComplete, transferables);
}
}

execute(message: WorkerTaskMessageType) {
console.log(`HelloWorldWorker#execute: name: ${message.name} id: ${message.id} cmd: ${message.cmd} workerId: ${message.workerId}`);

const dataPayload = message.payloads[0];
const dataPayload = message.payloads[0] as DataPayload;
const canvasDimensions = {
width: dataPayload.params?.width as number,
height: dataPayload.params?.height as number,
pixelRatio: dataPayload.params?.pixelRatio as number
width: dataPayload.message.params?.width as number,
height: dataPayload.message.params?.height as number,
pixelRatio: dataPayload.message.params?.pixelRatio as number
};
this.objLoader2BasicExample = new OBJLoader2BasicExample(dataPayload.params?.drawingSurface as HTMLCanvasElement,
canvasDimensions, dataPayload.params?.modelUrl as string);
this.objLoader2BasicExample = new OBJLoader2BasicExample(dataPayload.message.params?.drawingSurface as HTMLCanvasElement,
canvasDimensions, dataPayload.message.params?.modelUrl as string);
executeExample(this.objLoader2BasicExample);
}

Expand Down
6 changes: 3 additions & 3 deletions packages/objloader2/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "wwobjloader2",
"version": "6.1.0",
"version": "6.2.0-next.0",
"type": "module",
"main": "./dist/index.js",
"module": "./dist/index.js",
Expand Down Expand Up @@ -70,8 +70,8 @@
},
"dependencies": {
"three": "~0.157.0",
"wtd-core": "~2.3.0",
"wtd-three-ext": "~2.3.0"
"wtd-core": "~2.4.0-next.0",
"wtd-three-ext": "~2.4.0-next.0"
},
"peerDependencies": {
"three": ">= 0.137.5 < 1"
Expand Down
4 changes: 2 additions & 2 deletions packages/objloader2/src/AssetPipelineLoader.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { FileLoader, Loader, Object3D } from 'three';
import { MTLLoader } from 'three/examples/jsm/loaders/MTLLoader.js';
import { AssociatedArrayType, DataPayloadHandler } from 'wtd-core';
import { AssociatedArrayType, applyProperties } from 'wtd-core';
import { ResourceDescriptor } from './utils/ResourceDescriptor.js';

export type CallbackCompleteType = ((description: string, extra?: Object3D) => void) | null;
Expand Down Expand Up @@ -199,7 +199,7 @@ class AssetTask {

init() {
console.log(this.name + ': Performing init');
DataPayloadHandler.applyProperties(this.assetLoader.loader.instance, this.assetLoader.loader.config, false);
applyProperties(this.assetLoader.loader.instance, this.assetLoader.loader.config, false);
}

async loadResource() {
Expand Down
22 changes: 12 additions & 10 deletions packages/objloader2/src/OBJLoader2Parallel.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,12 @@ import {
LoadingManager
} from 'three';
import {
DataPayload,
WorkerTask,
WorkerTaskMessage,
DataPayload,
WorkerTaskMessageType,
pack,
unpack,
} from 'wtd-core';
import { CallbackOnLoadType, CallbackOnMeshAlterType, FileLoaderOnErrorType, FileLoaderOnProgressType, OBJLoader2 } from './OBJLoader2.js';
import { PreparedMeshType } from './OBJLoader2Parser.js';
Expand Down Expand Up @@ -141,7 +143,7 @@ export class OBJLoader2Parallel extends OBJLoader2 {
private initWorker() {
const initMessage = new WorkerTaskMessage({});
const dataPayload = new DataPayload();
dataPayload.params = {
dataPayload.message.params = {
logging: {
enabled: this.parser.isLoggingEnabled(),
debug: this.parser.isDebugLoggingEnabled()
Expand All @@ -157,7 +159,7 @@ export class OBJLoader2Parallel extends OBJLoader2 {
id: Math.floor(Math.random() * Math.floor(65536))
});
const dataPayload = new DataPayload();
dataPayload.params = {
dataPayload.message.params = {
modelName: this.modelName,
useIndices: this.useIndices,
disregardNormals: this.disregardNormals,
Expand All @@ -168,11 +170,11 @@ export class OBJLoader2Parallel extends OBJLoader2 {
debug: this.parser.isDebugLoggingEnabled()
}
};
dataPayload.buffers.set('modelData', objToParse);
dataPayload.params.materialNames = new Set(Array.from(this.materialStore.getMaterials().keys()));
dataPayload.message.buffers?.set('modelData', objToParse);
dataPayload.message.params.materialNames = new Set(Array.from(this.materialStore.getMaterials().keys()));

execMessage.addPayload(dataPayload);
const transferables = execMessage.pack(false);
const transferables = pack(execMessage.payloads, false);

try {
await this.workerTask?.executeWorker({
Expand Down Expand Up @@ -200,12 +202,12 @@ export class OBJLoader2Parallel extends OBJLoader2 {
* @param {object} materialMetaInfo
*/
private onWorkerMessage(message: WorkerTaskMessageType) {
const wtm = WorkerTaskMessage.unpack(message, false);
const wtm = unpack(message, false);
if (wtm.cmd === 'intermediate') {

const dataPayload = (wtm.payloads.length === 1) ? wtm.payloads[0] : undefined;
if (dataPayload && dataPayload.params) {
const preparedMesh = dataPayload.params.preparedMesh as PreparedMeshType;
const dataPayload = (wtm.payloads.length === 1) ? wtm.payloads[0] as DataPayload : undefined;
if (dataPayload && dataPayload.message.params) {
const preparedMesh = dataPayload.message.params.preparedMesh as PreparedMeshType;
const mesh = OBJLoader2.buildThreeMesh(preparedMesh, this.materialStore.getMaterials(), this.parser.isDebugLoggingEnabled());
if (mesh) {
this._onMeshAlter(mesh, preparedMesh.materialMetaInfo);
Expand Down
43 changes: 23 additions & 20 deletions packages/objloader2/src/worker/OBJLoader2Worker.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,13 @@
import {
WorkerTaskDefaultWorker,
WorkerTaskMessage,
DataPayloadHandler,
DataPayload,
WorkerTaskMessageType,
AssociatedArrayType
AssociatedArrayType,
pack,
createFromExisting,
applyProperties,
unpack
} from 'wtd-core';
import {
OBJLoader2Parser
Expand Down Expand Up @@ -34,29 +37,29 @@ class OBJLoader2Worker extends WorkerTaskDefaultWorker {
});

const dataPayload = new DataPayload();
if (!dataPayload.params) {
dataPayload.params = {};
if (!dataPayload.message.params) {
dataPayload.message.params = {};
}
dataPayload.params.preparedMesh = preparedMesh;
dataPayload.message.params.preparedMesh = preparedMesh;
if (preparedMesh.vertexFA !== null) {
dataPayload.buffers.set('vertexFA', preparedMesh.vertexFA);
dataPayload.message.buffers?.set('vertexFA', preparedMesh.vertexFA);
}
if (preparedMesh.normalFA !== null) {
dataPayload.buffers.set('normalFA', preparedMesh.normalFA);
dataPayload.message.buffers?.set('normalFA', preparedMesh.normalFA);
}
if (preparedMesh.uvFA !== null) {
dataPayload.buffers.set('uvFA', preparedMesh.uvFA);
dataPayload.message.buffers?.set('uvFA', preparedMesh.uvFA);
}
if (preparedMesh.colorFA !== null) {
dataPayload.buffers.set('colorFA', preparedMesh.colorFA);
dataPayload.message.buffers?.set('colorFA', preparedMesh.colorFA);
}
if (preparedMesh.indexUA !== null) {
dataPayload.buffers.set('indexUA', preparedMesh.indexUA);
dataPayload.message.buffers?.set('indexUA', preparedMesh.indexUA);
}
intermediateMessage.cmd = 'intermediate';
intermediateMessage.addPayload(dataPayload);

const transferables = intermediateMessage.pack(false);
const transferables = pack(intermediateMessage.payloads, false);
self.postMessage(intermediateMessage, transferables);
};

Expand All @@ -83,7 +86,7 @@ class OBJLoader2Worker extends WorkerTaskDefaultWorker {
console.log(`OBJLoader2Worker#init: name: ${message.name} id: ${message.id} cmd: ${message.cmd} workerId: ${message.workerId}`);
}

const initComplete = WorkerTaskMessage.createFromExisting(wtm, 'initComplete');
const initComplete = createFromExisting(wtm, 'initComplete');
self.postMessage(initComplete);
}

Expand All @@ -93,7 +96,7 @@ class OBJLoader2Worker extends WorkerTaskDefaultWorker {
const parser = this.initParser(message.id ?? 0);

// apply previously stored parameters (init or execute)
DataPayloadHandler.applyProperties(parser, this.localData.params, false);
applyProperties(parser, this.localData.params, false);
if (this.localData.materialNames) {
parser?.setMaterialNames(this.localData.materialNames);
}
Expand All @@ -111,18 +114,18 @@ class OBJLoader2Worker extends WorkerTaskDefaultWorker {
}

private processMessage(message: WorkerTaskMessageType) {
const wtm = WorkerTaskMessage.unpack(message, false);
const dataPayload = wtm.payloads[0];
const wtm = unpack(message, false);
const dataPayload = wtm.payloads[0] as DataPayload;

DataPayloadHandler.applyProperties(this.localData.params, dataPayload.params!, true);
const modelData = dataPayload.buffers?.get('modelData');
applyProperties(this.localData.params, dataPayload.message.params, true);
const modelData = dataPayload.message.buffers?.get('modelData');
if (modelData) {
this.localData.buffer = modelData;
}

if (dataPayload.params) {
if (dataPayload.params.materialNames) {
this.localData.materialNames = dataPayload.params.materialNames as Set<string>;
if (dataPayload.message.params) {
if (dataPayload.message.params.materialNames) {
this.localData.materialNames = dataPayload.message.params.materialNames as Set<string>;
}
}

Expand Down
4 changes: 2 additions & 2 deletions scripts/UpdateVersions.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,10 @@ import shell from 'shelljs';

const versionPattern = '.*[0-9]\\.[0-9]\\.[0-9].*';

const version_wtd_core_real = '~2.3.0';
const version_wtd_core_real = '~2.4.0-next.0';
const version_wtd_core_dev = '../../../wtd/packages/wtd-core';

const version_wtd_three_ext_real = '~2.3.0';
const version_wtd_three_ext_real = '~2.4.0-next.0';
const version_wtd_three_ext_dev = '../../../wtd/packages/wtd-three-ext';

const what = process.argv[2];
Expand Down

0 comments on commit f46d300

Please sign in to comment.