| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- import {
- ACameraControlsPlugin,
- Camera,
- serialize,
- TControlsCtor,
- uiFolderContainer,
- uiInput,
- uiToggle,
- uiVector,
- Vector3,
- } from 'threepipe'
- import {EnvironmentControls} from '3d-tiles-renderer'
- import {UiObjectConfig} from 'uiconfig.js'
-
- export class EnvironmentControlsPlugin extends ACameraControlsPlugin {
- public static readonly PluginType = 'EnvironmentControlsPlugin'
- readonly controlsKey = 'environment'
-
- protected _controlsCtor: TControlsCtor = (object, domElement) => {
- return new EnvironmentControls2(object.parent ?? undefined, object, !domElement?.ownerDocument ? (domElement || document).documentElement : domElement)
- }
- }
-
- @uiFolderContainer('Environment Controls')
- export class EnvironmentControls2 extends EnvironmentControls {
- @uiToggle() @serialize() declare enabled: boolean
- @uiInput() @serialize() declare cameraRadius: number
- @uiInput() @serialize() declare rotationSpeed: number
- @uiInput() @serialize() declare minAltitude: number
- @uiInput() @serialize() declare maxAltitude: number
- @uiInput() @serialize() declare minDistance: number
- @uiInput() @serialize() maxDistance = 1e9 // should be Infinity but this breaks the UI
- @uiInput() @serialize() declare minZoom: number
- @uiInput() @serialize() maxZoom = 1e9 // should be Infinity but this breaks the UI
- @uiInput() @serialize() declare zoomSpeed: number
- @uiToggle() @serialize() declare adjustHeight: boolean
- @uiToggle() @serialize() declare enableDamping: boolean
- @uiInput() @serialize() declare dampingFactor: number
- @uiToggle() @serialize() declare useFallbackPlane: boolean
-
- @uiVector() @serialize() declare pivotPoint: Vector3
-
- // does nothing right now, required so autoLookAtTarget is not used
- target = new Vector3()
-
- get object() {
- // @ts-expect-error not in ts
- return this.camera as Camera/* |null*/
- }
-
- declare uiConfig: UiObjectConfig<void, 'folder'>
- }
|