3d-interface/js/l3d/apps/prototype/replay/main.js

102 lines
2.0 KiB
JavaScript

var onWindowResize = (function() {
// Disable scrolling
window.onscroll = function () { window.scrollTo(0, 0); };
window.onload = main;
var renderer, scene, container;
var recommendations;
var stats;
var camera1;
var coins = [];
var previousTime;
function main() {
container = document.getElementById('container');
initThreeElements();
init();
onWindowResize();
setInterval(render, 20);
}
function initThreeElements() {
scene = new THREE.Scene();
renderer = new THREE.WebGLRenderer({alpha:true, antialias: true});
renderer.setClearColor(0x87ceeb);
}
function init() {
// Initialize stats counter
stats = new Stats();
stats.setMode(0);
stats.domElement.style.position = 'absolute';
stats.domElement.style.cssFloat = "top-left";
// Add elements to page
container.appendChild(Coin.domElement);
container.appendChild( stats.domElement );
container.appendChild(renderer.domElement);
// Initialize replay camera
camera1 = new L3D.ReplayCamera(50, container_size.width() / container_size.height(), 0.01, 100000, coins);
recommendations = initMainScene(camera1, scene, coins);
camera1.cameras = recommendations;
// Add listeners
initListeners();
}
function initListeners() {
window.addEventListener('resize', onWindowResize, false);
}
function render() {
stats.begin();
// Update coins
coins.forEach(function(coin) { coin.update(); });
// Update main camera
var currentTime = Date.now() - previousTime;
camera1.update(isNaN(currentTime) ? 20 : currentTime);
previousTime = Date.now();
// Update the recommendations
recommendations.map(function(camera) {camera.update(camera1);});
// Set current position of camera
camera1.look();
renderer.render(scene, camera1);
stats.end();
}
function onWindowResize() {
resizeElements(renderer, container, Coin);
recommendations.forEach(function(reco) {resetCameraAspect(reco.camera);});
render();
}
return onWindowResize;
})();