Skip to content
Snippets Groups Projects
Commit dacf4d64 authored by Nicolas Pope's avatar Nicolas Pope
Browse files

Merge branch 'feature/camera-controls' into 'master'

Working camera controls

See merge request nicolas.pope/ftl-web!12
parents c3bb978a a14043e0
No related branches found
No related tags found
1 merge request!12Working camera controls
......@@ -44,6 +44,7 @@ export class FTLPlayer {
rotationY: 0,
rotationZ: 0,
};
private pose: rematrix.Matrix3D;
private isUserInteracting = false;
private onPointerDownPointerX = 0;
private onPointerDownPointerY = 0;
......@@ -319,13 +320,31 @@ export class FTLPlayer {
this.mse.hardReset();
}
setPose(pose: rematrix.Matrix3D) {
this.pose = pose;
}
updatePose() {
// update to rotation
let poseRX = rematrix.rotateX(this.cameraObject.rotationX);
let poseRY = rematrix.rotateY(this.cameraObject.rotationY);
let poseRZ = rematrix.rotateZ(this.cameraObject.rotationZ);
let poseR = [poseRX, poseRY, poseRZ].reduce(rematrix.multiply);
// update to translation
let poseT = rematrix.translate3d(this.cameraObject.translateX, this.cameraObject.translateY, this.cameraObject.translateZ);
let pose = [poseT,poseRX,poseRY,poseRZ].reduce(rematrix.multiply);
this.emit('pose', pose);
// apply and update
this.pose = [this.pose, poseT, poseR].reduce(rematrix.multiply);
this.cameraObject.rotationX = 0;
this.cameraObject.rotationY = 0;
this.cameraObject.rotationZ = 0;
this.cameraObject.translateX = 0;
this.cameraObject.translateY = 0;
this.cameraObject.translateZ = 0;
this.emit('pose', this.pose);
}
}
......
......@@ -66,6 +66,7 @@ export function ReactPlayer({stream, channel, movement, onSelectPoint, points, i
state.player.on('reset', () => {
// Need to request a keyframe now
stream.keyframe();
state.player.setPose(stream.data.get(66));
});
state.player.on('select', (x: number, y: number) => {
if (onSelectPoint) {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment