@needle-tools/engine 4.3.0-alpha → 4.3.0-alpha.1

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 (101) hide show
  1. package/CHANGELOG.md +3 -0
  2. package/dist/needle-engine.bundle.js +1467 -222
  3. package/dist/needle-engine.bundle.light.js +1467 -222
  4. package/dist/needle-engine.bundle.light.min.js +32 -32
  5. package/dist/needle-engine.bundle.light.umd.cjs +3 -3
  6. package/dist/needle-engine.bundle.min.js +3 -3
  7. package/dist/needle-engine.bundle.umd.cjs +3 -3
  8. package/dist/needle-engine.light.d.ts +9 -9
  9. package/lib/engine/engine_types.d.ts +162 -17
  10. package/lib/engine-components/Animator.d.ts +129 -21
  11. package/lib/engine-components/Animator.js +115 -21
  12. package/lib/engine-components/Animator.js.map +1 -1
  13. package/lib/engine-components/AnimatorController.d.ts +161 -32
  14. package/lib/engine-components/AnimatorController.js +176 -29
  15. package/lib/engine-components/AnimatorController.js.map +1 -1
  16. package/lib/engine-components/AudioListener.d.ts +16 -5
  17. package/lib/engine-components/AudioListener.js +16 -5
  18. package/lib/engine-components/AudioListener.js.map +1 -1
  19. package/lib/engine-components/AudioSource.d.ts +120 -28
  20. package/lib/engine-components/AudioSource.js +120 -37
  21. package/lib/engine-components/AudioSource.js.map +1 -1
  22. package/lib/engine-components/AvatarLoader.d.ts +61 -0
  23. package/lib/engine-components/AvatarLoader.js +61 -1
  24. package/lib/engine-components/AvatarLoader.js.map +1 -1
  25. package/lib/engine-components/AxesHelper.d.ts +19 -1
  26. package/lib/engine-components/AxesHelper.js +19 -1
  27. package/lib/engine-components/AxesHelper.js.map +1 -1
  28. package/lib/engine-components/BoxHelperComponent.d.ts +26 -0
  29. package/lib/engine-components/BoxHelperComponent.js +26 -0
  30. package/lib/engine-components/BoxHelperComponent.js.map +1 -1
  31. package/lib/engine-components/Camera.d.ts +126 -37
  32. package/lib/engine-components/Camera.js +139 -37
  33. package/lib/engine-components/Camera.js.map +1 -1
  34. package/lib/engine-components/CameraUtils.js +20 -0
  35. package/lib/engine-components/CameraUtils.js.map +1 -1
  36. package/lib/engine-components/Collider.d.ts +95 -21
  37. package/lib/engine-components/Collider.js +100 -23
  38. package/lib/engine-components/Collider.js.map +1 -1
  39. package/lib/engine-components/Component.d.ts +554 -106
  40. package/lib/engine-components/Component.js +352 -81
  41. package/lib/engine-components/Component.js.map +1 -1
  42. package/lib/engine-components/DragControls.d.ts +95 -21
  43. package/lib/engine-components/DragControls.js +126 -32
  44. package/lib/engine-components/DragControls.js.map +1 -1
  45. package/lib/engine-components/DropListener.d.ts +99 -16
  46. package/lib/engine-components/DropListener.js +119 -14
  47. package/lib/engine-components/DropListener.js.map +1 -1
  48. package/lib/engine-components/Light.d.ts +102 -5
  49. package/lib/engine-components/Light.js +102 -44
  50. package/lib/engine-components/Light.js.map +1 -1
  51. package/lib/engine-components/NeedleMenu.d.ts +28 -11
  52. package/lib/engine-components/NeedleMenu.js +28 -11
  53. package/lib/engine-components/NeedleMenu.js.map +1 -1
  54. package/lib/engine-components/Networking.d.ts +37 -5
  55. package/lib/engine-components/Networking.js +37 -5
  56. package/lib/engine-components/Networking.js.map +1 -1
  57. package/lib/engine-components/SceneSwitcher.js +44 -0
  58. package/lib/engine-components/SceneSwitcher.js.map +1 -1
  59. package/lib/engine-components/SpatialTrigger.d.ts +66 -1
  60. package/lib/engine-components/SpatialTrigger.js +74 -2
  61. package/lib/engine-components/SpatialTrigger.js.map +1 -1
  62. package/lib/engine-components/SpectatorCamera.d.ts +66 -4
  63. package/lib/engine-components/SpectatorCamera.js +132 -6
  64. package/lib/engine-components/SpectatorCamera.js.map +1 -1
  65. package/lib/engine-components/SyncedTransform.d.ts +45 -6
  66. package/lib/engine-components/SyncedTransform.js +45 -6
  67. package/lib/engine-components/SyncedTransform.js.map +1 -1
  68. package/lib/engine-components/TransformGizmo.d.ts +49 -3
  69. package/lib/engine-components/TransformGizmo.js +49 -3
  70. package/lib/engine-components/TransformGizmo.js.map +1 -1
  71. package/lib/engine-components/webxr/WebXR.d.ts +131 -22
  72. package/lib/engine-components/webxr/WebXR.js +132 -23
  73. package/lib/engine-components/webxr/WebXR.js.map +1 -1
  74. package/lib/engine-components-experimental/networking/PlayerSync.d.ts +82 -9
  75. package/lib/engine-components-experimental/networking/PlayerSync.js +76 -11
  76. package/lib/engine-components-experimental/networking/PlayerSync.js.map +1 -1
  77. package/package.json +1 -1
  78. package/src/engine/engine_types.ts +179 -18
  79. package/src/engine-components/Animator.ts +142 -22
  80. package/src/engine-components/AnimatorController.ts +184 -34
  81. package/src/engine-components/AudioListener.ts +16 -5
  82. package/src/engine-components/AudioSource.ts +126 -37
  83. package/src/engine-components/AvatarLoader.ts +61 -2
  84. package/src/engine-components/AxesHelper.ts +21 -1
  85. package/src/engine-components/BoxHelperComponent.ts +26 -0
  86. package/src/engine-components/Camera.ts +147 -41
  87. package/src/engine-components/CameraUtils.ts +20 -0
  88. package/src/engine-components/Collider.ts +102 -27
  89. package/src/engine-components/Component.ts +605 -129
  90. package/src/engine-components/DragControls.ts +134 -38
  91. package/src/engine-components/DropListener.ts +143 -23
  92. package/src/engine-components/Light.ts +105 -44
  93. package/src/engine-components/NeedleMenu.ts +29 -11
  94. package/src/engine-components/Networking.ts +37 -6
  95. package/src/engine-components/SceneSwitcher.ts +48 -1
  96. package/src/engine-components/SpatialTrigger.ts +80 -3
  97. package/src/engine-components/SpectatorCamera.ts +136 -18
  98. package/src/engine-components/SyncedTransform.ts +50 -7
  99. package/src/engine-components/TransformGizmo.ts +49 -4
  100. package/src/engine-components/webxr/WebXR.ts +144 -27
  101. package/src/engine-components-experimental/networking/PlayerSync.ts +85 -13
@@ -1,19 +1,80 @@
1
1
  import { Object3D } from "three";
2
2
  import { Context } from "../engine/engine_setup.js";
3
+ /**
4
+ * Represents an avatar model with head and hands references.
5
+ * Used for representing characters in 3D space.
6
+ */
3
7
  export declare class AvatarModel {
8
+ /** The root object of the avatar model */
4
9
  root: Object3D;
10
+ /** The head object of the avatar model */
5
11
  head: Object3D;
12
+ /** The left hand object of the avatar model, if available */
6
13
  leftHand: Object3D | null;
14
+ /** The right hand object of the avatar model, if available */
7
15
  rigthHand: Object3D | null;
16
+ /**
17
+ * Checks if the avatar model has a valid configuration.
18
+ * An avatar is considered valid if it has a head.
19
+ * @returns Whether the avatar has a valid setup
20
+ */
8
21
  get isValid(): boolean;
22
+ /**
23
+ * Creates a new avatar model.
24
+ * @param root The root object of the avatar
25
+ * @param head The head object of the avatar
26
+ * @param leftHand The left hand object of the avatar
27
+ * @param rigthHand The right hand object of the avatar
28
+ */
9
29
  constructor(root: Object3D, head: Object3D, leftHand: Object3D | null, rigthHand: Object3D | null);
10
30
  }
31
+ /**
32
+ * Handles loading and instantiating avatar models from various sources.
33
+ * Provides functionality to find and extract important parts of an avatar (head, hands).
34
+ *
35
+ * Debug mode can be enabled with the URL parameter `?debugavatar`,
36
+ * which will log detailed information about avatar loading and configuration.
37
+ */
11
38
  export declare class AvatarLoader {
12
39
  private readonly avatarRegistryUrl;
40
+ /**
41
+ * Retrieves or creates a new avatar instance from an ID or existing Object3D.
42
+ * @param context The application context
43
+ * @param avatarId Either a string ID to load an avatar or an existing Object3D to use as avatar
44
+ * @returns Promise resolving to an AvatarModel if successful, or null if failed
45
+ */
13
46
  getOrCreateNewAvatarInstance(context: Context, avatarId: string | Object3D): Promise<AvatarModel | null>;
47
+ /**
48
+ * Loads an avatar model from a file or registry using the provided ID.
49
+ * @param context The engine context
50
+ * @param avatarId The ID of the avatar to load
51
+ * @returns Promise resolving to the loaded avatar's Object3D, or null if failed
52
+ */
14
53
  private loadAvatar;
54
+ /**
55
+ * Caches an avatar model for reuse.
56
+ * @param _id The ID to associate with the model
57
+ * @param _model The avatar model to cache
58
+ */
15
59
  private cacheModel;
60
+ /**
61
+ * Analyzes an Object3D to find avatar parts (head, hands) based on naming conventions.
62
+ * @param obj The Object3D to search for avatar parts
63
+ * @returns A structured AvatarModel with references to found parts
64
+ */
16
65
  private findAvatar;
66
+ /**
67
+ * Recursively searches for an avatar part by name within an Object3D hierarchy.
68
+ * @param obj The Object3D to search within
69
+ * @param searchString Array of strings that should all be present in the object name
70
+ * @returns The found Object3D part or null if not found
71
+ */
17
72
  private findAvatarPart;
73
+ /**
74
+ * Handles HTTP response errors from avatar loading operations.
75
+ * @param response The fetch API response to check
76
+ * @returns The response if it was ok
77
+ * @throws Error with status text if response was not ok
78
+ */
18
79
  private handleCustomAvatarErrors;
19
80
  }
@@ -6,14 +6,34 @@ import * as loaders from "../engine/engine_loaders.js";
6
6
  import * as utils from "../engine/engine_utils.js";
7
7
  import { GameObject } from "./Component.js";
8
8
  const debug = utils.getParam("debugavatar");
9
+ /**
10
+ * Represents an avatar model with head and hands references.
11
+ * Used for representing characters in 3D space.
12
+ */
9
13
  export class AvatarModel {
14
+ /** The root object of the avatar model */
10
15
  root;
16
+ /** The head object of the avatar model */
11
17
  head;
18
+ /** The left hand object of the avatar model, if available */
12
19
  leftHand;
20
+ /** The right hand object of the avatar model, if available */
13
21
  rigthHand;
22
+ /**
23
+ * Checks if the avatar model has a valid configuration.
24
+ * An avatar is considered valid if it has a head.
25
+ * @returns Whether the avatar has a valid setup
26
+ */
14
27
  get isValid() {
15
28
  return this.head !== null && this.head !== undefined;
16
29
  }
30
+ /**
31
+ * Creates a new avatar model.
32
+ * @param root The root object of the avatar
33
+ * @param head The head object of the avatar
34
+ * @param leftHand The left hand object of the avatar
35
+ * @param rigthHand The right hand object of the avatar
36
+ */
17
37
  constructor(root, head, leftHand, rigthHand) {
18
38
  this.root = root;
19
39
  this.head = head;
@@ -25,10 +45,23 @@ export class AvatarModel {
25
45
  // this.rigthHand?.traverse(h => h.layers.set(2));
26
46
  }
27
47
  }
48
+ /**
49
+ * Handles loading and instantiating avatar models from various sources.
50
+ * Provides functionality to find and extract important parts of an avatar (head, hands).
51
+ *
52
+ * Debug mode can be enabled with the URL parameter `?debugavatar`,
53
+ * which will log detailed information about avatar loading and configuration.
54
+ */
28
55
  export class AvatarLoader {
29
56
  avatarRegistryUrl = null;
30
57
  // private loader: GLTFLoader | null;
31
58
  // private avatarModelCache: Map<string, AvatarModel | null> = new Map<string, AvatarModel | null>();
59
+ /**
60
+ * Retrieves or creates a new avatar instance from an ID or existing Object3D.
61
+ * @param context The application context
62
+ * @param avatarId Either a string ID to load an avatar or an existing Object3D to use as avatar
63
+ * @returns Promise resolving to an AvatarModel if successful, or null if failed
64
+ */
32
65
  async getOrCreateNewAvatarInstance(context, avatarId) {
33
66
  if (!avatarId) {
34
67
  console.error("Can not create avatar: failed to provide id or root object");
@@ -61,6 +94,12 @@ export class AvatarLoader {
61
94
  return null;
62
95
  }
63
96
  }
97
+ /**
98
+ * Loads an avatar model from a file or registry using the provided ID.
99
+ * @param context The engine context
100
+ * @param avatarId The ID of the avatar to load
101
+ * @returns Promise resolving to the loaded avatar's Object3D, or null if failed
102
+ */
64
103
  async loadAvatar(context, avatarId) {
65
104
  console.assert(avatarId !== undefined && avatarId !== null && typeof avatarId === "string", "Avatar id must not be null");
66
105
  if (avatarId.length <= 0)
@@ -114,10 +153,19 @@ export class AvatarLoader {
114
153
  });
115
154
  });
116
155
  }
156
+ /**
157
+ * Caches an avatar model for reuse.
158
+ * @param _id The ID to associate with the model
159
+ * @param _model The avatar model to cache
160
+ */
117
161
  cacheModel(_id, _model) {
118
162
  // this.avatarModelCache.set(id, model);
119
163
  }
120
- // TODO this should be burned to the ground once 🤞 we have proper extras that define object relations.
164
+ /**
165
+ * Analyzes an Object3D to find avatar parts (head, hands) based on naming conventions.
166
+ * @param obj The Object3D to search for avatar parts
167
+ * @returns A structured AvatarModel with references to found parts
168
+ */
121
169
  findAvatar(obj) {
122
170
  const root = obj;
123
171
  let searchIn = root;
@@ -142,6 +190,12 @@ export class AvatarLoader {
142
190
  const model = new AvatarModel(root, head, leftHand, rightHand);
143
191
  return model;
144
192
  }
193
+ /**
194
+ * Recursively searches for an avatar part by name within an Object3D hierarchy.
195
+ * @param obj The Object3D to search within
196
+ * @param searchString Array of strings that should all be present in the object name
197
+ * @returns The found Object3D part or null if not found
198
+ */
145
199
  findAvatarPart(obj, searchString) {
146
200
  const name = obj.name.toLowerCase();
147
201
  let matchesAll = true;
@@ -162,6 +216,12 @@ export class AvatarLoader {
162
216
  }
163
217
  return null;
164
218
  }
219
+ /**
220
+ * Handles HTTP response errors from avatar loading operations.
221
+ * @param response The fetch API response to check
222
+ * @returns The response if it was ok
223
+ * @throws Error with status text if response was not ok
224
+ */
165
225
  handleCustomAvatarErrors(response) {
166
226
  if (!response.ok) {
167
227
  throw Error(response.statusText);
@@ -1 +1 @@
1
- {"version":3,"file":"AvatarLoader.js","sourceRoot":"","sources":["../../src/engine-components/AvatarLoader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AvatarLoader.js","sourceRoot":"","sources":["../../src/engine-components/AvatarLoader.ts"],"names":[],"mappings":"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"}
@@ -1,14 +1,32 @@
1
1
  import { Behaviour } from "./Component.js";
2
2
  /**
3
- * AxesHelper is a component that displays the axes of the object in the scene.
3
+ * Component that visualizes the axes of an object in the scene.
4
+ * Renders colored lines representing the X (red), Y (green) and Z (blue) axes.
4
5
  * @category Helpers
5
6
  * @group Components
6
7
  */
7
8
  export declare class AxesHelper extends Behaviour {
9
+ /**
10
+ * The length of each axis line in scene units.
11
+ */
8
12
  length: number;
13
+ /**
14
+ * Whether the axes should be occluded by objects in the scene.
15
+ * When set to false, axes will always appear on top regardless of their depth.
16
+ */
9
17
  depthTest: boolean;
18
+ /**
19
+ * When true, this helper will only be visible if the debug flag `?gizmos` is enabled.
20
+ */
10
21
  isGizmo: boolean;
11
22
  private _axes;
23
+ /**
24
+ * Creates and adds the axes visualization to the scene when the component is enabled.
25
+ * If marked as a gizmo, it will only be shown when gizmos are enabled in the global parameters.
26
+ */
12
27
  onEnable(): void;
28
+ /**
29
+ * Removes the axes visualization from the scene when the component is disabled.
30
+ */
13
31
  onDisable(): void;
14
32
  }
@@ -9,15 +9,30 @@ import * as params from "../engine/engine_default_parameters.js";
9
9
  import { serializable } from "../engine/engine_serialization_decorator.js";
10
10
  import { Behaviour } from "./Component.js";
11
11
  /**
12
- * AxesHelper is a component that displays the axes of the object in the scene.
12
+ * Component that visualizes the axes of an object in the scene.
13
+ * Renders colored lines representing the X (red), Y (green) and Z (blue) axes.
13
14
  * @category Helpers
14
15
  * @group Components
15
16
  */
16
17
  export class AxesHelper extends Behaviour {
18
+ /**
19
+ * The length of each axis line in scene units.
20
+ */
17
21
  length = 1;
22
+ /**
23
+ * Whether the axes should be occluded by objects in the scene.
24
+ * When set to false, axes will always appear on top regardless of their depth.
25
+ */
18
26
  depthTest = true;
27
+ /**
28
+ * When true, this helper will only be visible if the debug flag `?gizmos` is enabled.
29
+ */
19
30
  isGizmo = false;
20
31
  _axes = null;
32
+ /**
33
+ * Creates and adds the axes visualization to the scene when the component is enabled.
34
+ * If marked as a gizmo, it will only be shown when gizmos are enabled in the global parameters.
35
+ */
21
36
  onEnable() {
22
37
  if (this.isGizmo && !params.showGizmos)
23
38
  return;
@@ -32,6 +47,9 @@ export class AxesHelper extends Behaviour {
32
47
  mat.depthTest = this.depthTest;
33
48
  }
34
49
  }
50
+ /**
51
+ * Removes the axes visualization from the scene when the component is disabled.
52
+ */
35
53
  onDisable() {
36
54
  if (!this._axes)
37
55
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"AxesHelper.js","sourceRoot":"","sources":["../../src/engine-components/AxesHelper.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,UAAU,IAAI,WAAW,EAAE,MAAM,OAAO,CAAC;AAElD,OAAO,KAAK,MAAM,MAAM,wCAAwC,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,6CAA6C,CAAC;AAC3E,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C;;;;GAIG;AACH,MAAM,OAAO,UAAW,SAAQ,SAAS;IAE9B,MAAM,GAAW,CAAC,CAAC;IAEnB,SAAS,GAAY,IAAI,CAAC;IAE1B,OAAO,GAAY,KAAK,CAAC;IAExB,KAAK,GAAuB,IAAI,CAAC;IAEzC,QAAQ;QACJ,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU;YAAE,OAAO;QAC/C,IAAI,CAAC,IAAI,CAAC,KAAK;YACX,IAAI,CAAC,KAAK,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC9C,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;QAC/B,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChC,MAAM,GAAG,GAAQ,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;QACrC,IAAI,GAAG,EAAE;YACL,IAAI,GAAG,CAAC,SAAS,KAAK,SAAS;gBAC3B,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;SACtC;IACL,CAAC;IAED,SAAS;QACL,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE,OAAO;QACxB,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC;CACJ;AA1BG;IADC,YAAY,EAAE;0CACW;AAE1B;IADC,YAAY,EAAE;6CACkB;AAEjC;IADC,YAAY,EAAE;2CACiB"}
1
+ {"version":3,"file":"AxesHelper.js","sourceRoot":"","sources":["../../src/engine-components/AxesHelper.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,UAAU,IAAI,WAAW,EAAE,MAAM,OAAO,CAAC;AAElD,OAAO,KAAK,MAAM,MAAM,wCAAwC,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,6CAA6C,CAAC;AAC3E,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C;;;;;GAKG;AACH,MAAM,OAAO,UAAW,SAAQ,SAAS;IACrC;;OAEG;IAEI,MAAM,GAAW,CAAC,CAAC;IAE1B;;;OAGG;IAEI,SAAS,GAAY,IAAI,CAAC;IAEjC;;OAEG;IAEI,OAAO,GAAY,KAAK,CAAC;IAExB,KAAK,GAAuB,IAAI,CAAC;IAEzC;;;OAGG;IACH,QAAQ;QACJ,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU;YAAE,OAAO;QAC/C,IAAI,CAAC,IAAI,CAAC,KAAK;YACX,IAAI,CAAC,KAAK,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC9C,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;QAC/B,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChC,MAAM,GAAG,GAAQ,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;QACrC,IAAI,GAAG,EAAE;YACL,IAAI,GAAG,CAAC,SAAS,KAAK,SAAS;gBAC3B,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;SACtC;IACL,CAAC;IAED;;OAEG;IACH,SAAS;QACL,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE,OAAO;QACxB,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC;CACJ;AA1CG;IADC,YAAY,EAAE;0CACW;AAO1B;IADC,YAAY,EAAE;6CACkB;AAMjC;IADC,YAAY,EAAE;2CACiB"}
@@ -1,21 +1,47 @@
1
1
  import { Box3, type ColorRepresentation, Object3D } from "three";
2
2
  import { Behaviour } from "./Component.js";
3
3
  /**
4
+ * A component that creates a bounding box around an object and provides intersection testing functionality.
5
+ *
6
+ * Debug mode can be enabled with the URL parameter `?debugboxhelper`, which will visualize intersection tests.
7
+ * Helper visualization can be enabled with the URL parameter `?gizmos`.
8
+ *
4
9
  * @category Helpers
5
10
  * @group Components
6
11
  */
7
12
  export declare class BoxHelperComponent extends Behaviour {
13
+ /** The bounding box for this component */
8
14
  private box;
9
15
  private static testBox;
10
16
  private _lastMatrixUpdateFrame;
11
17
  private static _position;
12
18
  private static _size;
13
19
  private static _emptyObjectSize;
20
+ /**
21
+ * Tests if an object intersects with this helper's bounding box
22
+ * @param obj The object to test for intersection
23
+ * @returns True if objects intersect, false if not, undefined if the provided object is invalid
24
+ */
14
25
  isInBox(obj: Object3D): boolean | undefined;
26
+ /**
27
+ * Tests if this helper's bounding box intersects with another box
28
+ * @param box The {@link Box3} to test for intersection
29
+ * @returns True if boxes intersect, false otherwise
30
+ */
15
31
  intersects(box: Box3): boolean;
32
+ /**
33
+ * Updates the helper's bounding box based on the gameObject's position and scale
34
+ * @param force Whether to force an update regardless of frame count
35
+ * @returns The updated {@link Box3}
36
+ */
16
37
  updateBox(force?: boolean): Box3;
17
38
  private _helper;
18
39
  private _color;
19
40
  awake(): void;
41
+ /**
42
+ * Creates and displays a visual wireframe representation of this box helper
43
+ * @param col Optional color for the wireframe. If not provided, uses default color
44
+ * @param force If true, shows the helper even if gizmos are disabled
45
+ */
20
46
  showHelper(col?: ColorRepresentation | null, force?: boolean): void;
21
47
  }
@@ -6,16 +6,27 @@ import { Behaviour } from "./Component.js";
6
6
  const gizmos = getParam("gizmos");
7
7
  const debug = getParam("debugboxhelper");
8
8
  /**
9
+ * A component that creates a bounding box around an object and provides intersection testing functionality.
10
+ *
11
+ * Debug mode can be enabled with the URL parameter `?debugboxhelper`, which will visualize intersection tests.
12
+ * Helper visualization can be enabled with the URL parameter `?gizmos`.
13
+ *
9
14
  * @category Helpers
10
15
  * @group Components
11
16
  */
12
17
  export class BoxHelperComponent extends Behaviour {
18
+ /** The bounding box for this component */
13
19
  box = null;
14
20
  static testBox = new Box3();
15
21
  _lastMatrixUpdateFrame = -1;
16
22
  static _position = new Vector3();
17
23
  static _size = new Vector3(.01, .01, .01);
18
24
  static _emptyObjectSize = new Vector3(.01, .01, .01);
25
+ /**
26
+ * Tests if an object intersects with this helper's bounding box
27
+ * @param obj The object to test for intersection
28
+ * @returns True if objects intersect, false if not, undefined if the provided object is invalid
29
+ */
19
30
  isInBox(obj) {
20
31
  if (!obj)
21
32
  return undefined;
@@ -35,11 +46,21 @@ export class BoxHelperComponent extends Behaviour {
35
46
  }
36
47
  return intersects;
37
48
  }
49
+ /**
50
+ * Tests if this helper's bounding box intersects with another box
51
+ * @param box The {@link Box3} to test for intersection
52
+ * @returns True if boxes intersect, false otherwise
53
+ */
38
54
  intersects(box) {
39
55
  if (!box)
40
56
  return false;
41
57
  return this.updateBox(false).intersectsBox(box);
42
58
  }
59
+ /**
60
+ * Updates the helper's bounding box based on the gameObject's position and scale
61
+ * @param force Whether to force an update regardless of frame count
62
+ * @returns The updated {@link Box3}
63
+ */
43
64
  updateBox(force = false) {
44
65
  if (!this.box) {
45
66
  this.box = new Box3();
@@ -61,6 +82,11 @@ export class BoxHelperComponent extends Behaviour {
61
82
  this._color = null;
62
83
  this.box = null;
63
84
  }
85
+ /**
86
+ * Creates and displays a visual wireframe representation of this box helper
87
+ * @param col Optional color for the wireframe. If not provided, uses default color
88
+ * @param force If true, shows the helper even if gizmos are disabled
89
+ */
64
90
  showHelper(col = null, force = false) {
65
91
  if (!gizmos && !force)
66
92
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"BoxHelperComponent.js","sourceRoot":"","sources":["../../src/engine-components/BoxHelperComponent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BoxHelperComponent.js","sourceRoot":"","sources":["../../src/engine-components/BoxHelperComponent.ts"],"names":[],"mappings":"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"}