@needle-tools/engine 2.35.5-pre → 2.36.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 (115) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/dist/needle-engine.d.ts +160 -110
  3. package/dist/needle-engine.js +370 -365
  4. package/dist/needle-engine.js.map +4 -4
  5. package/dist/needle-engine.min.js +61 -56
  6. package/dist/needle-engine.min.js.map +4 -4
  7. package/lib/engine/debug/debug_overlay.js +12 -1
  8. package/lib/engine/debug/debug_overlay.js.map +1 -1
  9. package/lib/engine/engine_element_loading.js +1 -1
  10. package/lib/engine/engine_element_loading.js.map +1 -1
  11. package/lib/engine/engine_gameobject.d.ts +1 -0
  12. package/lib/engine/engine_gameobject.js +13 -1
  13. package/lib/engine/engine_gameobject.js.map +1 -1
  14. package/lib/engine/engine_gltf_builtin_components.js +4 -0
  15. package/lib/engine/engine_gltf_builtin_components.js.map +1 -1
  16. package/lib/engine/engine_mainloop_utils.d.ts +1 -1
  17. package/lib/engine/engine_mainloop_utils.js +7 -3
  18. package/lib/engine/engine_mainloop_utils.js.map +1 -1
  19. package/lib/engine/engine_physics.d.ts +29 -28
  20. package/lib/engine/engine_physics.js +85 -86
  21. package/lib/engine/engine_physics.js.map +1 -1
  22. package/lib/engine/engine_serialization_core.js +14 -6
  23. package/lib/engine/engine_serialization_core.js.map +1 -1
  24. package/lib/engine/engine_setup.js +1 -1
  25. package/lib/engine/engine_setup.js.map +1 -1
  26. package/lib/engine/engine_time.d.ts +1 -0
  27. package/lib/engine/engine_time.js +1 -0
  28. package/lib/engine/engine_time.js.map +1 -1
  29. package/lib/engine/engine_types.d.ts +1 -0
  30. package/lib/engine/engine_types.js.map +1 -1
  31. package/lib/engine/engine_typestore.d.ts +1 -0
  32. package/lib/engine/engine_typestore.js +1 -0
  33. package/lib/engine/engine_typestore.js.map +1 -1
  34. package/lib/engine/engine_utils.js +1 -1
  35. package/lib/engine/engine_utils.js.map +1 -1
  36. package/lib/engine/extensions/NEEDLE_animator_controller_model.js.map +1 -1
  37. package/lib/engine/extensions/NEEDLE_techniques_webgl.js +5 -0
  38. package/lib/engine/extensions/NEEDLE_techniques_webgl.js.map +1 -1
  39. package/lib/engine-components/Animation.d.ts +5 -1
  40. package/lib/engine-components/Animation.js +21 -0
  41. package/lib/engine-components/Animation.js.map +1 -1
  42. package/lib/engine-components/AnimatorController.d.ts +1 -0
  43. package/lib/engine-components/AnimatorController.js +14 -7
  44. package/lib/engine-components/AnimatorController.js.map +1 -1
  45. package/lib/engine-components/BoxHelperComponent.d.ts +2 -2
  46. package/lib/engine-components/BoxHelperComponent.js +27 -9
  47. package/lib/engine-components/BoxHelperComponent.js.map +1 -1
  48. package/lib/engine-components/Component.d.ts +2 -1
  49. package/lib/engine-components/Component.js +11 -5
  50. package/lib/engine-components/Component.js.map +1 -1
  51. package/lib/engine-components/GroundProjection.d.ts +2 -0
  52. package/lib/engine-components/GroundProjection.js +18 -6
  53. package/lib/engine-components/GroundProjection.js.map +1 -1
  54. package/lib/engine-components/ReflectionProbe.d.ts +22 -0
  55. package/lib/engine-components/ReflectionProbe.js +134 -0
  56. package/lib/engine-components/ReflectionProbe.js.map +1 -0
  57. package/lib/engine-components/Renderer.d.ts +13 -2
  58. package/lib/engine-components/Renderer.js +96 -45
  59. package/lib/engine-components/Renderer.js.map +1 -1
  60. package/lib/engine-components/WebARSessionRoot.d.ts +7 -7
  61. package/lib/engine-components/WebARSessionRoot.js +7 -7
  62. package/lib/engine-components/WebARSessionRoot.js.map +1 -1
  63. package/lib/engine-components/WebXR.d.ts +9 -8
  64. package/lib/engine-components/WebXR.js +40 -24
  65. package/lib/engine-components/WebXR.js.map +1 -1
  66. package/lib/engine-components/WebXRAvatar.d.ts +4 -5
  67. package/lib/engine-components/WebXRAvatar.js +9 -8
  68. package/lib/engine-components/WebXRAvatar.js.map +1 -1
  69. package/lib/engine-components/WebXRController.d.ts +21 -21
  70. package/lib/engine-components/WebXRController.js +79 -63
  71. package/lib/engine-components/WebXRController.js.map +1 -1
  72. package/lib/engine-components/WebXRGrabRendering.d.ts +3 -3
  73. package/lib/engine-components/WebXRGrabRendering.js +2 -2
  74. package/lib/engine-components/WebXRGrabRendering.js.map +1 -1
  75. package/lib/engine-components/WebXRSync.d.ts +8 -8
  76. package/lib/engine-components/WebXRSync.js +15 -15
  77. package/lib/engine-components/WebXRSync.js.map +1 -1
  78. package/lib/engine-components/codegen/components.d.ts +1 -0
  79. package/lib/engine-components/codegen/components.js +1 -0
  80. package/lib/engine-components/codegen/components.js.map +1 -1
  81. package/lib/engine-components/ui/EventSystem.d.ts +1 -0
  82. package/lib/engine-components/ui/EventSystem.js +21 -1
  83. package/lib/engine-components/ui/EventSystem.js.map +1 -1
  84. package/package.json +1 -1
  85. package/src/engine/codegen/register_types.js +293 -0
  86. package/src/engine/debug/debug_overlay.ts +9 -2
  87. package/src/engine/engine_element_loading.ts +1 -1
  88. package/src/engine/engine_gameobject.ts +17 -4
  89. package/src/engine/engine_gltf_builtin_components.ts +5 -1
  90. package/src/engine/engine_mainloop_utils.ts +7 -3
  91. package/src/engine/engine_physics.ts +130 -130
  92. package/src/engine/engine_serialization_core.ts +14 -7
  93. package/src/engine/engine_setup.ts +1 -1
  94. package/src/engine/engine_time.ts +2 -0
  95. package/src/engine/engine_types.ts +1 -0
  96. package/src/engine/engine_typestore.ts +2 -0
  97. package/src/engine/engine_utils.ts +3 -2
  98. package/src/engine/extensions/EXT_texture_exr.js +1 -1
  99. package/src/engine/extensions/NEEDLE_animator_controller_model.ts +2 -1
  100. package/src/engine/extensions/NEEDLE_techniques_webgl.ts +7 -0
  101. package/src/engine-components/Animation.ts +16 -1
  102. package/src/engine-components/AnimatorController.ts +19 -9
  103. package/src/engine-components/BoxHelperComponent.ts +29 -9
  104. package/src/engine-components/Component.ts +11 -5
  105. package/src/engine-components/GroundProjection.ts +22 -7
  106. package/src/engine-components/ReflectionProbe.ts +141 -0
  107. package/src/engine-components/Renderer.ts +796 -737
  108. package/src/engine-components/WebARSessionRoot.ts +16 -16
  109. package/src/engine-components/WebXR.ts +53 -48
  110. package/src/engine-components/WebXRAvatar.ts +16 -16
  111. package/src/engine-components/WebXRController.ts +129 -107
  112. package/src/engine-components/WebXRGrabRendering.ts +6 -6
  113. package/src/engine-components/WebXRSync.ts +20 -20
  114. package/src/engine-components/codegen/components.ts +1 -0
  115. package/src/engine-components/ui/EventSystem.ts +26 -3
package/CHANGELOG.md CHANGED
@@ -4,6 +4,25 @@ 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.36.0-pre] - 2022-10-26
8
+ - Add: Expose WebXR hand model path
9
+ - Add: Animation component can now be configured with random time scale and offset
10
+ - Change: allow blocking overlay errors using the ``?noerrors`` query parameter
11
+ - Change: don't use Composer for postprocessing in XR (see [issue](https://github.com/needle-tools/needle-engine-support/issues/101))
12
+ - Change: physics intersections causing NaN's are now reported prominently and physics bodies are removed from physics world as an interim solution, this provides more information about problematic colliders for debugging
13
+ - Fix: bug that caused component events for onEnable and onDisable not being called anymore in some cases
14
+ - Fix: cases where loading overlay using old project template wouldnt be removed/hidden anymore
15
+ - Fix: WebXR hide large hand grab sphere
16
+ - Fix: onPointerUp event not firing using WebXR controllers when grabbing an object for the second time
17
+ - Fix: GroundProjection can now be removed again
18
+ - Fix: Custom shaders exported using builtin RP can now use _Time property
19
+ - Fix: Only create two controllers when in AR on oculus browser
20
+ - Fix: BoxHelperComponent can now handle multi-material objects (groups)
21
+
22
+ ## [2.35.6-pre] - 2022-10-24
23
+ - Add: warning balloon when unknown components are detected and have been most likely forgot to be installed, linking to npmdef docs
24
+ - Fix: dont show serialization warning for builtin components where specific fields are not deserialized on purpose (since right now the serializer does not check which fields are actually implemented)
25
+
7
26
  ## [2.35.5-pre] - 2022-10-24
8
27
  - Change: AudioSource exposes ``clip`` field
9
28
  - Change: improve error and messaging overlay
@@ -102,6 +102,7 @@ declare module "engine/engine_types" {
102
102
  }
103
103
  export interface ISharedMaterials {
104
104
  [num: number]: Material;
105
+ get length(): number;
105
106
  }
106
107
  export interface IRenderer extends IComponent {
107
108
  sharedMaterial: Material;
@@ -199,6 +200,7 @@ declare module "engine/engine_typestore" {
199
200
  add(key: any, type: any): void;
200
201
  get(key: any): any;
201
202
  }
203
+ export const $BuiltInTypeFlag: unique symbol;
202
204
  export const TypeStore: _TypeStore;
203
205
  }
204
206
  declare module "engine/extensions/NEEDLE_persistent_assets" {
@@ -558,7 +560,7 @@ declare module "engine/engine_mainloop_utils" {
558
560
  export function processStart(context: Context, object?: Object3D): void;
559
561
  export function addScriptToArrays(script: any, context: Context): void;
560
562
  export function removeScriptFromContext(script: any, context: Context): void;
561
- export function updateIsActive(): void;
563
+ export function updateIsActive(obj?: Object3D): void;
562
564
  export function updateActiveInHierarchyWithoutEventCall(go: THREE.Object3D): void;
563
565
  }
564
566
  declare module "engine/engine_networking_types" {
@@ -673,6 +675,7 @@ declare module "engine/engine_gameobject" {
673
675
  context?: Context | undefined;
674
676
  }
675
677
  export function isActiveSelf(go: Object3D): boolean;
678
+ export function setActive(go: Object3D, active: boolean, setVisible?: boolean): void;
676
679
  export function isActiveInHierarchy(go: Object3D): boolean;
677
680
  export function markAsInstancedRendered(go: THREE.Object3D, instanced: boolean): void;
678
681
  export function isUsingInstancing(instance: THREE.Object3D): boolean;
@@ -682,10 +685,11 @@ declare module "engine/engine_gameobject" {
682
685
  export function instantiate(instance: GameObject | Object3D | null, opts?: InstantiateOptions | null): GameObject | null;
683
686
  }
684
687
  declare module "engine/engine_physics" {
685
- import * as CANNON from 'cannon-es';
686
- import * as THREE from 'three';
688
+ import { Body, Constraint } from 'cannon-es';
689
+ import { Camera, Intersection, Layers, Object3D, Ray, Raycaster, Vector2, Vector3 } from 'three';
687
690
  import { Context } from "engine/engine_setup";
688
691
  import { IGameObject as GameObject, ICollider, IRigidbody as Rigidbody } from "engine/engine_types";
692
+ import { Shape } from 'cannon-es';
689
693
  export class BodyOptions {
690
694
  mass: number;
691
695
  kinematic: boolean;
@@ -695,27 +699,27 @@ declare module "engine/engine_physics" {
695
699
  sleepThreshold: number;
696
700
  }
697
701
  export class RaycastOptions {
698
- ray: THREE.Ray | undefined;
699
- cam: THREE.Camera | undefined | null;
700
- screenPoint: THREE.Vector2 | undefined;
701
- raycaster: THREE.Raycaster | undefined;
702
- results: Array<THREE.Intersection> | undefined;
703
- targets: Array<THREE.Object3D> | undefined;
702
+ ray: Ray | undefined;
703
+ cam: Camera | undefined | null;
704
+ screenPoint: Vector2 | undefined;
705
+ raycaster: Raycaster | undefined;
706
+ results: Array<Intersection> | undefined;
707
+ targets: Array<Object3D> | undefined;
704
708
  recursive: boolean | undefined;
705
709
  minDistance: number | undefined;
706
710
  maxDistance: number | undefined;
707
711
  lineThreshold: number | undefined;
708
- layerMask: THREE.Layers | number | undefined;
709
- ignore: THREE.Object3D[] | undefined;
712
+ layerMask: Layers | number | undefined;
713
+ ignore: Object3D[] | undefined;
710
714
  screenPointFromOffset(ox: number, oy: number): void;
711
715
  setMask(mask: number): void;
712
716
  static AllLayers: number;
713
717
  }
714
- export class SphereIntersection implements THREE.Intersection {
718
+ export class SphereIntersection implements Intersection {
715
719
  distance: number;
716
- point: THREE.Vector3;
717
- object: THREE.Object3D;
718
- constructor(object: THREE.Object3D, distance: number, point: THREE.Vector3);
720
+ point: Vector3;
721
+ object: Object3D;
722
+ constructor(object: Object3D, distance: number, point: Vector3);
719
723
  }
720
724
  export class Physics {
721
725
  private readonly raycaster;
@@ -724,11 +728,11 @@ declare module "engine/engine_physics" {
724
728
  private readonly defaultThresholds;
725
729
  private sphereResults;
726
730
  private sphereMask;
727
- sphereOverlap(spherePos: THREE.Vector3, radius: number): Array<THREE.Intersection>;
731
+ sphereOverlap(spherePos: Vector3, radius: number, traverseChildsAfterHit?: boolean): Array<Intersection>;
728
732
  private tempBoundingBox;
729
733
  private onSphereOverlap;
730
- raycastFromRay(ray: THREE.Ray, options?: RaycastOptions | null): Array<THREE.Intersection>;
731
- raycast(options?: RaycastOptions | null): Array<THREE.Intersection>;
734
+ raycastFromRay(ray: Ray, options?: RaycastOptions | null): Array<Intersection>;
735
+ raycast(options?: RaycastOptions | null): Array<Intersection>;
732
736
  get isUpdating(): boolean;
733
737
  private _isUpdatingPhysicsWorld;
734
738
  private context;
@@ -739,16 +743,16 @@ declare module "engine/engine_physics" {
739
743
  constructor(context: Context);
740
744
  addPreStepListener(listener: (evt: any) => void): void;
741
745
  addPostStepListener(listener: (evt: any) => void): void;
742
- addConstraint(constraint: CANNON.Constraint): void;
743
- setGravity(vec: THREE.Vector3): void;
744
- multiplyGravity(vec: THREE.Vector3): void;
745
- addBody(go: GameObject, body: CANNON.Body): void;
746
- removeBody(go: GameObject, body: CANNON.Body, removeCompletely?: boolean): void;
747
- removeShape(obj: THREE.Object3D, shape: CANNON.Shape): void;
748
- createBody(obj: THREE.Object3D, settings: BodyOptions): CANNON.Body;
749
- addBoxCollider(obj: THREE.Object3D, trigger: boolean, center: THREE.Vector3, size: THREE.Vector3, rb: Rigidbody | null): CANNON.Shape;
750
- addSphereCollider(obj: THREE.Object3D, center: THREE.Vector3, radius: number, rb: Rigidbody | null): CANNON.Shape;
751
- addMeshCollider(_obj: THREE.Object3D): void;
746
+ addConstraint(constraint: Constraint): void;
747
+ setGravity(vec: Vector3): void;
748
+ multiplyGravity(vec: Vector3): void;
749
+ addBody(go: GameObject, body: Body): void;
750
+ removeBody(go: GameObject, body: Body, removeCompletely?: boolean): void;
751
+ removeShape(obj: Object3D, shape: Shape): void;
752
+ createBody(obj: Object3D, settings: BodyOptions): Body;
753
+ addBoxCollider(obj: Object3D, trigger: boolean, center: Vector3, size: Vector3, rb: Rigidbody | null): Shape;
754
+ addSphereCollider(obj: Object3D, center: Vector3, radius: number, rb: Rigidbody | null): Shape;
755
+ addMeshCollider(_obj: Object3D): void;
752
756
  private isAlreadyRegistered;
753
757
  private readonly tempMat1;
754
758
  private readonly tempMat2;
@@ -766,7 +770,7 @@ declare module "engine/engine_physics" {
766
770
  private onEndContact;
767
771
  }
768
772
  export interface IColliderProvider {
769
- getCollider(obj: THREE.Object3D): ICollider;
773
+ getCollider(obj: Object3D): ICollider;
770
774
  }
771
775
  export function registerColliderProvider(prov: IColliderProvider): void;
772
776
  }
@@ -774,6 +778,7 @@ declare module "engine/engine_time" {
774
778
  export class Time {
775
779
  deltaTime: number;
776
780
  time: number;
781
+ /** same as frameCount */
777
782
  frame: number;
778
783
  get realtimeSinceStartup(): number;
779
784
  get frameCount(): number;
@@ -1149,7 +1154,7 @@ declare module "engine-components/Component" {
1149
1154
  import { InstantiateOptions, HideFlags } from "engine/engine_gameobject";
1150
1155
  abstract class GameObject extends THREE.Object3D implements THREE.Object3D, IGameObject {
1151
1156
  guid: string | undefined;
1152
- static setActive(go: THREE.Object3D, active: boolean, processStart?: boolean): void;
1157
+ static setActive(go: THREE.Object3D, active: boolean, processStart?: boolean, setVisible?: boolean): void;
1153
1158
  static isActiveSelf(go: THREE.Object3D): boolean;
1154
1159
  static isActiveInHierarchy(go: THREE.Object3D): boolean;
1155
1160
  static markAsInstancedRendered(go: THREE.Object3D, instanced: boolean): void;
@@ -1243,6 +1248,7 @@ declare module "engine-components/Component" {
1243
1248
  protected __didEnable: boolean;
1244
1249
  protected __isEnabled: boolean | undefined;
1245
1250
  private __destroyed;
1251
+ get __internalDidAwakeAndStart(): boolean;
1246
1252
  __internalNewInstanceCreated(): void;
1247
1253
  __internalAwake(): void;
1248
1254
  __internalStart(): void;
@@ -1927,6 +1933,7 @@ declare module "engine-components/AnimatorController" {
1927
1933
  private updateActiveStates;
1928
1934
  private setStartTransition;
1929
1935
  private evaluateTransitions;
1936
+ private getState;
1930
1937
  private transitionTo;
1931
1938
  private createAction;
1932
1939
  private evaluateCondition;
@@ -1999,7 +2006,7 @@ declare module "engine-components/Animator" {
1999
2006
  declare module "engine-components/Animation" {
2000
2007
  import { Behaviour } from "engine-components/Component";
2001
2008
  import * as THREE from 'three';
2002
- import { AnimationAction, AnimationClip } from "three";
2009
+ import { AnimationAction, AnimationClip, Vector2 } from "three";
2003
2010
  export class PlayOptions {
2004
2011
  fadeDuration?: number;
2005
2012
  loop?: boolean;
@@ -2007,10 +2014,14 @@ declare module "engine-components/Animation" {
2007
2014
  startTime?: number;
2008
2015
  endTime?: number;
2009
2016
  clampWhenFinished?: boolean;
2017
+ minMaxSpeed?: Vector2;
2018
+ minMaxOffsetNormalized?: Vector2;
2010
2019
  }
2011
2020
  export class Animation extends Behaviour {
2012
2021
  playAutomatically: boolean;
2013
2022
  randomStartTime: boolean;
2023
+ minMaxSpeed?: Vector2;
2024
+ minMaxOffsetNormalized?: Vector2;
2014
2025
  private _tempAnimationClipBeforeGameObjectExisted;
2015
2026
  get clip(): AnimationClip | null;
2016
2027
  set clip(val: AnimationClip | null);
@@ -2503,11 +2514,11 @@ declare module "engine-components/BoxHelperComponent" {
2503
2514
  import * as THREE from "three";
2504
2515
  export class BoxHelperComponent extends Behaviour {
2505
2516
  private box;
2506
- private testBox;
2517
+ private static testBox;
2507
2518
  private _lastMatrixUpdateFrame;
2508
2519
  private static _position;
2509
2520
  private static _size;
2510
- isInBox(obj: THREE.Object3D): boolean | undefined;
2521
+ isInBox(obj: THREE.Object3D, scaleFactor?: number): boolean | undefined;
2511
2522
  intersects(box: THREE.Box3): boolean;
2512
2523
  updateBox(force?: boolean): THREE.Box3;
2513
2524
  private _helper;
@@ -2728,6 +2739,36 @@ declare module "engine-components/Voip" {
2728
2739
  static HasMicrophonePermissions(): Promise<boolean>;
2729
2740
  }
2730
2741
  }
2742
+ declare module "engine-components/WebARSessionRoot" {
2743
+ import { Behaviour } from "engine-components/Component";
2744
+ import { XRSession } from 'three';
2745
+ import { Matrix4, Object3D, XRPose } from "three";
2746
+ import { WebAR } from "engine-components/WebXR";
2747
+ export class WebARSessionRoot extends Behaviour {
2748
+ webAR: WebAR | null;
2749
+ get rig(): Object3D | undefined;
2750
+ invertForward: boolean;
2751
+ get arScale(): number;
2752
+ set arScale(val: number);
2753
+ private readonly _initalMatrix;
2754
+ private readonly _selectStartFn;
2755
+ private readonly _selectEndFn;
2756
+ start(): void;
2757
+ private _arScale;
2758
+ private _rig;
2759
+ private _startPose;
2760
+ private _placementPose;
2761
+ private _isTouching;
2762
+ private _rigStartPose;
2763
+ onBegin(session: XRSession): void;
2764
+ onUpdate(rig: Object3D | null, _session: XRSession, pose: XRPose | null | undefined): boolean;
2765
+ placeAt(rig: Object3D | null, mat: Matrix4): void;
2766
+ onEnd(rig: Object3D | null, _session: XRSession): void;
2767
+ private onSelectStart;
2768
+ private onSelectEnd;
2769
+ private setScale;
2770
+ }
2771
+ }
2731
2772
  declare module "engine-components/XRFlag" {
2732
2773
  import { Behaviour } from "engine-components/Component";
2733
2774
  export enum XRStateFlag {
@@ -2819,23 +2860,23 @@ declare module "engine-components/WebXRSync" {
2819
2860
  import { Behaviour } from "engine-components/Component";
2820
2861
  import { NetworkConnection } from "engine/engine_networking";
2821
2862
  import { WebXR } from "engine-components/WebXR";
2822
- import * as THREE from "three";
2863
+ import { Group, Quaternion, Vector3, Vector4 } from "three";
2823
2864
  import { Builder } from "flatbuffers";
2824
2865
  import { VrUserStateBuffer } from "engine-schemes/vr-user-state-buffer";
2825
2866
  export class VRUserState {
2826
2867
  guid: string;
2827
2868
  time: number;
2828
2869
  avatarId: string;
2829
- position: THREE.Vector3;
2830
- rotation: THREE.Vector4;
2870
+ position: Vector3;
2871
+ rotation: Vector4;
2831
2872
  scale: number;
2832
- posLeftHand: THREE.Vector3;
2833
- posRightHand: THREE.Vector3;
2834
- rotLeftHand: THREE.Quaternion;
2835
- rotRightHand: THREE.Quaternion;
2873
+ posLeftHand: Vector3;
2874
+ posRightHand: Vector3;
2875
+ rotLeftHand: Quaternion;
2876
+ rotRightHand: Quaternion;
2836
2877
  constructor(guid: string);
2837
2878
  private static invertRotation;
2838
- update(rig: THREE.Group, pos: DOMPointReadOnly, rot: DOMPointReadOnly, webXR: WebXR, avatarId: string): void;
2879
+ update(rig: Group, pos: DOMPointReadOnly, rot: DOMPointReadOnly, webXR: WebXR, avatarId: string): void;
2839
2880
  private static quat0;
2840
2881
  private static quat1;
2841
2882
  sendAsBuffer(builder: Builder, net: NetworkConnection): void;
@@ -2874,7 +2915,6 @@ declare module "engine-components/WebXRSync" {
2874
2915
  declare module "engine-components/WebXRAvatar" {
2875
2916
  import { Behaviour } from "engine-components/Component";
2876
2917
  import { WebXR } from "engine-components/WebXR";
2877
- import * as THREE from "three";
2878
2918
  import { XRFlag } from "engine-components/XRFlag";
2879
2919
  import { Context } from "engine/engine_setup";
2880
2920
  import { Object3D } from "three";
@@ -2892,7 +2932,7 @@ declare module "engine-components/WebXRAvatar" {
2892
2932
  private static _onNewAvatarMarkerAdded;
2893
2933
  private static _onAvatarMarkerDestroyed;
2894
2934
  connectionId: string;
2895
- avatar?: WebXRAvatar | THREE.Object3D;
2935
+ avatar?: WebXRAvatar | Object3D;
2896
2936
  awake(): void;
2897
2937
  onDestroy(): void;
2898
2938
  isLocalAvatar(): boolean;
@@ -2906,9 +2946,9 @@ declare module "engine-components/WebXRAvatar" {
2906
2946
  /** the user id */
2907
2947
  guid: string;
2908
2948
  private root;
2909
- head: THREE.Object3D | null;
2910
- handLeft: THREE.Object3D | null;
2911
- handRight: THREE.Object3D | null;
2949
+ head: Object3D | null;
2950
+ handLeft: Object3D | null;
2951
+ handRight: Object3D | null;
2912
2952
  lastUpdate: number;
2913
2953
  isLocalAvatar: boolean;
2914
2954
  flags: XRFlag[] | null;
@@ -3084,6 +3124,7 @@ declare module "engine-components/ui/EventSystem" {
3084
3124
  private objectsHoveredThisFrame;
3085
3125
  private objectsHoveredLastFrame;
3086
3126
  private raisedPointerDownEvents;
3127
+ private raisedPointerDownObjects;
3087
3128
  private _didMove;
3088
3129
  onBeforeUpdate(): void;
3089
3130
  private _tempComponentsArray;
@@ -3129,12 +3170,42 @@ declare module "engine-components/RendererLightmap" {
3129
3170
  private setLightmapDebugMaterial;
3130
3171
  }
3131
3172
  }
3173
+ declare module "engine-components/ReflectionProbe" {
3174
+ import { Behaviour } from "engine-components/Component";
3175
+ import { Object3D, Texture, Vector3 } from "three";
3176
+ import { Context } from "engine/engine_setup";
3177
+ import { IRenderer } from "engine/engine_types";
3178
+ export const debug: string | boolean;
3179
+ export class ReflectionProbe extends Behaviour {
3180
+ private static _probes;
3181
+ static get(object: Object3D | null | undefined, context: Context, isAnchor: boolean): ReflectionProbe | null;
3182
+ private _texture;
3183
+ set texture(tex: Texture);
3184
+ get texture(): Texture;
3185
+ center?: Vector3;
3186
+ size?: Vector3;
3187
+ private _boxHelper?;
3188
+ private isInBox;
3189
+ constructor();
3190
+ awake(): void;
3191
+ onDestroy(): void;
3192
+ private static _rendererMaterialsCache;
3193
+ onSet(_rend: IRenderer): void;
3194
+ onUnset(_rend: IRenderer): void;
3195
+ }
3196
+ }
3132
3197
  declare module "engine-components/Renderer" {
3133
3198
  import { Behaviour } from "engine-components/Component";
3134
3199
  import * as THREE from "three";
3135
- import { Mesh, Texture } from "three";
3200
+ import { Mesh, Object3D, Texture } from "three";
3136
3201
  import { IRenderer, ISharedMaterials } from "engine/engine_types";
3137
3202
  export { InstancingUtil } from "engine/engine_instancing";
3203
+ export enum ReflectionProbeUsage {
3204
+ Off = 0,
3205
+ BlendProbes = 1,
3206
+ BlendProbesAndSkybox = 2,
3207
+ Simple = 3
3208
+ }
3138
3209
  export class FieldWithDefault {
3139
3210
  path: string | null;
3140
3211
  asset: object | null;
@@ -3163,6 +3234,8 @@ declare module "engine-components/Renderer" {
3163
3234
  enableInstancing: boolean[] | undefined;
3164
3235
  renderOrder: number[] | undefined;
3165
3236
  allowOcclusionWhenDynamic: boolean;
3237
+ probeAnchor?: Object3D;
3238
+ reflectionProbeUsage: ReflectionProbeUsage;
3166
3239
  private _lightmaps?;
3167
3240
  get sharedMesh(): Mesh | undefined;
3168
3241
  get sharedMaterial(): THREE.Material;
@@ -3189,10 +3262,13 @@ declare module "engine-components/Renderer" {
3189
3262
  onDisable(): void;
3190
3263
  onDestroy(): void;
3191
3264
  applyStencil(): void;
3192
- onBeforeRenderThree(_renderer: any, _scene: any, _camera: any, _geometry: any, material: any, _group: any): void;
3265
+ static envmap: THREE.Texture | null;
3193
3266
  onBeforeRender(): void;
3267
+ onBeforeRenderThree(_renderer: any, _scene: any, _camera: any, _geometry: any, material: any, _group: any): void;
3194
3268
  onAfterRender(): void;
3195
3269
  private applySettings;
3270
+ private _reflectionProbe;
3271
+ private updateReflectionProbe;
3196
3272
  }
3197
3273
  export class MeshRenderer extends Renderer {
3198
3274
  }
@@ -3247,13 +3323,12 @@ declare module "engine-components/ui/RaycastUtils" {
3247
3323
  }
3248
3324
  }
3249
3325
  declare module "engine-components/WebXRController" {
3326
+ import { Group, Intersection, Mesh, Object3D, Quaternion, Ray, Vector3, XRInputSource, XRSession } from "three";
3327
+ import { OculusHandPointerModel } from 'three/examples/jsm/webxr/OculusHandPointerModel.js';
3328
+ import { XRControllerModel, XRControllerModelFactory } from 'three/examples/jsm/webxr/XRControllerModelFactory.js';
3250
3329
  import { Behaviour, GameObject } from "engine-components/Component";
3251
- import { WebXR } from "engine-components/WebXR";
3252
- import * as THREE from "three";
3253
3330
  import { SyncedTransform } from "engine-components/SyncedTransform";
3254
- import { XRControllerModel, XRControllerModelFactory } from 'three/examples/jsm/webxr/XRControllerModelFactory.js';
3255
- import { OculusHandPointerModel } from 'three/examples/jsm/webxr/OculusHandPointerModel.js';
3256
- import { XRSession } from "three";
3331
+ import { WebXR } from "engine-components/WebXR";
3257
3332
  export enum ControllerType {
3258
3333
  PhysicalDevice = 0,
3259
3334
  Touch = 1
@@ -3280,17 +3355,17 @@ declare module "engine-components/WebXRController" {
3280
3355
  webXR: WebXR;
3281
3356
  index: number;
3282
3357
  controllerModel: XRControllerModel;
3283
- controller: THREE.Group;
3284
- controllerGrip: THREE.Group;
3285
- hand: THREE.Group;
3358
+ controller: Group;
3359
+ controllerGrip: Group;
3360
+ hand: Group;
3286
3361
  handPointerModel: OculusHandPointerModel;
3287
3362
  grabbed: AttachedObject | null;
3288
- input: THREE.XRInputSource | null;
3363
+ input: XRInputSource | null;
3289
3364
  type: ControllerType;
3290
3365
  get isUsingHands(): boolean;
3291
- get wrist(): THREE.Object3D | null;
3366
+ get wrist(): Object3D | null;
3292
3367
  private _wristQuaternion;
3293
- getWristQuaternion(): THREE.Quaternion | null;
3368
+ getWristQuaternion(): Quaternion | null;
3294
3369
  private movementVector;
3295
3370
  private worldRot;
3296
3371
  private joystick;
@@ -3310,7 +3385,7 @@ declare module "engine-components/WebXRController" {
3310
3385
  get selectionUp(): boolean;
3311
3386
  get selectionPressed(): boolean;
3312
3387
  get selectionClick(): boolean;
3313
- get raycastHitPoint(): THREE.Object3D | null;
3388
+ get raycastHitPoint(): Object3D | null;
3314
3389
  private _selectionPressed;
3315
3390
  private _selectionPressedLastFrame;
3316
3391
  private _selectionStartTime;
@@ -3325,7 +3400,7 @@ declare module "engine-components/WebXRController" {
3325
3400
  private onSourceConnected;
3326
3401
  private onSourceDisconnected;
3327
3402
  private createPointerEvent;
3328
- rayRotation: THREE.Quaternion;
3403
+ rayRotation: Quaternion;
3329
3404
  update(): void;
3330
3405
  private _pinchStartTime;
3331
3406
  onUpdate(session: XRSession): void;
@@ -3341,9 +3416,10 @@ declare module "engine-components/WebXRController" {
3341
3416
  private onSelectEnd;
3342
3417
  private testIsVisible;
3343
3418
  private setControllerLayers;
3344
- getRay(): THREE.Ray;
3345
- overlap(): THREE.Intersection[];
3346
- raycast(): THREE.Intersection[];
3419
+ getRay(): Ray;
3420
+ private closeGrabBoundingBoxHelper?;
3421
+ overlap(): Intersection[];
3422
+ raycast(): Intersection[];
3347
3423
  }
3348
3424
  export enum AttachedObjectEvents {
3349
3425
  WillTake = "WillTake",
@@ -3360,11 +3436,11 @@ declare module "engine-components/WebXRController" {
3360
3436
  static Current: AttachedObject[];
3361
3437
  private static Register;
3362
3438
  private static Remove;
3363
- static TryTake(controller: WebXRController, candidate: THREE.Object3D, intersection: THREE.Intersection, closeGrab: boolean): AttachedObject | null;
3439
+ static TryTake(controller: WebXRController, candidate: Object3D, intersection: Intersection, closeGrab: boolean): AttachedObject | null;
3364
3440
  sync: SyncedTransform | null;
3365
- selected: THREE.Object3D | null;
3366
- selectedParent: THREE.Object3D | null;
3367
- selectedMesh: THREE.Mesh | null;
3441
+ selected: Object3D | null;
3442
+ selectedParent: Object3D | null;
3443
+ selectedMesh: Mesh | null;
3368
3444
  controller: WebXRController | null;
3369
3445
  grabTime: number;
3370
3446
  grabUUID: string;
@@ -3378,7 +3454,7 @@ declare module "engine-components/WebXRController" {
3378
3454
  private positionSource;
3379
3455
  private Take;
3380
3456
  free(): void;
3381
- grabPoint: THREE.Vector3;
3457
+ grabPoint: Vector3;
3382
3458
  private localPositionOffsetToGrab;
3383
3459
  private localPositionOffsetToGrab_worldSpace;
3384
3460
  private localQuaternionToGrab;
@@ -3394,36 +3470,6 @@ declare module "engine-components/WebXRController" {
3394
3470
  update(): void;
3395
3471
  }
3396
3472
  }
3397
- declare module "engine-components/WebARSessionRoot" {
3398
- import { Behaviour } from "engine-components/Component";
3399
- import * as THREE from 'three';
3400
- import { Matrix4, XRPose } from "three";
3401
- import { WebAR } from "engine-components/WebXR";
3402
- export class WebARSessionRoot extends Behaviour {
3403
- webAR: WebAR | null;
3404
- get rig(): THREE.Object3D | undefined;
3405
- invertForward: boolean;
3406
- get arScale(): number;
3407
- set arScale(val: number);
3408
- private readonly _initalMatrix;
3409
- private readonly _selectStartFn;
3410
- private readonly _selectEndFn;
3411
- start(): void;
3412
- private _arScale;
3413
- private _rig;
3414
- private _startPose;
3415
- private _placementPose;
3416
- private _isTouching;
3417
- private _rigStartPose;
3418
- onBegin(session: THREE.XRSession): void;
3419
- onUpdate(rig: THREE.Object3D | null, _session: THREE.XRSession, pose: XRPose | null | undefined): boolean;
3420
- placeAt(rig: THREE.Object3D | null, mat: Matrix4): void;
3421
- onEnd(rig: THREE.Object3D | null, _session: THREE.XRSession): void;
3422
- private onSelectStart;
3423
- private onSelectEnd;
3424
- private setScale;
3425
- }
3426
- }
3427
3473
  declare module "engine-components/WebXRRig" {
3428
3474
  import { Behaviour } from "engine-components/Component";
3429
3475
  export class XRRig extends Behaviour {
@@ -3431,10 +3477,10 @@ declare module "engine-components/WebXRRig" {
3431
3477
  }
3432
3478
  }
3433
3479
  declare module "engine-components/WebXR" {
3480
+ import { Object3D, Quaternion, XRFrame, XRSession, XRViewerPose } from 'three';
3481
+ import { AssetReference } from "engine/engine_addressables";
3434
3482
  import { Behaviour } from "engine-components/Component";
3435
- import * as THREE from 'three';
3436
3483
  import { WebXRController } from "engine-components/WebXRController";
3437
- import { AssetReference } from "engine/engine_addressables";
3438
3484
  export function detectARSupport(): Promise<boolean>;
3439
3485
  export function detectVRSupport(): Promise<boolean>;
3440
3486
  export enum WebXREvent {
@@ -3450,6 +3496,7 @@ declare module "engine-components/WebXR" {
3450
3496
  enableVR: boolean;
3451
3497
  enableAR: boolean;
3452
3498
  defaultAvatar?: AssetReference;
3499
+ handModelPath: string;
3453
3500
  createVRButton: boolean;
3454
3501
  createARButton: boolean;
3455
3502
  private static _isInXr;
@@ -3464,7 +3511,7 @@ declare module "engine-components/WebXR" {
3464
3511
  static createARButton(webXR: WebXR, opts?: CreateButtonOptions): HTMLButtonElement;
3465
3512
  static resetButtonStyles(button: any): void;
3466
3513
  endSession(): void;
3467
- get Rig(): THREE.Object3D;
3514
+ get Rig(): Object3D;
3468
3515
  private controllers;
3469
3516
  get Controllers(): WebXRController[];
3470
3517
  get LeftController(): WebXRController | null;
@@ -3485,9 +3532,9 @@ declare module "engine-components/WebXR" {
3485
3532
  awake(): void;
3486
3533
  onEnable(): void;
3487
3534
  private _transformOrientation;
3488
- get TransformOrientation(): THREE.Quaternion;
3535
+ get TransformOrientation(): Quaternion;
3489
3536
  private _currentHeadPose;
3490
- get HeadPose(): THREE.XRViewerPose | null;
3537
+ get HeadPose(): XRViewerPose | null;
3491
3538
  onBeforeRender(frame: any): void;
3492
3539
  private onClickedARButton;
3493
3540
  private onClickedVRButton;
@@ -3522,9 +3569,9 @@ declare module "engine-components/WebXR" {
3522
3569
  private didPlaceARSessionRoot;
3523
3570
  getAROverlayContainer(): HTMLElement | null;
3524
3571
  setReticleActive(active: boolean): void;
3525
- onBegin(session: THREE.XRSession): Promise<void>;
3526
- onEnd(session: THREE.XRSession): void;
3527
- onUpdate(session: THREE.XRSession, frame: THREE.XRFrame): void;
3572
+ onBegin(session: XRSession): Promise<void>;
3573
+ onEnd(session: XRSession): void;
3574
+ onUpdate(session: XRSession, frame: XRFrame): void;
3528
3575
  }
3529
3576
  }
3530
3577
  declare module "engine-components/DragControls" {
@@ -3728,7 +3775,9 @@ declare module "engine-components/GroundProjection" {
3728
3775
  private env?;
3729
3776
  private _watcher?;
3730
3777
  onEnable(): void;
3778
+ start(): void;
3731
3779
  onDisable(): void;
3780
+ private updateAndCreate;
3732
3781
  updateProjection(): void;
3733
3782
  }
3734
3783
  }
@@ -4498,7 +4547,7 @@ declare module "engine-components/Volume" {
4498
4547
  }
4499
4548
  declare module "engine-components/WebXRGrabRendering" {
4500
4549
  import { Behaviour } from "engine-components/Component";
4501
- import * as THREE from "three";
4550
+ import { Object3D, Vector3 } from "three";
4502
4551
  import { Context } from "engine/engine_setup";
4503
4552
  import { IModel } from "engine/engine_networking_types";
4504
4553
  export class XRGrabModel implements IModel {
@@ -4516,10 +4565,10 @@ declare module "engine-components/WebXRGrabRendering" {
4516
4565
  z: number;
4517
4566
  };
4518
4567
  target: string | undefined;
4519
- update(context: Context, point: THREE.Vector3, source: THREE.Vector3, target?: string | undefined): void;
4568
+ update(context: Context, point: Vector3, source: Vector3, target?: string | undefined): void;
4520
4569
  }
4521
4570
  export class XRGrabRendering extends Behaviour {
4522
- prefab: THREE.Object3D | null;
4571
+ prefab: Object3D | null;
4523
4572
  private _grabModels;
4524
4573
  private _grabModelsUpdateTime;
4525
4574
  private _addOrUpdateSub;
@@ -5288,6 +5337,7 @@ declare module "engine-components/codegen/components" {
5288
5337
  export { EmissionModule } from "engine-components/ParticleSystemModules";
5289
5338
  export { ShapeModule } from "engine-components/ParticleSystemModules";
5290
5339
  export { PlayerColor } from "engine-components/PlayerColor";
5340
+ export { ReflectionProbe } from "engine-components/ReflectionProbe";
5291
5341
  export { FieldWithDefault } from "engine-components/Renderer";
5292
5342
  export { Renderer } from "engine-components/Renderer";
5293
5343
  export { MeshRenderer } from "engine-components/Renderer";