threepipe
Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.

ICamera.ts 4.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. import {Camera, Vector3} from 'three'
  2. import {IObject3D, IObject3DEvent, IObject3DEventTypes, IObject3DUserData, IObjectSetDirtyOptions} from './IObject'
  3. import {IShaderPropertiesUpdater} from '../materials'
  4. import {ICameraControls, TControlsCtor} from './camera/ICameraControls'
  5. /**
  6. * Available modes for {@link ICamera.controlsMode} property.
  7. * This is defined just for autocomplete, these and any other control type can be added by plugins
  8. */
  9. export type TCameraControlsMode = '' | 'orbit' | 'deviceOrientation' | 'firstPerson' | 'pointerLock' | string
  10. export interface ICameraUserData extends IObject3DUserData {
  11. autoNearFar?: boolean // default = true
  12. minNearPlane?: number // default = 0.2
  13. maxFarPlane?: number // default = 1000
  14. autoLookAtTarget?: boolean // default = false, only for when controls and interactions are disabled
  15. __lastScale?: Vector3,
  16. __isMainCamera?: boolean,
  17. // [key: string]: any // commented for noe
  18. }
  19. export interface ICamera<E extends ICameraEvent = ICameraEvent, ET extends ICameraEventTypes = ICameraEventTypes> extends Camera<E, ET>, IObject3D<E, ET>, IShaderPropertiesUpdater {
  20. assetType: 'camera'
  21. readonly isCamera: true
  22. setDirty(options?: ICameraSetDirtyOptions): void;
  23. near: number;
  24. far: number;
  25. readonly isMainCamera: boolean;
  26. activateMain(options?: Partial<ICameraEvent>, _internal?: boolean, _refresh?: boolean): void;
  27. deactivateMain(options?: Partial<ICameraEvent>, _internal?: boolean, _refresh?: boolean): void;
  28. /**
  29. * @deprecated use `this` instead
  30. */
  31. cameraObject: this
  32. readonly controls: ICameraControls|undefined;
  33. // getControls<T extends TControls>(): T|undefined;
  34. refreshTarget(): void;
  35. refreshAspect(setDirty?: boolean): void;
  36. /**
  37. * Target of camera, in world(global) coordinates.
  38. */
  39. target: Vector3,
  40. /**
  41. * Local position of camera.
  42. */
  43. position: Vector3,
  44. interactionsEnabled: boolean;
  45. readonly canUserInteract: boolean;
  46. zoom: number;
  47. /**
  48. * Camera frustum aspect ratio, window width divided by window height.
  49. * It can be managed internally if {@link autoAspect} is true.
  50. * @default 1
  51. */
  52. aspect: number;
  53. /**
  54. * Automatically manage aspect ratio based on window/canvas size.
  55. */
  56. autoAspect: boolean;
  57. controlsMode?: TCameraControlsMode; // todo add more.
  58. // controlsEnabled: boolean; // use controlsMode = '' instead
  59. // todo
  60. // Note: for userData: add _ in front of for private use, which is preserved while cloning but not serialisation, and __ for private use, which is not preserved while cloning and serialisation
  61. userData: ICameraUserData
  62. /**
  63. * @deprecated use {@link isMainCamera} instead
  64. */
  65. isActiveCamera: boolean;
  66. setControlsCtor(key: string, ctor: TControlsCtor, replace?: boolean): void;
  67. removeControlsCtor(key: string): void;
  68. refreshCameraControls(setDirty?: boolean): void
  69. // region inherited type fixes
  70. // re-declaring from IObject3D because: https://github.com/microsoft/TypeScript/issues/16936
  71. traverse(callback: (object: IObject3D) => void): void
  72. traverseVisible(callback: (object: IObject3D) => void): void
  73. traverseAncestors(callback: (object: IObject3D) => void): void
  74. getObjectById(id: number): IObject3D | undefined
  75. getObjectByName(name: string): IObject3D | undefined
  76. getObjectByProperty(name: string, value: string): IObject3D | undefined
  77. copy(source: this, recursive?: boolean, distanceFromTarget?: number, ...args: any[]): this
  78. clone(recursive?: boolean): this
  79. add(...object: IObject3D[]): this
  80. remove(...object: IObject3D[]): this
  81. parent: IObject3D | null
  82. children: IObject3D[]
  83. // endregion
  84. }
  85. export type ICameraEventTypes = IObject3DEventTypes | 'update'// | string
  86. export type ICameraEvent = Omit<IObject3DEvent, 'type'> & {
  87. type: ICameraEventTypes
  88. camera?: ICamera | null
  89. // change?: string
  90. }
  91. export type ICameraSetDirtyOptions = IObjectSetDirtyOptions