@needle-tools/engine 3.2.4-alpha.2 → 3.2.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 (121) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/dist/needle-engine.js +18982 -18841
  3. package/dist/needle-engine.min.js +281 -281
  4. package/dist/needle-engine.umd.cjs +275 -275
  5. package/lib/engine/api.d.ts +1 -0
  6. package/lib/engine/api.js +1 -0
  7. package/lib/engine/api.js.map +1 -1
  8. package/lib/engine/codegen/register_types.js +23 -17
  9. package/lib/engine/codegen/register_types.js.map +1 -1
  10. package/lib/engine/engine_element_loading.js +14 -3
  11. package/lib/engine/engine_element_loading.js.map +1 -1
  12. package/lib/engine/engine_networking_auto.js +1 -1
  13. package/lib/engine/engine_networking_auto.js.map +1 -1
  14. package/lib/engine-components/DragControls.js +1 -1
  15. package/lib/engine-components/DragControls.js.map +1 -1
  16. package/lib/engine-components/Duplicatable.js +1 -1
  17. package/lib/engine-components/Duplicatable.js.map +1 -1
  18. package/lib/engine-components/Light.js +2 -2
  19. package/lib/engine-components/Light.js.map +1 -1
  20. package/lib/engine-components/PlayerColor.js +1 -1
  21. package/lib/engine-components/PlayerColor.js.map +1 -1
  22. package/lib/engine-components/ShadowCatcher.d.ts +3 -1
  23. package/lib/engine-components/ShadowCatcher.js +14 -0
  24. package/lib/engine-components/ShadowCatcher.js.map +1 -1
  25. package/lib/engine-components/SpectatorCamera.js +2 -2
  26. package/lib/engine-components/SpectatorCamera.js.map +1 -1
  27. package/lib/engine-components/SyncedCamera.js +2 -2
  28. package/lib/engine-components/SyncedCamera.js.map +1 -1
  29. package/lib/engine-components/api.d.ts +1 -0
  30. package/lib/engine-components/api.js +1 -0
  31. package/lib/engine-components/api.js.map +1 -1
  32. package/lib/engine-components/avatar/Avatar_Brain_LookAt.d.ts +1 -1
  33. package/lib/engine-components/avatar/Avatar_Brain_LookAt.js +1 -1
  34. package/lib/engine-components/avatar/Avatar_Brain_LookAt.js.map +1 -1
  35. package/lib/engine-components/avatar/Avatar_MouthShapes.js +1 -1
  36. package/lib/engine-components/avatar/Avatar_MouthShapes.js.map +1 -1
  37. package/lib/engine-components/avatar/Avatar_MustacheShake.js +1 -1
  38. package/lib/engine-components/avatar/Avatar_MustacheShake.js.map +1 -1
  39. package/lib/engine-components/codegen/components.d.ts +20 -17
  40. package/lib/engine-components/codegen/components.js +20 -17
  41. package/lib/engine-components/codegen/components.js.map +1 -1
  42. package/lib/engine-components/export/usdz/USDZExporter.js +2 -2
  43. package/lib/engine-components/export/usdz/USDZExporter.js.map +1 -1
  44. package/lib/engine-components/ui/EventSystem.js +2 -2
  45. package/lib/engine-components/ui/EventSystem.js.map +1 -1
  46. package/lib/engine-components/ui/InputField.js +2 -1
  47. package/lib/engine-components/ui/InputField.js.map +1 -1
  48. package/lib/engine-components/{WebARCameraBackground.d.ts → webxr/WebARCameraBackground.d.ts} +2 -2
  49. package/lib/engine-components/{WebARCameraBackground.js → webxr/WebARCameraBackground.js} +4 -4
  50. package/lib/engine-components/webxr/WebARCameraBackground.js.map +1 -0
  51. package/lib/engine-components/{WebARSessionRoot.d.ts → webxr/WebARSessionRoot.d.ts} +1 -1
  52. package/lib/engine-components/{WebARSessionRoot.js → webxr/WebARSessionRoot.js} +3 -3
  53. package/lib/engine-components/webxr/WebARSessionRoot.js.map +1 -0
  54. package/lib/engine-components/{WebXR.d.ts → webxr/WebXR.d.ts} +2 -2
  55. package/lib/engine-components/{WebXR.js → webxr/WebXR.js} +12 -12
  56. package/lib/engine-components/webxr/WebXR.js.map +1 -0
  57. package/lib/engine-components/{WebXRAvatar.d.ts → webxr/WebXRAvatar.d.ts} +3 -3
  58. package/lib/engine-components/{WebXRAvatar.js → webxr/WebXRAvatar.js} +7 -7
  59. package/lib/engine-components/webxr/WebXRAvatar.js.map +1 -0
  60. package/lib/engine-components/{WebXRController.d.ts → webxr/WebXRController.d.ts} +2 -2
  61. package/lib/engine-components/{WebXRController.js → webxr/WebXRController.js} +12 -12
  62. package/lib/engine-components/webxr/WebXRController.js.map +1 -0
  63. package/lib/engine-components/{WebXRGrabRendering.d.ts → webxr/WebXRGrabRendering.d.ts} +3 -3
  64. package/lib/engine-components/{WebXRGrabRendering.js → webxr/WebXRGrabRendering.js} +4 -4
  65. package/lib/engine-components/webxr/WebXRGrabRendering.js.map +1 -0
  66. package/lib/engine-components/{WebXRImageTracking.d.ts → webxr/WebXRImageTracking.d.ts} +1 -1
  67. package/lib/engine-components/{WebXRImageTracking.js → webxr/WebXRImageTracking.js} +5 -4
  68. package/lib/engine-components/webxr/WebXRImageTracking.js.map +1 -0
  69. package/lib/engine-components/webxr/WebXRPlaneTracking.d.ts +29 -0
  70. package/lib/engine-components/webxr/WebXRPlaneTracking.js +210 -0
  71. package/lib/engine-components/webxr/WebXRPlaneTracking.js.map +1 -0
  72. package/lib/engine-components/{WebXRRig.d.ts → webxr/WebXRRig.d.ts} +1 -1
  73. package/lib/engine-components/{WebXRRig.js → webxr/WebXRRig.js} +3 -3
  74. package/lib/engine-components/webxr/WebXRRig.js.map +1 -0
  75. package/lib/engine-components/{WebXRSync.d.ts → webxr/WebXRSync.d.ts} +3 -3
  76. package/lib/engine-components/{WebXRSync.js → webxr/WebXRSync.js} +8 -8
  77. package/lib/engine-components/webxr/WebXRSync.js.map +1 -0
  78. package/lib/engine-components/webxr/index.d.ts +2 -0
  79. package/lib/engine-components/webxr/index.js +3 -0
  80. package/lib/engine-components/webxr/index.js.map +1 -0
  81. package/lib/tsconfig.tsbuildinfo +1 -1
  82. package/package.json +1 -1
  83. package/src/engine/api.ts +1 -0
  84. package/src/engine/codegen/register_types.js +25 -19
  85. package/src/engine/engine_element_loading.ts +25 -10
  86. package/src/engine/engine_networking_auto.ts +1 -1
  87. package/src/engine-components/DragControls.ts +1 -1
  88. package/src/engine-components/Duplicatable.ts +1 -1
  89. package/src/engine-components/Light.ts +2 -2
  90. package/src/engine-components/PlayerColor.ts +1 -1
  91. package/src/engine-components/ShadowCatcher.ts +15 -0
  92. package/src/engine-components/SpectatorCamera.ts +2 -2
  93. package/src/engine-components/SyncedCamera.ts +2 -2
  94. package/src/engine-components/api.ts +1 -0
  95. package/src/engine-components/avatar/Avatar_Brain_LookAt.ts +1 -1
  96. package/src/engine-components/avatar/Avatar_MouthShapes.ts +1 -1
  97. package/src/engine-components/avatar/Avatar_MustacheShake.ts +1 -1
  98. package/src/engine-components/codegen/components.ts +20 -17
  99. package/src/engine-components/export/usdz/USDZExporter.ts +2 -2
  100. package/src/engine-components/ui/EventSystem.ts +2 -2
  101. package/src/engine-components/ui/InputField.ts +2 -1
  102. package/src/engine-components/{WebARCameraBackground.ts → webxr/WebARCameraBackground.ts} +4 -4
  103. package/src/engine-components/{WebARSessionRoot.ts → webxr/WebARSessionRoot.ts} +3 -3
  104. package/src/engine-components/{WebXR.ts → webxr/WebXR.ts} +15 -15
  105. package/src/engine-components/{WebXRAvatar.ts → webxr/WebXRAvatar.ts} +9 -9
  106. package/src/engine-components/{WebXRController.ts → webxr/WebXRController.ts} +13 -13
  107. package/src/engine-components/{WebXRGrabRendering.ts → webxr/WebXRGrabRendering.ts} +5 -5
  108. package/src/engine-components/{WebXRImageTracking.ts → webxr/WebXRImageTracking.ts} +5 -4
  109. package/src/engine-components/webxr/WebXRPlaneTracking.ts +254 -0
  110. package/src/engine-components/{WebXRRig.ts → webxr/WebXRRig.ts} +4 -4
  111. package/src/engine-components/{WebXRSync.ts → webxr/WebXRSync.ts} +8 -8
  112. package/src/engine-components/webxr/index.ts +2 -0
  113. package/lib/engine-components/WebARCameraBackground.js.map +0 -1
  114. package/lib/engine-components/WebARSessionRoot.js.map +0 -1
  115. package/lib/engine-components/WebXR.js.map +0 -1
  116. package/lib/engine-components/WebXRAvatar.js.map +0 -1
  117. package/lib/engine-components/WebXRController.js.map +0 -1
  118. package/lib/engine-components/WebXRGrabRendering.js.map +0 -1
  119. package/lib/engine-components/WebXRImageTracking.js.map +0 -1
  120. package/lib/engine-components/WebXRRig.js.map +0 -1
  121. package/lib/engine-components/WebXRSync.js.map +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@needle-tools/engine",
3
- "version": "3.2.4-alpha.2",
3
+ "version": "3.2.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",
package/src/engine/api.ts CHANGED
@@ -18,6 +18,7 @@ export * from "./engine_gltf";
18
18
  export * from "./engine_hot_reload";
19
19
  export * from "./engine_gameobject";
20
20
  export * from "./engine_networking";
21
+ export * from "./engine_networking_types";
21
22
  export { syncField } from "./engine_networking_auto";
22
23
  export * from "./engine_networking_files";
23
24
  export * from "./engine_networking_instantiate";
@@ -1,5 +1,5 @@
1
1
  import { TypeStore } from "./../engine_typestore"
2
-
2
+
3
3
  // Import types
4
4
  import { __Ignore } from "../../engine-components/codegen/components";
5
5
  import { AlignmentConstraint } from "../../engine-components/AlignmentConstraint";
@@ -10,7 +10,7 @@ import { AnimationTrackHandler } from "../../engine-components/timeline/Timeline
10
10
  import { Animator } from "../../engine-components/Animator";
11
11
  import { AnimatorController } from "../../engine-components/AnimatorController";
12
12
  import { Antialiasing } from "../../engine-components/postprocessing/Effects/Antialiasing";
13
- import { AttachedObject } from "../../engine-components/WebXRController";
13
+ import { AttachedObject } from "../../engine-components/webxr/WebXRController";
14
14
  import { AudioListener } from "../../engine-components/AudioListener";
15
15
  import { AudioSource } from "../../engine-components/AudioSource";
16
16
  import { AudioTrackHandler } from "../../engine-components/timeline/TimelineTracks";
@@ -21,11 +21,12 @@ import { Avatar_POI } from "../../engine-components/avatar/Avatar_Brain_LookAt";
21
21
  import { AvatarBlink_Simple } from "../../engine-components/avatar/AvatarBlink_Simple";
22
22
  import { AvatarEyeLook_Rotation } from "../../engine-components/avatar/AvatarEyeLook_Rotation";
23
23
  import { AvatarLoader } from "../../engine-components/AvatarLoader";
24
- import { AvatarMarker } from "../../engine-components/WebXRAvatar";
24
+ import { AvatarMarker } from "../../engine-components/webxr/WebXRAvatar";
25
25
  import { AvatarModel } from "../../engine-components/AvatarLoader";
26
26
  import { AxesHelper } from "../../engine-components/AxesHelper";
27
27
  import { BaseUIComponent } from "../../engine-components/ui/BaseUIComponent";
28
28
  import { BasicIKConstraint } from "../../engine-components/BasicIKConstraint";
29
+ import { Behaviour } from "../../engine-components/Component";
29
30
  import { Bloom } from "../../engine-components/postprocessing/Effects/Bloom";
30
31
  import { BoxCollider } from "../../engine-components/Collider";
31
32
  import { BoxGizmo } from "../../engine-components/Gizmos";
@@ -43,6 +44,7 @@ import { Collider } from "../../engine-components/Collider";
43
44
  import { ColorAdjustments } from "../../engine-components/postprocessing/Effects/ColorAdjustments";
44
45
  import { ColorBySpeedModule } from "../../engine-components/ParticleSystemModules";
45
46
  import { ColorOverLifetimeModule } from "../../engine-components/ParticleSystemModules";
47
+ import { Component } from "../../engine-components/Component";
46
48
  import { ControlTrackHandler } from "../../engine-components/timeline/TimelineTracks";
47
49
  import { Deletable } from "../../engine-components/DeleteBox";
48
50
  import { DeleteBox } from "../../engine-components/DeleteBox";
@@ -146,7 +148,7 @@ import { SubEmitterSystem } from "../../engine-components/ParticleSystem";
146
148
  import { SyncedCamera } from "../../engine-components/SyncedCamera";
147
149
  import { SyncedRoom } from "../../engine-components/SyncedRoom";
148
150
  import { SyncedTransform } from "../../engine-components/SyncedTransform";
149
- import { TeleportTarget } from "../../engine-components/WebXRController";
151
+ import { TeleportTarget } from "../../engine-components/webxr/WebXRController";
150
152
  import { TestRunner } from "../../engine-components/TestRunner";
151
153
  import { TestSimulateUserData } from "../../engine-components/TestRunner";
152
154
  import { Text } from "../../engine-components/ui/Text";
@@ -168,23 +170,24 @@ import { Voip } from "../../engine-components/Voip";
168
170
  import { Volume } from "../../engine-components/postprocessing/Volume";
169
171
  import { VolumeParameter } from "../../engine-components/postprocessing/VolumeParameter";
170
172
  import { VolumeProfile } from "../../engine-components/postprocessing/VolumeProfile";
171
- import { VRUserState } from "../../engine-components/WebXRSync";
172
- import { WebAR } from "../../engine-components/WebXR";
173
- import { WebARCameraBackground } from "../../engine-components/WebARCameraBackground";
174
- import { WebARSessionRoot } from "../../engine-components/WebARSessionRoot";
175
- import { WebXR } from "../../engine-components/WebXR";
176
- import { WebXRAvatar } from "../../engine-components/WebXRAvatar";
177
- import { WebXRController } from "../../engine-components/WebXRController";
178
- import { WebXRImageTracking } from "../../engine-components/WebXRImageTracking";
179
- import { WebXRImageTrackingModel } from "../../engine-components/WebXRImageTracking";
180
- import { WebXRSync } from "../../engine-components/WebXRSync";
181
- import { WebXRTrackedImage } from "../../engine-components/WebXRImageTracking";
173
+ import { VRUserState } from "../../engine-components/webxr/WebXRSync";
174
+ import { WebAR } from "../../engine-components/webxr/WebXR";
175
+ import { WebARCameraBackground } from "../../engine-components/webxr/WebARCameraBackground";
176
+ import { WebARSessionRoot } from "../../engine-components/webxr/WebARSessionRoot";
177
+ import { WebXR } from "../../engine-components/webxr/WebXR";
178
+ import { WebXRAvatar } from "../../engine-components/webxr/WebXRAvatar";
179
+ import { WebXRController } from "../../engine-components/webxr/WebXRController";
180
+ import { WebXRImageTracking } from "../../engine-components/webxr/WebXRImageTracking";
181
+ import { WebXRImageTrackingModel } from "../../engine-components/webxr/WebXRImageTracking";
182
+ import { WebXRPlaneTracking } from "../../engine-components/webxr/WebXRPlaneTracking";
183
+ import { WebXRSync } from "../../engine-components/webxr/WebXRSync";
184
+ import { WebXRTrackedImage } from "../../engine-components/webxr/WebXRImageTracking";
182
185
  import { XRFlag } from "../../engine-components/XRFlag";
183
- import { XRGrabModel } from "../../engine-components/WebXRGrabRendering";
184
- import { XRGrabRendering } from "../../engine-components/WebXRGrabRendering";
185
- import { XRRig } from "../../engine-components/WebXRRig";
186
+ import { XRGrabModel } from "../../engine-components/webxr/WebXRGrabRendering";
187
+ import { XRGrabRendering } from "../../engine-components/webxr/WebXRGrabRendering";
188
+ import { XRRig } from "../../engine-components/webxr/WebXRRig";
186
189
  import { XRState } from "../../engine-components/XRFlag";
187
-
190
+
188
191
  // Register types
189
192
  TypeStore.add("__Ignore", __Ignore);
190
193
  TypeStore.add("AlignmentConstraint", AlignmentConstraint);
@@ -211,6 +214,7 @@ TypeStore.add("AvatarModel", AvatarModel);
211
214
  TypeStore.add("AxesHelper", AxesHelper);
212
215
  TypeStore.add("BaseUIComponent", BaseUIComponent);
213
216
  TypeStore.add("BasicIKConstraint", BasicIKConstraint);
217
+ TypeStore.add("Behaviour", Behaviour);
214
218
  TypeStore.add("Bloom", Bloom);
215
219
  TypeStore.add("BoxCollider", BoxCollider);
216
220
  TypeStore.add("BoxGizmo", BoxGizmo);
@@ -228,6 +232,7 @@ TypeStore.add("Collider", Collider);
228
232
  TypeStore.add("ColorAdjustments", ColorAdjustments);
229
233
  TypeStore.add("ColorBySpeedModule", ColorBySpeedModule);
230
234
  TypeStore.add("ColorOverLifetimeModule", ColorOverLifetimeModule);
235
+ TypeStore.add("Component", Component);
231
236
  TypeStore.add("ControlTrackHandler", ControlTrackHandler);
232
237
  TypeStore.add("Deletable", Deletable);
233
238
  TypeStore.add("DeleteBox", DeleteBox);
@@ -362,6 +367,7 @@ TypeStore.add("WebXRAvatar", WebXRAvatar);
362
367
  TypeStore.add("WebXRController", WebXRController);
363
368
  TypeStore.add("WebXRImageTracking", WebXRImageTracking);
364
369
  TypeStore.add("WebXRImageTrackingModel", WebXRImageTrackingModel);
370
+ TypeStore.add("WebXRPlaneTracking", WebXRPlaneTracking);
365
371
  TypeStore.add("WebXRSync", WebXRSync);
366
372
  TypeStore.add("WebXRTrackedImage", WebXRTrackedImage);
367
373
  TypeStore.add("XRFlag", XRFlag);
@@ -8,6 +8,8 @@ import { hasProLicense } from "./engine_license";
8
8
  const debug = getParam("debugloadingbar");
9
9
  const debugRendering = getParam("debugloadingbarrendering");
10
10
 
11
+ declare type LoadingStyleOption = "dark" | "light";
12
+
11
13
  export class LoadingElementOptions {
12
14
  className?: string;
13
15
  additionalClasses?: string[];
@@ -172,6 +174,10 @@ export class EngineLoadingView implements ILoadingViewHandler {
172
174
  private createLoadingElement(existing?: HTMLElement): HTMLElement {
173
175
  if (debug && !existing) console.log("Creating loading element");
174
176
  this._loadingElement = existing || document.createElement("div");
177
+
178
+ const loadingStyle: LoadingStyleOption = this._element.getAttribute("loading-style") as LoadingStyleOption;
179
+ console.log(loadingStyle);
180
+
175
181
  const hasLicense = hasProLicense();
176
182
  if (!existing) {
177
183
  this._loadingElement.style.position = "fixed";
@@ -179,7 +185,10 @@ export class EngineLoadingView implements ILoadingViewHandler {
179
185
  this._loadingElement.style.height = "100%";
180
186
  this._loadingElement.style.left = "0";
181
187
  this._loadingElement.style.top = "0";
182
- this._loadingElement.style.backgroundColor = "#000000";
188
+ if (loadingStyle === "light")
189
+ this._loadingElement.style.backgroundColor = "#ddd";
190
+ else
191
+ this._loadingElement.style.backgroundColor = "#000";
183
192
  this._loadingElement.style.display = "flex";
184
193
  this._loadingElement.style.alignItems = "center";
185
194
  this._loadingElement.style.justifyContent = "center";
@@ -187,6 +196,10 @@ export class EngineLoadingView implements ILoadingViewHandler {
187
196
  this._loadingElement.style.flexDirection = "column";
188
197
  this._loadingElement.style.pointerEvents = "none";
189
198
  this._loadingElement.style.color = "white";
199
+ if (loadingStyle === "light")
200
+ this._loadingElement.style.color = "rgba(0,0,0,.8)";
201
+ else
202
+ this._loadingElement.style.color = "rgba(255,255,255,.5)";
190
203
  if (hasLicense && this._element) {
191
204
  const loadingBackgroundColor = this._element.getAttribute("loading-background-color");
192
205
  if (loadingBackgroundColor) {
@@ -213,7 +226,10 @@ export class EngineLoadingView implements ILoadingViewHandler {
213
226
  loadingBarContainer.style.display = "flex";
214
227
  loadingBarContainer.style.width = maxWidth + "%";
215
228
  loadingBarContainer.style.height = "2px";
216
- loadingBarContainer.style.background = "rgba(255,255,255,.2)"
229
+ if (loadingStyle === "light")
230
+ loadingBarContainer.style.backgroundColor = "rgba(0,0,0,.2)"
231
+ else
232
+ loadingBarContainer.style.backgroundColor = "rgba(255,255,255,.2)"
217
233
  // loadingBarContainer.style.alignItems = "center";
218
234
  this._loadingElement.appendChild(loadingBarContainer);
219
235
 
@@ -244,20 +260,20 @@ export class EngineLoadingView implements ILoadingViewHandler {
244
260
  return Mathf.lerp(maxWidth * .5, 100 - maxWidth * .5, t) + "%";
245
261
  }
246
262
  this._loadingBar.style.background =
247
- `linear-gradient(90deg, #02022B ${getGradientPos(0)}, #0BA398 ${getGradientPos(.4)}, #99CC33 ${getGradientPos(.5)}, #D7DB0A ${getGradientPos(1)})`;
263
+ `linear-gradient(90deg, #02022B ${getGradientPos(0)}, #0BA398 ${getGradientPos(.4)}, #99CC33 ${getGradientPos(.5)}, #D7DB0A ${getGradientPos(1)})`;
248
264
  this._loadingBar.style.backgroundAttachment = "fixed";
249
265
  this._loadingBar.style.width = "0%";
250
266
  this._loadingBar.style.height = "100%";
251
- if(hasLicense && this._element){
267
+ if (hasLicense && this._element) {
252
268
  const primaryColor = this._element.getAttribute("primary-color");
253
269
  const secondaryColor = this._element.getAttribute("secondary-color");
254
- if(primaryColor && secondaryColor){
270
+ if (primaryColor && secondaryColor) {
255
271
  this._loadingBar.style.background = `linear-gradient(90deg, ${primaryColor} ${getGradientPos(0)}, ${secondaryColor} ${getGradientPos(1)})`;
256
272
  }
257
- else if(primaryColor){
273
+ else if (primaryColor) {
258
274
  this._loadingBar.style.background = primaryColor;
259
275
  }
260
- else if(secondaryColor){
276
+ else if (secondaryColor) {
261
277
  this._loadingBar.style.background = secondaryColor;
262
278
  }
263
279
  }
@@ -273,16 +289,15 @@ export class EngineLoadingView implements ILoadingViewHandler {
273
289
  messageContainer.style.display = "flex";
274
290
  messageContainer.style.fontSize = ".8em";
275
291
  messageContainer.style.paddingTop = ".5em";
276
- messageContainer.style.color = "rgba(255,255,255,.5)";
277
292
  messageContainer.style.fontWeight = "200";
278
293
  messageContainer.style.fontFamily = "Roboto, sans-serif";
279
294
  // messageContainer.style.border = "1px solid rgba(255,255,255,.1)";
280
295
  messageContainer.style.justifyContent = "center";
281
296
  this._loadingElement.appendChild(messageContainer);
282
297
 
283
- if(hasLicense && this._element){
298
+ if (hasLicense && this._element) {
284
299
  const loadingTextColor = this._element.getAttribute("loading-text-color");
285
- if(loadingTextColor){
300
+ if (loadingTextColor) {
286
301
  messageContainer.style.color = loadingTextColor;
287
302
  }
288
303
  }
@@ -121,8 +121,8 @@ class ComponentPropertiesSyncer {
121
121
  this._isReceiving = true;
122
122
  for (const key in val) {
123
123
  if (key === "guid") continue;
124
+ // TODO: maybe use serializable here?!
124
125
  const value = val[key];
125
- // console.log("SET", key, value, this.comp.guid, this.comp);
126
126
  this.comp[key] = value;
127
127
  }
128
128
  }
@@ -4,7 +4,7 @@ import { IPointerDownHandler, IPointerEnterHandler, IPointerExitHandler, IPointe
4
4
  import { Context } from "../engine/engine_setup";
5
5
  import { Interactable, UsageMarker } from "./Interactable";
6
6
  import { Rigidbody } from "./RigidBody";
7
- import { WebXR } from "./WebXR";
7
+ import { WebXR } from "./webxr/WebXR";
8
8
  import { Avatar_POI } from "./avatar/Avatar_Brain_LookAt";
9
9
  import { RaycastOptions } from "../engine/engine_physics";
10
10
  import { getWorldPosition, setWorldPosition } from "../engine/engine_three_utils";
@@ -1,5 +1,5 @@
1
1
  import { Behaviour, GameObject } from "./Component";
2
- import { WebXRController, ControllerEvents } from "./WebXRController";
2
+ import { WebXRController, ControllerEvents } from "./webxr/WebXRController";
3
3
  import { DragControls, DragEvents } from "./DragControls";
4
4
  import { Interactable } from "./Interactable";
5
5
  import { Animation } from "./Animation";
@@ -5,8 +5,8 @@ import { setWorldPositionXYZ } from "../engine/engine_three_utils";
5
5
  import { FrameEvent } from "../engine/engine_setup";
6
6
  import { serializable } from "../engine/engine_serialization_decorator";
7
7
  import { Color, DirectionalLight, OrthographicCamera } from "three";
8
- import { WebXR, WebXREvent } from "./WebXR";
9
- import { WebARSessionRoot } from "./WebARSessionRoot";
8
+ import { WebXR, WebXREvent } from "./webxr/WebXR";
9
+ import { WebARSessionRoot } from "./webxr/WebARSessionRoot";
10
10
  import { ILight } from "../engine/engine_types";
11
11
  import { Mathf } from "../engine/engine_math";
12
12
  import { isLocalNetwork } from "../engine/engine_networking_utils";
@@ -1,7 +1,7 @@
1
1
  import { RoomEvents } from "../engine/engine_networking";
2
2
  import { Behaviour, GameObject } from "./Component";
3
3
  import * as THREE from "three";
4
- import { AvatarMarker } from "./WebXRAvatar";
4
+ import { AvatarMarker } from "./webxr/WebXRAvatar";
5
5
  import { WaitForSeconds } from "../engine/engine_coroutine";
6
6
 
7
7
 
@@ -7,6 +7,7 @@ import { serializable } from "../engine/engine_serialization_decorator";
7
7
  enum ShadowMode {
8
8
  ShadowMask = 0,
9
9
  Additive = 1,
10
+ Occluder = 2,
10
11
  }
11
12
 
12
13
  export class ShadowCatcher extends Behaviour {
@@ -28,6 +29,9 @@ export class ShadowCatcher extends Behaviour {
28
29
  case ShadowMode.Additive:
29
30
  this.applyLightBlendMaterial();
30
31
  break;
32
+ case ShadowMode.Occluder:
33
+ this.applyOccluderMaterial();
34
+ break;
31
35
  }
32
36
 
33
37
  }
@@ -88,6 +92,17 @@ export class ShadowCatcher extends Behaviour {
88
92
  }
89
93
  }
90
94
 
95
+ applyOccluderMaterial() {
96
+ const renderer = GameObject.getComponent(this.gameObject, Renderer);
97
+ if (renderer) {
98
+ const material = renderer.sharedMaterial;
99
+ material.depthWrite = true;
100
+ material.stencilWrite = true;
101
+ material.colorWrite = false;
102
+ this.gameObject.renderOrder = -100;
103
+ }
104
+ }
105
+
91
106
  private applyMaterialOptions(material: Material) {
92
107
  if (material) {
93
108
  material.depthWrite = false;
@@ -2,8 +2,8 @@ import { Behaviour, Component, GameObject } from "./Component";
2
2
  import { Camera } from "./Camera";
3
3
  import * as THREE from "three";
4
4
  import { OrbitControls } from "./OrbitControls";
5
- import { WebXR, WebXREvent } from "./WebXR";
6
- import { AvatarMarker } from "./WebXRAvatar";
5
+ import { WebXR, WebXREvent } from "./webxr/WebXR";
6
+ import { AvatarMarker } from "./webxr/WebXRAvatar";
7
7
  import { XRStateFlag } from "./XRFlag";
8
8
  import { SmoothFollow } from "./SmoothFollow";
9
9
  import { Object3D } from "three";
@@ -2,7 +2,7 @@ import { NetworkConnection } from "../engine/engine_networking";
2
2
  import { Behaviour, GameObject } from "./Component";
3
3
  import { Camera } from "./Camera";
4
4
  import * as utils from "../engine/engine_three_utils"
5
- import { WebXR } from "./WebXR";
5
+ import { WebXR } from "./webxr/WebXR";
6
6
  import { Builder } from "flatbuffers";
7
7
  import { SyncedCameraModel } from "../engine-schemes/synced-camera-model";
8
8
  import { Vec3 } from "../engine-schemes/vec3";
@@ -10,7 +10,7 @@ import { registerType } from "../engine-schemes/schemes";
10
10
  import { InstancingUtil } from "../engine/engine_instancing";
11
11
  import { serializable } from "../engine/engine_serialization_decorator";
12
12
  import { Object3D } from "three";
13
- import { AvatarMarker } from "./WebXRAvatar";
13
+ import { AvatarMarker } from "./webxr/WebXRAvatar";
14
14
  import { AssetReference } from "../engine/engine_addressables";
15
15
  import { ViewDevice } from "../engine/engine_playerview";
16
16
  import { InstantiateOptions } from "../engine/engine_gameobject";
@@ -9,5 +9,6 @@ export * from "./export"
9
9
  export * from "./postprocessing"
10
10
  export * from "./timeline"
11
11
  export * from "./ui"
12
+ export * from "./webxr"
12
13
 
13
14
  export { ClearFlags } from "./Camera"
@@ -1,7 +1,7 @@
1
1
  import * as THREE from "three";
2
2
  import { TypeStore } from "../../engine/engine_typestore";
3
3
  import { Behaviour, GameObject } from "../Component";
4
- import { AvatarMarker } from "../WebXRAvatar";
4
+ import { AvatarMarker } from "../webxr/WebXRAvatar";
5
5
  import * as utils from "../../engine/engine_three_utils";
6
6
  import { OwnershipModel } from "../../engine/engine_networking";
7
7
  import { Int8BufferAttribute } from "three";
@@ -1,6 +1,6 @@
1
1
  import { Behaviour, GameObject } from "../Component";
2
2
  import { Voip } from "../Voip";
3
- import { AvatarMarker } from "../WebXRAvatar";
3
+ import { AvatarMarker } from "../webxr/WebXRAvatar";
4
4
  import * as utils from "../../engine/engine_utils";
5
5
  import { Object3D } from "three";
6
6
  import { serializable } from "../../engine/engine_serialization_decorator";
@@ -1,6 +1,6 @@
1
1
  import { Behaviour, GameObject } from "../Component";
2
2
  import { Voip } from "../Voip";
3
- import { AvatarMarker } from "../WebXRAvatar";
3
+ import { AvatarMarker } from "../webxr/WebXRAvatar";
4
4
 
5
5
  export class Avatar_MustacheShake extends Behaviour {
6
6
  private voip: Voip | null = null;
@@ -8,7 +8,7 @@ export { AnimationTrackHandler } from "../timeline/TimelineTracks";
8
8
  export { Animator } from "../Animator";
9
9
  export { AnimatorController } from "../AnimatorController";
10
10
  export { Antialiasing } from "../postprocessing/Effects/Antialiasing";
11
- export { AttachedObject } from "../WebXRController";
11
+ export { AttachedObject } from "../webxr/WebXRController";
12
12
  export { AudioListener } from "../AudioListener";
13
13
  export { AudioSource } from "../AudioSource";
14
14
  export { AudioTrackHandler } from "../timeline/TimelineTracks";
@@ -19,11 +19,12 @@ export { Avatar_POI } from "../avatar/Avatar_Brain_LookAt";
19
19
  export { AvatarBlink_Simple } from "../avatar/AvatarBlink_Simple";
20
20
  export { AvatarEyeLook_Rotation } from "../avatar/AvatarEyeLook_Rotation";
21
21
  export { AvatarLoader } from "../AvatarLoader";
22
- export { AvatarMarker } from "../WebXRAvatar";
22
+ export { AvatarMarker } from "../webxr/WebXRAvatar";
23
23
  export { AvatarModel } from "../AvatarLoader";
24
24
  export { AxesHelper } from "../AxesHelper";
25
25
  export { BaseUIComponent } from "../ui/BaseUIComponent";
26
26
  export { BasicIKConstraint } from "../BasicIKConstraint";
27
+ export { Behaviour } from "../Component";
27
28
  export { Bloom } from "../postprocessing/Effects/Bloom";
28
29
  export { BoxCollider } from "../Collider";
29
30
  export { BoxGizmo } from "../Gizmos";
@@ -41,6 +42,7 @@ export { Collider } from "../Collider";
41
42
  export { ColorAdjustments } from "../postprocessing/Effects/ColorAdjustments";
42
43
  export { ColorBySpeedModule } from "../ParticleSystemModules";
43
44
  export { ColorOverLifetimeModule } from "../ParticleSystemModules";
45
+ export { Component } from "../Component";
44
46
  export { ControlTrackHandler } from "../timeline/TimelineTracks";
45
47
  export { Deletable } from "../DeleteBox";
46
48
  export { DeleteBox } from "../DeleteBox";
@@ -141,7 +143,7 @@ export { SubEmitterSystem } from "../ParticleSystem";
141
143
  export { SyncedCamera } from "../SyncedCamera";
142
144
  export { SyncedRoom } from "../SyncedRoom";
143
145
  export { SyncedTransform } from "../SyncedTransform";
144
- export { TeleportTarget } from "../WebXRController";
146
+ export { TeleportTarget } from "../webxr/WebXRController";
145
147
  export { TestRunner } from "../TestRunner";
146
148
  export { TestSimulateUserData } from "../TestRunner";
147
149
  export { Text } from "../ui/Text";
@@ -163,19 +165,20 @@ export { Voip } from "../Voip";
163
165
  export { Volume } from "../postprocessing/Volume";
164
166
  export { VolumeParameter } from "../postprocessing/VolumeParameter";
165
167
  export { VolumeProfile } from "../postprocessing/VolumeProfile";
166
- export { VRUserState } from "../WebXRSync";
167
- export { WebAR } from "../WebXR";
168
- export { WebARCameraBackground } from "../WebARCameraBackground";
169
- export { WebARSessionRoot } from "../WebARSessionRoot";
170
- export { WebXR } from "../WebXR";
171
- export { WebXRAvatar } from "../WebXRAvatar";
172
- export { WebXRController } from "../WebXRController";
173
- export { WebXRImageTracking } from "../WebXRImageTracking";
174
- export { WebXRImageTrackingModel } from "../WebXRImageTracking";
175
- export { WebXRSync } from "../WebXRSync";
176
- export { WebXRTrackedImage } from "../WebXRImageTracking";
168
+ export { VRUserState } from "../webxr/WebXRSync";
169
+ export { WebAR } from "../webxr/WebXR";
170
+ export { WebARCameraBackground } from "../webxr/WebARCameraBackground";
171
+ export { WebARSessionRoot } from "../webxr/WebARSessionRoot";
172
+ export { WebXR } from "../webxr/WebXR";
173
+ export { WebXRAvatar } from "../webxr/WebXRAvatar";
174
+ export { WebXRController } from "../webxr/WebXRController";
175
+ export { WebXRImageTracking } from "../webxr/WebXRImageTracking";
176
+ export { WebXRImageTrackingModel } from "../webxr/WebXRImageTracking";
177
+ export { WebXRPlaneTracking } from "../webxr/WebXRPlaneTracking";
178
+ export { WebXRSync } from "../webxr/WebXRSync";
179
+ export { WebXRTrackedImage } from "../webxr/WebXRImageTracking";
177
180
  export { XRFlag } from "../XRFlag";
178
- export { XRGrabModel } from "../WebXRGrabRendering";
179
- export { XRGrabRendering } from "../WebXRGrabRendering";
180
- export { XRRig } from "../WebXRRig";
181
+ export { XRGrabModel } from "../webxr/WebXRGrabRendering";
182
+ export { XRGrabRendering } from "../webxr/WebXRGrabRendering";
183
+ export { XRRig } from "../webxr/WebXRRig";
181
184
  export { XRState } from "../XRFlag";
@@ -8,11 +8,11 @@ import { getFormattedDate } from "./utils/timeutils";
8
8
  import { registerAnimatorsImplictly } from "./utils/animationutils";
9
9
  import { IUSDZExporterExtension } from "./Extension";
10
10
  import { Behaviour, GameObject } from "../../Component";
11
- import { WebXR } from "../../WebXR"
11
+ import { WebXR } from "../../webxr/WebXR"
12
12
  import { serializable } from "../../../engine/engine_serialization";
13
13
  import { showBalloonWarning } from "../../../engine/debug/debug";
14
14
  import { Context } from "../../../engine/engine_setup";
15
- import { WebARSessionRoot } from "../../WebARSessionRoot";
15
+ import { WebARSessionRoot } from "../../webxr/WebARSessionRoot";
16
16
 
17
17
  const debug = getParam("debugusdz");
18
18
 
@@ -1,7 +1,7 @@
1
1
  import { RaycastOptions } from "../../engine/engine_physics";
2
2
  import { Behaviour, Component, GameObject } from "../Component";
3
- import { WebXR } from "../WebXR";
4
- import { ControllerEvents, WebXRController } from "../WebXRController";
3
+ import { WebXR } from "../webxr/WebXR";
4
+ import { ControllerEvents, WebXRController } from "../webxr/WebXRController";
5
5
  import * as ThreeMeshUI from 'three-mesh-ui'
6
6
  import { Context } from "../../engine/engine_setup";
7
7
  import { OrbitControls } from "../OrbitControls";
@@ -144,7 +144,8 @@ export class InputField extends Behaviour implements IPointerEventHandler {
144
144
  if (this.placeholder && (!this.textComponent || this.textComponent.text.length <= 0))
145
145
  GameObject.setActive(this.placeholder.gameObject, true);
146
146
 
147
- this.onEndEdit?.invoke();
147
+ if (InputField.htmlField)
148
+ this.onEndEdit?.invoke(InputField.htmlField.value);
148
149
  }
149
150
 
150
151
 
@@ -1,7 +1,7 @@
1
- import { Behaviour } from "./Component";
2
- import { serializable } from "../engine/engine_serialization_decorator";
3
- import { RGBAColor } from "../engine-components/js-extensions/RGBAColor"
4
- import { WebXR } from "../engine-components/WebXR";
1
+ import { Behaviour } from "../Component";
2
+ import { serializable } from "../../engine/engine_serialization_decorator";
3
+ import { RGBAColor } from "../js-extensions/RGBAColor"
4
+ import { WebXR } from "./WebXR";
5
5
  import {
6
6
  Camera as ThreeCamera,
7
7
  Scene,
@@ -1,8 +1,8 @@
1
- import { Behaviour, GameObject } from "./Component";
1
+ import { Behaviour, GameObject } from "../Component";
2
2
  import { Matrix4, Object3D } from "three";
3
3
  import { WebAR, WebXR } from "./WebXR";
4
- import { InstancingUtil } from "../engine/engine_instancing";
5
- import { serializable } from "../engine/engine_serialization_decorator";
4
+ import { InstancingUtil } from "../../engine/engine_instancing";
5
+ import { serializable } from "../../engine/engine_serialization_decorator";
6
6
 
7
7
  // https://github.com/takahirox/takahirox.github.io/blob/master/js.mmdeditor/examples/js/controls/DeviceOrientationControls.js
8
8
 
@@ -1,22 +1,22 @@
1
1
  import { ArrayCamera, Color, Euler, EventDispatcher, Group, Matrix4, Mesh, MeshBasicMaterial, Object3D, Quaternion, RingGeometry, Texture, Vector3 } from 'three';
2
- import { ARButton } from '../include/three/ARButton.js';
3
- import { VRButton } from '../include/three/VRButton.js';
4
-
5
- import { AssetReference } from "../engine/engine_addressables";
6
- import { serializable } from "../engine/engine_serialization_decorator";
7
- import { XRSessionMode } from "../engine/engine_setup";
8
- import { getWorldPosition, getWorldQuaternion, setWorldPosition, setWorldQuaternion } from "../engine/engine_three_utils";
9
- import { INeedleEngineComponent } from "../engine/engine_types";
10
- import { getParam, isMozillaXR, setOrAddParamsToUrl } from "../engine/engine_utils";
11
-
12
- import { Behaviour, GameObject } from "./Component";
13
- import { noVoip } from "./Voip";
2
+ import { ARButton } from '../../include/three/ARButton.js';
3
+ import { VRButton } from '../../include/three/VRButton.js';
4
+
5
+ import { AssetReference } from "../../engine/engine_addressables";
6
+ import { serializable } from "../../engine/engine_serialization_decorator";
7
+ import { XRSessionMode } from "../../engine/engine_setup";
8
+ import { getWorldPosition, getWorldQuaternion, setWorldPosition, setWorldQuaternion } from "../../engine/engine_three_utils";
9
+ import { INeedleEngineComponent } from "../../engine/engine_types";
10
+ import { getParam, isMozillaXR, setOrAddParamsToUrl } from "../../engine/engine_utils";
11
+
12
+ import { Behaviour, GameObject } from "../Component";
13
+ import { noVoip } from "../Voip";
14
14
  import { WebARSessionRoot } from "./WebARSessionRoot";
15
15
  import { ControllerType, WebXRController } from "./WebXRController";
16
16
  import { XRRig } from "./WebXRRig";
17
17
  import { WebXRSync } from "./WebXRSync";
18
- import { XRFlag, XRState, XRStateFlag } from "./XRFlag";
19
- import { showBalloonWarning } from '../engine/debug';
18
+ import { XRFlag, XRState, XRStateFlag } from "../XRFlag";
19
+ import { showBalloonWarning } from '../../engine/debug';
20
20
 
21
21
 
22
22
  export async function detectARSupport() {
@@ -80,7 +80,7 @@ export class WebXR extends Behaviour {
80
80
  public static get IsVRSupported(): boolean { return vrSupported; }
81
81
 
82
82
  private static _optionalFeatures_VR: string[] = ['local-floor', 'bounded-floor', 'hand-tracking', 'high-fixed-foveation-level', 'layers'];
83
- private static _optionalFeatures_AR: string[] = ['plane-detection', 'anchors', 'local-floor', 'hand-tracking', 'layers'];
83
+ private static _optionalFeatures_AR: string[] = ['anchors', 'local-floor', 'hand-tracking', 'layers'];
84
84
  public static get OptionalFeatures_VR(): string[] { return this._optionalFeatures_VR; }
85
85
  public static get OptionalFeatures_AR(): string[] { return this._optionalFeatures_AR; }
86
86
 
@@ -1,16 +1,16 @@
1
- import { Behaviour, GameObject } from "./Component";
1
+ import { Behaviour, GameObject } from "../Component";
2
2
  import { WebXR } from "./WebXR";
3
3
  import { Quaternion, Vector3 } from "three";
4
- import { AvatarLoader } from "./AvatarLoader";
5
- import { XRFlag, XRStateFlag } from "./XRFlag";
6
- import { Avatar_POI } from "./avatar/Avatar_Brain_LookAt";
7
- import { Context } from "../engine/engine_setup";
8
- import { AssetReference } from "../engine/engine_addressables";
4
+ import { AvatarLoader } from "../AvatarLoader";
5
+ import { XRFlag, XRStateFlag } from "../XRFlag";
6
+ import { Avatar_POI } from "../avatar/Avatar_Brain_LookAt";
7
+ import { Context } from "../../engine/engine_setup";
8
+ import { AssetReference } from "../../engine/engine_addressables";
9
9
  import { Object3D } from "three";
10
10
  import { VRUserState } from "./WebXRSync";
11
- import { getParam } from "../engine/engine_utils";
12
- import { ViewDevice } from "../engine/engine_playerview";
13
- import { InstancingUtil } from "../engine/engine_instancing";
11
+ import { getParam } from "../../engine/engine_utils";
12
+ import { ViewDevice } from "../../engine/engine_playerview";
13
+ import { InstancingUtil } from "../../engine/engine_instancing";
14
14
 
15
15
  export const debug = getParam("debugavatar");
16
16