focus method
void
focus(
- dynamic point,
- dynamic size, [
- num amount = 1
])
- Focus operation consist of positioning the point of interest in front of the camera and a slightly zoom in
point The point of interest
size Scale factor
amount amount of operation to be completed (used for focus animations, default is complete full operation)
Implementation
void focus(point, size, [num amount = 1]) {
//move center of camera (along with gizmos) towards point of interest
_offset.setFrom(point).sub(_gizmos.position).scale(amount);
_translationMatrix.makeTranslation(_offset.x, _offset.y, _offset.z);
_gizmoMatrixStateTemp.setFrom(_gizmoMatrixState);
_gizmoMatrixState.premultiply(_translationMatrix);
_gizmoMatrixState.decompose(
_gizmos.position, _gizmos.quaternion, _gizmos.scale);
_cameraMatrixStateTemp.setFrom(_cameraMatrixState);
_cameraMatrixState.premultiply(_translationMatrix);
_cameraMatrixState.decompose(
camera.position, camera.quaternion, camera.scale);
//apply zoom
if (enableZoom) {
applyTransformMatrix(scale(size, _gizmos.position));
}
_gizmoMatrixState.setFrom(_gizmoMatrixStateTemp);
_cameraMatrixState.setFrom(_cameraMatrixStateTemp);
}