| // Copyright (c) 2013 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| function NaClAMBulletInit() { |
| aM.addEventListener('sceneloaded', NaClAMBulletSceneLoadedHandler); |
| aM.addEventListener('noscene', NaClAMBulletStepSceneHandler); |
| aM.addEventListener('sceneupdate', NaClAMBulletStepSceneHandler); |
| } |
| |
| function NaClAMBulletLoadScene(sceneDescription) { |
| aM.sendMessage('loadscene', sceneDescription); |
| } |
| |
| function NaClAMBulletSceneLoadedHandler(msg) { |
| console.log('Scene loaded.'); |
| console.log('Scene object count = ' + msg.header.sceneobjectcount); |
| } |
| |
| function NaClAMBulletPickObject(objectTableIndex, cameraPos, hitPos) { |
| aM.sendMessage('pickobject', {index: objectTableIndex, cpos: [cameraPos.x, cameraPos.y, cameraPos.z], pos: [hitPos.x,hitPos.y,hitPos.z]}); |
| } |
| |
| function NaClAMBulletDropObject() { |
| aM.sendMessage('dropobject', {}); |
| } |
| |
| // Values used to display simulation time every second. |
| var fps = { |
| lastTimeMs: +new Date(), |
| sumSimTime: 0, |
| numSteps: 0 |
| }; |
| |
| function NaClAMBulletStepSceneHandler(msg) { |
| // Step the scene |
| var i; |
| var j; |
| var numTransforms = 0; |
| if (msg.header.cmd == 'sceneupdate') { |
| if (skipSceneUpdates > 0) { |
| skipSceneUpdates--; |
| return; |
| } |
| TransformBuffer = new Float32Array(msg.frames[0]); |
| numTransforms = TransformBuffer.length/16; |
| for (i = 0; i < numTransforms; i++) { |
| for (j = 0; j < 16; j++) { |
| objects[i].matrixWorld.elements[j] = TransformBuffer[i*16+j]; |
| } |
| } |
| |
| var simTime = msg.header.simtime; |
| fps.sumSimTime += simTime; |
| fps.numSteps++; |
| |
| // Update FPS. |
| var curTimeMs = +new Date(); |
| if (curTimeMs - fps.lastTimeMs > 1000) { // 1 sec |
| var meanSimTime = fps.sumSimTime / fps.numSteps; |
| $('simulationTime').textContent = meanSimTime.toFixed(0); |
| $('fps').textContent = |
| (fps.numSteps * 1000 / (curTimeMs - fps.lastTimeMs)).toFixed(1); |
| fps.lastTimeMs = curTimeMs; |
| fps.sumSimTime = 0; |
| fps.numSteps = 0; |
| } |
| } |
| } |