threepipe
Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

EnvironmentControlsPlugin.ts 1.9KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. import {
  2. ACameraControlsPlugin,
  3. Camera,
  4. serialize,
  5. TControlsCtor,
  6. uiFolderContainer,
  7. uiInput,
  8. uiToggle,
  9. uiVector,
  10. Vector3,
  11. } from 'threepipe'
  12. import {EnvironmentControls} from '3d-tiles-renderer'
  13. import {UiObjectConfig} from 'uiconfig.js'
  14. export class EnvironmentControlsPlugin extends ACameraControlsPlugin {
  15. public static readonly PluginType = 'EnvironmentControlsPlugin'
  16. readonly controlsKey = 'environment'
  17. protected _controlsCtor: TControlsCtor = (object, domElement) => {
  18. return new EnvironmentControls2(object.parent ?? undefined, object, !domElement?.ownerDocument ? (domElement || document).documentElement : domElement)
  19. }
  20. }
  21. @uiFolderContainer('Environment Controls')
  22. export class EnvironmentControls2 extends EnvironmentControls {
  23. @uiToggle() @serialize() declare enabled: boolean
  24. @uiInput() @serialize() declare cameraRadius: number
  25. @uiInput() @serialize() declare rotationSpeed: number
  26. @uiInput() @serialize() declare minAltitude: number
  27. @uiInput() @serialize() declare maxAltitude: number
  28. @uiInput() @serialize() declare minDistance: number
  29. @uiInput() @serialize() maxDistance = 1e9 // should be Infinity but this breaks the UI
  30. @uiInput() @serialize() declare minZoom: number
  31. @uiInput() @serialize() maxZoom = 1e9 // should be Infinity but this breaks the UI
  32. @uiInput() @serialize() declare zoomSpeed: number
  33. @uiToggle() @serialize() declare adjustHeight: boolean
  34. @uiToggle() @serialize() declare enableDamping: boolean
  35. @uiInput() @serialize() declare dampingFactor: number
  36. @uiToggle() @serialize() declare useFallbackPlane: boolean
  37. @uiVector() @serialize() declare pivotPoint: Vector3
  38. // does nothing right now, required so autoLookAtTarget is not used
  39. target = new Vector3()
  40. get object() {
  41. // @ts-expect-error not in ts
  42. return this.camera as Camera/* |null*/
  43. }
  44. declare uiConfig: UiObjectConfig<void, 'folder'>
  45. }