Example #1
0
    Item.prototype.start = function(gl, driver) {
        // Build and set the skybox shader.
        var skyboxShaderBuilder = new SkyboxShaderBuilder();
        this.skyboxShader = skyboxShaderBuilder.build(gl);
        if (!this.skyboxShader) {
            return false;
        }
        this.skyboxShader.use();
        this.skyboxShader.setTxtSampler(0);
        this.skyboxShader.setFilterColor(1.0, 1.0, 1.0);
        
        // Create skybox shape to use.
        var skyboxShapeBuilder = new SkyboxShapeBuilder();
        skyboxShapeBuilder.width = -40;
        skyboxShapeBuilder.height = -40;
        skyboxShapeBuilder.depth = -40;
        this.skyboxShape = skyboxShapeBuilder.build(gl, this.skyboxShader.requiredType);
        this.skyboxShape.posAttr.set(this.skyboxShader.posAttrLoc);
        this.skyboxShape.cubeAttr.set(this.skyboxShader.cubeAttrLoc);

        // Build and set the object shader.
        var objShaderBuilder = new ObjShaderBuilder();
        this.objShader = objShaderBuilder.build(gl);
        if (!this.objShader) {
            return false;
        }
        this.objShader.use();
        this.objShader.setTxtSampler(0);
        
        // Setup controls.
        item = this;
        this.controls = new Controls();
        this.controls.addButton('Menu', function() {
            driver.gotoMenu();
        });
        this.controls.setFps(0.0);
        this.controls.addShapeSelect('Shape', function(shapeBuilder){
            item.objShape = shapeBuilder.build(gl, item.objShader.requiredType);
            item.objShape.posAttr.set(item.objShader.posAttrLoc);
            item.objShape.normAttr.set(item.objShader.normAttrLoc);
        }, 'Sphere');
        this.controls.addFloat('Ref Weight', this.objShader.setReflWeight, 0.0, 1.0, 0.9);
        this.controls.addCubeTxtSelect('Background', function(path) {
            item.txtCube = new TxtCube(gl);
            item.txtCube.index = 0;
            item.txtCube.loadFromPath(path);
        }, 'Glacier');

        // Initialize movement.
        this.projMover = new ProjMover();
        this.viewMover = new ViewMover();
        this.objMover = new ObjMover();
        this.projMover.start(gl);
        this.viewMover.start(gl);
        this.objMover.start(gl);
        return true;
    };
Example #2
0
    Item.prototype.start = function(gl, driver) {
        // Build and set the shader.
        var skyboxShaderBuilder = new SkyboxShaderBuilder();
        this.skyboxShader = skyboxShaderBuilder.build(gl);
        if (!this.skyboxShader) {
            return false;
        }
        this.skyboxShader.use();
        
        // Create skyboxShape to use.
        var skyboxShapeBuilder = new SkyboxShapeBuilder();
        skyboxShapeBuilder.width = -1;
        skyboxShapeBuilder.height = -1;
        skyboxShapeBuilder.depth = -1;
        this.skyboxShape = skyboxShapeBuilder.build(gl, this.skyboxShader.requiredType);
        this.skyboxShape.posAttr.set(this.skyboxShader.posAttrLoc);
        this.skyboxShape.cubeAttr.set(this.skyboxShader.cubeAttrLoc);
        this.skyboxShader.setTxtSampler(0);
        this.skyboxShader.setFilterColor(1.0, 1.0, 1.0);
        
        // Initialize view movement.
        this.projMover = new ProjMover();
        this.viewMover = new ViewMover();
        this.projMover.start(gl);
        this.viewMover.start(gl);

        // Setup controls.
        item = this;
        this.controls = new Controls();
        this.controls.addButton('Menu', function() {
            driver.gotoMenu();
        });
        this.controls.setFps(0.0);
        this.controls.addFloat('Field of view', function(value) {
            item.projMover.fovAngle = Math.PI*value/180.0;
        },  30.0, 150.0, 90.0);
        this.controls.addFloat('Size of box', function(value) {
            item.scale = value;
        },  1.0, 100.0, 40.0);
        this.controls.addCubeTxtSelect('Background', function(path) {
            item.txtCube = new TxtCube(gl);
            item.txtCube.index = 0;
            item.txtCube.loadFromPath(path);
        }, 'Glacier');
        return true;
    };