Protolib

by jamesaustin

HTML

<script src="http://turbulenz.github.io/turbulenz_jslib/jslib/debug.js"></script>
<script src="http://turbulenz.github.io/turbulenz_jslib/jslib/webgl/turbulenzengine.js"></script>
<script src="http://turbulenz.github.io/turbulenz_jslib/jslib/webgl/graphicsdevice.js"></script>
<script src="http://turbulenz.github.io/turbulenz_jslib/jslib/webgl/inputdevice.js"></script>
<script src="http://turbulenz.github.io/turbulenz_jslib/jslib/webgl/sounddevice.js"></script>
<script src="http://turbulenz.github.io/turbulenz_jslib/jslib/aabbtree.js"></script>
<script src="http://turbulenz.github.io/turbulenz_jslib/jslib/assettracker.js"></script>
<script src="http://turbulenz.github.io/turbulenz_jslib/jslib/camera.js"></script>
<script src="http://turbulenz.github.io/turbulenz_jslib/jslib/draw2d.js"></script>
<script src="http://turbulenz.github.io/turbulenz_jslib/jslib/effectmanager.js"></script>
<script src="http://turbulenz.github.io/turbulenz_jslib/jslib/fontmanager.js"></script>
<script src="http://turbulenz.github.io/turbulenz_jslib/jslib/forwardrendering.js"></script>
<script src="http://turbulenz.github.io/turbulenz_jslib/jslib/geometry.js"></script>
<script src="http://turbulenz.github.io/turbulenz_jslib/jslib/indexbuffermanager.js"></script>
<script src="http://turbulenz.github.io/turbulenz_jslib/jslib/light.js"></script>
<script src="http://turbulenz.github.io/turbulenz_jslib/jslib/loadingscreen.js"></script>
<script src="http://turbulenz.github.io/turbulenz_jslib/jslib/material.js"></script>
<script src="http://turbulenz.github.io/turbulenz_jslib/jslib/observer.js"></script>
<script src="http://turbulenz.github.io/turbulenz_jslib/jslib/renderingcommon.js"></script>
<script src="http://turbulenz.github.io/turbulenz_jslib/jslib/requesthandler.js"></script>
<script src="http://turbulenz.github.io/turbulenz_jslib/jslib/resourceloader.js"></script>
<script src="http://turbulenz.github.io/turbulenz_jslib/jslib/scene.js"></script>
<script...

JavaScript

TurbulenzEngine = WebGLTurbulenzEngine.create({
    canvas: document.getElementById("canvas")
});

var mathDevice = null;

var mesh = null;
var rotationMatrix = null;
var rotationAngleMatrix = null;

var assetPrefix = 'http://www.corsproxy.com/jamesaustin.github.io/jsfiddle-assets/protolib-sample/';

// Checkout Protolib documentation:
//   http://docs.turbulenz.com/protolib/protolib_api.html
var protolib = Protolib.create({
    onInitialized: function onIntializedFn(protolib)
    {
        mathDevice = protolib.getMathDevice();
        protolib.setCameraPosition(mathDevice.v3Build(0, 2, -2));
        protolib.setCameraDirection(mathDevice.v3Build(0, -0.5, 1));
        protolib.setAmbientLightColor(mathDevice.v3Build(0.4, 0.4, 0.4));
        protolib.setClearColor(mathDevice.v3Build(0.1, 0.1, 0.3));
        protolib.addPointLight({
            v3Position: mathDevice.v3Build(-4, 8, -4),
            v3Color: mathDevice.v3Build(1, 1, 1),
            radius: 20
        });
        
        // Floor
        whiteFloor = protolib.loadMesh({
            mesh: 'models/white_cube.dae',
            v3Size: mathDevice.v3Build(60, 0.1, 60),
            v3Position: mathDevice.v3Build(0, -0.5, 0)
        });

        // Model
        mesh = protolib.loadMesh({
            mesh: "models/duck.dae"
        });

        rotationMatrix = mathDevice.m43BuildIdentity();
        rotationAngleMatrix = mathDevice.m43BuildIdentity();
        mathDevice.m43SetAxisRotation(rotationAngleMatrix,
                                      mathDevice.v3Build(0, 1, 0),
                                      (Math.PI * 2) / 360);
    },
    defaultMappingSettings: {
        mappingTablePrefix: assetPrefix + 'staticmax/',
        assetPrefix: 'missing/',
        mappingTableURL: assetPrefix + 'mapping_table.json',
        urnMapping: {}
    },
    enableDynamicUI: false
});

function update() {
    if (protolib.beginFrame())
    {
        if (mesh)
        {
           ...