threex
Version:
Game Extensions for three.js http://www.threejsgames.com/extensions/
58 lines (48 loc) • 1.63 kB
HTML
<script src="../../../vendor/three.js/build/three.min.js"></script>
<body style='margin: 0px; background-color: #bbbbbb; overflow: hidden;'><script>
var renderer = new THREE.WebGLRenderer();
renderer.setSize( window.innerWidth, window.innerHeight );
document.body.appendChild( renderer.domElement );
var scene = new THREE.Scene();
var camera = new THREE.PerspectiveCamera(45, window.innerWidth / window.innerHeight, 1, 1000 );
camera.position.z = 3;
/**
* First attempt at a small standalone implementation of THREEx.Loop
* * no priority handled
*/
var THREEx = THREEx || {};
THREEx.Loop = function(){
var callbacks = []
var reqId = 0
return {
start : function(){
var lastTime = Date.now()
reqId = requestAnimationFrame(function threexLoopAnimation(now){
reqId = requestAnimationFrame(threexLoopAnimation);
var delta = now - lastTime;
lastTime = now
callbacks.forEach(function(callback){
callback(delta/1000, now/1000)
})
})
return this;
},
stop : function(){ cancelAnimationFrame(reqId) },
hook : function(callback){ callbacks.push(callback) },
unhook : function(callback){ callbacks.splice( callbacks.indexOf(callback), 1) },
}
}
var geometry = new THREE.CubeGeometry( 1, 1, 1);
var material = new THREE.MeshNormalMaterial();
var mesh = new THREE.Mesh( geometry, material );
scene.add( mesh );
var loop = new THREEx.Loop().start();
loop.hook(function(){
mesh.rotation.x += 0.005;
mesh.rotation.y += 0.01;
})
loop.hook(function(){
renderer.render( scene, camera );
})
</script></body>