@needle-tools/engine 4.12.0-next.de80571 → 4.12.0-next.e42c144

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 (193) hide show
  1. package/CHANGELOG.md +1 -1
  2. package/components.needle.json +1 -1
  3. package/dist/generateMeshBVH.worker-iyfPIK6R.js +21 -0
  4. package/dist/{gltf-progressive-DZrY8VT6.min.js → gltf-progressive-BmSygnAC.min.js} +2 -2
  5. package/dist/{gltf-progressive-DgYz5BYa.js → gltf-progressive-DnLBuGK5.js} +24 -24
  6. package/dist/{gltf-progressive-DWcmTMCh.umd.cjs → gltf-progressive-Rs-ojtXy.umd.cjs} +1 -1
  7. package/dist/{loader.worker-Dip-PthR.js → loader.worker-DWzfDpAl.js} +4 -4
  8. package/dist/needle-engine.bundle-CW5U4a3u.umd.cjs +1647 -0
  9. package/dist/needle-engine.bundle-HNQiYV9e.min.js +1647 -0
  10. package/dist/{needle-engine.bundle-CbrIHiN8.js → needle-engine.bundle-qrrKb_xn.js} +8886 -8598
  11. package/dist/needle-engine.d.ts +108 -43
  12. package/dist/needle-engine.js +48 -48
  13. package/dist/needle-engine.min.js +1 -1
  14. package/dist/needle-engine.umd.cjs +1 -1
  15. package/dist/{postprocessing-DYDtB188.min.js → postprocessing-B5ksn9-G.min.js} +54 -54
  16. package/dist/{postprocessing-CMgoN5t5.umd.cjs → postprocessing-DZtb9Nnn.umd.cjs} +81 -81
  17. package/dist/{postprocessing-BTW9pD_s.js → postprocessing-__7s9wON.js} +450 -441
  18. package/dist/{three-DfMvBzXi.js → three-BCCkyCA5.js} +1 -7
  19. package/dist/{three-qj71I7J3.umd.cjs → three-Bf2NBxAw.umd.cjs} +2 -2
  20. package/dist/{three-B7CT31Bt.min.js → three-W7zWTcfP.min.js} +1 -1
  21. package/dist/{three-examples-CsW4_6LI.umd.cjs → three-examples-Dho7cuu4.umd.cjs} +4 -4
  22. package/dist/{three-examples-D1P7eEhn.min.js → three-examples-MsJjauyk.min.js} +10 -10
  23. package/dist/{three-examples-D1SK93ek.js → three-examples-y2GeYlze.js} +2 -20
  24. package/dist/{three-mesh-ui-C_uSB5dD.js → three-mesh-ui-3nSSizT4.js} +1 -1
  25. package/dist/{three-mesh-ui-LQ44s0AL.min.js → three-mesh-ui-CIez6qJQ.min.js} +1 -1
  26. package/dist/{three-mesh-ui-DpATDXwU.umd.cjs → three-mesh-ui-zsOOA5Pq.umd.cjs} +1 -1
  27. package/dist/{vendor-D0zoswDa.js → vendor-DMZcbVO1.js} +3707 -3527
  28. package/dist/vendor-sURMCFSI.min.js +1116 -0
  29. package/dist/{vendor-UCpFAwt1.umd.cjs → vendor-tyBvnMF-.umd.cjs} +39 -39
  30. package/lib/engine/codegen/register_types.js +0 -2
  31. package/lib/engine/codegen/register_types.js.map +1 -1
  32. package/lib/engine/debug/debug_console.js +403 -1
  33. package/lib/engine/debug/debug_console.js.map +1 -1
  34. package/lib/engine/engine_components.js +3 -3
  35. package/lib/engine/engine_components.js.map +1 -1
  36. package/lib/engine/engine_context.js +2 -0
  37. package/lib/engine/engine_context.js.map +1 -1
  38. package/lib/engine/engine_input.d.ts +5 -0
  39. package/lib/engine/engine_input.js +6 -0
  40. package/lib/engine/engine_input.js.map +1 -1
  41. package/lib/engine/engine_license.d.ts +18 -0
  42. package/lib/engine/engine_license.js +115 -18
  43. package/lib/engine/engine_license.js.map +1 -1
  44. package/lib/engine/engine_networking.js +5 -5
  45. package/lib/engine/engine_networking.js.map +1 -1
  46. package/lib/engine/engine_physics.js.map +1 -1
  47. package/lib/engine/engine_physics_rapier.js +1 -1
  48. package/lib/engine/engine_physics_rapier.js.map +1 -1
  49. package/lib/engine/engine_serialization_builtin_serializer.js +1 -1
  50. package/lib/engine/engine_serialization_builtin_serializer.js.map +1 -1
  51. package/lib/engine/engine_utils.d.ts +4 -1
  52. package/lib/engine/engine_utils.js +28 -4
  53. package/lib/engine/engine_utils.js.map +1 -1
  54. package/lib/engine/extensions/extensions.d.ts +29 -7
  55. package/lib/engine/extensions/extensions.js.map +1 -1
  56. package/lib/engine/webcomponents/WebXRButtons.js +13 -5
  57. package/lib/engine/webcomponents/WebXRButtons.js.map +1 -1
  58. package/lib/engine/webcomponents/needle menu/needle-menu.js +4 -5
  59. package/lib/engine/webcomponents/needle menu/needle-menu.js.map +1 -1
  60. package/lib/engine/webcomponents/needle-engine.ar-overlay.js +4 -0
  61. package/lib/engine/webcomponents/needle-engine.ar-overlay.js.map +1 -1
  62. package/lib/engine/webcomponents/needle-engine.js +1 -1
  63. package/lib/engine/webcomponents/needle-engine.js.map +1 -1
  64. package/lib/engine/xr/NeedleXRSession.d.ts +1 -1
  65. package/lib/engine/xr/NeedleXRSession.js +101 -22
  66. package/lib/engine/xr/NeedleXRSession.js.map +1 -1
  67. package/lib/engine/xr/TempXRContext.js +12 -2
  68. package/lib/engine/xr/TempXRContext.js.map +1 -1
  69. package/lib/engine/xr/usdz.js +6 -2
  70. package/lib/engine/xr/usdz.js.map +1 -1
  71. package/lib/engine-components/AlignmentConstraint.d.ts +1 -1
  72. package/lib/engine-components/AlignmentConstraint.js +1 -1
  73. package/lib/engine-components/Animation.d.ts +1 -1
  74. package/lib/engine-components/Animation.js +1 -1
  75. package/lib/engine-components/Animator.d.ts +1 -1
  76. package/lib/engine-components/Animator.js +1 -1
  77. package/lib/engine-components/AudioListener.d.ts +1 -1
  78. package/lib/engine-components/AudioListener.js +1 -1
  79. package/lib/engine-components/AudioSource.d.ts +1 -1
  80. package/lib/engine-components/AudioSource.js +1 -1
  81. package/lib/engine-components/Camera.d.ts +1 -1
  82. package/lib/engine-components/Camera.js +5 -2
  83. package/lib/engine-components/Camera.js.map +1 -1
  84. package/lib/engine-components/CharacterController.d.ts +6 -2
  85. package/lib/engine-components/CharacterController.js +6 -2
  86. package/lib/engine-components/CharacterController.js.map +1 -1
  87. package/lib/engine-components/Collider.d.ts +1 -1
  88. package/lib/engine-components/Collider.js.map +1 -1
  89. package/lib/engine-components/Component.d.ts +2 -1
  90. package/lib/engine-components/Component.js +3 -2
  91. package/lib/engine-components/Component.js.map +1 -1
  92. package/lib/engine-components/DragControls.js +4 -1
  93. package/lib/engine-components/DragControls.js.map +1 -1
  94. package/lib/engine-components/Joints.d.ts +14 -0
  95. package/lib/engine-components/Joints.js +14 -0
  96. package/lib/engine-components/Joints.js.map +1 -1
  97. package/lib/engine-components/LookAtConstraint.d.ts +1 -1
  98. package/lib/engine-components/LookAtConstraint.js +1 -1
  99. package/lib/engine-components/OrbitControls.d.ts +1 -1
  100. package/lib/engine-components/OrbitControls.js +1 -1
  101. package/lib/engine-components/Renderer.d.ts +6 -0
  102. package/lib/engine-components/Renderer.js +6 -0
  103. package/lib/engine-components/Renderer.js.map +1 -1
  104. package/lib/engine-components/RendererInstancing.js +5 -3
  105. package/lib/engine-components/RendererInstancing.js.map +1 -1
  106. package/lib/engine-components/SceneSwitcher.js +18 -14
  107. package/lib/engine-components/SceneSwitcher.js.map +1 -1
  108. package/lib/engine-components/SpectatorCamera.js +15 -7
  109. package/lib/engine-components/SpectatorCamera.js.map +1 -1
  110. package/lib/engine-components/SpriteRenderer.d.ts +2 -1
  111. package/lib/engine-components/SpriteRenderer.js +2 -1
  112. package/lib/engine-components/SpriteRenderer.js.map +1 -1
  113. package/lib/engine-components/api.d.ts +1 -0
  114. package/lib/engine-components/api.js +1 -0
  115. package/lib/engine-components/api.js.map +1 -1
  116. package/lib/engine-components/codegen/components.d.ts +0 -1
  117. package/lib/engine-components/codegen/components.js +0 -1
  118. package/lib/engine-components/codegen/components.js.map +1 -1
  119. package/lib/engine-components/timeline/SignalAsset.d.ts +1 -1
  120. package/lib/engine-components/timeline/SignalAsset.js +1 -1
  121. package/lib/engine-components/ui/Raycaster.d.ts +3 -2
  122. package/lib/engine-components/ui/Raycaster.js +3 -2
  123. package/lib/engine-components/ui/Raycaster.js.map +1 -1
  124. package/lib/engine-components/ui/RectTransform.d.ts +6 -0
  125. package/lib/engine-components/ui/RectTransform.js +6 -0
  126. package/lib/engine-components/ui/RectTransform.js.map +1 -1
  127. package/lib/engine-components/utils/LookAt.d.ts +2 -1
  128. package/lib/engine-components/utils/LookAt.js +2 -1
  129. package/lib/engine-components/utils/LookAt.js.map +1 -1
  130. package/lib/engine-components/web/CursorFollow.d.ts +1 -1
  131. package/lib/engine-components/web/CursorFollow.js +1 -1
  132. package/lib/engine-components/web/HoverAnimation.d.ts +1 -1
  133. package/lib/engine-components/web/HoverAnimation.js +1 -1
  134. package/lib/engine-components/web/ViewBox.d.ts +1 -1
  135. package/lib/engine-components/web/ViewBox.js +1 -1
  136. package/lib/engine-components/webxr/Avatar.js +2 -0
  137. package/lib/engine-components/webxr/Avatar.js.map +1 -1
  138. package/lib/engine-components/webxr/WebXR.js +18 -12
  139. package/lib/engine-components/webxr/WebXR.js.map +1 -1
  140. package/package.json +3 -3
  141. package/plugins/vite/poster-client.js +8 -1
  142. package/src/engine/codegen/register_types.ts +0 -2
  143. package/src/engine/debug/debug_console.ts +449 -1
  144. package/src/engine/engine_components.ts +4 -4
  145. package/src/engine/engine_context.ts +2 -0
  146. package/src/engine/engine_input.ts +7 -0
  147. package/src/engine/engine_license.ts +128 -17
  148. package/src/engine/engine_networking.ts +5 -5
  149. package/src/engine/engine_physics.ts +3 -3
  150. package/src/engine/engine_physics_rapier.ts +1 -1
  151. package/src/engine/engine_serialization_builtin_serializer.ts +1 -1
  152. package/src/engine/engine_utils.ts +23 -4
  153. package/src/engine/extensions/extensions.ts +30 -6
  154. package/src/engine/webcomponents/WebXRButtons.ts +15 -5
  155. package/src/engine/webcomponents/needle menu/needle-menu.ts +4 -5
  156. package/src/engine/webcomponents/needle-engine.ar-overlay.ts +6 -0
  157. package/src/engine/webcomponents/needle-engine.ts +2 -2
  158. package/src/engine/xr/NeedleXRSession.ts +114 -24
  159. package/src/engine/xr/TempXRContext.ts +12 -2
  160. package/src/engine/xr/usdz.ts +6 -1
  161. package/src/engine-components/AlignmentConstraint.ts +1 -1
  162. package/src/engine-components/Animation.ts +1 -1
  163. package/src/engine-components/Animator.ts +1 -1
  164. package/src/engine-components/AudioListener.ts +1 -1
  165. package/src/engine-components/AudioSource.ts +1 -1
  166. package/src/engine-components/Camera.ts +5 -2
  167. package/src/engine-components/CharacterController.ts +6 -2
  168. package/src/engine-components/Collider.ts +1 -1
  169. package/src/engine-components/Component.ts +5 -4
  170. package/src/engine-components/DragControls.ts +5 -1
  171. package/src/engine-components/Joints.ts +14 -0
  172. package/src/engine-components/LookAtConstraint.ts +1 -1
  173. package/src/engine-components/OrbitControls.ts +1 -1
  174. package/src/engine-components/Renderer.ts +6 -0
  175. package/src/engine-components/RendererInstancing.ts +6 -3
  176. package/src/engine-components/SceneSwitcher.ts +17 -17
  177. package/src/engine-components/SpectatorCamera.ts +21 -10
  178. package/src/engine-components/SpriteRenderer.ts +2 -1
  179. package/src/engine-components/api.ts +2 -1
  180. package/src/engine-components/codegen/components.ts +0 -1
  181. package/src/engine-components/timeline/SignalAsset.ts +1 -1
  182. package/src/engine-components/ui/Raycaster.ts +3 -2
  183. package/src/engine-components/ui/RectTransform.ts +6 -0
  184. package/src/engine-components/utils/LookAt.ts +2 -1
  185. package/src/engine-components/web/CursorFollow.ts +1 -1
  186. package/src/engine-components/web/HoverAnimation.ts +1 -1
  187. package/src/engine-components/web/ViewBox.ts +1 -1
  188. package/src/engine-components/webxr/Avatar.ts +4 -0
  189. package/src/engine-components/webxr/WebXR.ts +19 -11
  190. package/dist/generateMeshBVH.worker-mO20N_b8.js +0 -21
  191. package/dist/needle-engine.bundle-BGixCtrn.umd.cjs +0 -1647
  192. package/dist/needle-engine.bundle-S3PalR7r.min.js +0 -1647
  193. package/dist/vendor-BKGa4GE0.min.js +0 -1116
@@ -170,18 +170,24 @@ export class WebXR extends Behaviour {
170
170
  if (window.location.protocol !== "https:") {
171
171
  showBalloonWarning("<a href=\"https://developer.mozilla.org/en-US/docs/Web/API/WebXR_Device_API\" target=\"_blank\">WebXR</a> only works on secure connections (https).");
172
172
  }
173
- if (this.useQuicklookExport) {
174
- const existingUSDZExporter = GameObject.findObjectOfType(USDZExporter);
175
- if (!existingUSDZExporter) {
176
- // if no USDZ Exporter is found we add one and assign the scene to be exported
177
- if (debug)
178
- console.log("WebXR: Adding USDZExporter");
179
- this._usdzExporter = GameObject.addComponent(this.gameObject, USDZExporter);
180
- this._usdzExporter.objectToExport = this.context.scene;
181
- this._usdzExporter.autoExportAnimations = true;
182
- this._usdzExporter.autoExportAudioSources = true;
173
+ // Showing the QuickLook button depends on whether we're on iOS or visionOS –
174
+ // on iOS we have AppClip support, so we don't need QuickLook button there,
175
+ // while on visionOS we use QuickLook for AR experiences for now (unless it happens to have WebXR support by then).
176
+ navigator.xr?.isSessionSupported("immersive-ar").catch(() => false).then((arSupported) => {
177
+ const isVisionOSFallback = DeviceUtilities.isVisionOS() && !arSupported;
178
+ if (this.useQuicklookExport || isVisionOSFallback) {
179
+ const existingUSDZExporter = GameObject.findObjectOfType(USDZExporter);
180
+ if (!existingUSDZExporter) {
181
+ // if no USDZ Exporter is found we add one and assign the scene to be exported
182
+ if (debug)
183
+ console.log("WebXR: Adding USDZExporter");
184
+ this._usdzExporter = GameObject.addComponent(this.gameObject, USDZExporter);
185
+ this._usdzExporter.objectToExport = this.context.scene;
186
+ this._usdzExporter.autoExportAnimations = true;
187
+ this._usdzExporter.autoExportAudioSources = true;
188
+ }
183
189
  }
184
- }
190
+ });
185
191
  this.handleCreatingHTML();
186
192
  this.handleOfferSession();
187
193
  // If the avatar is undefined (meaning not set and also not null) we will use the fallback default avatar
@@ -310,7 +316,7 @@ export class WebXR extends Behaviour {
310
316
  XRState.Global.Set(isVR ? XRStateFlag.VR : XRStateFlag.AR);
311
317
  // Handle AR session root
312
318
  if (args.xr.isAR) {
313
- let sessionroot = GameObject.findObjectOfType(WebARSessionRoot);
319
+ let sessionroot = GameObject.findObjectOfType(WebARSessionRoot, this.context, false);
314
320
  // Only create a WebARSessionRoot if none is in the scene already
315
321
  if (!sessionroot) {
316
322
  if (this.usePlacementReticle) {
@@ -1 +1 @@
1
- {"version":3,"file":"WebXR.js","sourceRoot":"","sources":["../../../src/engine-components/webxr/WebXR.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"WebXR.js","sourceRoot":"","sources":["../../../src/engine-components/webxr/WebXR.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": "4.12.0-next.de80571",
3
+ "version": "4.12.0-next.e42c144",
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.min.js",
6
6
  "exports": {
@@ -98,7 +98,7 @@
98
98
  "quest"
99
99
  ],
100
100
  "dependencies": {
101
- "@dimforge/rapier3d-compat": "^0.19.0",
101
+ "@dimforge/rapier3d-compat": "0.19.x",
102
102
  "@needle-tools/gltf-progressive": "3.3.5",
103
103
  "@needle-tools/three-animation-pointer": "1.0.7",
104
104
  "@webxr-input-profiles/motion-controllers": "^1.0.0",
@@ -111,7 +111,7 @@
111
111
  "simplex-noise": "^4.0.1",
112
112
  "stats.js": "^0.17.0",
113
113
  "three": "npm:@needle-tools/three@0.169.10",
114
- "three-mesh-bvh": "^0.9.1",
114
+ "three-mesh-bvh": "0.9.7",
115
115
  "three-mesh-ui": "npm:@needle-tools/three-mesh-ui@^7.1.5-alpha.5",
116
116
  "three.quarks": "0.15.6",
117
117
  "uuid": "^9.0.0",
@@ -17,7 +17,14 @@ async function generatePoster() {
17
17
  await context.lodsManager.manager.awaitLoading({ frames: 5, maxPromisesPerObject: 2, waitForFirstCapture: true });
18
18
  }
19
19
 
20
- onStart(() => {
20
+ onStart(ctx => {
21
+
22
+ // Don't take poster screenshot if we're in XR mode
23
+ if (ctx.isInXR) {
24
+ res(null);
25
+ return;
26
+ }
27
+
21
28
  const mimeType = "image/webp";
22
29
  // We're reading back as a blob here because that's async, and doesn't seem
23
30
  // to stress the GPU so much on memory-constrained devices.
@@ -18,7 +18,6 @@ import { BoxHelperComponent } from "../../engine-components/BoxHelperComponent.j
18
18
  import { Camera } from "../../engine-components/Camera.js";
19
19
  import { CharacterController } from "../../engine-components/CharacterController.js";
20
20
  import { CharacterControllerInput } from "../../engine-components/CharacterController.js";
21
- import { Collider } from "../../engine-components/Collider.js";
22
21
  import { SphereCollider } from "../../engine-components/Collider.js";
23
22
  import { BoxCollider } from "../../engine-components/Collider.js";
24
23
  import { MeshCollider } from "../../engine-components/Collider.js";
@@ -178,7 +177,6 @@ TypeStore.add("BoxHelperComponent", BoxHelperComponent);
178
177
  TypeStore.add("Camera", Camera);
179
178
  TypeStore.add("CharacterController", CharacterController);
180
179
  TypeStore.add("CharacterControllerInput", CharacterControllerInput);
181
- TypeStore.add("Collider", Collider);
182
180
  TypeStore.add("SphereCollider", SphereCollider);
183
181
  TypeStore.add("BoxCollider", BoxCollider);
184
182
  TypeStore.add("MeshCollider", MeshCollider);
@@ -1,4 +1,4 @@
1
- import { getParam } from "../engine_utils.js";
1
+ import { DeviceUtilities,getParam } from "../engine_utils.js";
2
2
  import { getErrorCount } from "./debug_overlay.js";
3
3
 
4
4
  let consoleInstance: VConsole | null | undefined = undefined;
@@ -117,6 +117,12 @@ function createConsole(startHidden: boolean = false) {
117
117
  consoleInstance.addPlugin(createInspectPlugin());
118
118
  }
119
119
 
120
+ // Add plugin for device utilities
121
+ consoleInstance.addPlugin(createDeviceUtilitiesPlugin());
122
+
123
+ // Add plugin for graphics info
124
+ consoleInstance.addPlugin(createGraphicsInfoPlugin());
125
+
120
126
  consoleHtmlElement = getConsoleElement();
121
127
  if (consoleHtmlElement) {
122
128
  consoleHtmlElement[$defaultConsoleParent] = consoleHtmlElement.parentElement;
@@ -291,6 +297,448 @@ function createInspectPlugin() {
291
297
  return plugin;
292
298
  }
293
299
 
300
+ const CONTAINER_STYLE = "padding: 10px; font-family: monospace;";
301
+ const HEADING_STYLE = "margin-bottom: 10px;";
302
+ const SUBHEADING_STYLE = "margin-bottom: 10px; margin-top: 15px;";
303
+ const TABLE_STYLE = "width: 100%; border-collapse: collapse; border: 1px solid rgba(0,0,0,0.1); table-layout: fixed;";
304
+ const CELL_STYLE = "border: 1px solid rgba(0,0,0,0.1); padding: 5px;";
305
+ const HEADER_CELL_STYLE = CELL_STYLE;
306
+ const VALUE_CELL_STYLE = CELL_STYLE + " word-break: break-all;";
307
+
308
+ function createTable(rows: Array<{label: string, value: any}>, sortByValue: boolean = false): string {
309
+ if (sortByValue) {
310
+ rows.sort((a, b) => (b.value ? 1 : 0) - (a.value ? 1 : 0));
311
+ }
312
+
313
+ let html = `<table style='${TABLE_STYLE}'>`;
314
+ html += "<tbody>";
315
+
316
+ for (const row of rows) {
317
+ const value = typeof row.value === 'boolean' ? (row.value ? "✅" : "❌") : row.value;
318
+ html += `<tr><td style='${HEADER_CELL_STYLE}'>${row.label}</td><td style='${VALUE_CELL_STYLE}'>${value}</td></tr>`;
319
+ }
320
+
321
+ html += "</tbody></table>";
322
+ return html;
323
+ }
324
+
325
+ function getWebGL2Support(): string {
326
+ try {
327
+ const canvas = document.createElement('canvas');
328
+ const gl = canvas.getContext('webgl2');
329
+ if (gl) {
330
+ return "✅";
331
+ }
332
+ } catch (e) {
333
+ // WebGL2 not supported
334
+ }
335
+ return "❌";
336
+ }
337
+
338
+ function createDeviceUtilitiesPlugin() {
339
+ if (!globalThis.VConsole) return;
340
+ const plugin = new VConsole.VConsolePlugin("device-utilities", "📱 Device Info");
341
+ plugin.on('renderTab', function(callback) {
342
+ let html = `<div style='${CONTAINER_STYLE}'>`;
343
+
344
+ // Device type
345
+ const deviceType = getDeviceType();
346
+ html += `<h3 style='${HEADING_STYLE}'>Device: ${deviceType}</h3>`;
347
+
348
+ // Device capabilities table
349
+ html += createTable([
350
+ { label: "💻 Desktop", value: DeviceUtilities.isDesktop() },
351
+ { label: "📱 Mobile Device", value: DeviceUtilities.isMobileDevice() },
352
+ { label: "🍎 iOS", value: DeviceUtilities.isiOS() },
353
+ { label: "📱 iPad", value: DeviceUtilities.isiPad() },
354
+ { label: "🤖 Android", value: DeviceUtilities.isAndroidDevice() },
355
+ { label: "🦊 Mozilla XR", value: DeviceUtilities.isMozillaXR() },
356
+ { label: "🌵 Needle App Clip", value: DeviceUtilities.isNeedleAppClip() },
357
+ { label: "🍏 macOS", value: DeviceUtilities.isMacOS() },
358
+ { label: "👓 VisionOS", value: DeviceUtilities.isVisionOS() },
359
+ { label: "🧭 Safari", value: DeviceUtilities.isSafari() },
360
+ { label: "🕶️ Meta Quest", value: DeviceUtilities.isQuest() },
361
+ { label: "🔗 QuickLook AR Support", value: DeviceUtilities.supportsQuickLookAR() },
362
+ ], true);
363
+
364
+ // Versions
365
+ const versionRows: Array<{label: string, value: any}> = [];
366
+ const iosVersion = DeviceUtilities.getiOSVersion();
367
+ if (iosVersion) versionRows.push({ label: "🍎 iOS Version", value: iosVersion });
368
+ const chromeVersion = DeviceUtilities.getChromeVersion();
369
+ if (chromeVersion) versionRows.push({ label: "🌐 Chrome Version", value: chromeVersion });
370
+ const safariVersion = DeviceUtilities.getSafariVersion();
371
+ if (safariVersion) versionRows.push({ label: "🧭 Safari Version", value: safariVersion });
372
+
373
+ if (versionRows.length > 0) {
374
+ html += createTable(versionRows, false);
375
+ }
376
+
377
+ html += "</div>";
378
+
379
+ // User Agent table
380
+ html += `<div style='${CONTAINER_STYLE} margin-top: 20px;'>`;
381
+ html += `<h3 style='${HEADING_STYLE}'>User Agent Info</h3>`;
382
+
383
+ const userAgentRows = [
384
+ { label: "User Agent", value: navigator.userAgent },
385
+ { label: "Platform", value: navigator.platform },
386
+ { label: "App Version", value: navigator.appVersion },
387
+ // @ts-ignore
388
+ { label: "User Agent Data", value: navigator.userAgentData ? `Platform: ${navigator.userAgentData.platform}, Mobile: ${navigator.userAgentData.mobile}` : "Not supported" },
389
+ { label: "WebXR", value: 'xr' in navigator ? "✅" : "❌" },
390
+ { label: "WebGPU", value: 'gpu' in navigator ? "✅" : "❌" },
391
+ { label: "WebGL 2", value: getWebGL2Support() },
392
+ ];
393
+
394
+ html += createTable(userAgentRows, false);
395
+ html += "</div>";
396
+
397
+ callback(html);
398
+ });
399
+ return plugin;
400
+ }
401
+
402
+ function createGraphicsInfoPlugin() {
403
+ if (!globalThis.VConsole) return;
404
+ const plugin = new VConsole.VConsolePlugin("graphics-info", "🎨 Graphics Info");
405
+ plugin.on('renderTab', async function(callback) {
406
+ let html = `<div style='${CONTAINER_STYLE}'>`;
407
+
408
+ // General GPU Info Table
409
+ const generalInfo = getGeneralGPUInfo();
410
+ if (generalInfo.length > 0) {
411
+ html += `<h3 style='${SUBHEADING_STYLE}'>General GPU Info</h3>`;
412
+ html += createTable(generalInfo, false);
413
+ }
414
+
415
+ // WebGL Info Table
416
+ const webglInfo = getWebGLDetailedInfo();
417
+ if (webglInfo.length > 0) {
418
+ html += `<h3 style='${SUBHEADING_STYLE}'>WebGL</h3>`;
419
+ html += createTable(webglInfo, false);
420
+ }
421
+
422
+ // WebGL 2 Features Table
423
+ const webgl2Features = getWebGL2FeaturesTable();
424
+ if (webgl2Features.length > 0) {
425
+ html += `<h3 style='${SUBHEADING_STYLE}'>WebGL 2 Features</h3>`;
426
+ html += createTable(webgl2Features, false);
427
+ }
428
+
429
+ // WebGL Limits Table
430
+ const webglLimits = getWebGLLimitsTable();
431
+ if (webglLimits.length > 0) {
432
+ html += `<h3 style='${SUBHEADING_STYLE}'>WebGL Limits</h3>`;
433
+ html += createTable(webglLimits, false);
434
+ }
435
+
436
+ // Texture Formats Table
437
+ const textureFormats = getTextureFormatsTable();
438
+ if (textureFormats.length > 0) {
439
+ html += `<h3 style='${SUBHEADING_STYLE}'>Texture Formats</h3>`;
440
+ html += createTable(textureFormats, false);
441
+ }
442
+
443
+ // WebGPU Info Table
444
+ const webgpuInfo = await getWebGPUInfoTable();
445
+ if (webgpuInfo.length > 0) {
446
+ html += `<h3 style='${SUBHEADING_STYLE}'>WebGPU</h3>`;
447
+ html += createTable(webgpuInfo, false);
448
+ }
449
+
450
+ // Safari specific GPU info
451
+ if (DeviceUtilities.isSafari()) {
452
+ const safariGPUInfo = getSafariGPUInfo();
453
+ if (safariGPUInfo.length > 0) {
454
+ html += `<h3 style='${SUBHEADING_STYLE}'>Safari GPU Info</h3>`;
455
+ html += createTable(safariGPUInfo, false);
456
+ }
457
+ }
458
+
459
+ html += "</div>";
460
+
461
+ callback(html);
462
+ });
463
+ return plugin;
464
+ }
465
+
466
+ function getGeneralGPUInfo(): Array<{label: string, value: string}> {
467
+ const info: Array<{label: string, value: string}> = [];
468
+
469
+ // Display and window info
470
+ const dpr = window.devicePixelRatio;
471
+ info.push({ label: "Device Pixel Ratio", value: dpr.toString() });
472
+ info.push({ label: "Width (px)", value: (window.innerWidth * dpr).toString() });
473
+ info.push({ label: "Height (px)", value: (window.innerHeight * dpr).toString() });
474
+
475
+ // Estimated physical screen size in cm (96 DPI desktop, 150 DPI mobile)
476
+ const isMobile = DeviceUtilities.isMobileDevice();
477
+ const estimatedDPI = isMobile ? 150 : 96;
478
+ const widthInches = screen.width / estimatedDPI;
479
+ const heightInches = screen.height / estimatedDPI;
480
+ const widthCm = widthInches * 2.54;
481
+ const heightCm = heightInches * 2.54;
482
+ info.push({ label: "Estimated Width (cm)", value: widthCm.toFixed(1) });
483
+ info.push({ label: "Estimated Height (cm)", value: heightCm.toFixed(1) });
484
+
485
+ const webglInfo = getWebGLInfo();
486
+ if (webglInfo) {
487
+ info.push({ label: "GPU", value: webglInfo.renderer });
488
+ info.push({ label: "Driver", value: webglInfo.vendor });
489
+ info.push({ label: "ANGLE", value: webglInfo.angle || "Not detected" });
490
+
491
+ // Enhanced GPU parsing
492
+ const gpuDetails = parseGPUDetails(webglInfo.renderer);
493
+ if (gpuDetails) {
494
+ if (gpuDetails.manufacturer) info.push({ label: "Manufacturer", value: gpuDetails.manufacturer });
495
+ if (gpuDetails.cardVersion) info.push({ label: "Card Version", value: gpuDetails.cardVersion });
496
+ if (gpuDetails.brand) info.push({ label: "Brand", value: gpuDetails.brand });
497
+ info.push({ label: "Integrated", value: gpuDetails.integrated ? "Yes" : "No" });
498
+ if (gpuDetails.layer) info.push({ label: "WebGL Layer", value: gpuDetails.layer });
499
+ }
500
+ }
501
+
502
+ return info;
503
+ }
504
+
505
+ function parseGPUDetails(renderer: string): {manufacturer?: string, cardVersion?: string, brand?: string, integrated?: boolean, layer?: string, card?: string} | null {
506
+ if (!renderer) return null;
507
+
508
+ const extractValue = (reg: RegExp, str: string) => {
509
+ const matches = str.match(reg);
510
+ return matches && matches[0];
511
+ };
512
+
513
+ const layer = extractValue(/(ANGLE)/g, renderer) || undefined;
514
+ const card = extractValue(/((NVIDIA|AMD|Intel)[^\d]*[^\s]+)/, renderer) || renderer;
515
+
516
+ const tokens = card.split(' ');
517
+ tokens.shift();
518
+
519
+ const manufacturer = extractValue(/(NVIDIA|AMD|Intel)/g, card) || undefined;
520
+ const cardVersion = tokens.length > 0 ? tokens.pop() : undefined;
521
+ const brand = tokens.length > 0 ? tokens.join(' ') : undefined;
522
+ const integrated = manufacturer === 'Intel';
523
+
524
+ return {
525
+ manufacturer,
526
+ cardVersion,
527
+ brand,
528
+ integrated,
529
+ layer,
530
+ card
531
+ };
532
+ }
533
+
534
+ function getWebGLDetailedInfo(): Array<{label: string, value: string}> {
535
+ const info: Array<{label: string, value: string}> = [];
536
+
537
+ const webglInfo = getWebGLInfo();
538
+ if (webglInfo) {
539
+ info.push({ label: "📊 WebGL Version", value: webglInfo.version });
540
+ info.push({ label: "🎮 WebGL 2 Available", value: getWebGL2Support() });
541
+ }
542
+
543
+ return info;
544
+ }
545
+
546
+ function getWebGL2FeaturesTable(): Array<{label: string, value: string}> {
547
+ const features: Array<{label: string, value: string}> = [];
548
+
549
+ try {
550
+ const canvas = document.createElement('canvas');
551
+ const gl = canvas.getContext('webgl2');
552
+ if (!gl) return features;
553
+
554
+ // Check for important WebGL 2 features
555
+ features.push({ label: "Float Color Buffer", value: gl.getExtension('EXT_color_buffer_float') ? "✅" : "❌" });
556
+ features.push({ label: "Anisotropic Filtering", value: gl.getExtension('EXT_texture_filter_anisotropic') ? "✅" : "❌" });
557
+ features.push({ label: "Float Texture Linear", value: gl.getExtension('OES_texture_float_linear') ? "✅" : "❌" });
558
+ features.push({ label: "S3TC Compression", value: gl.getExtension('WEBGL_compressed_texture_s3tc') ? "✅" : "❌" });
559
+ features.push({ label: "ETC Compression", value: gl.getExtension('WEBGL_compressed_texture_etc') ? "✅" : "❌" });
560
+ features.push({ label: "PVRTC Compression", value: gl.getExtension('WEBGL_compressed_texture_pvrtc') ? "✅" : "❌" });
561
+ features.push({ label: "ASTC Compression", value: gl.getExtension('WEBGL_compressed_texture_astc') ? "✅" : "❌" });
562
+
563
+ } catch (e) {
564
+ // WebGL2 not supported
565
+ }
566
+ return features;
567
+ }
568
+
569
+ function getWebGLLimitsTable(): Array<{label: string, value: string}> {
570
+ const limits: Array<{label: string, value: string}> = [];
571
+
572
+ try {
573
+ // Try WebGL 2 first, fall back to WebGL 1
574
+ const canvas = document.createElement('canvas');
575
+ const gl = canvas.getContext('webgl2') || canvas.getContext('webgl');
576
+ if (!gl) return limits;
577
+
578
+ const isWebGL2 = gl instanceof WebGL2RenderingContext;
579
+
580
+ limits.push({ label: "📏 Max Texture Size", value: gl.getParameter(gl.MAX_TEXTURE_SIZE).toString() });
581
+ limits.push({ label: "🎨 Max Renderbuffer Size", value: gl.getParameter(gl.MAX_RENDERBUFFER_SIZE).toString() });
582
+ limits.push({ label: "🔗 Max Vertex Attribs", value: gl.getParameter(gl.MAX_VERTEX_ATTRIBS).toString() });
583
+ limits.push({ label: "🎯 Max Texture Units", value: gl.getParameter(gl.MAX_TEXTURE_IMAGE_UNITS).toString() });
584
+
585
+ if (isWebGL2) {
586
+ limits.push({ label: "⚡ Max Samples", value: gl.getParameter(gl.MAX_SAMPLES).toString() });
587
+ limits.push({ label: "🔄 Max Uniform Buffer Bindings", value: gl.getParameter(gl.MAX_UNIFORM_BUFFER_BINDINGS).toString() });
588
+ limits.push({ label: "📐 Max 3D Texture Size", value: gl.getParameter(gl.MAX_3D_TEXTURE_SIZE).toString() });
589
+ }
590
+
591
+ } catch (e) {
592
+ // WebGL not available
593
+ }
594
+ return limits;
595
+ }
596
+
597
+ function getTextureFormatsTable(): Array<{label: string, value: string}> {
598
+ const formats: Array<{label: string, value: string}> = [];
599
+
600
+ try {
601
+ // WebGL 1 texture formats
602
+ const canvas1 = document.createElement('canvas');
603
+ const gl1 = canvas1.getContext('webgl');
604
+ if (gl1) {
605
+ formats.push({ label: "WebGL 1 RGBA", value: "✅" });
606
+ formats.push({ label: "WebGL 1 RGB", value: "✅" });
607
+ }
608
+
609
+ // WebGL 2 texture formats
610
+ const canvas2 = document.createElement('canvas');
611
+ const gl2 = canvas2.getContext('webgl2');
612
+ if (gl2) {
613
+ formats.push({ label: "WebGL 2 RGBA32F", value: gl2.getExtension('EXT_color_buffer_float') ? "✅" : "❌" });
614
+ formats.push({ label: "WebGL 2 RGB32F", value: gl2.getExtension('EXT_color_buffer_float') ? "✅" : "❌" });
615
+ formats.push({ label: "WebGL 2 R11F_G11F_B10F", value: "✅" });
616
+ formats.push({ label: "WebGL 2 RGB565", value: "✅" });
617
+ formats.push({ label: "WebGL 2 RGB5_A1", value: "✅" });
618
+ formats.push({ label: "WebGL 2 RGBA4444", value: "✅" });
619
+ }
620
+
621
+ } catch (e) {
622
+ // WebGL not available
623
+ }
624
+ return formats;
625
+ }
626
+
627
+ async function getWebGPUInfoTable(): Promise<Array<{label: string, value: string}>> {
628
+ const info: Array<{label: string, value: string}> = [];
629
+
630
+ if (!('gpu' in navigator)) {
631
+ info.push({ label: "🚀 WebGPU Support", value: "❌ Not supported" });
632
+ return info;
633
+ }
634
+
635
+ info.push({ label: "🚀 WebGPU Support", value: "✅ Supported" });
636
+
637
+ try {
638
+ const adapter = await (navigator as any).gpu.requestAdapter();
639
+ if (!adapter) {
640
+ info.push({ label: "🎯 Adapter", value: "No adapter available" });
641
+ return info;
642
+ }
643
+
644
+ info.push({ label: "🎯 Adapter", value: adapter.name || "Unknown Adapter" });
645
+
646
+ const device = await adapter.requestDevice();
647
+ info.push({ label: "🔧 Device", value: device.label || "WebGPU Device" });
648
+
649
+ // WebGPU Limits
650
+ info.push({ label: "📏 Max Texture 2D", value: device.limits.maxTextureDimension2D.toString() });
651
+ info.push({ label: "📐 Max Texture 3D", value: device.limits.maxTextureDimension3D.toString() });
652
+ info.push({ label: "📊 Max Texture Array Layers", value: device.limits.maxTextureArrayLayers.toString() });
653
+ info.push({ label: "💾 Max Buffer Size", value: `${(device.limits.maxBufferSize / 1024 / 1024).toFixed(1)}MB` });
654
+ info.push({ label: "🔗 Max Bind Groups", value: device.limits.maxBindGroups.toString() });
655
+
656
+ } catch (e) {
657
+ info.push({ label: "❌ Error", value: (e as Error).message });
658
+ }
659
+
660
+ return info;
661
+ }
662
+
663
+ function getWebGLInfo(): {renderer: string, vendor: string, version: string, angle?: string} | null {
664
+ try {
665
+ const canvas = document.createElement('canvas');
666
+ // Try WebGL 2 first, fall back to WebGL 1
667
+ const gl = canvas.getContext('webgl2') || canvas.getContext('webgl');
668
+ if (!gl) return null;
669
+
670
+ const debugInfo = gl.getExtension('WEBGL_debug_renderer_info');
671
+ const renderer = debugInfo ? gl.getParameter(debugInfo.UNMASKED_RENDERER_WEBGL) : gl.getParameter(gl.RENDERER);
672
+ const vendor = debugInfo ? gl.getParameter(debugInfo.UNMASKED_VENDOR_WEBGL) : gl.getParameter(gl.VENDOR);
673
+ const version = gl.getParameter(gl.VERSION);
674
+
675
+ // Try to detect ANGLE
676
+ let angle = undefined;
677
+ if (renderer && renderer.includes('ANGLE')) {
678
+ const angleMatch = renderer.match(/ANGLE \(([^)]+)\)/);
679
+ if (angleMatch) {
680
+ angle = angleMatch[1];
681
+ }
682
+ }
683
+
684
+ return { renderer, vendor, version, angle };
685
+ } catch (e) {
686
+ return null;
687
+ }
688
+ }
689
+
690
+ function getSafariGPUInfo(): Array<{label: string, value: string}> {
691
+ const info: Array<{label: string, value: string}> = [];
692
+
693
+ // Try to get Safari-specific GPU info
694
+ try {
695
+ const canvas = document.createElement('canvas');
696
+ const gl = canvas.getContext('webgl');
697
+ if (gl) {
698
+ const debugInfo = gl.getExtension('WEBGL_debug_renderer_info');
699
+ if (debugInfo) {
700
+ const renderer = gl.getParameter(debugInfo.UNMASKED_RENDERER_WEBGL);
701
+ if (renderer && renderer.includes('Apple')) {
702
+ info.push({ label: "🍎 Apple GPU", value: renderer });
703
+ }
704
+ }
705
+ }
706
+ } catch (e) {
707
+ // Ignore errors
708
+ }
709
+
710
+ // Check for WebGL extensions specific to Safari
711
+ try {
712
+ const canvas = document.createElement('canvas');
713
+ const gl = canvas.getContext('webgl');
714
+ if (gl) {
715
+ const extensions = gl.getSupportedExtensions() || [];
716
+ if (extensions.includes('WEBGL_compressed_texture_pvrtc')) {
717
+ info.push({ label: "🗜️ PVRTC Support", value: "✅" });
718
+ }
719
+ }
720
+ } catch (e) {
721
+ // Ignore errors
722
+ }
723
+
724
+ return info;
725
+ }
726
+
727
+ function getDeviceType(): string {
728
+ if (DeviceUtilities.isQuest()) return "Meta Quest";
729
+ if (DeviceUtilities.isVisionOS()) return "Vision Pro";
730
+ if (DeviceUtilities.isiOS()) {
731
+ if (DeviceUtilities.isiPad()) return "iPad";
732
+ return "iPhone/iPod";
733
+ }
734
+ if (DeviceUtilities.isAndroidDevice()) return "Android Device";
735
+ if (DeviceUtilities.isMozillaXR()) return "Mozilla XR Browser";
736
+ if (DeviceUtilities.isNeedleAppClip()) return "Needle App Clip";
737
+ if (DeviceUtilities.isMacOS()) return "Mac";
738
+ if (DeviceUtilities.isDesktop()) return "Desktop PC";
739
+ return "Unknown Device";
740
+ }
741
+
294
742
  function getConsoleSwitchButton(): HTMLElement | null {
295
743
  const el = document.querySelector("#__vconsole .vc-switch");
296
744
  if (el) return el as HTMLElement;
@@ -218,13 +218,13 @@ export function getComponents<T extends IComponent>(obj: Object3D, componentType
218
218
  * const myComponent = getComponentInChildren(myObject, MyComponent);
219
219
  * ```
220
220
  */
221
- export function getComponentInChildren<T extends IComponent>(obj: Object3D, componentType: Constructor<T>, includeInactive?: boolean): T | null {
222
- if(includeInactive === false && obj[activeInHierarchyFieldName] === false) return null;
221
+ export function getComponentInChildren<T extends IComponent>(obj: Object3D, componentType: Constructor<T>, includeInactive: boolean = false): T | null {
222
+ if(includeInactive === false && obj[activeInHierarchyFieldName] === false) return null;
223
223
  const res = getComponent(obj, componentType) as IComponent | null;
224
- if (includeInactive === false && res?.enabled === false) return null;
224
+ if (includeInactive === false && (res?.enabled === false || res?.activeAndEnabled === false)) return null;
225
225
  if (res) return res as T;
226
226
  for (let i = 0; i < obj?.children?.length; i++) {
227
- const res = getComponentInChildren(obj.children[i], componentType);
227
+ const res = getComponentInChildren(obj.children[i], componentType, includeInactive);
228
228
  if (res) return res;
229
229
  }
230
230
  return null;