Skip to content
Snippets Groups Projects
worker.js 1.68 KiB
/**
 * Created by aghassaei on 1/12/15.
 */

function myWorker(){

    //local variables
    localEnv = null;//local variables passed in from outside
    working = false;//boolean that says whether I'm busy or not
    arg = null;//main data we are crunching
    modelMesh = null;//hold on to this so we don't have to keep passing it in

    self.onmessage = function(e) {
        var data = e.data;

        if (data.url) {
            var url = data.url;
            var index = url.indexOf('main.html');//url of landing page
            if (index != -1) {
              url = url.substring(0, index);
            }
        //load all scripts
            importScripts(url + 'dependencies/three.js');
    //    importScripts(url + 'js/models/dmaBeam.js');
        }
//
        if (data.model){
            var material = new THREE.MeshBasicMaterial({side:THREE.DoubleSide});
            modelMesh = new THREE.Mesh(JSON.parse(data.model), material);
        }

        if (data.executable){

            if (data.localEnv){//be sure to get local environment vars before executable runs
                localEnv = JSON.parse(data.localEnv);
            }
            if (data.arg){//be sure to get arg before executable runs
                arg = data.arg;
            }

            if (working) {
                console.log("problem here, already working on something else");
                return;
            }
            working = true;
            eval(data.executable);
            var result = executable(arg);
            working = false;
            postMessage({result:result, isWorking:working});
        }

        if (data.isWorking){
            postMessage({isWorking:working});
        }


    };
}