// // worker.js // // wraps physics.js in an onMessage/postMessage protocol that the // Kernel object can deal with // importScripts('atoms.js'); importScripts('barnes-hut.js'); importScripts('physics.js'); // alias over the missing jquery utils so we can run in a worker $ = { each:function(obj, callback){ if ($.isArray(obj)){ for (var i=0, j=obj.length; i1000){ that.stop() }else{ // postMessage('pausing') } }else{ _lastTick = null } }, tock:function(sysData){ sysData.type = "geometry" postMessage(sysData) }, modifyNode:function(id, mods){ _physics.modifyNode(id, mods) that.go() }, modifyPhysics:function(param){ _physics.modifyPhysics(param) }, update:function(changes){ var epoch = _physics._update(changes) } } return that } var physics = PhysicsWorker() onmessage = function(e){ if (!e.data.type){ postMessage("¿kérnèl?") return } if (e.data.type=='physics'){ var param = e.data.physics physics.init(e.data.physics) return } switch(e.data.type){ case "modify": physics.modifyNode(e.data.id, e.data.mods) break case "changes": physics.update(e.data.changes) physics.go() break case "start": physics.go() break case "stop": physics.stop() break case "sys": var param = e.data.param || {} if (!isNaN(param.timeout)) physics.timeout(param.timeout) physics.modifyPhysics(param) physics.go() break } }