Skip to content
Snippets Groups Projects
Commit 7ca8b1e1 authored by Alexander Rose's avatar Alexander Rose
Browse files

simplified defaults handling

parent 7a4456ba
Branches
Tags
No related merge requests found
......@@ -15,6 +15,7 @@ import REGL = require('regl');
import mouseChange, { MouseModifiers } from 'mol-util/mouse-change'
import mouseWheel from 'mol-util/mouse-wheel'
import { defaults } from 'mol-util'
import { Mat4, Vec3 } from 'mol-math/linear-algebra/3d'
import { clamp, damp } from 'mol-math/interpolate'
......@@ -53,25 +54,25 @@ export interface Camera {
export namespace Camera {
export function create (regl: REGL.Regl, element: HTMLElement, props: Partial<CameraState> = {}): Camera {
const state: CameraState = {
center: props.center || Vec3.zero(),
theta: props.theta || 0,
phi: props.phi || 0,
distance: Math.log(props.distance || 10.0),
center: defaults(props.center, Vec3.zero()),
theta: defaults(props.theta, 0),
phi: defaults(props.phi, 0),
distance: Math.log(defaults(props.distance, 10.0)),
eye: Vec3.zero(),
up: props.up || Vec3.create(0, 1, 0),
fovy: props.fovy || Math.PI / 4.0,
near: typeof props.near !== 'undefined' ? props.near : 0.01,
far: typeof props.far !== 'undefined' ? props.far : 1000.0,
noScroll: typeof props.noScroll !== 'undefined' ? props.noScroll : false,
flipY: !!props.flipY,
up: defaults(props.up, Vec3.create(0, 1, 0)),
fovy: defaults(props.fovy, Math.PI / 4.0),
near: defaults(props.near, 0.01),
far: defaults(props.far, 1000.0),
noScroll: defaults(props.noScroll, false),
flipY: defaults(props.flipY, false),
dtheta: 0,
dphi: 0,
rotationSpeed: typeof props.rotationSpeed !== 'undefined' ? props.rotationSpeed : 1,
zoomSpeed: typeof props.zoomSpeed !== 'undefined' ? props.zoomSpeed : 1,
renderOnDirty: typeof props.renderOnDirty !== undefined ? !!props.renderOnDirty : false,
damping: typeof props.damping !== 'undefined' ? props.damping : 0.9,
minDistance: Math.log(typeof props.minDistance !== 'undefined' ? props.minDistance : 0.1),
maxDistance: Math.log(typeof props.maxDistance !== 'undefined' ? props.maxDistance : 1000)
rotationSpeed: defaults(props.rotationSpeed, 1),
zoomSpeed: defaults(props.zoomSpeed, 1),
renderOnDirty: defaults(props.renderOnDirty, false),
damping: defaults(props.damping, 0.9),
minDistance: Math.log(defaults(props.minDistance, 0.1)),
maxDistance: Math.log(defaults(props.maxDistance, 1000))
}
const view = Mat4.identity()
......
......@@ -23,4 +23,8 @@ export function arrayEqual<T>(arr1: T[], arr2: T[]) {
}
}
return true
}
export function defaults (value: any, defaultValue: any) {
return value !== undefined ? value : defaultValue
}
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment