@needle-tools/engine 3.37.3-alpha → 3.37.5-alpha

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 (51) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/README.md +5 -3
  3. package/dist/needle-engine.js +325 -248
  4. package/dist/needle-engine.light.js +1614 -1537
  5. package/dist/needle-engine.light.min.js +111 -98
  6. package/dist/needle-engine.light.umd.cjs +146 -133
  7. package/dist/needle-engine.min.js +43 -30
  8. package/dist/needle-engine.umd.cjs +64 -51
  9. package/lib/engine/engine_physics.d.ts +2 -2
  10. package/lib/engine/engine_physics.js +4 -4
  11. package/lib/engine/engine_physics.js.map +1 -1
  12. package/lib/engine/engine_physics_rapier.d.ts +24 -4
  13. package/lib/engine/engine_physics_rapier.js +33 -12
  14. package/lib/engine/engine_physics_rapier.js.map +1 -1
  15. package/lib/engine/engine_types.d.ts +27 -4
  16. package/lib/engine/engine_types.js.map +1 -1
  17. package/lib/engine/extensions/NEEDLE_lighting_settings.d.ts +0 -1
  18. package/lib/engine/extensions/NEEDLE_lighting_settings.js +0 -6
  19. package/lib/engine/extensions/NEEDLE_lighting_settings.js.map +1 -1
  20. package/lib/engine/webcomponents/needle menu/needle-menu.js +14 -1
  21. package/lib/engine/webcomponents/needle menu/needle-menu.js.map +1 -1
  22. package/lib/engine-components/Collider.d.ts +25 -0
  23. package/lib/engine-components/Collider.js +25 -0
  24. package/lib/engine-components/Collider.js.map +1 -1
  25. package/lib/engine-components/OrbitControls.d.ts +16 -3
  26. package/lib/engine-components/OrbitControls.js +25 -9
  27. package/lib/engine-components/OrbitControls.js.map +1 -1
  28. package/lib/engine-components/ParticleSystem.d.ts +31 -1
  29. package/lib/engine-components/ParticleSystem.js +42 -1
  30. package/lib/engine-components/ParticleSystem.js.map +1 -1
  31. package/lib/engine-components/RigidBody.d.ts +3 -0
  32. package/lib/engine-components/RigidBody.js +5 -2
  33. package/lib/engine-components/RigidBody.js.map +1 -1
  34. package/lib/engine-components/SceneSwitcher.d.ts +22 -2
  35. package/lib/engine-components/SceneSwitcher.js +29 -3
  36. package/lib/engine-components/SceneSwitcher.js.map +1 -1
  37. package/lib/engine-components/SyncedTransform.js +3 -15
  38. package/lib/engine-components/SyncedTransform.js.map +1 -1
  39. package/package.json +1 -1
  40. package/src/engine/codegen/register_types.ts +2 -2
  41. package/src/engine/engine_physics.ts +4 -4
  42. package/src/engine/engine_physics_rapier.ts +48 -14
  43. package/src/engine/engine_types.ts +29 -6
  44. package/src/engine/extensions/NEEDLE_lighting_settings.ts +0 -5
  45. package/src/engine/webcomponents/needle menu/needle-menu.ts +14 -1
  46. package/src/engine-components/Collider.ts +27 -4
  47. package/src/engine-components/OrbitControls.ts +29 -11
  48. package/src/engine-components/ParticleSystem.ts +44 -4
  49. package/src/engine-components/RigidBody.ts +5 -2
  50. package/src/engine-components/SceneSwitcher.ts +45 -5
  51. package/src/engine-components/SyncedTransform.ts +4 -17
@@ -241,17 +241,10 @@ export class SyncedTransform extends Behaviour {
241
241
  this.receivedUpdate = false;
242
242
  this.lastWorldPos.copy(wp);
243
243
  this.lastWorldRotation.copy(wr);
244
- // if (this._model.isOwned === false && this.autoOwnership) {
245
- // this.requestOwnership();
246
- // }
247
244
  if (!this._model)
248
245
  return;
249
- // only run if we are the owner
250
246
  if (!this._model || this._model.hasOwnership === undefined || !this._model.hasOwnership) {
251
- if (this.rb) {
252
- this.rb.isKinematic = this._model.isOwned ?? false;
253
- this.rb.setVelocity(0, 0, 0);
254
- }
247
+ // if we're not the owner of this synced transform then don't send any data
255
248
  return;
256
249
  }
257
250
  // local user is owner:
@@ -261,13 +254,8 @@ export class SyncedTransform extends Behaviour {
261
254
  console.log("reset kinematic", this.rb.name, this._wasKinematic);
262
255
  this.rb.isKinematic = this._wasKinematic;
263
256
  }
264
- // hacky reset if too far off
265
- if (this.gameObject.position.distanceTo(new Vector3(0, 0, 0)) > 1000) {
266
- if (debug)
267
- console.log("RESET", this.name);
268
- this.gameObject.position.set(0, 1, 0);
269
- this.rb.setVelocity(0, 0, 0);
270
- }
257
+ // TODO: if the SyncedTransform has a dynamic rigidbody we should probably synchronize the Rigidbody's properties (velocity etc)
258
+ // Or the Rigidbody should be synchronized separately in which case the SyncedTransform should be passive
271
259
  }
272
260
  const updateInterval = 10;
273
261
  const fastUpdate = this.rb || this.fastMode;
@@ -1 +1 @@
1
- {"version":3,"file":"SyncedTransform.js","sourceRoot":"","sources":["../../src/engine-components/SyncedTransform.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SyncedTransform.js","sourceRoot":"","sources":["../../src/engine-components/SyncedTransform.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@needle-tools/engine",
3
- "version": "3.37.3-alpha",
3
+ "version": "3.37.5-alpha",
4
4
  "description": "Needle Engine is a web-based runtime for 3D apps. It runs on your machine for development with great integrations into editors like Unity or Blender - and can be deployed onto any device! It is flexible, extensible and networking and XR are built-in",
5
5
  "main": "dist/needle-engine.umd.cjs",
6
6
  "type": "module",
@@ -1,6 +1,6 @@
1
1
  /* eslint-disable */
2
2
  import { TypeStore } from "./../engine_typestore.js"
3
-
3
+
4
4
  // Import types
5
5
  import { __Ignore } from "../../engine-components/codegen/components.js";
6
6
  import { ActionBuilder } from "../../engine-components/export/usdz/extensions/behavior/BehavioursBuilder.js";
@@ -220,7 +220,7 @@ import { XRControllerMovement } from "../../engine-components/webxr/controllers/
220
220
  import { XRFlag } from "../../engine-components/webxr/XRFlag.js";
221
221
  import { XRRig } from "../../engine-components/webxr/WebXRRig.js";
222
222
  import { XRState } from "../../engine-components/webxr/XRFlag.js";
223
-
223
+
224
224
  // Register types
225
225
  TypeStore.add("__Ignore", __Ignore);
226
226
  TypeStore.add("ActionBuilder", ActionBuilder);
@@ -125,14 +125,14 @@ export class SphereIntersection implements Intersection {
125
125
 
126
126
  export class Physics {
127
127
 
128
- /**@deprecated use this.context.physics.engine.raycast */
128
+ /**@deprecated use `this.context.physics.engine.raycast` {@link IPhysicsEngine.raycast} */
129
129
  public raycastPhysicsFast(origin: Vec2 | Vec3, direction: Vec3 | undefined = undefined, maxDistance: number = Infinity, solid: boolean = true) {
130
- return this.context.physics.engine?.raycast(origin, direction, maxDistance, solid) ?? null;
130
+ return this.context.physics.engine?.raycast(origin, direction, { maxDistance, solid }) ?? null;
131
131
  }
132
132
 
133
- /**@deprecated use this.context.physics.engine.raycastAndGetNormal */
133
+ /**@deprecated use `this.context.physics.engine.raycastAndGetNormal` {@link IPhysicsEngine.raycastAndGetNormal} */
134
134
  public raycastPhysicsFastAndGetNormal(origin: Vec2 | Vec3, direction: Vec3 | undefined = undefined, maxDistance: number = Infinity, solid: boolean = true) {
135
- return this.context.physics.engine?.raycastAndGetNormal(origin, direction, maxDistance, solid) ?? null;
135
+ return this.context.physics.engine?.raycastAndGetNormal(origin, direction, { maxDistance, solid }) ?? null;
136
136
  }
137
137
 
138
138
  /**@deprecated use this.context.physics.engine.sphereOverlap */
@@ -1,4 +1,4 @@
1
- import { ActiveCollisionTypes, ActiveEvents, Ball, CoefficientCombineRule, Collider, ColliderDesc, Cuboid, EventQueue, JointData, QueryFilterFlags, Ray, RigidBody, RigidBodyType, ShapeColliderTOI, ShapeType, World } from '@dimforge/rapier3d-compat';
1
+ import { ActiveCollisionTypes, ActiveEvents, Ball, CoefficientCombineRule, Collider, ColliderDesc, Cuboid, EventQueue, JointData, QueryFilterFlags, Ray, RigidBody, RigidBodyDesc, RigidBodyType, ShapeColliderTOI, ShapeType, World } from '@dimforge/rapier3d-compat';
2
2
  import { BufferAttribute, BufferGeometry, LineBasicMaterial, LineSegments, Matrix4, Mesh, Object3D, Quaternion, Vector3 } from 'three'
3
3
  import * as BufferGeometryUtils from 'three/examples/jsm/utils/BufferGeometryUtils.js'
4
4
 
@@ -295,9 +295,20 @@ export class RapierPhysics implements IPhysicsEngine {
295
295
 
296
296
  private rapierRay = new Ray({ x: 0, y: 0, z: 0 }, { x: 0, y: 0, z: 1 });
297
297
  private raycastVectorsBuffer = new CircularBuffer(() => new Vector3(), 10);
298
- public raycast(origin?: Vec2 | Vec3, direction?: Vec3, maxDistance?: number, solid?: boolean)
298
+ public raycast(origin?: Vec2 | Vec3, direction?: Vec3, options?: {
299
+ maxDistance?: number,
300
+ /** True if you want to also hit objects when the raycast starts from inside a collider */
301
+ solid?: boolean,
302
+ queryFilterFlags?: QueryFilterFlags,
303
+ filterGroups?: number,
304
+ /** Return false to ignore this collider */
305
+ filterPredicate?: (c: ICollider) => boolean,
306
+ })
299
307
  : null | { point: Vector3, collider: ICollider } {
300
308
 
309
+ let maxDistance = options?.maxDistance;
310
+ let solid = options?.solid;
311
+
301
312
  if (maxDistance === undefined) maxDistance = Infinity;
302
313
  if (solid === undefined) solid = true;
303
314
 
@@ -306,9 +317,12 @@ export class RapierPhysics implements IPhysicsEngine {
306
317
 
307
318
  if (this.debugRenderRaycasts || showPhysicsRaycasts) Gizmos.DrawRay(ray.origin, ray.dir, 0x0000ff, 1);
308
319
 
309
- const hit = this.world?.castRay(ray, maxDistance, solid, undefined, undefined, undefined, undefined, (c) => {
320
+ const hit = this.world?.castRay(ray, maxDistance, solid, options?.queryFilterFlags, options?.filterGroups, undefined, undefined, (c) => {
321
+ const component = c[$componentKey];
322
+ if (options?.filterPredicate) return options.filterPredicate(component);
323
+
310
324
  // ignore objects in the IgnoreRaycast=2 layer
311
- return !c[$componentKey]?.gameObject.layers.isEnabled(2);
325
+ return !component?.gameObject.layers.isEnabled(2);
312
326
  });
313
327
  if (hit) {
314
328
  const point = ray.pointAt(hit.toi);
@@ -320,9 +334,20 @@ export class RapierPhysics implements IPhysicsEngine {
320
334
  return null;
321
335
  }
322
336
 
323
- public raycastAndGetNormal(origin?: Vec2 | Vec3, direction?: Vec3, maxDistance?: number, solid?: boolean)
337
+ public raycastAndGetNormal(origin?: Vec2 | Vec3, direction?: Vec3, options?: {
338
+ maxDistance?: number,
339
+ /** True if you want to also hit objects when the raycast starts from inside a collider */
340
+ solid?: boolean,
341
+ queryFilterFlags?: QueryFilterFlags,
342
+ filterGroups?: number,
343
+ /** Return false to ignore this collider */
344
+ filterPredicate?: (c: ICollider) => boolean,
345
+ })
324
346
  : null | { point: Vector3, normal: Vector3, collider: ICollider } {
325
347
 
348
+ let maxDistance = options?.maxDistance;
349
+ let solid = options?.solid;
350
+
326
351
  if (maxDistance === undefined) maxDistance = Infinity;
327
352
  if (solid === undefined) solid = true;
328
353
 
@@ -331,9 +356,11 @@ export class RapierPhysics implements IPhysicsEngine {
331
356
 
332
357
  if (this.debugRenderRaycasts || showPhysicsRaycasts) Gizmos.DrawRay(ray.origin, ray.dir, 0x0000ff, 1);
333
358
 
334
- const hit = this.world?.castRayAndGetNormal(ray, maxDistance, solid, undefined, undefined, undefined, undefined, (c) => {
359
+ const hit = this.world?.castRayAndGetNormal(ray, maxDistance, solid, options?.queryFilterFlags, options?.filterGroups, undefined, undefined, (c) => {
360
+ const component = c[$componentKey];
361
+ if (options?.filterPredicate) return options.filterPredicate(component);
335
362
  // ignore objects in the IgnoreRaycast=2 layer
336
- return !c[$componentKey]?.gameObject.layers.isEnabled(2);
363
+ return !component?.gameObject.layers.isEnabled(2);
337
364
  });
338
365
  if (hit) {
339
366
  const point = ray.pointAt(hit.toi);
@@ -802,30 +829,36 @@ export class RapierPhysics implements IPhysicsEngine {
802
829
  }
803
830
  }
804
831
 
805
- /** Updates the collision groups */
832
+ /**
833
+ * Updates the collision groups of a collider.
834
+ *
835
+ * @param collider - The collider to update.
836
+ */
806
837
  private updateColliderCollisionGroups(collider: ICollider) {
807
- const body = collider[$bodyKey];
838
+ const body = collider[$bodyKey] as Collider;
808
839
  const members = collider.membership;
809
840
  let memberMask = 0;
810
841
  if (members == undefined) {
811
- memberMask = 0xffffffff;
842
+ memberMask = 0xffff;
812
843
  }
813
844
  else {
814
845
  for (let i = 0; i < members.length; i++) {
815
846
  const member = members[i];
816
- memberMask |= 1 << member;
847
+ if (member > 31) console.error(`Rapier only supports 32 layers, layer ${member} is not supported`);
848
+ else memberMask |= 1 << Math.floor(member);
817
849
  }
818
850
  }
819
851
 
820
852
  const mask = collider.filter;
821
853
  let filterMask = 0;
822
854
  if (mask == undefined) {
823
- filterMask = 0xffffffff;
855
+ filterMask = 0xffff;
824
856
  }
825
857
  else {
826
858
  for (let i = 0; i < mask.length; i++) {
827
859
  const member = mask[i];
828
- filterMask |= 1 << member;
860
+ if (member > 31) console.error(`Rapier only supports 32 layers, layer ${member} is not supported`);
861
+ else filterMask |= 1 << Math.floor(member);
829
862
  }
830
863
  }
831
864
  body.setCollisionGroups((memberMask << 16) | filterMask);
@@ -843,10 +876,11 @@ export class RapierPhysics implements IPhysicsEngine {
843
876
  const kinematic = rb.isKinematic && !debugColliderPlacement;
844
877
  if (debugPhysics)
845
878
  console.log("Create rigidbody", kinematic);
846
- const rigidBodyDesc = kinematic ? RAPIER.RigidBodyDesc.kinematicPositionBased() : RAPIER.RigidBodyDesc.dynamic();
879
+ const rigidBodyDesc = (kinematic ? RAPIER.RigidBodyDesc.kinematicPositionBased() : RAPIER.RigidBodyDesc.dynamic()) as RigidBodyDesc;
847
880
  const pos = getWorldPosition(collider.attachedRigidbody.gameObject);
848
881
  rigidBodyDesc.setTranslation(pos.x, pos.y, pos.z);
849
882
  rigidBodyDesc.setRotation(getWorldQuaternion(collider.attachedRigidbody.gameObject));
883
+ rigidBodyDesc.centerOfMass = new RAPIER.Vector3(rb.centerOfMass.x, rb.centerOfMass.y, rb.centerOfMass.z);
850
884
  rigidBody = this.world.createRigidBody(rigidBodyDesc);
851
885
  this.bodies.push(rigidBody);
852
886
  this.objects.push(rb);
@@ -1,3 +1,4 @@
1
+ import type { QueryFilterFlags } from "@dimforge/rapier3d-compat";
1
2
  import { Camera, Color, Material, Mesh, Object3D, Quaternion, Ray, Scene, WebGLRenderer } from "three";
2
3
  import { Vector3 } from "three";
3
4
  import { type GLTF as GLTF3 } from "three/examples/jsm/loaders/GLTFLoader.js";
@@ -251,12 +252,14 @@ export declare interface ICollider extends IComponent {
251
252
  updatePhysicsMaterial(): void;
252
253
  /** The collider membership indicates what groups the collider is part of (e.g. group 2 and 3)
253
254
  * An `undefined` array indicates that the collider is part of all groups
254
- * Note: Make sure to call updateProperties after having changed this property
255
+ * Note: Make sure to call updateProperties after having changed this property
256
+ * Default: [0]
255
257
  */
256
258
  membership?: number[];
257
259
  /** The collider filter indicates what groups the collider can interact with (e.g. group 3 and 4)
258
260
  * An `undefined` array indicates that the collider can interact with all groups
259
- * Note: Make sure to call updateProperties after having changed this property
261
+ * Note: Make sure to call updateProperties after having changed this property
262
+ * Default: undefined
260
263
  */
261
264
  filter?: number[];
262
265
  }
@@ -278,6 +281,7 @@ export declare interface IRigidbody extends IComponent {
278
281
  drag: number;
279
282
  angularDrag: number;
280
283
  useGravity: boolean;
284
+ centerOfMass: Vec3;
281
285
  gravityScale: number;
282
286
  dominanceGroup: number;
283
287
 
@@ -436,12 +440,31 @@ export interface IPhysicsEngine {
436
440
  /** Fast raycast against physics colliders
437
441
  * @param origin ray origin in screen or worldspace
438
442
  * @param direction ray direction in worldspace
439
- * @param maxDistance max distance to raycast
440
- * @param solid if true it will also hit the collider if origin is already inside it
443
+ * @param options additional options
441
444
  */
442
- raycast(origin?: Vec2 | Vec3, direction?: Vec3, maxDistance?: number, solid?: boolean): RaycastResult;
445
+ raycast(origin?: Vec2 | Vec3, direction?: Vec3, options?: {
446
+ maxDistance?: number,
447
+ /** True if you want to also hit objects when the raycast starts from inside a collider */
448
+ solid?: boolean,
449
+ queryFilterFlags?: QueryFilterFlags,
450
+ /** Raycast filter groups. Groups are used to apply the collision group rules for the scene query. The scene query will only consider hits with colliders with collision groups compatible with this collision group (using the bitwise test described in the collision groups section). See https://rapier.rs/docs/user_guides/javascript/colliders#collision-groups-and-solver-groups
451
+ * For example membership 0x0001 and filter 0x0002 should be 0x00010002 */
452
+ filterGroups?: number,
453
+ /** Return false to ignore this collider */
454
+ filterPredicate?: (collider: ICollider) => boolean
455
+ }): RaycastResult;
443
456
  /** raycast that also gets the normal vector. If you don't need it use raycast() */
444
- raycastAndGetNormal(origin?: Vec2 | Vec3, direction?: Vec3, maxDistance?: number, solid?: boolean): RaycastResult;
457
+ raycastAndGetNormal(origin?: Vec2 | Vec3, direction?: Vec3, options?: {
458
+ maxDistance?: number,
459
+ /** True if you want to also hit objects when the raycast starts from inside a collider */
460
+ solid?: boolean,
461
+ queryFilterFlags?: QueryFilterFlags,
462
+ /** Raycast filter groups. Groups are used to apply the collision group rules for the scene query. The scene query will only consider hits with colliders with collision groups compatible with this collision group (using the bitwise test described in the collision groups section). See https://rapier.rs/docs/user_guides/javascript/colliders#collision-groups-and-solver-groups
463
+ * For example membership 0x0001 and filter 0x0002 should be 0x00010002 */
464
+ filterGroups?: number,
465
+ /** Return false to ignore this collider */
466
+ filterPredicate?: (collider: ICollider) => boolean
467
+ }): RaycastResult;
445
468
  sphereOverlap(point: Vector3, radius: number): Array<SphereOverlapResult>;
446
469
 
447
470
  // Collider methods
@@ -94,8 +94,6 @@ export class SceneLightSettings extends Behaviour {
94
94
  private _hasReflection: boolean = false;
95
95
  private _ambientLightObj?: AmbientLight;
96
96
  private _hemisphereLightObj?: HemisphereLight;
97
- // used when skybox is used to support ambient intensity for "non custom shaders"
98
- private _lightProbeObj?: LightProbe;
99
97
 
100
98
  awake() {
101
99
  if (this.sourceId) {
@@ -154,7 +152,6 @@ export class SceneLightSettings extends Behaviour {
154
152
  if (this._ambientLightObj) {
155
153
  this.gameObject.add(this._ambientLightObj)
156
154
  }
157
- if (this._lightProbeObj) this._lightProbeObj.removeFromParent();
158
155
  }
159
156
  else if (this.ambientMode === AmbientMode.Trilight) {
160
157
  if (this.ambientTrilight) {
@@ -180,8 +177,6 @@ export class SceneLightSettings extends Behaviour {
180
177
  onDisable() {
181
178
  if (debug)
182
179
  console.warn("💡⚫ <<< Disable lighting:", this.sourceId, this);
183
- if (this._lightProbeObj)
184
- this._lightProbeObj.removeFromParent();
185
180
  if (this._ambientLightObj)
186
181
  this._ambientLightObj.removeFromParent();
187
182
  if (this._hemisphereLightObj)
@@ -371,7 +371,20 @@ export class NeedleMenuElement extends HTMLElement {
371
371
  width: 100%;
372
372
  }
373
373
 
374
-
374
+ @media (max-width: 300px) or (max-height: 350px){
375
+ .options {
376
+ display: none;
377
+ padding: 0;
378
+ margin: 0;
379
+ border: none;
380
+ }
381
+ .logo.any-options {
382
+ border: none !important;
383
+ padding: 0;
384
+ margin-bottom: 0 !important;
385
+ padding-bottom: 0 !important;
386
+ }
387
+ }
375
388
 
376
389
  /* dark mode */
377
390
  /*
@@ -15,45 +15,65 @@ import { Rigidbody } from "./RigidBody.js";
15
15
  * Collider is the base class for all colliders. A collider is a physical shape that is used to detect collisions with other objects in the scene.
16
16
  * Colliders are used in combination with a Rigidbody to create physical interactions between objects.
17
17
  * Colliders are registered with the physics engine when they are enabled and removed when they are disabled.
18
- * @category Physics
18
+ * @category Physics
19
+ * @inheritdoc
19
20
  */
20
21
  export class Collider extends Behaviour implements ICollider {
21
22
 
23
+ /** @internal */
22
24
  get isCollider(): any {
23
25
  return true;
24
26
  }
25
27
 
28
+ /**
29
+ * The Rigidbody that this collider is attached to.
30
+ */
26
31
  @serializable(Rigidbody)
27
32
  attachedRigidbody: Rigidbody | null = null;
28
33
 
34
+ /**
35
+ * When `true` the collider will not be used for collision detection but will still trigger events.
36
+ */
29
37
  @serializable()
30
38
  isTrigger: boolean = false;
31
39
 
40
+ /**
41
+ * The physics material that is used for the collider. This material defines physical properties of the collider such as friction and bounciness.
42
+ */
32
43
  @serializable()
33
44
  sharedMaterial?: PhysicsMaterial;
34
45
 
46
+ /**
47
+ * The layers that the collider is assigned to.
48
+ */
35
49
  @serializable()
36
50
  membership: number[] = [0];
51
+
52
+ /**
53
+ * The layers that the collider will interact with.
54
+ * @inheritdoc
55
+ */
37
56
  @serializable()
38
57
  filter?: number[];
39
58
 
59
+ /** @internal */
40
60
  awake() {
41
61
  super.awake();
42
62
  if (!this.attachedRigidbody)
43
63
  this.attachedRigidbody = this.gameObject.getComponentInParent(Rigidbody);
44
64
  }
45
-
65
+ /** @internal */
46
66
  start() {
47
67
  if (!this.attachedRigidbody)
48
68
  this.attachedRigidbody = this.gameObject.getComponentInParent(Rigidbody);
49
69
  }
50
-
70
+ /** @internal */
51
71
  onEnable() {
52
72
  // a rigidbody is not assigned if we export an asset
53
73
  if (!this.attachedRigidbody)
54
74
  this.attachedRigidbody = this.gameObject.getComponentInParent(Rigidbody);
55
75
  }
56
-
76
+ /** @internal */
57
77
  onDisable() {
58
78
  this.context.physics.engine?.removeBody(this);
59
79
  }
@@ -63,6 +83,9 @@ export class Collider extends Behaviour implements ICollider {
63
83
  return this.context.physics.engine?.getBody(this);
64
84
  }
65
85
 
86
+ /**
87
+ * Apply the collider properties to the physics engine.
88
+ */
66
89
  updateProperties = () => {
67
90
  this.context.physics.engine?.updateProperties(this);
68
91
  }
@@ -185,12 +185,14 @@ export class OrbitControls extends Behaviour implements ICameraController {
185
185
 
186
186
  targetElement: HTMLElement | null = null;
187
187
 
188
+ /** @internal */
188
189
  awake(): void {
189
190
  this._didStart = false;
190
191
  this._didSetTarget = false;
191
192
  this._startedListeningToKeyEvents = false;
192
193
  }
193
194
 
195
+ /** @internal */
194
196
  start() {
195
197
  this._didStart = true;
196
198
  this._eventSystem = EventSystem.get(this.context) ?? undefined;
@@ -200,11 +202,13 @@ export class OrbitControls extends Behaviour implements ICameraController {
200
202
  }
201
203
  }
202
204
 
205
+ /** @internal */
203
206
  onDestroy() {
204
207
  this._controls?.dispose();
205
208
  this._eventSystem?.removeEventListener(EventSystemEvents.AfterHandleInput, this._afterHandleInputFn!);
206
209
  }
207
210
 
211
+ /** @internal */
208
212
  onEnable() {
209
213
  this._enableTime = this.context.time.time;
210
214
  const cameraComponent = GameObject.getComponent(this.gameObject, Camera);
@@ -266,6 +270,7 @@ export class OrbitControls extends Behaviour implements ICameraController {
266
270
  // }
267
271
  }
268
272
 
273
+ /** @internal */
269
274
  onDisable() {
270
275
  if (this._camera?.cam) {
271
276
  setCameraController(this._camera.cam, this, false);
@@ -299,10 +304,16 @@ export class OrbitControls extends Behaviour implements ICameraController {
299
304
  }
300
305
 
301
306
 
307
+ /** @internal */
302
308
  onBeforeRender() {
303
309
  if (!this._controls) return;
304
- if (this._cameraObject !== this.context.mainCamera) return;
305
-
310
+ if (this._cameraObject !== this.context.mainCamera) {
311
+ this._controls.enabled = false;
312
+ return;
313
+ }
314
+ this._controls.enabled = true;
315
+
316
+
306
317
  this.__handleSetTargetWhenBecomingActiveTheFirstTime();
307
318
 
308
319
  if (this.context.input.getPointerDown(1) || this.context.input.getPointerDown(2) || this.context.input.mouseWheelChanged || (this.context.input.getPointerPressed(0) && this.context.input.getPointerPositionDelta(0)?.length() || 0 > .1)) {
@@ -448,6 +459,7 @@ export class OrbitControls extends Behaviour implements ICameraController {
448
459
 
449
460
  /** Moves the camera to position smoothly.
450
461
  * @param position The position in local space of the controllerObject to move the camera to. If null the camera will stop lerping to the target.
462
+ * @param immediateOrDuration If true the camera will move immediately to the new position, otherwise it will lerp. If a number is passed in it will be used as the duration of the lerp.
451
463
  */
452
464
  public setCameraTargetPosition(position?: Object3D | Vector3 | null, immediateOrDuration: boolean | number = false) {
453
465
  if (!position) return;
@@ -477,8 +489,11 @@ export class OrbitControls extends Behaviour implements ICameraController {
477
489
  this._cameraLerpActive = false;
478
490
  }
479
491
 
480
- /** Moves the camera look-at target to a position smoothly. */
481
- public setLookTargetPosition(position: Object3D | Vector3 | null = null, immediateOrDuration: boolean = false) {
492
+ /** Moves the camera look-at target to a position smoothly.
493
+ * @param position The position in world space to move the camera target to. If null the camera will stop lerping to the target.
494
+ * @param immediateOrDuration If true the camera target will move immediately to the new position, otherwise it will lerp. If a number is passed in it will be used as the duration of the lerp.
495
+ */
496
+ public setLookTargetPosition(position: Object3D | Vector3 | null = null, immediateOrDuration: boolean | number = false) {
482
497
  if (!this._controls) return;
483
498
  if (!position) return
484
499
  if (position instanceof Object3D) {
@@ -506,7 +521,10 @@ export class OrbitControls extends Behaviour implements ICameraController {
506
521
  this._lookTargetLerpActive = false;
507
522
  }
508
523
 
509
- /** Sets the look at target from an assigned lookAtConstraint source by index */
524
+ /** Sets the look at target from an assigned lookAtConstraint source by index
525
+ * @param index The index of the source to use
526
+ * @param t The interpolation factor between the current look at target and the new target
527
+ */
510
528
  private setLookTargetFromConstraint(index: number = 0, t: number = 1): boolean {
511
529
  if (!this._controls) return false;
512
530
  const sources = this.lookAtConstraint?.sources;
@@ -546,12 +564,12 @@ export class OrbitControls extends Behaviour implements ICameraController {
546
564
 
547
565
  this.setLookTargetPosition(hit.point);
548
566
 
549
- if (this.context.mainCamera) {
550
- const pos = getWorldPosition(this.context.mainCamera);
551
- const cameraTarget = pos.clone().sub(this.controls.target).add(this._lookTargetEndPosition);
552
- this._cameraObject?.parent?.worldToLocal(cameraTarget);
553
- this.setCameraTargetPosition(cameraTarget);
554
- }
567
+ // if (this.context.mainCamera) {
568
+ // const pos = getWorldPosition(this.context.mainCamera);
569
+ // const cameraTarget = pos.clone().sub(this.controls.target).add(this._lookTargetEndPosition);
570
+ // this._cameraObject?.parent?.worldToLocal(cameraTarget);
571
+ // this.setCameraTargetPosition(cameraTarget);
572
+ // }
555
573
  break;
556
574
  }
557
575
  }