@needle-tools/engine 2.29.0-pre → 2.30.0-pre

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (85) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/dist/needle-engine.d.ts +44 -8
  3. package/dist/needle-engine.js +347 -343
  4. package/dist/needle-engine.js.map +4 -4
  5. package/dist/needle-engine.min.js +20 -16
  6. package/dist/needle-engine.min.js.map +4 -4
  7. package/lib/engine/engine.d.ts +1 -0
  8. package/lib/engine/engine_serialization.d.ts +1 -0
  9. package/lib/engine/engine_serialization.js +1 -0
  10. package/lib/engine/engine_serialization.js.map +1 -1
  11. package/lib/engine/engine_setup.d.ts +5 -0
  12. package/lib/engine/engine_setup.js +6 -0
  13. package/lib/engine/engine_setup.js.map +1 -1
  14. package/lib/engine/engine_utils.d.ts +1 -1
  15. package/lib/engine/engine_utils.js +25 -8
  16. package/lib/engine/engine_utils.js.map +1 -1
  17. package/lib/engine/extensions/NEEDLE_deferred_texture.d.ts +1 -1
  18. package/lib/engine/extensions/NEEDLE_deferred_texture.js +26 -14
  19. package/lib/engine/extensions/NEEDLE_deferred_texture.js.map +1 -1
  20. package/lib/engine/extensions/extension_utils.js +24 -13
  21. package/lib/engine/extensions/extension_utils.js.map +1 -1
  22. package/lib/engine/extensions/extensions.js +3 -1
  23. package/lib/engine/extensions/extensions.js.map +1 -1
  24. package/lib/engine-components/Camera.js +7 -0
  25. package/lib/engine-components/Camera.js.map +1 -1
  26. package/lib/engine-components/OrbitControls.js +2 -1
  27. package/lib/engine-components/OrbitControls.js.map +1 -1
  28. package/lib/engine-components/Renderer.d.ts +1 -0
  29. package/lib/engine-components/Renderer.js +10 -3
  30. package/lib/engine-components/Renderer.js.map +1 -1
  31. package/lib/engine-components/ScreenCapture.d.ts +1 -0
  32. package/lib/engine-components/ScreenCapture.js +265 -1
  33. package/lib/engine-components/ScreenCapture.js.map +1 -1
  34. package/lib/engine-components/SpectatorCamera.js +29 -5
  35. package/lib/engine-components/SpectatorCamera.js.map +1 -1
  36. package/lib/engine-components/SyncedRoom.js +2 -0
  37. package/lib/engine-components/SyncedRoom.js.map +1 -1
  38. package/lib/engine-components/VideoPlayer.d.ts +10 -1
  39. package/lib/engine-components/VideoPlayer.js +64 -15
  40. package/lib/engine-components/VideoPlayer.js.map +1 -1
  41. package/lib/engine-components/Volume.d.ts +4 -0
  42. package/lib/engine-components/Volume.js +44 -3
  43. package/lib/engine-components/Volume.js.map +1 -1
  44. package/lib/engine-components/WebARSessionRoot.d.ts +9 -2
  45. package/lib/engine-components/WebARSessionRoot.js +69 -24
  46. package/lib/engine-components/WebARSessionRoot.js.map +1 -1
  47. package/lib/engine-components/WebXR.d.ts +6 -3
  48. package/lib/engine-components/WebXR.js +42 -7
  49. package/lib/engine-components/WebXR.js.map +1 -1
  50. package/lib/engine-components/WebXRAvatar.js +4 -0
  51. package/lib/engine-components/WebXRAvatar.js.map +1 -1
  52. package/lib/engine-components/WebXRController.js +13 -7
  53. package/lib/engine-components/WebXRController.js.map +1 -1
  54. package/lib/engine-components/ui/CanvasGroup.d.ts +1 -0
  55. package/lib/engine-components/ui/CanvasGroup.js +1 -0
  56. package/lib/engine-components/ui/CanvasGroup.js.map +1 -1
  57. package/lib/engine-components/ui/EventSystem.js +13 -4
  58. package/lib/engine-components/ui/EventSystem.js.map +1 -1
  59. package/lib/engine-components/ui/Graphic.d.ts +1 -0
  60. package/lib/engine-components/ui/Graphic.js +2 -0
  61. package/lib/engine-components/ui/Graphic.js.map +1 -1
  62. package/lib/engine-components/ui/Interfaces.d.ts +2 -0
  63. package/package.json +2 -2
  64. package/src/engine/engine_serialization.ts +3 -1
  65. package/src/engine/engine_setup.ts +6 -0
  66. package/src/engine/engine_utils.ts +34 -8
  67. package/src/engine/extensions/NEEDLE_deferred_texture.ts +25 -19
  68. package/src/engine/extensions/extension_utils.ts +24 -12
  69. package/src/engine/extensions/extensions.ts +3 -2
  70. package/src/engine-components/Camera.ts +9 -1
  71. package/src/engine-components/OrbitControls.ts +2 -1
  72. package/src/engine-components/Renderer.ts +11 -3
  73. package/src/engine-components/ScreenCapture.ts +312 -2
  74. package/src/engine-components/SpectatorCamera.ts +28 -5
  75. package/src/engine-components/SyncedRoom.ts +1 -0
  76. package/src/engine-components/VideoPlayer.ts +97 -21
  77. package/src/engine-components/Volume.ts +47 -4
  78. package/src/engine-components/WebARSessionRoot.ts +78 -28
  79. package/src/engine-components/WebXR.ts +50 -15
  80. package/src/engine-components/WebXRAvatar.ts +5 -0
  81. package/src/engine-components/WebXRController.ts +20 -14
  82. package/src/engine-components/ui/CanvasGroup.ts +2 -0
  83. package/src/engine-components/ui/EventSystem.ts +21 -15
  84. package/src/engine-components/ui/Graphic.ts +3 -0
  85. package/src/engine-components/ui/Interfaces.ts +2 -0
package/CHANGELOG.md CHANGED
@@ -4,6 +4,15 @@ All notable changes to this package will be documented in this file.
4
4
  The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
5
5
  and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
6
6
 
7
+ ## [2.30.0-pre] - 2022-10-12
8
+ - Add: Quest 2 passthrough support
9
+ - Add: UI Graphic components now support ``raycastTarget`` again
10
+ - Add: VideoPlayer now supports ``materialTarget`` option which allows for assigning any renderer in the scene that should be used as a video canvas
11
+ - Changed: updated three-mesh-ui dependency version
12
+ - Changed: updated needle-gltfTransform extensions package, fixing an issue with passthrough of texture json pointers
13
+ - Changed: selecting SpectatorCam now requires click (instead of just listening to pointer up event)
14
+ - Fix: Avatars using instanced materials should now update transforms correctly again
15
+
7
16
  ## [2.29.0-pre] - 2022-10-10
8
17
  - Add: Context.removeCamera method
9
18
  - Add: SpectatorCam allows to follow other users across devices by clicking on respective avatar (e.g. clicking SyncedCam avatar or WebXR avatar, ESC or long press to stop spectating)
@@ -57,7 +57,7 @@ declare module "engine/engine_utils" {
57
57
  type deepClonePredicate = (owner: any, propertyName: string, current: any) => boolean;
58
58
  export function deepClone(obj: any, predicate?: deepClonePredicate): any;
59
59
  export function delay(milliseconds: number): Promise<void>;
60
- export function getPath(glbLocation: SourceIdentifier | undefined, path: string): string;
60
+ export function getPath(source: SourceIdentifier | undefined, uri: string): string;
61
61
  export type WriteCallback = (data: any) => void;
62
62
  export class Watch {
63
63
  subscribeWrite(callback: WriteCallback): void;
@@ -960,7 +960,7 @@ declare module "engine/extensions/NEEDLE_deferred_texture" {
960
960
  import { Context } from "engine/engine_setup";
961
961
  export const EXTENSION_NAME = "NEEDLE_deferred_texture";
962
962
  export class NEEDLE_deferred_texture implements GLTFLoaderPlugin {
963
- static assignTextureLOD(context: Context, material: Material, level?: number): void;
963
+ static assignTextureLOD(context: Context, source: SourceIdentifier | undefined, material: Material, level?: number): void;
964
964
  get name(): string;
965
965
  private parser;
966
966
  private sourceId;
@@ -1018,6 +1018,7 @@ declare module "engine-components/Renderer" {
1018
1018
  private _isInstancingEnabled;
1019
1019
  private handles;
1020
1020
  private prevLayers;
1021
+ private clearInstancingState;
1021
1022
  setInstancingEnabled(enabled: boolean): boolean;
1022
1023
  start(): void;
1023
1024
  onEnable(): void;
@@ -1584,6 +1585,7 @@ declare module "engine/engine_serialization" {
1584
1585
  import { serializeObject, deserializeObject } from "engine/engine_serialization_core";
1585
1586
  import * as builtin from "engine/engine_serialization_builtin_serializer";
1586
1587
  export { serializeObject, deserializeObject, builtin };
1588
+ export { serializeable } from "engine/engine_serialization_decorator";
1587
1589
  }
1588
1590
  declare module "engine/extensions/NEEDLE_components" {
1589
1591
  import { GLTF, GLTFLoaderPlugin, GLTFParser } from "three/examples/jsm/loaders/GLTFLoader";
@@ -2411,20 +2413,27 @@ declare module "engine-components/WebXRController" {
2411
2413
  declare module "engine-components/WebARSessionRoot" {
2412
2414
  import { Behaviour } from "engine-components/Component";
2413
2415
  import * as THREE from 'three';
2414
- import { XRPose } from "three";
2416
+ import { Matrix4, XRPose } from "three";
2415
2417
  import { WebAR } from "engine-components/WebXR";
2416
2418
  export class WebARSessionRoot extends Behaviour {
2417
2419
  webAR: WebAR | null;
2420
+ get rig(): THREE.Object3D | undefined;
2418
2421
  invertForward: boolean;
2419
2422
  get arScale(): number;
2420
2423
  set arScale(val: number);
2424
+ private readonly _initalMatrix;
2425
+ private readonly _selectStartFn;
2426
+ private readonly _selectEndFn;
2427
+ start(): void;
2421
2428
  private _arScale;
2422
2429
  private _rig;
2423
2430
  private _startPose;
2424
2431
  private _placementPose;
2425
2432
  private _isTouching;
2433
+ private _rigStartPose;
2426
2434
  onBegin(session: THREE.XRSession): void;
2427
- onUpdate(rig: THREE.Object3D | null, _session: THREE.XRSession, pose: XRPose | null | undefined): void;
2435
+ onUpdate(rig: THREE.Object3D | null, _session: THREE.XRSession, pose: XRPose | null | undefined): boolean;
2436
+ placeAt(rig: THREE.Object3D | null, mat: Matrix4): void;
2428
2437
  onEnd(rig: THREE.Object3D | null, _session: THREE.XRSession): void;
2429
2438
  private onSelectStart;
2430
2439
  private onSelectEnd;
@@ -2471,7 +2480,7 @@ declare module "engine-components/WebXR" {
2471
2480
  static createARButton(webXR: WebXR, opts?: CreateButtonOptions): HTMLButtonElement;
2472
2481
  static resetButtonStyles(button: any): void;
2473
2482
  endSession(): void;
2474
- get Rig(): THREE.Object3D | null;
2483
+ get Rig(): THREE.Object3D;
2475
2484
  private controllers;
2476
2485
  get Controllers(): WebXRController[];
2477
2486
  get LeftController(): WebXRController | null;
@@ -2511,7 +2520,8 @@ declare module "engine-components/WebXR" {
2511
2520
  private onEnterXR_HandleMirrorWindow;
2512
2521
  }
2513
2522
  export class WebAR {
2514
- private webxr;
2523
+ get webxr(): WebXR;
2524
+ private _webxr;
2515
2525
  private reticle;
2516
2526
  private hitTestSource;
2517
2527
  private reticleActive;
@@ -2524,9 +2534,11 @@ declare module "engine-components/WebXR" {
2524
2534
  constructor(webxr: WebXR);
2525
2535
  private arDomOverlay;
2526
2536
  private arOverlayElement;
2537
+ private noHitTestAvailable;
2538
+ private didPlaceARSessionRoot;
2527
2539
  getAROverlayContainer(): HTMLElement | null;
2528
2540
  setReticleActive(active: boolean): void;
2529
- onBegin(session: THREE.XRSession): void;
2541
+ onBegin(session: THREE.XRSession): Promise<void>;
2530
2542
  onEnd(_session: THREE.XRSession): void;
2531
2543
  onUpdate(session: THREE.XRSession, frame: THREE.XRFrame): void;
2532
2544
  }
@@ -2865,10 +2877,12 @@ declare module "engine-components/DragControls" {
2865
2877
  }
2866
2878
  declare module "engine-components/ui/Interfaces" {
2867
2879
  export interface ICanvasGroup {
2880
+ get isCanvasGroup(): boolean;
2868
2881
  blocksRaycasts: boolean;
2869
2882
  interactable: boolean;
2870
2883
  }
2871
2884
  export interface IGraphic {
2885
+ get isGraphic(): boolean;
2872
2886
  raycastTarget: boolean;
2873
2887
  }
2874
2888
  }
@@ -3073,6 +3087,10 @@ declare module "engine/engine_setup" {
3073
3087
  OnAfterRender = 4,
3074
3088
  PhysicsStep = 10
3075
3089
  }
3090
+ export enum XRSessionMode {
3091
+ ImmersiveVR = "immersive-vr",
3092
+ ImmersiveAR = "immersive-ar"
3093
+ }
3076
3094
  export type OnBeforeRenderCallback = (renderer: THREE.WebGLRenderer, scene: THREE.Scene, camera: THREE.Camera, geometry: THREE.BufferGeometry, material: THREE.Material, group: THREE.Group) => void;
3077
3095
  export class Context {
3078
3096
  private static _current;
@@ -3091,6 +3109,7 @@ declare module "engine/engine_setup" {
3091
3109
  get domX(): number;
3092
3110
  get domY(): number;
3093
3111
  get isInXR(): boolean;
3112
+ xrSessionMode: XRSessionMode | undefined;
3094
3113
  get xrSession(): THREE.XRSession | null;
3095
3114
  get arOverlayElement(): HTMLElement;
3096
3115
  scene: THREE.Scene;
@@ -3755,11 +3774,20 @@ declare module "engine-components/VideoPlayer" {
3755
3774
  Direct = 2,
3756
3775
  APIOnly = 3
3757
3776
  }
3777
+ export enum VideoRenderMode {
3778
+ CameraFarPlane = 0,
3779
+ CameraNearPlane = 1,
3780
+ RenderTexture = 2,
3781
+ MaterialOverride = 3
3782
+ }
3758
3783
  export class VideoPlayer extends Behaviour {
3759
3784
  renderer: THREE.Object3D | null;
3760
3785
  playOnAwake: boolean;
3761
3786
  playOnEnable?: boolean;
3762
- targetMaterialProperty?: string;
3787
+ private renderMode?;
3788
+ private targetMaterialProperty?;
3789
+ private targetMaterialRenderer?;
3790
+ private targetTexture?;
3763
3791
  private time;
3764
3792
  private _playbackSpeed;
3765
3793
  get playbackSpeed(): number;
@@ -3808,6 +3836,7 @@ declare module "engine-components/ScreenCapture" {
3808
3836
  private captureStream;
3809
3837
  open(force?: boolean): Promise<void>;
3810
3838
  close(): void;
3839
+ private handleNetworkedVideo;
3811
3840
  }
3812
3841
  }
3813
3842
  declare module "engine-components/ShadowCatcher" {
@@ -4140,10 +4169,14 @@ declare module "engine-components/Volume" {
4140
4169
  export class VolumeProfile {
4141
4170
  components?: VolumeComponent[];
4142
4171
  apply(context: Context): void;
4172
+ unapply(context: Context): void;
4173
+ private onUpdate;
4143
4174
  }
4144
4175
  export class Volume extends Behaviour {
4145
4176
  sharedProfile?: VolumeProfile;
4177
+ awake(): void;
4146
4178
  onEnable(): void;
4179
+ onDisable(): void;
4147
4180
  }
4148
4181
  }
4149
4182
  declare module "engine-components/WebXRGrabRendering" {
@@ -4575,6 +4608,7 @@ declare module "engine-components/ui/Graphic" {
4575
4608
  import { Texture } from 'three';
4576
4609
  import { RectTransform } from "engine-components/ui/RectTransform";
4577
4610
  export class Graphic extends BaseUIComponent implements IGraphic {
4611
+ get isGraphic(): boolean;
4578
4612
  get color(): RGBAColor;
4579
4613
  set color(col: RGBAColor);
4580
4614
  protected onColorChanged(): void;
@@ -4726,6 +4760,7 @@ declare module "engine-components/ui/CanvasGroup" {
4726
4760
  export class CanvasGroup extends Behaviour implements ICanvasGroup {
4727
4761
  get alpha(): number;
4728
4762
  set alpha(val: number);
4763
+ get isCanvasGroup(): boolean;
4729
4764
  private _alpha;
4730
4765
  interactable: boolean;
4731
4766
  blocksRaycasts: boolean;
@@ -5060,6 +5095,7 @@ declare module "engine/engine" {
5060
5095
  LoadingOptions: typeof engine_setup.LoadingOptions;
5061
5096
  ContextArgs: typeof engine_setup.ContextArgs;
5062
5097
  FrameEvent: typeof engine_setup.FrameEvent;
5098
+ XRSessionMode: typeof engine_setup.XRSessionMode;
5063
5099
  Context: typeof engine_setup.Context;
5064
5100
  };
5065
5101
  export { engine as engine };