@needle-tools/engine 2.35.5-pre → 2.37.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 (168) hide show
  1. package/CHANGELOG.md +31 -0
  2. package/dist/needle-engine.d.ts +312 -232
  3. package/dist/needle-engine.js +456 -437
  4. package/dist/needle-engine.js.map +4 -4
  5. package/dist/needle-engine.min.js +81 -76
  6. package/dist/needle-engine.min.js.map +4 -4
  7. package/lib/engine/api.d.ts +1 -0
  8. package/lib/engine/api.js +1 -0
  9. package/lib/engine/api.js.map +1 -1
  10. package/lib/engine/debug/debug.d.ts +1 -0
  11. package/lib/engine/debug/debug.js +3 -0
  12. package/lib/engine/debug/debug.js.map +1 -1
  13. package/lib/engine/debug/debug_overlay.js +12 -1
  14. package/lib/engine/debug/debug_overlay.js.map +1 -1
  15. package/lib/engine/engine_element_loading.js +1 -1
  16. package/lib/engine/engine_element_loading.js.map +1 -1
  17. package/lib/engine/engine_gameobject.d.ts +1 -0
  18. package/lib/engine/engine_gameobject.js +15 -2
  19. package/lib/engine/engine_gameobject.js.map +1 -1
  20. package/lib/engine/engine_gltf_builtin_components.js +4 -0
  21. package/lib/engine/engine_gltf_builtin_components.js.map +1 -1
  22. package/lib/engine/engine_mainloop_utils.d.ts +1 -1
  23. package/lib/engine/engine_mainloop_utils.js +7 -3
  24. package/lib/engine/engine_mainloop_utils.js.map +1 -1
  25. package/lib/engine/engine_physics.d.ts +49 -57
  26. package/lib/engine/engine_physics.js +464 -417
  27. package/lib/engine/engine_physics.js.map +1 -1
  28. package/lib/engine/engine_physics.types.d.ts +16 -0
  29. package/lib/engine/engine_physics.types.js +19 -0
  30. package/lib/engine/engine_physics.types.js.map +1 -0
  31. package/lib/engine/engine_serialization_core.d.ts +3 -0
  32. package/lib/engine/engine_serialization_core.js +19 -6
  33. package/lib/engine/engine_serialization_core.js.map +1 -1
  34. package/lib/engine/engine_setup.js +4 -2
  35. package/lib/engine/engine_setup.js.map +1 -1
  36. package/lib/engine/engine_time.d.ts +1 -0
  37. package/lib/engine/engine_time.js +1 -0
  38. package/lib/engine/engine_time.js.map +1 -1
  39. package/lib/engine/engine_types.d.ts +46 -26
  40. package/lib/engine/engine_types.js +24 -37
  41. package/lib/engine/engine_types.js.map +1 -1
  42. package/lib/engine/engine_typestore.d.ts +1 -0
  43. package/lib/engine/engine_typestore.js +1 -0
  44. package/lib/engine/engine_typestore.js.map +1 -1
  45. package/lib/engine/engine_util_decorator.d.ts +6 -0
  46. package/lib/engine/engine_util_decorator.js +54 -0
  47. package/lib/engine/engine_util_decorator.js.map +1 -0
  48. package/lib/engine/engine_utils.d.ts +1 -1
  49. package/lib/engine/engine_utils.js +2 -2
  50. package/lib/engine/engine_utils.js.map +1 -1
  51. package/lib/engine/extensions/NEEDLE_animator_controller_model.js.map +1 -1
  52. package/lib/engine/extensions/NEEDLE_gameobject_data.js +2 -0
  53. package/lib/engine/extensions/NEEDLE_gameobject_data.js.map +1 -1
  54. package/lib/engine/extensions/NEEDLE_techniques_webgl.js +5 -0
  55. package/lib/engine/extensions/NEEDLE_techniques_webgl.js.map +1 -1
  56. package/lib/engine-components/Animation.d.ts +5 -0
  57. package/lib/engine-components/Animation.js +14 -0
  58. package/lib/engine-components/Animation.js.map +1 -1
  59. package/lib/engine-components/AnimatorController.d.ts +1 -0
  60. package/lib/engine-components/AnimatorController.js +14 -7
  61. package/lib/engine-components/AnimatorController.js.map +1 -1
  62. package/lib/engine-components/BoxHelperComponent.d.ts +2 -2
  63. package/lib/engine-components/BoxHelperComponent.js +28 -9
  64. package/lib/engine-components/BoxHelperComponent.js.map +1 -1
  65. package/lib/engine-components/Collider.d.ts +7 -2
  66. package/lib/engine-components/Collider.js +27 -15
  67. package/lib/engine-components/Collider.js.map +1 -1
  68. package/lib/engine-components/Component.d.ts +8 -16
  69. package/lib/engine-components/Component.js +18 -117
  70. package/lib/engine-components/Component.js.map +1 -1
  71. package/lib/engine-components/DragControls.js +9 -6
  72. package/lib/engine-components/DragControls.js.map +1 -1
  73. package/lib/engine-components/GroundProjection.d.ts +2 -0
  74. package/lib/engine-components/GroundProjection.js +18 -6
  75. package/lib/engine-components/GroundProjection.js.map +1 -1
  76. package/lib/engine-components/NavMesh.d.ts +0 -5
  77. package/lib/engine-components/NavMesh.js +100 -10
  78. package/lib/engine-components/NavMesh.js.map +1 -1
  79. package/lib/engine-components/NestedGltf.js +2 -0
  80. package/lib/engine-components/NestedGltf.js.map +1 -1
  81. package/lib/engine-components/ReflectionProbe.d.ts +22 -0
  82. package/lib/engine-components/ReflectionProbe.js +134 -0
  83. package/lib/engine-components/ReflectionProbe.js.map +1 -0
  84. package/lib/engine-components/Renderer.d.ts +13 -2
  85. package/lib/engine-components/Renderer.js +96 -45
  86. package/lib/engine-components/Renderer.js.map +1 -1
  87. package/lib/engine-components/RigidBody.d.ts +40 -25
  88. package/lib/engine-components/RigidBody.js +253 -142
  89. package/lib/engine-components/RigidBody.js.map +1 -1
  90. package/lib/engine-components/SpatialTrigger.js +1 -1
  91. package/lib/engine-components/SpatialTrigger.js.map +1 -1
  92. package/lib/engine-components/SpectatorCamera.d.ts +1 -0
  93. package/lib/engine-components/SpectatorCamera.js +9 -2
  94. package/lib/engine-components/SpectatorCamera.js.map +1 -1
  95. package/lib/engine-components/SpringJoint.d.ts +0 -13
  96. package/lib/engine-components/SpringJoint.js +42 -41
  97. package/lib/engine-components/SpringJoint.js.map +1 -1
  98. package/lib/engine-components/VideoPlayer.js.map +1 -1
  99. package/lib/engine-components/WebARSessionRoot.d.ts +7 -7
  100. package/lib/engine-components/WebARSessionRoot.js +7 -7
  101. package/lib/engine-components/WebARSessionRoot.js.map +1 -1
  102. package/lib/engine-components/WebXR.d.ts +10 -8
  103. package/lib/engine-components/WebXR.js +50 -26
  104. package/lib/engine-components/WebXR.js.map +1 -1
  105. package/lib/engine-components/WebXRAvatar.d.ts +4 -5
  106. package/lib/engine-components/WebXRAvatar.js +9 -8
  107. package/lib/engine-components/WebXRAvatar.js.map +1 -1
  108. package/lib/engine-components/WebXRController.d.ts +21 -21
  109. package/lib/engine-components/WebXRController.js +90 -68
  110. package/lib/engine-components/WebXRController.js.map +1 -1
  111. package/lib/engine-components/WebXRGrabRendering.d.ts +3 -3
  112. package/lib/engine-components/WebXRGrabRendering.js +2 -2
  113. package/lib/engine-components/WebXRGrabRendering.js.map +1 -1
  114. package/lib/engine-components/WebXRSync.d.ts +8 -8
  115. package/lib/engine-components/WebXRSync.js +15 -15
  116. package/lib/engine-components/WebXRSync.js.map +1 -1
  117. package/lib/engine-components/codegen/components.d.ts +2 -3
  118. package/lib/engine-components/codegen/components.js +2 -3
  119. package/lib/engine-components/codegen/components.js.map +1 -1
  120. package/lib/engine-components/ui/EventSystem.d.ts +1 -0
  121. package/lib/engine-components/ui/EventSystem.js +21 -1
  122. package/lib/engine-components/ui/EventSystem.js.map +1 -1
  123. package/package.json +3 -4
  124. package/src/engine/api.ts +2 -1
  125. package/src/engine/codegen/register_types.js +291 -6
  126. package/src/engine/debug/debug.ts +4 -0
  127. package/src/engine/debug/debug_overlay.ts +9 -2
  128. package/src/engine/engine_element_loading.ts +1 -1
  129. package/src/engine/engine_gameobject.ts +19 -6
  130. package/src/engine/engine_gltf_builtin_components.ts +5 -1
  131. package/src/engine/engine_mainloop_utils.ts +7 -3
  132. package/src/engine/engine_physics.ts +508 -469
  133. package/src/engine/engine_physics.types.ts +19 -0
  134. package/src/engine/engine_serialization_core.ts +22 -8
  135. package/src/engine/engine_setup.ts +6 -2
  136. package/src/engine/engine_time.ts +2 -0
  137. package/src/engine/engine_types.ts +82 -55
  138. package/src/engine/engine_typestore.ts +2 -0
  139. package/src/engine/engine_util_decorator.ts +69 -0
  140. package/src/engine/engine_utils.ts +6 -5
  141. package/src/engine/extensions/EXT_texture_exr.js +1 -1
  142. package/src/engine/extensions/NEEDLE_animator_controller_model.ts +2 -1
  143. package/src/engine/extensions/NEEDLE_gameobject_data.ts +2 -0
  144. package/src/engine/extensions/NEEDLE_techniques_webgl.ts +7 -0
  145. package/src/engine-components/Animation.ts +14 -1
  146. package/src/engine-components/AnimatorController.ts +19 -9
  147. package/src/engine-components/BoxHelperComponent.ts +30 -9
  148. package/src/engine-components/Collider.ts +29 -29
  149. package/src/engine-components/Component.ts +26 -135
  150. package/src/engine-components/DragControls.ts +9 -5
  151. package/src/engine-components/GroundProjection.ts +22 -7
  152. package/src/engine-components/NavMesh.ts +114 -115
  153. package/src/engine-components/NestedGltf.ts +2 -0
  154. package/src/engine-components/ReflectionProbe.ts +141 -0
  155. package/src/engine-components/Renderer.ts +796 -737
  156. package/src/engine-components/RigidBody.ts +258 -149
  157. package/src/engine-components/SpatialTrigger.ts +1 -1
  158. package/src/engine-components/SpectatorCamera.ts +10 -2
  159. package/src/engine-components/SpringJoint.ts +41 -41
  160. package/src/engine-components/VideoPlayer.ts +1 -2
  161. package/src/engine-components/WebARSessionRoot.ts +16 -16
  162. package/src/engine-components/WebXR.ts +65 -50
  163. package/src/engine-components/WebXRAvatar.ts +16 -16
  164. package/src/engine-components/WebXRController.ts +143 -112
  165. package/src/engine-components/WebXRGrabRendering.ts +6 -6
  166. package/src/engine-components/WebXRSync.ts +20 -20
  167. package/src/engine-components/codegen/components.ts +2 -3
  168. package/src/engine-components/ui/EventSystem.ts +26 -3
@@ -23,10 +23,28 @@ declare module "engine-components/js-extensions/RGBAColor" {
23
23
  multiply(color: Color): this;
24
24
  }
25
25
  }
26
+ declare module "engine/engine_physics.types" {
27
+ export enum CollisionDetectionMode {
28
+ Discrete = 0,
29
+ Continuous = 1
30
+ }
31
+ export enum RigidbodyConstraints {
32
+ None = 0,
33
+ FreezePositionX = 2,
34
+ FreezePositionY = 4,
35
+ FreezePositionZ = 8,
36
+ FreezePosition = 14,
37
+ FreezeRotationX = 16,
38
+ FreezeRotationY = 32,
39
+ FreezeRotationZ = 64,
40
+ FreezeRotation = 112,
41
+ FreezeAll = 126
42
+ }
43
+ }
26
44
  declare module "engine/engine_types" {
27
- import { Camera, Color, Material, Object3D, Vector3 } from "three";
28
- import { Body, ContactEquation } from "cannon-es";
45
+ import { Camera, Color, Material, Object3D, Vector3, Quaternion } from "three";
29
46
  import { RGBAColor } from "engine-components/js-extensions/RGBAColor";
47
+ import { CollisionDetectionMode, RigidbodyConstraints } from "engine/engine_physics.types";
30
48
  /** used to find data registered via gltf files e.g. find lightmaps for a Renderer component that were shipped inside a gltf */
31
49
  export type SourceIdentifier = string;
32
50
  export type Constructor<T> = abstract new (...args: any[]) => T;
@@ -68,6 +86,8 @@ declare module "engine/engine_types" {
68
86
  onEnable(): any;
69
87
  onDisable(): any;
70
88
  onDestroy(): any;
89
+ /** called for properties decorated with the @validate decorator */
90
+ onValidate?(property?: string): any;
71
91
  start?(): void;
72
92
  earlyUpdate?(): void;
73
93
  update?(): void;
@@ -76,14 +96,13 @@ declare module "engine/engine_types" {
76
96
  onAfterRender?(): void;
77
97
  onCollisionEnter?(col: Collision): any;
78
98
  onCollisionExit?(col: Collision): any;
79
- onCollisionExitRaw?(col: Collision): any;
80
99
  onCollisionStay?(col: Collision): any;
81
- onTriggerEnter?(col: Collision): any;
82
- onTriggerStay?(col: Collision): any;
83
- onTriggerExit?(col: Collision): any;
84
- __internalHandleCollision(col: Collision, isTriggerCollision: boolean): any;
85
- __internalHandleExitCollisionEvent(obj: Object3D, isTriggerCollision: boolean): any;
100
+ onTriggerEnter?(col: ICollider): any;
101
+ onTriggerStay?(col: ICollider): any;
102
+ onTriggerExit?(col: ICollider): any;
86
103
  get forward(): Vector3;
104
+ get worldPosition(): Vector3;
105
+ get worldQuaternion(): Quaternion;
87
106
  }
88
107
  export interface ICamera extends IComponent {
89
108
  applyClearFlagsIfIsActiveCamera(): unknown;
@@ -102,6 +121,7 @@ declare module "engine/engine_types" {
102
121
  }
103
122
  export interface ISharedMaterials {
104
123
  [num: number]: Material;
124
+ get length(): number;
105
125
  }
106
126
  export interface IRenderer extends IComponent {
107
127
  sharedMaterial: Material;
@@ -113,33 +133,51 @@ declare module "engine/engine_types" {
113
133
  isTrigger: boolean;
114
134
  }
115
135
  export interface IRigidbody extends IComponent {
116
- initialize(): void;
117
- body: any;
136
+ constraints: RigidbodyConstraints;
137
+ isKinematic: boolean;
138
+ mass: number;
139
+ drag: number;
140
+ angularDrag: number;
141
+ useGravity: boolean;
142
+ collisionDetectionMode: CollisionDetectionMode;
143
+ lockPositionX: boolean;
144
+ lockPositionY: boolean;
145
+ lockPositionZ: boolean;
146
+ lockRotationX: boolean;
147
+ lockRotationY: boolean;
148
+ lockRotationZ: boolean;
118
149
  }
119
150
  export const $physicsKey: unique symbol;
120
- export type CannonCollision = {
121
- body: Body;
122
- contact: ContactEquation;
123
- target: Body;
124
- type: string;
125
- };
126
151
  export type ICollisionContext = {
127
152
  getCollider(obj: Object3D): ICollider;
128
153
  };
154
+ export type Vec3 = {
155
+ x: number;
156
+ y: number;
157
+ z: number;
158
+ };
159
+ export type Vec2 = {
160
+ x: number;
161
+ y: number;
162
+ };
163
+ export class ContactPoint {
164
+ readonly localPoint: Vec3;
165
+ readonly distance: number;
166
+ readonly normal: Vec3;
167
+ constructor(localPt: Vec3, dist: number, normal: Vec3);
168
+ }
129
169
  export class Collision {
130
- get __internalCollision(): CannonCollision;
131
- get __internalInvertedSourceReceiver(): boolean;
132
- private readonly invert;
133
- private readonly collision;
134
- private readonly targetBody;
135
- private readonly context;
170
+ private readonly contacts;
171
+ constructor(obj: Object3D, otherCollider: ICollider, contacts: ContactPoint[]);
136
172
  readonly me: Object3D;
137
- private _normal?;
138
- get normal(): Vector3;
139
- private _collider?;
173
+ private _collider;
174
+ /** the collider the collision happened with */
140
175
  get collider(): ICollider;
176
+ /** the object the collision happened with */
177
+ private _gameObject;
141
178
  get gameObject(): Object3D;
142
- constructor(obj: Object3D, collision: CannonCollision, context: ICollisionContext, invert?: boolean);
179
+ /** the rigidbody we hit, null if none attached */
180
+ get rigidBody(): IRigidbody | null;
143
181
  }
144
182
  }
145
183
  declare module "engine/engine_utils" {
@@ -163,7 +201,7 @@ declare module "engine/engine_utils" {
163
201
  export function deepClone(obj: any, predicate?: deepClonePredicate): any;
164
202
  export function delay(milliseconds: number): Promise<void>;
165
203
  export function getPath(source: SourceIdentifier | undefined, uri: string): string;
166
- export type WriteCallback = (data: any) => void;
204
+ export type WriteCallback = (data: any, prop: string) => void;
167
205
  export interface IWatch {
168
206
  subscribeWrite(callback: WriteCallback): any;
169
207
  apply(): any;
@@ -199,6 +237,7 @@ declare module "engine/engine_typestore" {
199
237
  add(key: any, type: any): void;
200
238
  get(key: any): any;
201
239
  }
240
+ export const $BuiltInTypeFlag: unique symbol;
202
241
  export const TypeStore: _TypeStore;
203
242
  }
204
243
  declare module "engine/extensions/NEEDLE_persistent_assets" {
@@ -252,6 +291,7 @@ declare module "engine/debug/debug" {
252
291
  import { LogType } from "engine/debug/debug_overlay";
253
292
  export { LogType };
254
293
  export function showBalloonMessage(text: string, logType?: LogType): void;
294
+ export function showBalloonWarning(text: string): void;
255
295
  }
256
296
  declare module "engine/engine_serialization_core" {
257
297
  import { GLTF } from "three/examples/jsm/loaders/GLTFLoader";
@@ -321,6 +361,9 @@ declare module "engine/engine_serialization_core" {
321
361
  }
322
362
  export function serializeObject(obj: ISerializable, context: SerializationContext): object | null;
323
363
  export function deserializeObject(obj: ISerializable, serializedData: object, context: SerializationContext): boolean;
364
+ /** set to true while assigning properties during instantiation.
365
+ * Used for validate decorator to not invoke callbacks on components that are currently in the process of being built */
366
+ export const $isAssigningProperties: unique symbol;
324
367
  /** Object.assign behaviour but check if property is writeable (e.g. getter only properties are skipped) */
325
368
  export function assign(target: any, source: any): void;
326
369
  }
@@ -558,7 +601,7 @@ declare module "engine/engine_mainloop_utils" {
558
601
  export function processStart(context: Context, object?: Object3D): void;
559
602
  export function addScriptToArrays(script: any, context: Context): void;
560
603
  export function removeScriptFromContext(script: any, context: Context): void;
561
- export function updateIsActive(): void;
604
+ export function updateIsActive(obj?: Object3D): void;
562
605
  export function updateActiveInHierarchyWithoutEventCall(go: THREE.Object3D): void;
563
606
  }
564
607
  declare module "engine/engine_networking_types" {
@@ -673,6 +716,7 @@ declare module "engine/engine_gameobject" {
673
716
  context?: Context | undefined;
674
717
  }
675
718
  export function isActiveSelf(go: Object3D): boolean;
719
+ export function setActive(go: Object3D, active: boolean, setVisible?: boolean): void;
676
720
  export function isActiveInHierarchy(go: Object3D): boolean;
677
721
  export function markAsInstancedRendered(go: THREE.Object3D, instanced: boolean): void;
678
722
  export function isUsingInstancing(instance: THREE.Object3D): boolean;
@@ -682,40 +726,33 @@ declare module "engine/engine_gameobject" {
682
726
  export function instantiate(instance: GameObject | Object3D | null, opts?: InstantiateOptions | null): GameObject | null;
683
727
  }
684
728
  declare module "engine/engine_physics" {
685
- import * as CANNON from 'cannon-es';
686
- import * as THREE from 'three';
729
+ import { Camera, Intersection, Layers, Mesh, Object3D, Ray, Raycaster, Vector2, Vector3 } from 'three';
687
730
  import { Context } from "engine/engine_setup";
688
- import { IGameObject as GameObject, ICollider, IRigidbody as Rigidbody } from "engine/engine_types";
689
- export class BodyOptions {
690
- mass: number;
691
- kinematic: boolean;
692
- physicsEvents: boolean;
693
- drag: number;
694
- angularDrag: number;
695
- sleepThreshold: number;
696
- }
731
+ import { IComponent, ICollider, IRigidbody } from "engine/engine_types";
732
+ import RAPIER, { RigidBody } from '@dimforge/rapier3d-compat';
733
+ export type Rapier = typeof RAPIER;
697
734
  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;
735
+ ray: Ray | undefined;
736
+ cam: Camera | undefined | null;
737
+ screenPoint: Vector2 | undefined;
738
+ raycaster: Raycaster | undefined;
739
+ results: Array<Intersection> | undefined;
740
+ targets: Array<Object3D> | undefined;
704
741
  recursive: boolean | undefined;
705
742
  minDistance: number | undefined;
706
743
  maxDistance: number | undefined;
707
744
  lineThreshold: number | undefined;
708
- layerMask: THREE.Layers | number | undefined;
709
- ignore: THREE.Object3D[] | undefined;
745
+ layerMask: Layers | number | undefined;
746
+ ignore: Object3D[] | undefined;
710
747
  screenPointFromOffset(ox: number, oy: number): void;
711
748
  setMask(mask: number): void;
712
749
  static AllLayers: number;
713
750
  }
714
- export class SphereIntersection implements THREE.Intersection {
751
+ export class SphereIntersection implements Intersection {
715
752
  distance: number;
716
- point: THREE.Vector3;
717
- object: THREE.Object3D;
718
- constructor(object: THREE.Object3D, distance: number, point: THREE.Vector3);
753
+ point: Vector3;
754
+ object: Object3D;
755
+ constructor(object: Object3D, distance: number, point: Vector3);
719
756
  }
720
757
  export class Physics {
721
758
  private readonly raycaster;
@@ -724,49 +761,48 @@ declare module "engine/engine_physics" {
724
761
  private readonly defaultThresholds;
725
762
  private sphereResults;
726
763
  private sphereMask;
727
- sphereOverlap(spherePos: THREE.Vector3, radius: number): Array<THREE.Intersection>;
764
+ sphereOverlap(spherePos: Vector3, radius: number, traverseChildsAfterHit?: boolean): Array<Intersection>;
728
765
  private tempBoundingBox;
729
766
  private onSphereOverlap;
730
- raycastFromRay(ray: THREE.Ray, options?: RaycastOptions | null): Array<THREE.Intersection>;
731
- raycast(options?: RaycastOptions | null): Array<THREE.Intersection>;
732
- get isUpdating(): boolean;
767
+ raycastFromRay(ray: Ray, options?: RaycastOptions | null): Array<Intersection>;
768
+ raycast(options?: RaycastOptions | null): Array<Intersection>;
769
+ private _tempPosition;
770
+ private _tempQuaternion;
771
+ private _tempMatrix;
772
+ private static _didLoadPhysicsEngine;
733
773
  private _isUpdatingPhysicsWorld;
774
+ get isUpdating(): boolean;
734
775
  private context;
735
- private world;
776
+ private world?;
777
+ private _hasCreatedWorld;
778
+ private eventQueue?;
779
+ private collisionHandler?;
736
780
  private objects;
737
- private tempPosition;
738
- private tempQuaternion;
781
+ private bodies;
739
782
  constructor(context: Context);
740
- addPreStepListener(listener: (evt: any) => void): void;
741
- 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;
752
- private isAlreadyRegistered;
753
- private readonly tempMat1;
754
- private readonly tempMat2;
755
- private addShape;
756
- step(deltaTime: number): void;
757
- private temp;
758
- private tempQuat;
783
+ createWorld(): Promise<void>;
784
+ addBoxCollider(collider: ICollider, center: Vector3, size: Vector3): void;
785
+ addSphereCollider(collider: ICollider, center: Vector3, radius: number): void;
786
+ addMeshCollider(collider: ICollider, mesh: Mesh, convex: boolean): void;
787
+ private createCollider;
788
+ private getRigidbody;
789
+ removeBody(obj: IComponent): void;
790
+ updateBody(comp: ICollider | IRigidbody, translation: boolean, rotation: boolean): void;
791
+ updateProperties(rigidbody: IRigidbody): void;
792
+ internal_getRigidbody(rb: IRigidbody): RigidBody | null;
793
+ private internalUpdateProperties;
794
+ private lines?;
795
+ step(_deltaTime?: number): void;
796
+ private updateDebugRendering;
759
797
  postStep(): void;
760
- private internalCreateBody;
761
- private registerCollisionEvents;
762
- private unregisterCollisionEvents;
763
- private onBeginContact;
764
- private readonly collisionContext;
765
- private raiseCollisionEvents;
766
- private onEndContact;
798
+ /** sync rendered objects with physics world (except for colliders without rigidbody) */
799
+ private syncObjects;
800
+ private syncPhysicsBody;
801
+ private static _matricesBuffer;
802
+ private getRigidbodyRelativeMatrix;
767
803
  }
768
804
  export interface IColliderProvider {
769
- getCollider(obj: THREE.Object3D): ICollider;
805
+ getCollider(obj: Object3D): ICollider;
770
806
  }
771
807
  export function registerColliderProvider(prov: IColliderProvider): void;
772
808
  }
@@ -774,6 +810,7 @@ declare module "engine/engine_time" {
774
810
  export class Time {
775
811
  deltaTime: number;
776
812
  time: number;
813
+ /** same as frameCount */
777
814
  frame: number;
778
815
  get realtimeSinceStartup(): number;
779
816
  get frameCount(): number;
@@ -1145,11 +1182,11 @@ declare module "engine-components/Component" {
1145
1182
  import * as THREE from "three";
1146
1183
  import { Context, FrameEvent } from "engine/engine_setup";
1147
1184
  import { Object3D } from "three";
1148
- import { ConstructorConcrete, SourceIdentifier, IComponent, IGameObject, Constructor, GuidsMap, Collision } from "engine/engine_types";
1185
+ import { ConstructorConcrete, SourceIdentifier, IComponent, IGameObject, Constructor, GuidsMap, Collision, ICollider } from "engine/engine_types";
1149
1186
  import { InstantiateOptions, HideFlags } from "engine/engine_gameobject";
1150
1187
  abstract class GameObject extends THREE.Object3D implements THREE.Object3D, IGameObject {
1151
1188
  guid: string | undefined;
1152
- static setActive(go: THREE.Object3D, active: boolean, processStart?: boolean): void;
1189
+ static setActive(go: THREE.Object3D, active: boolean, processStart?: boolean, setVisible?: boolean): void;
1153
1190
  static isActiveSelf(go: THREE.Object3D): boolean;
1154
1191
  static isActiveInHierarchy(go: THREE.Object3D): boolean;
1155
1192
  static markAsInstancedRendered(go: THREE.Object3D, instanced: boolean): void;
@@ -1221,6 +1258,7 @@ declare module "engine-components/Component" {
1221
1258
  onEnable(): void;
1222
1259
  onDisable(): void;
1223
1260
  onDestroy(): void;
1261
+ onValidate?(prop?: string): void;
1224
1262
  start?(): void;
1225
1263
  earlyUpdate?(): void;
1226
1264
  update?(): void;
@@ -1229,11 +1267,10 @@ declare module "engine-components/Component" {
1229
1267
  onAfterRender?(): void;
1230
1268
  onCollisionEnter?(col: Collision): any;
1231
1269
  onCollisionExit?(col: Collision): any;
1232
- onCollisionExitRaw?(col: Collision): any;
1233
1270
  onCollisionStay?(col: Collision): any;
1234
- onTriggerEnter?(col: Collision): any;
1235
- onTriggerStay?(col: Collision): any;
1236
- onTriggerExit?(col: Collision): any;
1271
+ onTriggerEnter?(col: ICollider): any;
1272
+ onTriggerStay?(col: ICollider): any;
1273
+ onTriggerExit?(col: ICollider): any;
1237
1274
  startCoroutine(routine: Generator, evt?: FrameEvent): Generator;
1238
1275
  stopCoroutine(routine: Generator, evt?: FrameEvent): void;
1239
1276
  get destroyed(): boolean;
@@ -1243,6 +1280,8 @@ declare module "engine-components/Component" {
1243
1280
  protected __didEnable: boolean;
1244
1281
  protected __isEnabled: boolean | undefined;
1245
1282
  private __destroyed;
1283
+ get __internalDidAwakeAndStart(): boolean;
1284
+ constructor();
1246
1285
  __internalNewInstanceCreated(): void;
1247
1286
  __internalAwake(): void;
1248
1287
  __internalStart(): void;
@@ -1251,16 +1290,6 @@ declare module "engine-components/Component" {
1251
1290
  __internalDestroy(): void;
1252
1291
  get enabled(): boolean;
1253
1292
  set enabled(val: boolean);
1254
- constructor();
1255
- private _collisionExitRoutine;
1256
- private _collisions;
1257
- private _triggerExitRoutine;
1258
- private _triggerCollisions;
1259
- get collisionsCount(): number;
1260
- private __internalResetsCachedPhysicsData;
1261
- __internalHandleCollision(col: Collision, isTriggerCollision: boolean): void;
1262
- __internalHandleExitCollisionEvent(obj: Object3D, isTriggerCollision: boolean): void;
1263
- private __waitForCollisionExit;
1264
1293
  private static _worldPositionBuffer;
1265
1294
  private static _worldQuaternionBuffer;
1266
1295
  private static _worldEulerBuffer;
@@ -1927,6 +1956,7 @@ declare module "engine-components/AnimatorController" {
1927
1956
  private updateActiveStates;
1928
1957
  private setStartTransition;
1929
1958
  private evaluateTransitions;
1959
+ private getState;
1930
1960
  private transitionTo;
1931
1961
  private createAction;
1932
1962
  private evaluateCondition;
@@ -2000,6 +2030,7 @@ declare module "engine-components/Animation" {
2000
2030
  import { Behaviour } from "engine-components/Component";
2001
2031
  import * as THREE from 'three';
2002
2032
  import { AnimationAction, AnimationClip } from "three";
2033
+ import { Vec2 } from "engine/engine_types";
2003
2034
  export class PlayOptions {
2004
2035
  fadeDuration?: number;
2005
2036
  loop?: boolean;
@@ -2007,10 +2038,14 @@ declare module "engine-components/Animation" {
2007
2038
  startTime?: number;
2008
2039
  endTime?: number;
2009
2040
  clampWhenFinished?: boolean;
2041
+ minMaxSpeed?: Vec2;
2042
+ minMaxOffsetNormalized?: Vec2;
2010
2043
  }
2011
2044
  export class Animation extends Behaviour {
2012
2045
  playAutomatically: boolean;
2013
2046
  randomStartTime: boolean;
2047
+ minMaxSpeed?: Vec2;
2048
+ minMaxOffsetNormalized?: Vec2;
2014
2049
  private _tempAnimationClipBeforeGameObjectExisted;
2015
2050
  get clip(): AnimationClip | null;
2016
2051
  set clip(val: AnimationClip | null);
@@ -2302,6 +2337,13 @@ declare module "engine/engine_element" {
2302
2337
  private onBeforeBeginLoading;
2303
2338
  }
2304
2339
  }
2340
+ declare module "engine/engine_util_decorator" {
2341
+ import { IComponent } from "engine/engine_types";
2342
+ type setter = (v: any) => void;
2343
+ type getter = () => any;
2344
+ /** create accessor callbacks for a field */
2345
+ export const validate: (set?: setter, get?: getter) => (target: IComponent | any, propertyKey: string, descriptor?: undefined) => void;
2346
+ }
2305
2347
  declare module "engine/api" {
2306
2348
  export { InstancingUtil } from "engine/engine_instancing";
2307
2349
  export * from "engine/engine_gameobject";
@@ -2309,6 +2351,7 @@ declare module "engine/api" {
2309
2351
  export { AssetReference } from "engine/engine_addressables";
2310
2352
  export { FrameEvent } from "engine/engine_setup";
2311
2353
  export * from "engine/debug/debug";
2354
+ export { validate } from "engine/engine_util_decorator";
2312
2355
  }
2313
2356
  declare module "engine-components/AlignmentConstraint" {
2314
2357
  import { Behaviour } from "engine-components/Component";
@@ -2503,11 +2546,11 @@ declare module "engine-components/BoxHelperComponent" {
2503
2546
  import * as THREE from "three";
2504
2547
  export class BoxHelperComponent extends Behaviour {
2505
2548
  private box;
2506
- private testBox;
2549
+ private static testBox;
2507
2550
  private _lastMatrixUpdateFrame;
2508
2551
  private static _position;
2509
2552
  private static _size;
2510
- isInBox(obj: THREE.Object3D): boolean | undefined;
2553
+ isInBox(obj: THREE.Object3D, scaleFactor?: number): boolean | undefined;
2511
2554
  intersects(box: THREE.Box3): boolean;
2512
2555
  updateBox(force?: boolean): THREE.Box3;
2513
2556
  private _helper;
@@ -2518,65 +2561,79 @@ declare module "engine-components/BoxHelperComponent" {
2518
2561
  }
2519
2562
  declare module "engine-components/RigidBody" {
2520
2563
  import { Behaviour } from "engine-components/Component";
2521
- import * as CANNON from 'cannon-es';
2522
2564
  import * as THREE from 'three';
2523
2565
  import { Vector3 } from "three";
2524
2566
  import { IRigidbody } from "engine/engine_types";
2567
+ import { CollisionDetectionMode, RigidbodyConstraints } from "engine/engine_physics.types";
2525
2568
  export class Rigidbody extends Behaviour implements IRigidbody {
2526
2569
  mass: number;
2527
- set isKinematic(kinematic: boolean);
2528
- get isKinematic(): boolean;
2529
- private _isKinematic;
2570
+ useGravity: boolean;
2571
+ constraints: RigidbodyConstraints;
2572
+ isKinematic: boolean;
2530
2573
  drag: number;
2531
2574
  angularDrag: number;
2532
2575
  detectCollisions: boolean;
2533
2576
  sleepThreshold: number;
2534
- get body(): CANNON.Body | null;
2577
+ collisionDetectionMode: CollisionDetectionMode;
2578
+ get lockPositionX(): boolean;
2579
+ get lockPositionY(): boolean;
2580
+ get lockPositionZ(): boolean;
2581
+ get lockRotationX(): boolean;
2582
+ get lockRotationY(): boolean;
2583
+ get lockRotationZ(): boolean;
2584
+ set lockPositionX(v: boolean);
2585
+ set lockPositionY(v: boolean);
2586
+ set lockPositionZ(v: boolean);
2587
+ set lockRotationX(v: boolean);
2588
+ set lockRotationY(v: boolean);
2589
+ set lockRotationZ(v: boolean);
2590
+ private _propertiesChanged;
2535
2591
  private static tempPosition;
2536
- private _body;
2537
- private currentVelocity;
2592
+ private _currentVelocity;
2538
2593
  private _smoothedVelocity;
2539
- private lastWorldPosition;
2540
- private _ignoreChange;
2541
- private _dirty;
2542
- private _positionWatch?;
2543
- private _matrixWatch?;
2544
- private _setMatrix;
2545
- constructor();
2594
+ private _smoothedVelocityGetter;
2595
+ private _lastPosition;
2596
+ private _watch?;
2546
2597
  awake(): void;
2547
2598
  onEnable(): void;
2548
2599
  onDisable(): void;
2549
2600
  onDestroy(): void;
2550
- onBeforeRender(): void;
2551
- initialize(): void;
2601
+ onValidate(): void;
2602
+ earlyUpdate(): void;
2603
+ private get body();
2604
+ resetForces(): void;
2605
+ resetTorques(): void;
2606
+ resetVelocities(): void;
2607
+ resetForcesAndTorques(): void;
2552
2608
  wakeUp(): void;
2553
- applyForce(vec: THREE.Vector3, rel?: THREE.Vector3): void;
2609
+ applyForce(vec: Vector3, _rel?: THREE.Vector3): void;
2610
+ applyImpulse(vec: Vector3): void;
2554
2611
  setForce(x: number, y: number, z: number): void;
2555
- getVelocity(): THREE.Vector3;
2556
- setVelocity(x: number | Vector3, y: number, z: number): void;
2557
- getTorque(): THREE.Vector3;
2612
+ getVelocity(): Vector3;
2613
+ setVelocity(x: number | Vector3, y?: number, z?: number): void;
2614
+ setAngularVelocity(x: number | Vector3, y?: number, z?: number): void;
2558
2615
  setTorque(x: number | Vector3, y: number, z: number): void;
2559
- get smoothedVelocity(): THREE.Vector3;
2560
- setAngularVelocity(x: number, y: number, z: number): void;
2561
- private static copyVector3;
2562
- setBodyFromGameObject(velocity?: THREE.Vector3 | null | {
2616
+ get smoothedVelocity(): Vector3;
2617
+ /**d
2618
+ * @deprecated not used anymore
2619
+ */
2620
+ setBodyFromGameObject(_velocity?: THREE.Vector3 | null | {
2563
2621
  x: number;
2564
2622
  y: number;
2565
2623
  z: number;
2566
2624
  }): void;
2567
- private updateVelocity;
2625
+ private captureVelocity;
2568
2626
  }
2569
2627
  }
2570
2628
  declare module "engine-components/Collider" {
2571
2629
  import { Behaviour } from "engine-components/Component";
2572
2630
  import { Rigidbody } from "engine-components/RigidBody";
2573
- import { Shape } from "cannon-es";
2631
+ import { Mesh } from "three";
2574
2632
  import { ICollider } from "engine/engine_types";
2575
2633
  export class Collider extends Behaviour implements ICollider {
2576
2634
  get isCollider(): any;
2577
2635
  attachedRigidbody: Rigidbody | null;
2578
2636
  isTrigger: boolean;
2579
- protected _shape: Shape | null;
2580
2637
  awake(): void;
2581
2638
  start(): void;
2582
2639
  onEnable(): void;
@@ -2592,6 +2649,12 @@ declare module "engine-components/Collider" {
2592
2649
  center: THREE.Vector3;
2593
2650
  onEnable(): void;
2594
2651
  }
2652
+ export class MeshCollider extends Collider {
2653
+ sharedMesh?: Mesh;
2654
+ convex: boolean;
2655
+ awake(): void;
2656
+ onEnable(): void;
2657
+ }
2595
2658
  }
2596
2659
  declare module "engine-components/ui/PointerEvents" {
2597
2660
  export interface IInputEventArgs {
@@ -2728,6 +2791,36 @@ declare module "engine-components/Voip" {
2728
2791
  static HasMicrophonePermissions(): Promise<boolean>;
2729
2792
  }
2730
2793
  }
2794
+ declare module "engine-components/WebARSessionRoot" {
2795
+ import { Behaviour } from "engine-components/Component";
2796
+ import { XRSession } from 'three';
2797
+ import { Matrix4, Object3D, XRPose } from "three";
2798
+ import { WebAR } from "engine-components/WebXR";
2799
+ export class WebARSessionRoot extends Behaviour {
2800
+ webAR: WebAR | null;
2801
+ get rig(): Object3D | undefined;
2802
+ invertForward: boolean;
2803
+ get arScale(): number;
2804
+ set arScale(val: number);
2805
+ private readonly _initalMatrix;
2806
+ private readonly _selectStartFn;
2807
+ private readonly _selectEndFn;
2808
+ start(): void;
2809
+ private _arScale;
2810
+ private _rig;
2811
+ private _startPose;
2812
+ private _placementPose;
2813
+ private _isTouching;
2814
+ private _rigStartPose;
2815
+ onBegin(session: XRSession): void;
2816
+ onUpdate(rig: Object3D | null, _session: XRSession, pose: XRPose | null | undefined): boolean;
2817
+ placeAt(rig: Object3D | null, mat: Matrix4): void;
2818
+ onEnd(rig: Object3D | null, _session: XRSession): void;
2819
+ private onSelectStart;
2820
+ private onSelectEnd;
2821
+ private setScale;
2822
+ }
2823
+ }
2731
2824
  declare module "engine-components/XRFlag" {
2732
2825
  import { Behaviour } from "engine-components/Component";
2733
2826
  export enum XRStateFlag {
@@ -2819,23 +2912,23 @@ declare module "engine-components/WebXRSync" {
2819
2912
  import { Behaviour } from "engine-components/Component";
2820
2913
  import { NetworkConnection } from "engine/engine_networking";
2821
2914
  import { WebXR } from "engine-components/WebXR";
2822
- import * as THREE from "three";
2915
+ import { Group, Quaternion, Vector3, Vector4 } from "three";
2823
2916
  import { Builder } from "flatbuffers";
2824
2917
  import { VrUserStateBuffer } from "engine-schemes/vr-user-state-buffer";
2825
2918
  export class VRUserState {
2826
2919
  guid: string;
2827
2920
  time: number;
2828
2921
  avatarId: string;
2829
- position: THREE.Vector3;
2830
- rotation: THREE.Vector4;
2922
+ position: Vector3;
2923
+ rotation: Vector4;
2831
2924
  scale: number;
2832
- posLeftHand: THREE.Vector3;
2833
- posRightHand: THREE.Vector3;
2834
- rotLeftHand: THREE.Quaternion;
2835
- rotRightHand: THREE.Quaternion;
2925
+ posLeftHand: Vector3;
2926
+ posRightHand: Vector3;
2927
+ rotLeftHand: Quaternion;
2928
+ rotRightHand: Quaternion;
2836
2929
  constructor(guid: string);
2837
2930
  private static invertRotation;
2838
- update(rig: THREE.Group, pos: DOMPointReadOnly, rot: DOMPointReadOnly, webXR: WebXR, avatarId: string): void;
2931
+ update(rig: Group, pos: DOMPointReadOnly, rot: DOMPointReadOnly, webXR: WebXR, avatarId: string): void;
2839
2932
  private static quat0;
2840
2933
  private static quat1;
2841
2934
  sendAsBuffer(builder: Builder, net: NetworkConnection): void;
@@ -2874,7 +2967,6 @@ declare module "engine-components/WebXRSync" {
2874
2967
  declare module "engine-components/WebXRAvatar" {
2875
2968
  import { Behaviour } from "engine-components/Component";
2876
2969
  import { WebXR } from "engine-components/WebXR";
2877
- import * as THREE from "three";
2878
2970
  import { XRFlag } from "engine-components/XRFlag";
2879
2971
  import { Context } from "engine/engine_setup";
2880
2972
  import { Object3D } from "three";
@@ -2892,7 +2984,7 @@ declare module "engine-components/WebXRAvatar" {
2892
2984
  private static _onNewAvatarMarkerAdded;
2893
2985
  private static _onAvatarMarkerDestroyed;
2894
2986
  connectionId: string;
2895
- avatar?: WebXRAvatar | THREE.Object3D;
2987
+ avatar?: WebXRAvatar | Object3D;
2896
2988
  awake(): void;
2897
2989
  onDestroy(): void;
2898
2990
  isLocalAvatar(): boolean;
@@ -2906,9 +2998,9 @@ declare module "engine-components/WebXRAvatar" {
2906
2998
  /** the user id */
2907
2999
  guid: string;
2908
3000
  private root;
2909
- head: THREE.Object3D | null;
2910
- handLeft: THREE.Object3D | null;
2911
- handRight: THREE.Object3D | null;
3001
+ head: Object3D | null;
3002
+ handLeft: Object3D | null;
3003
+ handRight: Object3D | null;
2912
3004
  lastUpdate: number;
2913
3005
  isLocalAvatar: boolean;
2914
3006
  flags: XRFlag[] | null;
@@ -3084,6 +3176,7 @@ declare module "engine-components/ui/EventSystem" {
3084
3176
  private objectsHoveredThisFrame;
3085
3177
  private objectsHoveredLastFrame;
3086
3178
  private raisedPointerDownEvents;
3179
+ private raisedPointerDownObjects;
3087
3180
  private _didMove;
3088
3181
  onBeforeUpdate(): void;
3089
3182
  private _tempComponentsArray;
@@ -3129,12 +3222,42 @@ declare module "engine-components/RendererLightmap" {
3129
3222
  private setLightmapDebugMaterial;
3130
3223
  }
3131
3224
  }
3225
+ declare module "engine-components/ReflectionProbe" {
3226
+ import { Behaviour } from "engine-components/Component";
3227
+ import { Object3D, Texture, Vector3 } from "three";
3228
+ import { Context } from "engine/engine_setup";
3229
+ import { IRenderer } from "engine/engine_types";
3230
+ export const debug: string | boolean;
3231
+ export class ReflectionProbe extends Behaviour {
3232
+ private static _probes;
3233
+ static get(object: Object3D | null | undefined, context: Context, isAnchor: boolean): ReflectionProbe | null;
3234
+ private _texture;
3235
+ set texture(tex: Texture);
3236
+ get texture(): Texture;
3237
+ center?: Vector3;
3238
+ size?: Vector3;
3239
+ private _boxHelper?;
3240
+ private isInBox;
3241
+ constructor();
3242
+ awake(): void;
3243
+ onDestroy(): void;
3244
+ private static _rendererMaterialsCache;
3245
+ onSet(_rend: IRenderer): void;
3246
+ onUnset(_rend: IRenderer): void;
3247
+ }
3248
+ }
3132
3249
  declare module "engine-components/Renderer" {
3133
3250
  import { Behaviour } from "engine-components/Component";
3134
3251
  import * as THREE from "three";
3135
- import { Mesh, Texture } from "three";
3252
+ import { Mesh, Object3D, Texture } from "three";
3136
3253
  import { IRenderer, ISharedMaterials } from "engine/engine_types";
3137
3254
  export { InstancingUtil } from "engine/engine_instancing";
3255
+ export enum ReflectionProbeUsage {
3256
+ Off = 0,
3257
+ BlendProbes = 1,
3258
+ BlendProbesAndSkybox = 2,
3259
+ Simple = 3
3260
+ }
3138
3261
  export class FieldWithDefault {
3139
3262
  path: string | null;
3140
3263
  asset: object | null;
@@ -3163,6 +3286,8 @@ declare module "engine-components/Renderer" {
3163
3286
  enableInstancing: boolean[] | undefined;
3164
3287
  renderOrder: number[] | undefined;
3165
3288
  allowOcclusionWhenDynamic: boolean;
3289
+ probeAnchor?: Object3D;
3290
+ reflectionProbeUsage: ReflectionProbeUsage;
3166
3291
  private _lightmaps?;
3167
3292
  get sharedMesh(): Mesh | undefined;
3168
3293
  get sharedMaterial(): THREE.Material;
@@ -3189,10 +3314,13 @@ declare module "engine-components/Renderer" {
3189
3314
  onDisable(): void;
3190
3315
  onDestroy(): void;
3191
3316
  applyStencil(): void;
3192
- onBeforeRenderThree(_renderer: any, _scene: any, _camera: any, _geometry: any, material: any, _group: any): void;
3317
+ static envmap: THREE.Texture | null;
3193
3318
  onBeforeRender(): void;
3319
+ onBeforeRenderThree(_renderer: any, _scene: any, _camera: any, _geometry: any, material: any, _group: any): void;
3194
3320
  onAfterRender(): void;
3195
3321
  private applySettings;
3322
+ private _reflectionProbe;
3323
+ private updateReflectionProbe;
3196
3324
  }
3197
3325
  export class MeshRenderer extends Renderer {
3198
3326
  }
@@ -3247,13 +3375,12 @@ declare module "engine-components/ui/RaycastUtils" {
3247
3375
  }
3248
3376
  }
3249
3377
  declare module "engine-components/WebXRController" {
3378
+ import { Group, Intersection, Mesh, Object3D, Quaternion, Ray, Vector3, XRInputSource, XRSession } from "three";
3379
+ import { OculusHandPointerModel } from 'three/examples/jsm/webxr/OculusHandPointerModel.js';
3380
+ import { XRControllerModel, XRControllerModelFactory } from 'three/examples/jsm/webxr/XRControllerModelFactory.js';
3250
3381
  import { Behaviour, GameObject } from "engine-components/Component";
3251
- import { WebXR } from "engine-components/WebXR";
3252
- import * as THREE from "three";
3253
3382
  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";
3383
+ import { WebXR } from "engine-components/WebXR";
3257
3384
  export enum ControllerType {
3258
3385
  PhysicalDevice = 0,
3259
3386
  Touch = 1
@@ -3280,17 +3407,17 @@ declare module "engine-components/WebXRController" {
3280
3407
  webXR: WebXR;
3281
3408
  index: number;
3282
3409
  controllerModel: XRControllerModel;
3283
- controller: THREE.Group;
3284
- controllerGrip: THREE.Group;
3285
- hand: THREE.Group;
3410
+ controller: Group;
3411
+ controllerGrip: Group;
3412
+ hand: Group;
3286
3413
  handPointerModel: OculusHandPointerModel;
3287
3414
  grabbed: AttachedObject | null;
3288
- input: THREE.XRInputSource | null;
3415
+ input: XRInputSource | null;
3289
3416
  type: ControllerType;
3290
3417
  get isUsingHands(): boolean;
3291
- get wrist(): THREE.Object3D | null;
3418
+ get wrist(): Object3D | null;
3292
3419
  private _wristQuaternion;
3293
- getWristQuaternion(): THREE.Quaternion | null;
3420
+ getWristQuaternion(): Quaternion | null;
3294
3421
  private movementVector;
3295
3422
  private worldRot;
3296
3423
  private joystick;
@@ -3310,7 +3437,7 @@ declare module "engine-components/WebXRController" {
3310
3437
  get selectionUp(): boolean;
3311
3438
  get selectionPressed(): boolean;
3312
3439
  get selectionClick(): boolean;
3313
- get raycastHitPoint(): THREE.Object3D | null;
3440
+ get raycastHitPoint(): Object3D | null;
3314
3441
  private _selectionPressed;
3315
3442
  private _selectionPressedLastFrame;
3316
3443
  private _selectionStartTime;
@@ -3325,7 +3452,7 @@ declare module "engine-components/WebXRController" {
3325
3452
  private onSourceConnected;
3326
3453
  private onSourceDisconnected;
3327
3454
  private createPointerEvent;
3328
- rayRotation: THREE.Quaternion;
3455
+ rayRotation: Quaternion;
3329
3456
  update(): void;
3330
3457
  private _pinchStartTime;
3331
3458
  onUpdate(session: XRSession): void;
@@ -3341,9 +3468,10 @@ declare module "engine-components/WebXRController" {
3341
3468
  private onSelectEnd;
3342
3469
  private testIsVisible;
3343
3470
  private setControllerLayers;
3344
- getRay(): THREE.Ray;
3345
- overlap(): THREE.Intersection[];
3346
- raycast(): THREE.Intersection[];
3471
+ getRay(): Ray;
3472
+ private closeGrabBoundingBoxHelper?;
3473
+ overlap(): Intersection[];
3474
+ raycast(): Intersection[];
3347
3475
  }
3348
3476
  export enum AttachedObjectEvents {
3349
3477
  WillTake = "WillTake",
@@ -3360,11 +3488,11 @@ declare module "engine-components/WebXRController" {
3360
3488
  static Current: AttachedObject[];
3361
3489
  private static Register;
3362
3490
  private static Remove;
3363
- static TryTake(controller: WebXRController, candidate: THREE.Object3D, intersection: THREE.Intersection, closeGrab: boolean): AttachedObject | null;
3491
+ static TryTake(controller: WebXRController, candidate: Object3D, intersection: Intersection, closeGrab: boolean): AttachedObject | null;
3364
3492
  sync: SyncedTransform | null;
3365
- selected: THREE.Object3D | null;
3366
- selectedParent: THREE.Object3D | null;
3367
- selectedMesh: THREE.Mesh | null;
3493
+ selected: Object3D | null;
3494
+ selectedParent: Object3D | null;
3495
+ selectedMesh: Mesh | null;
3368
3496
  controller: WebXRController | null;
3369
3497
  grabTime: number;
3370
3498
  grabUUID: string;
@@ -3378,7 +3506,7 @@ declare module "engine-components/WebXRController" {
3378
3506
  private positionSource;
3379
3507
  private Take;
3380
3508
  free(): void;
3381
- grabPoint: THREE.Vector3;
3509
+ grabPoint: Vector3;
3382
3510
  private localPositionOffsetToGrab;
3383
3511
  private localPositionOffsetToGrab_worldSpace;
3384
3512
  private localQuaternionToGrab;
@@ -3394,36 +3522,6 @@ declare module "engine-components/WebXRController" {
3394
3522
  update(): void;
3395
3523
  }
3396
3524
  }
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
3525
  declare module "engine-components/WebXRRig" {
3428
3526
  import { Behaviour } from "engine-components/Component";
3429
3527
  export class XRRig extends Behaviour {
@@ -3431,10 +3529,10 @@ declare module "engine-components/WebXRRig" {
3431
3529
  }
3432
3530
  }
3433
3531
  declare module "engine-components/WebXR" {
3532
+ import { Object3D, Quaternion, XRFrame, XRSession, XRViewerPose } from 'three';
3533
+ import { AssetReference } from "engine/engine_addressables";
3434
3534
  import { Behaviour } from "engine-components/Component";
3435
- import * as THREE from 'three';
3436
3535
  import { WebXRController } from "engine-components/WebXRController";
3437
- import { AssetReference } from "engine/engine_addressables";
3438
3536
  export function detectARSupport(): Promise<boolean>;
3439
3537
  export function detectVRSupport(): Promise<boolean>;
3440
3538
  export enum WebXREvent {
@@ -3450,6 +3548,7 @@ declare module "engine-components/WebXR" {
3450
3548
  enableVR: boolean;
3451
3549
  enableAR: boolean;
3452
3550
  defaultAvatar?: AssetReference;
3551
+ handModelPath: string;
3453
3552
  createVRButton: boolean;
3454
3553
  createARButton: boolean;
3455
3554
  private static _isInXr;
@@ -3464,7 +3563,7 @@ declare module "engine-components/WebXR" {
3464
3563
  static createARButton(webXR: WebXR, opts?: CreateButtonOptions): HTMLButtonElement;
3465
3564
  static resetButtonStyles(button: any): void;
3466
3565
  endSession(): void;
3467
- get Rig(): THREE.Object3D;
3566
+ get Rig(): Object3D;
3468
3567
  private controllers;
3469
3568
  get Controllers(): WebXRController[];
3470
3569
  get LeftController(): WebXRController | null;
@@ -3485,9 +3584,9 @@ declare module "engine-components/WebXR" {
3485
3584
  awake(): void;
3486
3585
  onEnable(): void;
3487
3586
  private _transformOrientation;
3488
- get TransformOrientation(): THREE.Quaternion;
3587
+ get TransformOrientation(): Quaternion;
3489
3588
  private _currentHeadPose;
3490
- get HeadPose(): THREE.XRViewerPose | null;
3589
+ get HeadPose(): XRViewerPose | null;
3491
3590
  onBeforeRender(frame: any): void;
3492
3591
  private onClickedARButton;
3493
3592
  private onClickedVRButton;
@@ -3507,6 +3606,7 @@ declare module "engine-components/WebXR" {
3507
3606
  get webxr(): WebXR;
3508
3607
  private _webxr;
3509
3608
  private reticle;
3609
+ private reticleParent;
3510
3610
  private hitTestSource;
3511
3611
  private reticleActive;
3512
3612
  private previousBackground;
@@ -3522,9 +3622,9 @@ declare module "engine-components/WebXR" {
3522
3622
  private didPlaceARSessionRoot;
3523
3623
  getAROverlayContainer(): HTMLElement | null;
3524
3624
  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;
3625
+ onBegin(session: XRSession): Promise<void>;
3626
+ onEnd(session: XRSession): void;
3627
+ onUpdate(session: XRSession, frame: XRFrame): void;
3528
3628
  }
3529
3629
  }
3530
3630
  declare module "engine-components/DragControls" {
@@ -3728,7 +3828,9 @@ declare module "engine-components/GroundProjection" {
3728
3828
  private env?;
3729
3829
  private _watcher?;
3730
3830
  onEnable(): void;
3831
+ start(): void;
3731
3832
  onDisable(): void;
3833
+ private updateAndCreate;
3732
3834
  updateProjection(): void;
3733
3835
  }
3734
3836
  }
@@ -3833,13 +3935,6 @@ declare module "engine-components/LODGroup" {
3833
3935
  distanceFactor(factor: number): void;
3834
3936
  }
3835
3937
  }
3836
- declare module "engine-components/NavMesh" {
3837
- import { Behaviour } from "engine-components/Component";
3838
- export class NavMesh extends Behaviour {
3839
- }
3840
- export class NavMeshAgent extends Behaviour {
3841
- }
3842
- }
3843
3938
  declare module "engine-components/NestedGltf" {
3844
3939
  import { Behaviour } from "engine-components/Component";
3845
3940
  import { AssetReference, ProgressCallback } from "engine/engine_addressables";
@@ -4274,6 +4369,7 @@ declare module "engine-components/SpectatorCamera" {
4274
4369
  /** list of other users that are following me */
4275
4370
  get followers(): string[];
4276
4371
  stopSpectating(): void;
4372
+ private get localId();
4277
4373
  /** player view to follow */
4278
4374
  set target(target: PlayerView | undefined);
4279
4375
  get target(): PlayerView | undefined;
@@ -4298,21 +4394,6 @@ declare module "engine-components/SpectatorCamera" {
4298
4394
  private resetAvatarFlags;
4299
4395
  }
4300
4396
  }
4301
- declare module "engine-components/SpringJoint" {
4302
- import { Behaviour } from "engine-components/Component";
4303
- import { Rigidbody } from "engine-components/RigidBody";
4304
- import { Vector3 } from "three";
4305
- export class SpringJoint extends Behaviour {
4306
- anchor: Vector3 | null;
4307
- connectedBody: Rigidbody | null;
4308
- connectedAnchor: Vector3 | null;
4309
- spring: number;
4310
- damper: number;
4311
- private rb;
4312
- awake(): void;
4313
- update(): void;
4314
- }
4315
- }
4316
4397
  declare module "engine-components/SpriteRenderer" {
4317
4398
  import { Behaviour } from "engine-components/Component";
4318
4399
  import * as THREE from "three";
@@ -4498,7 +4579,7 @@ declare module "engine-components/Volume" {
4498
4579
  }
4499
4580
  declare module "engine-components/WebXRGrabRendering" {
4500
4581
  import { Behaviour } from "engine-components/Component";
4501
- import * as THREE from "three";
4582
+ import { Object3D, Vector3 } from "three";
4502
4583
  import { Context } from "engine/engine_setup";
4503
4584
  import { IModel } from "engine/engine_networking_types";
4504
4585
  export class XRGrabModel implements IModel {
@@ -4516,10 +4597,10 @@ declare module "engine-components/WebXRGrabRendering" {
4516
4597
  z: number;
4517
4598
  };
4518
4599
  target: string | undefined;
4519
- update(context: Context, point: THREE.Vector3, source: THREE.Vector3, target?: string | undefined): void;
4600
+ update(context: Context, point: Vector3, source: Vector3, target?: string | undefined): void;
4520
4601
  }
4521
4602
  export class XRGrabRendering extends Behaviour {
4522
- prefab: THREE.Object3D | null;
4603
+ prefab: Object3D | null;
4523
4604
  private _grabModels;
4524
4605
  private _grabModelsUpdateTime;
4525
4606
  private _addOrUpdateSub;
@@ -5254,6 +5335,7 @@ declare module "engine-components/codegen/components" {
5254
5335
  export { Collider } from "engine-components/Collider";
5255
5336
  export { SphereCollider } from "engine-components/Collider";
5256
5337
  export { BoxCollider } from "engine-components/Collider";
5338
+ export { MeshCollider } from "engine-components/Collider";
5257
5339
  export { DeleteBox } from "engine-components/DeleteBox";
5258
5340
  export { Deletable } from "engine-components/DeleteBox";
5259
5341
  export { DeviceFlag } from "engine-components/DeviceFlag";
@@ -5276,8 +5358,6 @@ declare module "engine-components/codegen/components" {
5276
5358
  export { LODModel } from "engine-components/LODGroup";
5277
5359
  export { LODGroup } from "engine-components/LODGroup";
5278
5360
  export { LookAtConstraint } from "engine-components/LookAtConstraint";
5279
- export { NavMesh } from "engine-components/NavMesh";
5280
- export { NavMeshAgent } from "engine-components/NavMesh";
5281
5361
  export { NestedGltf } from "engine-components/NestedGltf";
5282
5362
  export { Networking } from "engine-components/Networking";
5283
5363
  export { OffsetConstraint } from "engine-components/OffsetConstraint";
@@ -5288,6 +5368,7 @@ declare module "engine-components/codegen/components" {
5288
5368
  export { EmissionModule } from "engine-components/ParticleSystemModules";
5289
5369
  export { ShapeModule } from "engine-components/ParticleSystemModules";
5290
5370
  export { PlayerColor } from "engine-components/PlayerColor";
5371
+ export { ReflectionProbe } from "engine-components/ReflectionProbe";
5291
5372
  export { FieldWithDefault } from "engine-components/Renderer";
5292
5373
  export { Renderer } from "engine-components/Renderer";
5293
5374
  export { MeshRenderer } from "engine-components/Renderer";
@@ -5301,7 +5382,6 @@ declare module "engine-components/codegen/components" {
5301
5382
  export { SpatialTriggerReceiver } from "engine-components/SpatialTrigger";
5302
5383
  export { SpatialTrigger } from "engine-components/SpatialTrigger";
5303
5384
  export { SpectatorCamera } from "engine-components/SpectatorCamera";
5304
- export { SpringJoint } from "engine-components/SpringJoint";
5305
5385
  export { Sprite } from "engine-components/SpriteRenderer";
5306
5386
  export { SpriteRenderer } from "engine-components/SpriteRenderer";
5307
5387
  export { SyncedCamera } from "engine-components/SyncedCamera";