@needle-tools/engine 2.36.0-pre → 2.38.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 (143) hide show
  1. package/CHANGELOG.md +33 -0
  2. package/dist/needle-engine.d.ts +248 -151
  3. package/dist/needle-engine.js +451 -437
  4. package/dist/needle-engine.js.map +4 -4
  5. package/dist/needle-engine.min.js +82 -82
  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/engine_addressables.d.ts +3 -1
  14. package/lib/engine/engine_addressables.js +12 -5
  15. package/lib/engine/engine_addressables.js.map +1 -1
  16. package/lib/engine/engine_element.js +3 -2
  17. package/lib/engine/engine_element.js.map +1 -1
  18. package/lib/engine/engine_element_overlay.js +4 -3
  19. package/lib/engine/engine_element_overlay.js.map +1 -1
  20. package/lib/engine/engine_gameobject.js +2 -1
  21. package/lib/engine/engine_gameobject.js.map +1 -1
  22. package/lib/engine/engine_input.d.ts +2 -0
  23. package/lib/engine/engine_input.js +14 -3
  24. package/lib/engine/engine_input.js.map +1 -1
  25. package/lib/engine/engine_physics.d.ts +35 -46
  26. package/lib/engine/engine_physics.js +479 -386
  27. package/lib/engine/engine_physics.js.map +1 -1
  28. package/lib/engine/engine_physics.types.d.ts +23 -0
  29. package/lib/engine/engine_physics.types.js +27 -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 +5 -0
  33. package/lib/engine/engine_serialization_core.js.map +1 -1
  34. package/lib/engine/engine_setup.d.ts +7 -1
  35. package/lib/engine/engine_setup.js +13 -3
  36. package/lib/engine/engine_setup.js.map +1 -1
  37. package/lib/engine/engine_types.d.ts +45 -26
  38. package/lib/engine/engine_types.js +24 -37
  39. package/lib/engine/engine_types.js.map +1 -1
  40. package/lib/engine/engine_util_decorator.d.ts +6 -0
  41. package/lib/engine/engine_util_decorator.js +54 -0
  42. package/lib/engine/engine_util_decorator.js.map +1 -0
  43. package/lib/engine/engine_utils.d.ts +1 -1
  44. package/lib/engine/engine_utils.js +1 -1
  45. package/lib/engine/engine_utils.js.map +1 -1
  46. package/lib/engine/extensions/NEEDLE_gameobject_data.js +2 -0
  47. package/lib/engine/extensions/NEEDLE_gameobject_data.js.map +1 -1
  48. package/lib/engine-components/Animation.d.ts +7 -5
  49. package/lib/engine-components/Animation.js +7 -7
  50. package/lib/engine-components/Animation.js.map +1 -1
  51. package/lib/engine-components/AnimatorController.js +14 -7
  52. package/lib/engine-components/AnimatorController.js.map +1 -1
  53. package/lib/engine-components/BoxHelperComponent.js +1 -0
  54. package/lib/engine-components/BoxHelperComponent.js.map +1 -1
  55. package/lib/engine-components/Camera.d.ts +1 -0
  56. package/lib/engine-components/Camera.js +20 -5
  57. package/lib/engine-components/Camera.js.map +1 -1
  58. package/lib/engine-components/CharacterController.d.ts +31 -0
  59. package/lib/engine-components/CharacterController.js +167 -0
  60. package/lib/engine-components/CharacterController.js.map +1 -0
  61. package/lib/engine-components/Collider.d.ts +16 -5
  62. package/lib/engine-components/Collider.js +45 -23
  63. package/lib/engine-components/Collider.js.map +1 -1
  64. package/lib/engine-components/Component.d.ts +6 -15
  65. package/lib/engine-components/Component.js +7 -112
  66. package/lib/engine-components/Component.js.map +1 -1
  67. package/lib/engine-components/DragControls.js +9 -6
  68. package/lib/engine-components/DragControls.js.map +1 -1
  69. package/lib/engine-components/Light.d.ts +2 -0
  70. package/lib/engine-components/Light.js +13 -2
  71. package/lib/engine-components/Light.js.map +1 -1
  72. package/lib/engine-components/NavMesh.d.ts +0 -5
  73. package/lib/engine-components/NavMesh.js +100 -10
  74. package/lib/engine-components/NavMesh.js.map +1 -1
  75. package/lib/engine-components/NestedGltf.js +2 -0
  76. package/lib/engine-components/NestedGltf.js.map +1 -1
  77. package/lib/engine-components/Renderer.js +4 -0
  78. package/lib/engine-components/Renderer.js.map +1 -1
  79. package/lib/engine-components/RigidBody.d.ts +45 -25
  80. package/lib/engine-components/RigidBody.js +290 -142
  81. package/lib/engine-components/RigidBody.js.map +1 -1
  82. package/lib/engine-components/SmoothFollow.d.ts +2 -1
  83. package/lib/engine-components/SmoothFollow.js +25 -17
  84. package/lib/engine-components/SmoothFollow.js.map +1 -1
  85. package/lib/engine-components/SpatialTrigger.js +1 -1
  86. package/lib/engine-components/SpatialTrigger.js.map +1 -1
  87. package/lib/engine-components/SpectatorCamera.d.ts +1 -0
  88. package/lib/engine-components/SpectatorCamera.js +9 -2
  89. package/lib/engine-components/SpectatorCamera.js.map +1 -1
  90. package/lib/engine-components/SpringJoint.d.ts +0 -13
  91. package/lib/engine-components/SpringJoint.js +42 -41
  92. package/lib/engine-components/SpringJoint.js.map +1 -1
  93. package/lib/engine-components/VideoPlayer.js.map +1 -1
  94. package/lib/engine-components/WebXR.d.ts +1 -0
  95. package/lib/engine-components/WebXR.js +13 -6
  96. package/lib/engine-components/WebXR.js.map +1 -1
  97. package/lib/engine-components/WebXRController.js +12 -6
  98. package/lib/engine-components/WebXRController.js.map +1 -1
  99. package/lib/engine-components/codegen/components.d.ts +4 -3
  100. package/lib/engine-components/codegen/components.js +4 -3
  101. package/lib/engine-components/codegen/components.js.map +1 -1
  102. package/package.json +3 -4
  103. package/src/engine/api.ts +2 -1
  104. package/src/engine/codegen/register_types.js +16 -12
  105. package/src/engine/debug/debug.ts +4 -0
  106. package/src/engine/dist/engine_physics.js +739 -0
  107. package/src/engine/dist/engine_setup.js +777 -0
  108. package/src/engine/engine_addressables.ts +18 -8
  109. package/src/engine/engine_element.ts +3 -2
  110. package/src/engine/engine_element_overlay.ts +4 -3
  111. package/src/engine/engine_gameobject.ts +4 -4
  112. package/src/engine/engine_input.ts +12 -3
  113. package/src/engine/engine_physics.ts +492 -418
  114. package/src/engine/engine_physics.types.ts +28 -0
  115. package/src/engine/engine_serialization_core.ts +8 -1
  116. package/src/engine/engine_setup.ts +31 -18
  117. package/src/engine/engine_types.ts +83 -56
  118. package/src/engine/engine_util_decorator.ts +69 -0
  119. package/src/engine/engine_utils.ts +3 -3
  120. package/src/engine/extensions/NEEDLE_gameobject_data.ts +2 -0
  121. package/src/engine-components/Animation.ts +18 -12
  122. package/src/engine-components/AnimatorController.ts +16 -11
  123. package/src/engine-components/BoxHelperComponent.ts +1 -0
  124. package/src/engine-components/Camera.ts +21 -4
  125. package/src/engine-components/CharacterController.ts +171 -0
  126. package/src/engine-components/Collider.ts +49 -39
  127. package/src/engine-components/Component.ts +15 -130
  128. package/src/engine-components/DragControls.ts +9 -5
  129. package/src/engine-components/Light.ts +17 -3
  130. package/src/engine-components/NavMesh.ts +114 -115
  131. package/src/engine-components/NestedGltf.ts +2 -0
  132. package/src/engine-components/Renderer.ts +5 -1
  133. package/src/engine-components/RigidBody.ts +292 -149
  134. package/src/engine-components/SmoothFollow.ts +21 -18
  135. package/src/engine-components/SpatialTrigger.ts +1 -1
  136. package/src/engine-components/SpectatorCamera.ts +10 -2
  137. package/src/engine-components/SpringJoint.ts +41 -41
  138. package/src/engine-components/VideoPlayer.ts +1 -2
  139. package/src/engine-components/WebXR.ts +15 -6
  140. package/src/engine-components/WebXRController.ts +16 -7
  141. package/src/engine-components/codegen/components.ts +4 -3
  142. package/src/engine-components/dist/CharacterController.js +123 -0
  143. package/src/engine-components/dist/RigidBody.js +458 -0
@@ -23,10 +23,35 @@ 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
+ export enum Axes {
44
+ None = 0,
45
+ X = 2,
46
+ Y = 4,
47
+ Z = 8,
48
+ All = -1
49
+ }
50
+ }
26
51
  declare module "engine/engine_types" {
27
- import { Camera, Color, Material, Object3D, Vector3 } from "three";
28
- import { Body, ContactEquation } from "cannon-es";
52
+ import { Camera, Color, Material, Object3D, Vector3, Quaternion } from "three";
29
53
  import { RGBAColor } from "engine-components/js-extensions/RGBAColor";
54
+ import { CollisionDetectionMode, RigidbodyConstraints } from "engine/engine_physics.types";
30
55
  /** used to find data registered via gltf files e.g. find lightmaps for a Renderer component that were shipped inside a gltf */
31
56
  export type SourceIdentifier = string;
32
57
  export type Constructor<T> = abstract new (...args: any[]) => T;
@@ -68,6 +93,8 @@ declare module "engine/engine_types" {
68
93
  onEnable(): any;
69
94
  onDisable(): any;
70
95
  onDestroy(): any;
96
+ /** called for properties decorated with the @validate decorator */
97
+ onValidate?(property?: string): any;
71
98
  start?(): void;
72
99
  earlyUpdate?(): void;
73
100
  update?(): void;
@@ -76,14 +103,13 @@ declare module "engine/engine_types" {
76
103
  onAfterRender?(): void;
77
104
  onCollisionEnter?(col: Collision): any;
78
105
  onCollisionExit?(col: Collision): any;
79
- onCollisionExitRaw?(col: Collision): any;
80
106
  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;
107
+ onTriggerEnter?(col: ICollider): any;
108
+ onTriggerStay?(col: ICollider): any;
109
+ onTriggerExit?(col: ICollider): any;
86
110
  get forward(): Vector3;
111
+ get worldPosition(): Vector3;
112
+ get worldQuaternion(): Quaternion;
87
113
  }
88
114
  export interface ICamera extends IComponent {
89
115
  applyClearFlagsIfIsActiveCamera(): unknown;
@@ -114,33 +140,51 @@ declare module "engine/engine_types" {
114
140
  isTrigger: boolean;
115
141
  }
116
142
  export interface IRigidbody extends IComponent {
117
- initialize(): void;
118
- body: any;
143
+ constraints: RigidbodyConstraints;
144
+ isKinematic: boolean;
145
+ mass: number;
146
+ drag: number;
147
+ angularDrag: number;
148
+ useGravity: boolean;
149
+ collisionDetectionMode: CollisionDetectionMode;
150
+ lockPositionX: boolean;
151
+ lockPositionY: boolean;
152
+ lockPositionZ: boolean;
153
+ lockRotationX: boolean;
154
+ lockRotationY: boolean;
155
+ lockRotationZ: boolean;
119
156
  }
120
157
  export const $physicsKey: unique symbol;
121
- export type CannonCollision = {
122
- body: Body;
123
- contact: ContactEquation;
124
- target: Body;
125
- type: string;
126
- };
127
158
  export type ICollisionContext = {
128
159
  getCollider(obj: Object3D): ICollider;
129
160
  };
161
+ export type Vec3 = {
162
+ x: number;
163
+ y: number;
164
+ z: number;
165
+ };
166
+ export type Vec2 = {
167
+ x: number;
168
+ y: number;
169
+ };
170
+ export class ContactPoint {
171
+ readonly localPoint: Vec3;
172
+ readonly distance: number;
173
+ readonly normal: Vec3;
174
+ constructor(localPt: Vec3, dist: number, normal: Vec3);
175
+ }
130
176
  export class Collision {
131
- get __internalCollision(): CannonCollision;
132
- get __internalInvertedSourceReceiver(): boolean;
133
- private readonly invert;
134
- private readonly collision;
135
- private readonly targetBody;
136
- private readonly context;
177
+ readonly contacts: ContactPoint[];
178
+ constructor(obj: Object3D, otherCollider: ICollider, contacts: ContactPoint[]);
137
179
  readonly me: Object3D;
138
- private _normal?;
139
- get normal(): Vector3;
140
- private _collider?;
180
+ private _collider;
181
+ /** the collider the collision happened with */
141
182
  get collider(): ICollider;
183
+ /** the object the collision happened with */
184
+ private _gameObject;
142
185
  get gameObject(): Object3D;
143
- constructor(obj: Object3D, collision: CannonCollision, context: ICollisionContext, invert?: boolean);
186
+ /** the rigidbody we hit, null if none attached */
187
+ get rigidBody(): IRigidbody | null;
144
188
  }
145
189
  }
146
190
  declare module "engine/engine_utils" {
@@ -164,7 +208,7 @@ declare module "engine/engine_utils" {
164
208
  export function deepClone(obj: any, predicate?: deepClonePredicate): any;
165
209
  export function delay(milliseconds: number): Promise<void>;
166
210
  export function getPath(source: SourceIdentifier | undefined, uri: string): string;
167
- export type WriteCallback = (data: any) => void;
211
+ export type WriteCallback = (data: any, prop: string) => void;
168
212
  export interface IWatch {
169
213
  subscribeWrite(callback: WriteCallback): any;
170
214
  apply(): any;
@@ -254,6 +298,7 @@ declare module "engine/debug/debug" {
254
298
  import { LogType } from "engine/debug/debug_overlay";
255
299
  export { LogType };
256
300
  export function showBalloonMessage(text: string, logType?: LogType): void;
301
+ export function showBalloonWarning(text: string): void;
257
302
  }
258
303
  declare module "engine/engine_serialization_core" {
259
304
  import { GLTF } from "three/examples/jsm/loaders/GLTFLoader";
@@ -323,6 +368,9 @@ declare module "engine/engine_serialization_core" {
323
368
  }
324
369
  export function serializeObject(obj: ISerializable, context: SerializationContext): object | null;
325
370
  export function deserializeObject(obj: ISerializable, serializedData: object, context: SerializationContext): boolean;
371
+ /** set to true while assigning properties during instantiation.
372
+ * Used for validate decorator to not invoke callbacks on components that are currently in the process of being built */
373
+ export const $isAssigningProperties: unique symbol;
326
374
  /** Object.assign behaviour but check if property is writeable (e.g. getter only properties are skipped) */
327
375
  export function assign(target: any, source: any): void;
328
376
  }
@@ -382,6 +430,7 @@ declare module "engine/engine_input" {
382
430
  getIsTouch(i: number): boolean;
383
431
  getTouchesPressedCount(): number;
384
432
  getMouseWheelChanged(i?: number): boolean;
433
+ getMouseWheelDeltaY(i?: number): number;
385
434
  getPointerEvent(i: number): Event | undefined;
386
435
  private context;
387
436
  private _pointerDown;
@@ -399,6 +448,7 @@ declare module "engine/engine_input" {
399
448
  private _pointerIds;
400
449
  private _pointerTypes;
401
450
  private _mouseWheelChanged;
451
+ private _mouseWheelDeltaY;
402
452
  private _pointerEvent;
403
453
  getKeyDown(): string | null;
404
454
  getKeyPressed(): string | null;
@@ -685,19 +735,11 @@ declare module "engine/engine_gameobject" {
685
735
  export function instantiate(instance: GameObject | Object3D | null, opts?: InstantiateOptions | null): GameObject | null;
686
736
  }
687
737
  declare module "engine/engine_physics" {
688
- import { Body, Constraint } from 'cannon-es';
689
- import { Camera, Intersection, Layers, Object3D, Ray, Raycaster, Vector2, Vector3 } from 'three';
738
+ import { Camera, Intersection, Layers, Mesh, Object3D, Ray, Raycaster, Vector2, Vector3 } from 'three';
690
739
  import { Context } from "engine/engine_setup";
691
- import { IGameObject as GameObject, ICollider, IRigidbody as Rigidbody } from "engine/engine_types";
692
- import { Shape } from 'cannon-es';
693
- export class BodyOptions {
694
- mass: number;
695
- kinematic: boolean;
696
- physicsEvents: boolean;
697
- drag: number;
698
- angularDrag: number;
699
- sleepThreshold: number;
700
- }
740
+ import { IComponent, ICollider, IRigidbody } from "engine/engine_types";
741
+ import RAPIER, { RigidBody } from '@dimforge/rapier3d-compat';
742
+ export type Rapier = typeof RAPIER;
701
743
  export class RaycastOptions {
702
744
  ray: Ray | undefined;
703
745
  cam: Camera | undefined | null;
@@ -733,46 +775,43 @@ declare module "engine/engine_physics" {
733
775
  private onSphereOverlap;
734
776
  raycastFromRay(ray: Ray, options?: RaycastOptions | null): Array<Intersection>;
735
777
  raycast(options?: RaycastOptions | null): Array<Intersection>;
736
- get isUpdating(): boolean;
778
+ private _tempPosition;
779
+ private _tempQuaternion;
780
+ private _tempScale;
781
+ private _tempMatrix;
782
+ private static _didLoadPhysicsEngine;
737
783
  private _isUpdatingPhysicsWorld;
784
+ get isUpdating(): boolean;
738
785
  private context;
739
- private world;
786
+ private world?;
787
+ private _hasCreatedWorld;
788
+ private eventQueue?;
789
+ private collisionHandler?;
740
790
  private objects;
741
- private tempPosition;
742
- private tempQuaternion;
791
+ private bodies;
743
792
  constructor(context: Context);
744
- addPreStepListener(listener: (evt: any) => void): void;
745
- addPostStepListener(listener: (evt: any) => void): 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;
756
- private isAlreadyRegistered;
757
- private readonly tempMat1;
758
- private readonly tempMat2;
759
- private addShape;
760
- step(deltaTime: number): void;
761
- private temp;
762
- private tempQuat;
793
+ createWorld(): Promise<void>;
794
+ addBoxCollider(collider: ICollider, center: Vector3, size: Vector3): void;
795
+ addSphereCollider(collider: ICollider, center: Vector3, radius: number): void;
796
+ addCapsuleCollider(collider: ICollider, center: Vector3, height: number, radius: number): void;
797
+ addMeshCollider(collider: ICollider, mesh: Mesh, convex: boolean): void;
798
+ private createCollider;
799
+ private getRigidbody;
800
+ removeBody(obj: IComponent): void;
801
+ updateBody(comp: ICollider | IRigidbody, translation: boolean, rotation: boolean): void;
802
+ updateProperties(rigidbody: IRigidbody): void;
803
+ internal_getRigidbody(rb: IRigidbody): RigidBody | null;
804
+ private internalUpdateProperties;
805
+ private lines?;
806
+ step(_deltaTime?: number): void;
807
+ private updateDebugRendering;
763
808
  postStep(): void;
764
- private internalCreateBody;
765
- private registerCollisionEvents;
766
- private unregisterCollisionEvents;
767
- private onBeginContact;
768
- private readonly collisionContext;
769
- private raiseCollisionEvents;
770
- private onEndContact;
771
- }
772
- export interface IColliderProvider {
773
- getCollider(obj: Object3D): ICollider;
809
+ /** sync rendered objects with physics world (except for colliders without rigidbody) */
810
+ private syncObjects;
811
+ private syncPhysicsBody;
812
+ private static _matricesBuffer;
813
+ private getRigidbodyRelativeMatrix;
774
814
  }
775
- export function registerColliderProvider(prov: IColliderProvider): void;
776
815
  }
777
816
  declare module "engine/engine_time" {
778
817
  export class Time {
@@ -1150,7 +1189,7 @@ declare module "engine-components/Component" {
1150
1189
  import * as THREE from "three";
1151
1190
  import { Context, FrameEvent } from "engine/engine_setup";
1152
1191
  import { Object3D } from "three";
1153
- import { ConstructorConcrete, SourceIdentifier, IComponent, IGameObject, Constructor, GuidsMap, Collision } from "engine/engine_types";
1192
+ import { ConstructorConcrete, SourceIdentifier, IComponent, IGameObject, Constructor, GuidsMap, Collision, ICollider } from "engine/engine_types";
1154
1193
  import { InstantiateOptions, HideFlags } from "engine/engine_gameobject";
1155
1194
  abstract class GameObject extends THREE.Object3D implements THREE.Object3D, IGameObject {
1156
1195
  guid: string | undefined;
@@ -1226,6 +1265,7 @@ declare module "engine-components/Component" {
1226
1265
  onEnable(): void;
1227
1266
  onDisable(): void;
1228
1267
  onDestroy(): void;
1268
+ onValidate?(prop?: string): void;
1229
1269
  start?(): void;
1230
1270
  earlyUpdate?(): void;
1231
1271
  update?(): void;
@@ -1234,11 +1274,10 @@ declare module "engine-components/Component" {
1234
1274
  onAfterRender?(): void;
1235
1275
  onCollisionEnter?(col: Collision): any;
1236
1276
  onCollisionExit?(col: Collision): any;
1237
- onCollisionExitRaw?(col: Collision): any;
1238
1277
  onCollisionStay?(col: Collision): any;
1239
- onTriggerEnter?(col: Collision): any;
1240
- onTriggerStay?(col: Collision): any;
1241
- onTriggerExit?(col: Collision): any;
1278
+ onTriggerEnter?(col: ICollider): any;
1279
+ onTriggerStay?(col: ICollider): any;
1280
+ onTriggerExit?(col: ICollider): any;
1242
1281
  startCoroutine(routine: Generator, evt?: FrameEvent): Generator;
1243
1282
  stopCoroutine(routine: Generator, evt?: FrameEvent): void;
1244
1283
  get destroyed(): boolean;
@@ -1249,6 +1288,7 @@ declare module "engine-components/Component" {
1249
1288
  protected __isEnabled: boolean | undefined;
1250
1289
  private __destroyed;
1251
1290
  get __internalDidAwakeAndStart(): boolean;
1291
+ constructor();
1252
1292
  __internalNewInstanceCreated(): void;
1253
1293
  __internalAwake(): void;
1254
1294
  __internalStart(): void;
@@ -1257,16 +1297,6 @@ declare module "engine-components/Component" {
1257
1297
  __internalDestroy(): void;
1258
1298
  get enabled(): boolean;
1259
1299
  set enabled(val: boolean);
1260
- constructor();
1261
- private _collisionExitRoutine;
1262
- private _collisions;
1263
- private _triggerExitRoutine;
1264
- private _triggerCollisions;
1265
- get collisionsCount(): number;
1266
- private __internalResetsCachedPhysicsData;
1267
- __internalHandleCollision(col: Collision, isTriggerCollision: boolean): void;
1268
- __internalHandleExitCollisionEvent(obj: Object3D, isTriggerCollision: boolean): void;
1269
- private __waitForCollisionExit;
1270
1300
  private static _worldPositionBuffer;
1271
1301
  private static _worldQuaternionBuffer;
1272
1302
  private static _worldEulerBuffer;
@@ -1540,9 +1570,11 @@ declare module "engine/engine_addressables" {
1540
1570
  private _glbRoot?;
1541
1571
  private _uri;
1542
1572
  private _progressListeners;
1573
+ private _hash?;
1574
+ private _hashedUri;
1543
1575
  private _isLoadingRawBinary;
1544
1576
  private _rawBinary?;
1545
- constructor(uri: string);
1577
+ constructor(uri: string, hash?: string);
1546
1578
  private onResolvePrefab;
1547
1579
  private get mustLoad();
1548
1580
  isLoaded(): boolean | ArrayBuffer;
@@ -1643,6 +1675,7 @@ declare module "engine/engine_setup" {
1643
1675
  alias: string | undefined | null;
1644
1676
  domElement: HTMLElement | null;
1645
1677
  renderer?: THREE.WebGLRenderer;
1678
+ hash?: string;
1646
1679
  constructor(domElement: HTMLElement | null);
1647
1680
  }
1648
1681
  export enum FrameEvent {
@@ -1651,7 +1684,8 @@ declare module "engine/engine_setup" {
1651
1684
  LateUpdate = 2,
1652
1685
  OnBeforeRender = 3,
1653
1686
  OnAfterRender = 4,
1654
- PhysicsStep = 10
1687
+ PrePhysicsStep = 9,
1688
+ PostPhysicsStep = 10
1655
1689
  }
1656
1690
  export enum XRSessionMode {
1657
1691
  ImmersiveVR = "immersive-vr",
@@ -1666,6 +1700,8 @@ declare module "engine/engine_setup" {
1666
1700
  name: string;
1667
1701
  alias: string | undefined | null;
1668
1702
  isManagedExternally: boolean;
1703
+ /** used to append to loaded assets */
1704
+ hash?: string;
1669
1705
  domElement: HTMLElement;
1670
1706
  get resolutionScaleFactor(): number;
1671
1707
  /** use to scale the resolution up or down of the renderer. default is 1 */
@@ -1677,6 +1713,8 @@ declare module "engine/engine_setup" {
1677
1713
  get domY(): number;
1678
1714
  get isInXR(): boolean;
1679
1715
  xrSessionMode: XRSessionMode | undefined;
1716
+ get isInVR(): boolean;
1717
+ get isInAR(): boolean;
1680
1718
  get xrSession(): THREE.XRSession | null;
1681
1719
  get arOverlayElement(): HTMLElement;
1682
1720
  scene: THREE.Scene;
@@ -2006,7 +2044,8 @@ declare module "engine-components/Animator" {
2006
2044
  declare module "engine-components/Animation" {
2007
2045
  import { Behaviour } from "engine-components/Component";
2008
2046
  import * as THREE from 'three';
2009
- import { AnimationAction, AnimationClip, Vector2 } from "three";
2047
+ import { AnimationAction, AnimationClip } from "three";
2048
+ import { Vec2 } from "engine/engine_types";
2010
2049
  export class PlayOptions {
2011
2050
  fadeDuration?: number;
2012
2051
  loop?: boolean;
@@ -2014,14 +2053,14 @@ declare module "engine-components/Animation" {
2014
2053
  startTime?: number;
2015
2054
  endTime?: number;
2016
2055
  clampWhenFinished?: boolean;
2017
- minMaxSpeed?: Vector2;
2018
- minMaxOffsetNormalized?: Vector2;
2056
+ minMaxSpeed?: Vec2;
2057
+ minMaxOffsetNormalized?: Vec2;
2019
2058
  }
2020
2059
  export class Animation extends Behaviour {
2021
2060
  playAutomatically: boolean;
2022
2061
  randomStartTime: boolean;
2023
- minMaxSpeed?: Vector2;
2024
- minMaxOffsetNormalized?: Vector2;
2062
+ minMaxSpeed?: Vec2;
2063
+ minMaxOffsetNormalized?: Vec2;
2025
2064
  private _tempAnimationClipBeforeGameObjectExisted;
2026
2065
  get clip(): AnimationClip | null;
2027
2066
  set clip(val: AnimationClip | null);
@@ -2046,6 +2085,7 @@ declare module "engine-components/Animation" {
2046
2085
  start(): void;
2047
2086
  update(): void;
2048
2087
  getAction(name: string): THREE.AnimationAction | undefined | null;
2088
+ get isPlaying(): boolean;
2049
2089
  play(clipOrNumber: AnimationClip | number | string, options?: PlayOptions): Promise<AnimationAction> | void;
2050
2090
  internalOnPlay(action: AnimationAction, options?: PlayOptions): Promise<AnimationAction>;
2051
2091
  private tryFindHandle;
@@ -2313,6 +2353,13 @@ declare module "engine/engine_element" {
2313
2353
  private onBeforeBeginLoading;
2314
2354
  }
2315
2355
  }
2356
+ declare module "engine/engine_util_decorator" {
2357
+ import { IComponent } from "engine/engine_types";
2358
+ type setter = (v: any) => void;
2359
+ type getter = () => any;
2360
+ /** create accessor callbacks for a field */
2361
+ export const validate: (set?: setter, get?: getter) => (target: IComponent | any, propertyKey: string, descriptor?: undefined) => void;
2362
+ }
2316
2363
  declare module "engine/api" {
2317
2364
  export { InstancingUtil } from "engine/engine_instancing";
2318
2365
  export * from "engine/engine_gameobject";
@@ -2320,6 +2367,7 @@ declare module "engine/api" {
2320
2367
  export { AssetReference } from "engine/engine_addressables";
2321
2368
  export { FrameEvent } from "engine/engine_setup";
2322
2369
  export * from "engine/debug/debug";
2370
+ export { validate } from "engine/engine_util_decorator";
2323
2371
  }
2324
2372
  declare module "engine-components/AlignmentConstraint" {
2325
2373
  import { Behaviour } from "engine-components/Component";
@@ -2447,6 +2495,7 @@ declare module "engine-components/Camera" {
2447
2495
  get cam(): THREE.PerspectiveCamera | THREE.OrthographicCamera;
2448
2496
  awake(): void;
2449
2497
  onEnable(): void;
2498
+ onDisable(): void;
2450
2499
  buildCamera(): void;
2451
2500
  applyClearFlagsIfIsActiveCamera(): void;
2452
2501
  private environmentIsTransparent;
@@ -2529,65 +2578,84 @@ declare module "engine-components/BoxHelperComponent" {
2529
2578
  }
2530
2579
  declare module "engine-components/RigidBody" {
2531
2580
  import { Behaviour } from "engine-components/Component";
2532
- import * as CANNON from 'cannon-es';
2533
2581
  import * as THREE from 'three';
2534
2582
  import { Vector3 } from "three";
2535
2583
  import { IRigidbody } from "engine/engine_types";
2584
+ import { CollisionDetectionMode, RigidbodyConstraints } from "engine/engine_physics.types";
2536
2585
  export class Rigidbody extends Behaviour implements IRigidbody {
2537
2586
  mass: number;
2538
- set isKinematic(kinematic: boolean);
2539
- get isKinematic(): boolean;
2540
- private _isKinematic;
2587
+ useGravity: boolean;
2588
+ constraints: RigidbodyConstraints;
2589
+ isKinematic: boolean;
2541
2590
  drag: number;
2542
2591
  angularDrag: number;
2543
2592
  detectCollisions: boolean;
2544
2593
  sleepThreshold: number;
2545
- get body(): CANNON.Body | null;
2594
+ collisionDetectionMode: CollisionDetectionMode;
2595
+ get lockPositionX(): boolean;
2596
+ get lockPositionY(): boolean;
2597
+ get lockPositionZ(): boolean;
2598
+ get lockRotationX(): boolean;
2599
+ get lockRotationY(): boolean;
2600
+ get lockRotationZ(): boolean;
2601
+ set lockPositionX(v: boolean);
2602
+ set lockPositionY(v: boolean);
2603
+ set lockPositionZ(v: boolean);
2604
+ set lockRotationX(v: boolean);
2605
+ set lockRotationY(v: boolean);
2606
+ set lockRotationZ(v: boolean);
2607
+ private _propertiesChanged;
2546
2608
  private static tempPosition;
2547
- private _body;
2548
- private currentVelocity;
2609
+ private _currentVelocity;
2549
2610
  private _smoothedVelocity;
2550
- private lastWorldPosition;
2551
- private _ignoreChange;
2552
- private _dirty;
2553
- private _positionWatch?;
2554
- private _matrixWatch?;
2555
- private _setMatrix;
2556
- constructor();
2611
+ private _smoothedVelocityGetter;
2612
+ private _lastPosition;
2613
+ private _watch?;
2557
2614
  awake(): void;
2558
2615
  onEnable(): void;
2559
2616
  onDisable(): void;
2560
2617
  onDestroy(): void;
2561
- onBeforeRender(): void;
2562
- initialize(): void;
2618
+ onValidate(): void;
2619
+ beforePhysics(): Generator<undefined, void, unknown>;
2620
+ private get body();
2621
+ teleport(pt: {
2622
+ x: number;
2623
+ y: number;
2624
+ z: number;
2625
+ }, localspace?: boolean): void;
2626
+ resetForces(): void;
2627
+ resetTorques(): void;
2628
+ resetVelocities(): void;
2629
+ resetForcesAndTorques(): void;
2563
2630
  wakeUp(): void;
2564
- applyForce(vec: THREE.Vector3, rel?: THREE.Vector3): void;
2631
+ applyForce(vec: Vector3, _rel?: THREE.Vector3): void;
2632
+ applyImpulse(vec: Vector3): void;
2565
2633
  setForce(x: number, y: number, z: number): void;
2566
- getVelocity(): THREE.Vector3;
2567
- setVelocity(x: number | Vector3, y: number, z: number): void;
2568
- getTorque(): THREE.Vector3;
2634
+ getVelocity(): Vector3;
2635
+ setVelocity(x: number | Vector3, y?: number, z?: number): void;
2636
+ setAngularVelocity(x: number | Vector3, y?: number, z?: number): void;
2569
2637
  setTorque(x: number | Vector3, y: number, z: number): void;
2570
- get smoothedVelocity(): THREE.Vector3;
2571
- setAngularVelocity(x: number, y: number, z: number): void;
2572
- private static copyVector3;
2573
- setBodyFromGameObject(velocity?: THREE.Vector3 | null | {
2638
+ get smoothedVelocity(): Vector3;
2639
+ /**d
2640
+ * @deprecated not used anymore
2641
+ */
2642
+ setBodyFromGameObject(_velocity?: THREE.Vector3 | null | {
2574
2643
  x: number;
2575
2644
  y: number;
2576
2645
  z: number;
2577
2646
  }): void;
2578
- private updateVelocity;
2647
+ private captureVelocity;
2579
2648
  }
2580
2649
  }
2581
2650
  declare module "engine-components/Collider" {
2582
2651
  import { Behaviour } from "engine-components/Component";
2583
2652
  import { Rigidbody } from "engine-components/RigidBody";
2584
- import { Shape } from "cannon-es";
2653
+ import { Mesh, Vector3 } from "three";
2585
2654
  import { ICollider } from "engine/engine_types";
2586
2655
  export class Collider extends Behaviour implements ICollider {
2587
2656
  get isCollider(): any;
2588
2657
  attachedRigidbody: Rigidbody | null;
2589
2658
  isTrigger: boolean;
2590
- protected _shape: Shape | null;
2591
2659
  awake(): void;
2592
2660
  start(): void;
2593
2661
  onEnable(): void;
@@ -2595,13 +2663,58 @@ declare module "engine-components/Collider" {
2595
2663
  }
2596
2664
  export class SphereCollider extends Collider {
2597
2665
  radius: number;
2598
- center: THREE.Vector3;
2666
+ center: Vector3;
2599
2667
  onEnable(): void;
2600
2668
  }
2601
2669
  export class BoxCollider extends Collider {
2602
- size: THREE.Vector3;
2603
- center: THREE.Vector3;
2670
+ size: Vector3;
2671
+ center: Vector3;
2672
+ onEnable(): void;
2673
+ }
2674
+ export class MeshCollider extends Collider {
2675
+ sharedMesh?: Mesh;
2676
+ convex: boolean;
2677
+ awake(): void;
2678
+ onEnable(): void;
2679
+ }
2680
+ export class CapsuleCollider extends Collider {
2681
+ center: Vector3;
2682
+ radius: number;
2683
+ height: number;
2684
+ onEnable(): void;
2685
+ }
2686
+ }
2687
+ declare module "engine-components/CharacterController" {
2688
+ import { Vector3 } from "three";
2689
+ import { Collision } from "engine/engine_types";
2690
+ import { Behaviour } from "engine-components/Component";
2691
+ import { Rigidbody } from "engine-components/RigidBody";
2692
+ import { Animator } from "engine-components/Animator";
2693
+ export class CharacterController extends Behaviour {
2694
+ center: Vector3;
2695
+ radius: number;
2696
+ height: number;
2697
+ private _rigidbody;
2698
+ get rigidbody(): Rigidbody;
2604
2699
  onEnable(): void;
2700
+ move(vec: Vector3): void;
2701
+ private _activeGroundCollisions;
2702
+ onCollisionEnter(col: Collision): void;
2703
+ onCollisionExit(col: Collision): void;
2704
+ get isGrounded(): boolean;
2705
+ }
2706
+ export class CharacterControllerInput extends Behaviour {
2707
+ controller?: CharacterController;
2708
+ movementSpeed: number;
2709
+ rotationSpeed: number;
2710
+ jumpForce: number;
2711
+ animator?: Animator;
2712
+ private _currentSpeed;
2713
+ private _currentAngularSpeed;
2714
+ private _temp;
2715
+ private _jumpCount;
2716
+ update(): void;
2717
+ private _raycastOptions;
2605
2718
  }
2606
2719
  }
2607
2720
  declare module "engine-components/ui/PointerEvents" {
@@ -3554,6 +3667,7 @@ declare module "engine-components/WebXR" {
3554
3667
  get webxr(): WebXR;
3555
3668
  private _webxr;
3556
3669
  private reticle;
3670
+ private reticleParent;
3557
3671
  private hitTestSource;
3558
3672
  private reticleActive;
3559
3673
  private previousBackground;
@@ -3818,6 +3932,8 @@ declare module "engine-components/Light" {
3818
3932
  set shadowNormalBias(val: number);
3819
3933
  get shadowNormalBias(): number;
3820
3934
  private _shadowNormalBias;
3935
+ /** when enabled this will remove the multiplication when setting the shadow bias settings initially */
3936
+ private _overrideShadowBiasSettings;
3821
3937
  set shadows(val: LightShadows);
3822
3938
  get shadows(): LightShadows;
3823
3939
  private _shadows;
@@ -3882,13 +3998,6 @@ declare module "engine-components/LODGroup" {
3882
3998
  distanceFactor(factor: number): void;
3883
3999
  }
3884
4000
  }
3885
- declare module "engine-components/NavMesh" {
3886
- import { Behaviour } from "engine-components/Component";
3887
- export class NavMesh extends Behaviour {
3888
- }
3889
- export class NavMeshAgent extends Behaviour {
3890
- }
3891
- }
3892
4001
  declare module "engine-components/NestedGltf" {
3893
4002
  import { Behaviour } from "engine-components/Component";
3894
4003
  import { AssetReference, ProgressCallback } from "engine/engine_addressables";
@@ -4262,14 +4371,15 @@ declare module "engine-components/Skybox" {
4262
4371
  declare module "engine-components/SmoothFollow" {
4263
4372
  import { Behaviour } from "engine-components/Component";
4264
4373
  import * as THREE from "three";
4374
+ import { Axes } from "engine/engine_physics.types";
4265
4375
  export class SmoothFollow extends Behaviour {
4266
4376
  target: THREE.Object3D | null;
4267
4377
  followFactor: number;
4268
4378
  rotateFactor: number;
4379
+ positionAxes: Axes;
4269
4380
  flipForward: boolean;
4270
4381
  private static _invertForward;
4271
4382
  private _firstUpdate;
4272
- onEnable(): void;
4273
4383
  onBeforeRender(): void;
4274
4384
  updateNow(hard: boolean): void;
4275
4385
  }
@@ -4323,6 +4433,7 @@ declare module "engine-components/SpectatorCamera" {
4323
4433
  /** list of other users that are following me */
4324
4434
  get followers(): string[];
4325
4435
  stopSpectating(): void;
4436
+ private get localId();
4326
4437
  /** player view to follow */
4327
4438
  set target(target: PlayerView | undefined);
4328
4439
  get target(): PlayerView | undefined;
@@ -4347,21 +4458,6 @@ declare module "engine-components/SpectatorCamera" {
4347
4458
  private resetAvatarFlags;
4348
4459
  }
4349
4460
  }
4350
- declare module "engine-components/SpringJoint" {
4351
- import { Behaviour } from "engine-components/Component";
4352
- import { Rigidbody } from "engine-components/RigidBody";
4353
- import { Vector3 } from "three";
4354
- export class SpringJoint extends Behaviour {
4355
- anchor: Vector3 | null;
4356
- connectedBody: Rigidbody | null;
4357
- connectedAnchor: Vector3 | null;
4358
- spring: number;
4359
- damper: number;
4360
- private rb;
4361
- awake(): void;
4362
- update(): void;
4363
- }
4364
- }
4365
4461
  declare module "engine-components/SpriteRenderer" {
4366
4462
  import { Behaviour } from "engine-components/Component";
4367
4463
  import * as THREE from "three";
@@ -5300,9 +5396,13 @@ declare module "engine-components/codegen/components" {
5300
5396
  export { BasicIKConstraint } from "engine-components/BasicIKConstraint";
5301
5397
  export { BoxHelperComponent } from "engine-components/BoxHelperComponent";
5302
5398
  export { Camera } from "engine-components/Camera";
5399
+ export { CharacterController } from "engine-components/CharacterController";
5400
+ export { CharacterControllerInput } from "engine-components/CharacterController";
5303
5401
  export { Collider } from "engine-components/Collider";
5304
5402
  export { SphereCollider } from "engine-components/Collider";
5305
5403
  export { BoxCollider } from "engine-components/Collider";
5404
+ export { MeshCollider } from "engine-components/Collider";
5405
+ export { CapsuleCollider } from "engine-components/Collider";
5306
5406
  export { DeleteBox } from "engine-components/DeleteBox";
5307
5407
  export { Deletable } from "engine-components/DeleteBox";
5308
5408
  export { DeviceFlag } from "engine-components/DeviceFlag";
@@ -5325,8 +5425,6 @@ declare module "engine-components/codegen/components" {
5325
5425
  export { LODModel } from "engine-components/LODGroup";
5326
5426
  export { LODGroup } from "engine-components/LODGroup";
5327
5427
  export { LookAtConstraint } from "engine-components/LookAtConstraint";
5328
- export { NavMesh } from "engine-components/NavMesh";
5329
- export { NavMeshAgent } from "engine-components/NavMesh";
5330
5428
  export { NestedGltf } from "engine-components/NestedGltf";
5331
5429
  export { Networking } from "engine-components/Networking";
5332
5430
  export { OffsetConstraint } from "engine-components/OffsetConstraint";
@@ -5351,7 +5449,6 @@ declare module "engine-components/codegen/components" {
5351
5449
  export { SpatialTriggerReceiver } from "engine-components/SpatialTrigger";
5352
5450
  export { SpatialTrigger } from "engine-components/SpatialTrigger";
5353
5451
  export { SpectatorCamera } from "engine-components/SpectatorCamera";
5354
- export { SpringJoint } from "engine-components/SpringJoint";
5355
5452
  export { Sprite } from "engine-components/SpriteRenderer";
5356
5453
  export { SpriteRenderer } from "engine-components/SpriteRenderer";
5357
5454
  export { SyncedCamera } from "engine-components/SyncedCamera";