Browse Source

simplified defaults handling

Alexander Rose 7 years ago
parent
commit
7ca8b1e19f
2 changed files with 21 additions and 16 deletions
  1. 17 16
      src/mol-gl/camera.ts
  2. 4 0
      src/mol-util/index.ts

+ 17 - 16
src/mol-gl/camera.ts

@@ -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()

+ 4 - 0
src/mol-util/index.ts

@@ -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
 }