three
Version:
JavaScript 3D library
68 lines (35 loc) • 1.01 kB
JavaScript
import Object3DNode from './Object3DNode.js';
class CameraNode extends Object3DNode {
constructor( scope = CameraNode.POSITION ) {
super( scope );
}
getNodeType( builder ) {
const scope = this.scope;
if ( scope === CameraNode.PROJECTION_MATRIX ) {
return 'mat4';
}
return super.getNodeType( builder );
}
update( frame ) {
const camera = frame.camera;
const uniformNode = this._uniformNode;
const scope = this.scope;
if ( scope === CameraNode.PROJECTION_MATRIX ) {
uniformNode.value = camera.projectionMatrix;
} else if ( scope === CameraNode.VIEW_MATRIX ) {
uniformNode.value = camera.matrixWorldInverse;
} else {
this.object3d = camera;
super.update( frame );
}
}
generate( builder ) {
const scope = this.scope;
if ( scope === CameraNode.PROJECTION_MATRIX ) {
this._uniformNode.nodeType = 'mat4';
}
return super.generate( builder );
}
}
CameraNode.PROJECTION_MATRIX = 'projectionMatrix';
export default CameraNode;