topical media & game development
mobile-query-three-plugins-minecraft-tquery.camerafpscontrols.js / js
////////////////////////////////////////////////////////////////////////////
// //
////////////////////////////////////////////////////////////////////////////
tQuery.registerStatic('createCameraFpsControls', function(opts){
return new tQuery.CameraFpsControls(opts)
});
////////////////////////////////////////////////////////////////////////////
// //
////////////////////////////////////////////////////////////////////////////
tQuery.registerStatic('CameraFpsControls', function(opts){
// handle parameters polymorphism
if( opts.trackedObject instanceof tQuery.Object3D ) opts.trackedObject = opts.trackedObject.get(0);
// handle default values
opts = this._opts = tQuery.extend(opts, {
world : tQuery.world,
deltaTarget : tQuery.createVector3(0, 0, +3),
deltaCamera : tQuery.createVector3(0, 2, -3),
debug : false
});
// sanity check
console.assert( opts.trackedObject instanceof THREE.Object3D )
console.assert( opts.tCamera instanceof THREE.Camera )
// create target object
var deltaTarget = !opts.debug ? tQuery.createObject3D() : tQuery.createSphere()
.setBasicMaterial().wireframe(true).back()
.geometry().scaleBy(1/4).back()
this._deltaTarget = deltaTarget;
deltaTarget.addTo(opts.trackedObject)
.position(opts.deltaTarget);
// create camera
var deltaCamera = !opts.debug ? tQuery.createObject3D() : tQuery.createSphere()
.setBasicMaterial().wireframe(true).back()
.geometry().scaleBy(1/4).back()
this._deltaCamera = deltaCamera;
deltaCamera.addTo(opts.trackedObject)
.position(opts.deltaCamera);
// .position(0, 2, -3)
//.position(0, 1, 0)
//.position(0, 0.7, -0.07)
// add the camera
tQuery(opts.tCamera).position(0,0,0).addTo(deltaCamera);
});
tQuery.CameraFpsControls.prototype.update = function(delta, now){
var delta = this._deltaTarget.get(0).position.clone()
delta.sub(this._deltaCamera.get(0).position);
this._opts.tCamera.lookAt(delta);
}
tQuery.CameraFpsControls.prototype.deltaTarget = function(){
return this._deltaTarget
}
tQuery.CameraFpsControls.prototype.deltaCamera = function(){
return this._deltaCamera
}
(C) Æliens
04/09/2009
You may not copy or print any of this material without explicit permission of the author or the publisher.
In case of other copyright issues, contact the author.