Files
WebGPU-Framework/demos/particleHeader/GpuWorker.js
2025-11-18 11:45:56 +01:00

98 lines
1.6 KiB
JavaScript

// worker.js
import { ParticleSimulation } from "./demo.js";
var particleSimulation = new ParticleSimulation();
export class Controller {
setup( request ) {
var canvas = request.canvas;
console.log( canvas );
particleSimulation.setup( canvas, request.width, request.height );
//self.postMessage({ type: "pong", id: request.id });
}
resetParticlePositions() {
particleSimulation.resetParticlePositions();
}
mousemove( request ) {
particleSimulation.eventManager.mousemove( request );
}
mousedown( request ) {
console.log("onMouseDown");
particleSimulation.eventManager.mousedown( request );
}
mouseup( request ) {
particleSimulation.eventManager.mouseup( request );
}
mouseleave( request ) {
particleSimulation.eventManager.mouseleave( request );
}
wheel( request ) {
particleSimulation.eventManager.wheel( request );
}
resize( request ) {
particleSimulation.eventManager.resize( request );
}
resetParticlePositions() {
particleSimulation.resetParticlePositions( );
}
}
const controller = new Controller();
self.onmessage = function (event) {
const data = event.data;
if (typeof data !== "object" || typeof data.method !== "string") {
console.warn("Invalid request received:", data);
return;
}
// Optional: wrap the data into a Request instance (if you need its methods)
// const request = new Request(data.method, data.payload);
// Or just use plain data object
const request = data;
const methodName = request.method;
if (typeof controller[methodName] !== "function") {
console.warn("No method found for:", request.method);
return;
}
controller[methodName](request);
};