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

simplified defaults handling

parent 7a4456ba
No related branches found
No related tags found
No related merge requests found
...@@ -15,6 +15,7 @@ import REGL = require('regl'); ...@@ -15,6 +15,7 @@ import REGL = require('regl');
import mouseChange, { MouseModifiers } from 'mol-util/mouse-change' import mouseChange, { MouseModifiers } from 'mol-util/mouse-change'
import mouseWheel from 'mol-util/mouse-wheel' import mouseWheel from 'mol-util/mouse-wheel'
import { defaults } from 'mol-util'
import { Mat4, Vec3 } from 'mol-math/linear-algebra/3d' import { Mat4, Vec3 } from 'mol-math/linear-algebra/3d'
import { clamp, damp } from 'mol-math/interpolate' import { clamp, damp } from 'mol-math/interpolate'
...@@ -53,25 +54,25 @@ export interface Camera { ...@@ -53,25 +54,25 @@ export interface Camera {
export namespace Camera { export namespace Camera {
export function create (regl: REGL.Regl, element: HTMLElement, props: Partial<CameraState> = {}): Camera { export function create (regl: REGL.Regl, element: HTMLElement, props: Partial<CameraState> = {}): Camera {
const state: CameraState = { const state: CameraState = {
center: props.center || Vec3.zero(), center: defaults(props.center, Vec3.zero()),
theta: props.theta || 0, theta: defaults(props.theta, 0),
phi: props.phi || 0, phi: defaults(props.phi, 0),
distance: Math.log(props.distance || 10.0), distance: Math.log(defaults(props.distance, 10.0)),
eye: Vec3.zero(), eye: Vec3.zero(),
up: props.up || Vec3.create(0, 1, 0), up: defaults(props.up, Vec3.create(0, 1, 0)),
fovy: props.fovy || Math.PI / 4.0, fovy: defaults(props.fovy, Math.PI / 4.0),
near: typeof props.near !== 'undefined' ? props.near : 0.01, near: defaults(props.near, 0.01),
far: typeof props.far !== 'undefined' ? props.far : 1000.0, far: defaults(props.far, 1000.0),
noScroll: typeof props.noScroll !== 'undefined' ? props.noScroll : false, noScroll: defaults(props.noScroll, false),
flipY: !!props.flipY, flipY: defaults(props.flipY, false),
dtheta: 0, dtheta: 0,
dphi: 0, dphi: 0,
rotationSpeed: typeof props.rotationSpeed !== 'undefined' ? props.rotationSpeed : 1, rotationSpeed: defaults(props.rotationSpeed, 1),
zoomSpeed: typeof props.zoomSpeed !== 'undefined' ? props.zoomSpeed : 1, zoomSpeed: defaults(props.zoomSpeed, 1),
renderOnDirty: typeof props.renderOnDirty !== undefined ? !!props.renderOnDirty : false, renderOnDirty: defaults(props.renderOnDirty, false),
damping: typeof props.damping !== 'undefined' ? props.damping : 0.9, damping: defaults(props.damping, 0.9),
minDistance: Math.log(typeof props.minDistance !== 'undefined' ? props.minDistance : 0.1), minDistance: Math.log(defaults(props.minDistance, 0.1)),
maxDistance: Math.log(typeof props.maxDistance !== 'undefined' ? props.maxDistance : 1000) maxDistance: Math.log(defaults(props.maxDistance, 1000))
} }
const view = Mat4.identity() const view = Mat4.identity()
......
...@@ -23,4 +23,8 @@ export function arrayEqual<T>(arr1: T[], arr2: T[]) { ...@@ -23,4 +23,8 @@ export function arrayEqual<T>(arr1: T[], arr2: T[]) {
} }
} }
return true 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