helper.ts 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. /**
  2. * Copyright (c) 2020 mol* contributors, licensed under MIT, See LICENSE file for more info.
  3. *
  4. * @author Alexander Rose <alexander.rose@weirdbyte.de>
  5. */
  6. import { Scene } from '../../mol-gl/scene';
  7. import { WebGLContext } from '../../mol-gl/webgl/context';
  8. import { ParamDefinition as PD } from '../../mol-util/param-definition';
  9. import { BoundingSphereHelper, DebugHelperParams } from './bounding-sphere-helper';
  10. import { CameraHelper, CameraHelperParams } from './camera-helper';
  11. import { HandleHelper, HandleHelperParams } from './handle-helper';
  12. export const HelperParams = {
  13. debug: PD.Group(DebugHelperParams),
  14. camera: PD.Group({
  15. helper: PD.Group(CameraHelperParams)
  16. }),
  17. handle: PD.Group(HandleHelperParams),
  18. };
  19. export const DefaultHelperProps = PD.getDefaultValues(HelperParams);
  20. export type HelperProps = PD.Values<typeof HelperParams>
  21. export class Helper {
  22. readonly debug: BoundingSphereHelper;
  23. readonly camera: CameraHelper;
  24. readonly handle: HandleHelper;
  25. constructor(webgl: WebGLContext, scene: Scene, props: Partial<HelperProps> = {}) {
  26. const p = { ...DefaultHelperProps, ...props };
  27. this.debug = new BoundingSphereHelper(webgl, scene, p.debug);
  28. this.camera = new CameraHelper(webgl, p.camera.helper);
  29. this.handle = new HandleHelper(webgl, p.handle);
  30. }
  31. }