x_ite 16.5.0 → 16.6.0

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 (57) hide show
  1. package/README.md +6 -6
  2. package/dist/assets/components/AnnotationComponent.js +1 -1
  3. package/dist/assets/components/AnnotationComponent.min.js +1 -1
  4. package/dist/assets/components/CADGeometryComponent.js +1 -1
  5. package/dist/assets/components/CADGeometryComponent.min.js +1 -1
  6. package/dist/assets/components/CubeMapTexturingComponent.js +1 -1
  7. package/dist/assets/components/CubeMapTexturingComponent.min.js +1 -1
  8. package/dist/assets/components/DISComponent.js +1 -1
  9. package/dist/assets/components/DISComponent.min.js +1 -1
  10. package/dist/assets/components/EventUtilitiesComponent.js +1 -1
  11. package/dist/assets/components/EventUtilitiesComponent.min.js +1 -1
  12. package/dist/assets/components/GaussianSplatsComponent.js +1 -1
  13. package/dist/assets/components/GaussianSplatsComponent.min.js +1 -1
  14. package/dist/assets/components/Geometry2DComponent.js +1 -1
  15. package/dist/assets/components/Geometry2DComponent.min.js +1 -1
  16. package/dist/assets/components/Geometry3DComponent.js +1 -1
  17. package/dist/assets/components/Geometry3DComponent.min.js +1 -1
  18. package/dist/assets/components/GeospatialComponent.js +18 -18
  19. package/dist/assets/components/GeospatialComponent.min.js +2 -2
  20. package/dist/assets/components/HAnimComponent.js +677 -396
  21. package/dist/assets/components/HAnimComponent.min.js +2 -2
  22. package/dist/assets/components/KeyDeviceSensorComponent.js +1 -1
  23. package/dist/assets/components/KeyDeviceSensorComponent.min.js +1 -1
  24. package/dist/assets/components/LayoutComponent.js +1 -1
  25. package/dist/assets/components/LayoutComponent.min.js +1 -1
  26. package/dist/assets/components/NURBSComponent.js +1 -1
  27. package/dist/assets/components/NURBSComponent.min.js +1 -1
  28. package/dist/assets/components/ParticleSystemsComponent.js +1 -1
  29. package/dist/assets/components/ParticleSystemsComponent.min.js +1 -1
  30. package/dist/assets/components/PickingComponent.js +1 -1
  31. package/dist/assets/components/PickingComponent.min.js +1 -1
  32. package/dist/assets/components/RigidBodyPhysicsComponent.js +1 -1
  33. package/dist/assets/components/RigidBodyPhysicsComponent.min.js +1 -1
  34. package/dist/assets/components/ScriptingComponent.js +1 -1
  35. package/dist/assets/components/ScriptingComponent.min.js +1 -1
  36. package/dist/assets/components/TextComponent.js +1 -1
  37. package/dist/assets/components/TextComponent.min.js +1 -1
  38. package/dist/assets/components/TextureProjectionComponent.js +1 -1
  39. package/dist/assets/components/TextureProjectionComponent.min.js +1 -1
  40. package/dist/assets/components/Texturing3DComponent.js +9 -9
  41. package/dist/assets/components/Texturing3DComponent.min.js +2 -2
  42. package/dist/assets/components/VolumeRenderingComponent.js +1 -1
  43. package/dist/assets/components/VolumeRenderingComponent.min.js +1 -1
  44. package/dist/assets/components/WebXRComponent.js +1 -1
  45. package/dist/assets/components/WebXRComponent.min.js +1 -1
  46. package/dist/assets/components/X_ITEComponent.js +1 -1
  47. package/dist/assets/components/X_ITEComponent.min.js +1 -1
  48. package/dist/assets/lib/draco_decoder_gltf.js +1 -1
  49. package/dist/example.html +1 -1
  50. package/dist/x_ite.css +1 -1
  51. package/dist/x_ite.d.ts +3 -3
  52. package/dist/x_ite.js +130 -106
  53. package/dist/x_ite.min.js +2 -2
  54. package/dist/x_ite.min.mjs +2 -2
  55. package/dist/x_ite.mjs +130 -106
  56. package/dist/x_ite.zip +0 -0
  57. package/package.json +4 -3
package/dist/example.html CHANGED
@@ -4,7 +4,7 @@
4
4
  <meta charset="utf-8"/>
5
5
  <script defer src="x_ite.min.js"></script>
6
6
  <!-- or use: -->
7
- <!-- <script defer src="https://cdn.jsdelivr.net/npm/x_ite@16.5.0/dist/x_ite.min.js"></script> -->
7
+ <!-- <script defer src="https://cdn.jsdelivr.net/npm/x_ite@16.6.0/dist/x_ite.min.js"></script> -->
8
8
  <style>
9
9
  @import url("https://fonts.googleapis.com/css2?family=Lato:ital,wght@0,400&family=Source+Sans+3:ital,wght@0,400&display=swap");
10
10
 
package/dist/x_ite.css CHANGED
@@ -1 +1 @@
1
- /* X_ITE v16.5.0 */:host,X3DCanvas{--red:#d71f1f;--orange:#ff9230;--orange-filter:brightness(0) saturate(100%) invert(71%) sepia(100%) saturate(1647%) hue-rotate(335deg) brightness(101%) contrast(101%);--text-color:#fff;--text-color-dark:#fff;--text-shadow-color:#000;--link-color:var(--orange);--progress-background:#fff;--splash-screen-background:#0f0f0f;--splash-screen-image:url(assets/images/background-dark.svg);--gradient:linear-gradient(180deg,rgba(35,37,40,.553) 0%,rgba(13,16,21,.831));--border:4px solid rgba(43,45,47,.675);--button-border:1px solid hsla(0,0%,100%,.1);--tint-color:rgba(50,50,50,.44);--tint-hover-color:rgba(64,64,64,.44);--table-tint-color:hsla(0,0%,100%,.083);--icon-filter:none}@media (prefers-color-scheme:light){:host(:not([theme=dark])),X3DCanvas:not([theme=dark]){--red:#e12b2b;--orange-filter:brightness(0) saturate(100%) invert(71%) sepia(100%) saturate(2647%) hue-rotate(335deg) brightness(70%) contrast(121%);--text-color:#000;--text-shadow-color:#fff;--link-color:var(--red);--progress-background:#000;--splash-screen-background:#fcfcfc;--splash-screen-image:url(assets/images/background-light.svg);--gradient:linear-gradient(180deg,rgba(247,247,252,.642) 0%,hsla(252,8%,88%,.6));--border:4px solid rgba(229,229,234,.66);--button-border:1px solid hsla(0,0%,100%,.49);--tint-color:hsla(0,0%,100%,.37);--tint-hover-color:hsla(0,0%,100%,.46);--table-tint-color:var(--tint-color);--icon-filter:invert(100%)}}:host([theme=light]),X3DCanvas[theme=light]{--red:#e12b2b;--orange-filter:brightness(0) saturate(100%) invert(71%) sepia(100%) saturate(2647%) hue-rotate(335deg) brightness(70%) contrast(121%);--text-color:#000;--text-shadow-color:#fff;--link-color:var(--red);--progress-background:#000;--splash-screen-background:#fcfcfc;--splash-screen-image:url(assets/images/background-light.svg);--gradient:linear-gradient(180deg,rgba(247,247,252,.642) 0%,hsla(252,8%,88%,.6));--border:4px solid rgba(229,229,234,.66);--button-border:1px solid hsla(0,0%,100%,.49);--tint-color:hsla(0,0%,100%,.37);--tint-hover-color:hsla(0,0%,100%,.46);--table-tint-color:var(--tint-color);--icon-filter:invert(100%)}:host,X3DCanvas{all:initial;display:inline-block;height:150px;overflow:hidden;-webkit-user-select:none;user-select:none;width:300px}:host(.x_ite-fullscreen),X3DCanvas.x_ite-fullscreen{height:100vh!important;width:100vw!important}X3DCanvas>:not(.x_ite-private-browser,.x_ite-private-menu){display:none}.x_ite-private-browser,.x_ite-private-browser *,.x_ite-private-menu,.x_ite-private-menu *{all:revert}.x_ite-private-browser{height:100%;outline:none;overflow:hidden;position:relative;-webkit-user-select:none;user-select:none}.x_ite-private-surface{height:100%}.x_ite-private-canvas{height:100%;width:100%}.x_ite-private-notification{backdrop-filter:blur(8px);background:var(--gradient);background-clip:padding-box;border:var(--border);border-bottom-left-radius:16px;border-right:none;border-top-left-radius:16px;color:var(--text-color);font-family:X_ITE PT Sans,sans-serif;font-size:10pt;line-height:1.1;padding:5px 0 3px 7px;pointer-events:none;position:absolute;right:0;top:20px;visibility:hidden;white-space:pre;width:0}.x_ite-private-notification span{background:url(assets/images/logo.svg) no-repeat top -1px left 0;background-size:17px 17px;display:inline-block;padding:0 16px 2px 22px;position:relative;top:-1px}.x_ite-private-browser-timings{backdrop-filter:blur(8px);background:var(--gradient);background-clip:padding-box;border-right:var(--border);border-top:var(--border);border-top-right-radius:12px;bottom:0;color:var(--text-color);font-family:X_ITE PT Sans,sans-serif;font-size:9pt;left:0;padding:8px 12px 10px;pointer-events:none;position:absolute;white-space:pre}.x_ite-private-browser-timings :is(table,thead,tbody,tfoot,tr,th,td){box-sizing:border-box;color:var(--text-color);font-size:inherit;line-height:1.1;text-align:left}.x_ite-private-browser-timings table{border-collapse:separate;border-spacing:2px;empty-cells:show;max-width:100%;overflow:hidden;width:100%}.x_ite-private-browser-timings thead th{background:url(assets/images/schedule.svg) no-repeat -1px 1px;background-size:17px 17px;color:var(--text-color-dark);filter:var(--icon-filter);font-weight:700;padding-bottom:5px;padding-left:20px;padding-top:3px}.x_ite-private-browser-timings td:first-child{padding-right:10px}.x_ite-private-browser-timings table.more tr.x_ite-private-more td{padding-bottom:5px}.x_ite-private-browser-timings table.less tr.x_ite-private-more~tr{display:none}.x_ite-private-browser-timings td{padding-bottom:2px}.x_ite-private-browser-timings td.pointer{pointer-events:all}.x_ite-private-browser-timings tfoot td:first-child{padding-right:0}.x_ite-private-browser-timings tfoot td{padding-top:4px}.x_ite-private-browser-timings button{background:var(--tint-color);border:var(--button-border);border-radius:10px;box-sizing:border-box;color:var(--text-color);cursor:pointer;font-family:X_ITE PT Sans,sans-serif;font-size:9pt;font-style:italic;height:14pt;line-height:1.1;margin-top:2px;padding:0;pointer-events:all;text-align:center;width:100%}.x_ite-private-browser-timings button:hover{background-color:var(--tint-hover-color)}.x_ite-private-world-info-overlay{inset:0;position:absolute}.x_ite-private-world-info{backdrop-filter:blur(8px);background:var(--gradient);background-clip:padding-box;border:var(--border);border-radius:15px;inset:0;margin:21pt;overflow-y:auto;padding:0 21pt 21pt;position:absolute}.x_ite-private-world-info .x_ite-private-world-info-buttons{border-bottom:4px solid var(--table-tint-color);margin-bottom:12pt}.x_ite-private-world-info button{background:none;border:none;color:var(--text-color);height:21pt;width:100pt}.x_ite-private-world-info button:hover{background-color:var(--table-tint-color)}.x_ite-private-world-info button.active{font-weight:700}.x_ite-private-world-info :is(.x_ite-private-world-info-top,.x_ite-private-world-info-title,.x_ite-private-world-info-info,p){box-sizing:border-box;color:var(--text-color);font-family:X_ITE PT Sans,sans-serif;font-style:normal;line-height:1.3;text-align:left}.x_ite-private-world-info .x_ite-private-world-info-top{font-size:9pt;font-style:italic;font-weight:700;margin:.3em 0}.x_ite-private-world-info .x_ite-private-world-info-title{font-size:16pt;font-weight:700;margin:.3em 0;overflow-wrap:break-word;word-break:break-word}.x_ite-private-world-info .x_ite-private-world-info-info,.x_ite-private-world-info .x_ite-private-world-info-info p{font-size:11pt;margin:.5em 0;overflow-wrap:break-word;word-break:break-word}.x_ite-private-world-info table{border-collapse:collapse;line-height:1.3;margin:.5em 0;width:100%}.x_ite-private-world-info tr:nth-child(odd){background-color:var(--table-tint-color)}.x_ite-private-world-info td{color:var(--text-color);font-family:X_ITE PT Sans,sans-serif;font-size:10pt;overflow-wrap:break-word;padding:4pt;vertical-align:top;word-break:break-word}.x_ite-private-world-info td:first-child{min-width:70px}.x_ite-private-world-info a{color:var(--link-color)}.x_ite-private-menu.context-menu-layer{inset:0;position:fixed;z-index:10000}.x_ite-private-menu .context-menu-list,.x_ite-private-menu.context-menu-list{border:4px solid transparent;border-radius:12px;box-sizing:border-box;color:var(--text-color);display:none;font-family:X_ITE PT Sans,sans-serif;font-size:10pt;line-height:1.2;list-style-type:none;margin:0 0 0 1px;min-width:120px;overscroll-behavior:none;padding:5px 10px 6px 9px;white-space:pre}.x_ite-private-menu.context-menu-list{isolation:isolate;position:fixed;z-index:10000}.x_ite-private-menu .context-menu-list{position:absolute;top:-13px}.x_ite-private-menu .context-menu-background{backdrop-filter:blur(8px);background:var(--gradient);background-clip:padding-box;border:var(--border);border-radius:12px;box-sizing:border-box;inset:0;margin:0 0 0 1px;min-width:120px;outline:none;padding:5px 10px 9px 9px;position:absolute}.x_ite-private-menu .context-menu-item{border-radius:12px;cursor:pointer;font-size:10pt;line-height:1;margin:0;margin:0 4px;padding:0 2px;position:relative;text-align:left}.x_ite-private-menu .context-menu-item:first-of-type{margin-top:4px}.x_ite-private-menu .context-menu-item:last-of-type{margin-bottom:4px}.x_ite-private-menu .context-menu-item:hover:not(.context-menu-not-selectable){background-color:var(--red)}.x_ite-private-menu .context-menu-item:hover>.context-menu-list{display:block}.x_ite-private-menu .context-menu-not-selectable{cursor:default}.x_ite-private-menu .context-menu-separator{border-bottom:1px solid #8a8a8a;border-top:0;cursor:default;margin:2px 0;padding-bottom:0;padding-top:0}.x_ite-private-menu .context-menu-separator+.context-menu-separator{display:none!important}.x_ite-private-menu .context-menu-submenu:after{border-color:transparent transparent transparent #e8eaed;border-style:solid;border-width:4px 0 4px 5px;content:"";display:block;filter:var(--icon-filter);height:0;margin-right:2px;position:absolute;right:4px;top:8px;width:0}.x_ite-private-menu .context-menu-item>span,.x_ite-private-menu label{display:block;padding:5px 24px;width:100%}.x_ite-private-menu label{box-sizing:border-box;cursor:pointer;font-size:10pt;font-weight:400;line-height:1;margin:0}.x_ite-private-menu label span{color:var(--text-color-dark);filter:var(--icon-filter)}.x_ite-private-menu label:has(>input[type=radio]:checked){font-weight:700}.x_ite-private-menu label>*{font-size:10pt;line-height:1;vertical-align:top}.x_ite-private-menu input{appearance:none;cursor:pointer}.x_ite-private-menu input[type=checkbox],.x_ite-private-menu input[type=radio]{background:url(assets/images/radio_button_unchecked.svg) no-repeat left 0 top 0;background-size:17px 17px;display:inline-block;filter:var(--icon-filter);height:17px;margin:0 0 0 -22px;padding:0;position:absolute;top:3px;width:17px}.x_ite-private-menu input:checked{filter:var(--orange-filter)}.x_ite-private-menu .context-menu-input:hover input:checked{filter:var(--icon-filter)}.x_ite-private-menu input[type=checkbox]:checked{background-image:url(assets/images/check_circle.svg)}.x_ite-private-menu input[type=radio]:checked{background-image:url(assets/images/radio_button_checked.svg)}.x_ite-private-menu span{padding-left:0}.x_ite-private-menu .context-menu-title{font-weight:700}.x_ite-private-menu .context-menu-icon>span{background-position:2px 3px;background-repeat:no-repeat;background-size:17px 17px;color:var(--text-color-dark);display:block;filter:var(--icon-filter)}.x_ite-private-menu .x_ite-private-icon-logo>span{background-image:url(assets/images/logo.svg);background-position:2px 4px;color:var(--text-color);filter:none}.x_ite-private-icon-viewpoint>span{background-image:url(assets/images/eye_tracking.svg)}.x_ite-private-menu .x_ite-private-viewpoint input{background-image:none}.x_ite-private-menu .x_ite-private-viewpoint input:checked{background-image:url(assets/images/visibility.svg)}.x_ite-private-icon-viewer>span{background-image:url(assets/images/stadia_controller.svg)}.x_ite-private-menu .x_ite-private-examine-viewer :is(input,input:checked){background-image:url(assets/images/language.svg)}.x_ite-private-menu .x_ite-private-walk-viewer :is(input,input:checked){background-image:url(assets/images/directions_run.svg)}.x_ite-private-menu .x_ite-private-fly-viewer :is(input,input:checked){background-image:url(assets/images/travel.svg)}.x_ite-private-menu .x_ite-private-plane-viewer :is(input,input:checked){background-image:url(assets/images/border_all.svg)}.x_ite-private-menu .x_ite-private-lookat-viewer :is(input,input:checked){background-image:url(assets/images/point_scan.svg)}.x_ite-private-menu .x_ite-private-none-viewer :is(input,input:checked){background-image:url(assets/images/block.svg)}.x_ite-private-icon-primitive-quality>span{background-image:url(assets/images/hexagon.svg)}.x_ite-private-icon-texture-quality>span{background-image:url(assets/images/texture.svg)}.x_ite-private-icon-shading>span{background-image:url(assets/images/stroke_partial.svg)}.x_ite-private-icon-animations>span{background-image:url(assets/images/animation.svg)}.x_ite-private-icon-play>span{background-image:url(assets/images/play_circle.svg)}.x_ite-private-icon-stop>span{background-image:url(assets/images/stop_circle.svg)}.x_ite-private-icon-enter-fullscreen>span{background-image:url(assets/images/fullscreen.svg)}.x_ite-private-icon-leave-fullscreen>span{background-image:url(assets/images/fullscreen_exit.svg)}.x_ite-private-icon-world-info>span{background-image:url(assets/images/globe.svg)}.x_ite-private-icon-info>span{background-image:url(assets/images/info.svg)}.x_ite-private-splash-screen{background:var(--splash-screen-image) var(--splash-screen-background);background-position:calc(50% - 30px) calc(50% + 58px);inset:0;pointer-events:none;position:absolute}.x_ite-private-spinner{--offset-x:100px;--offset-y:-48px;--size:32px;--padding:8px;--center-x:calc(var(--size)*0.44727 + var(--padding));--center-y:calc(var(--size)*0.52637 + var(--padding));animation:x_ite-spinner-animation 8s linear infinite;background:url(assets/images/logo.svg) no-repeat 50%;background-size:var(--size) var(--size);height:var(--size);left:calc(50% - var(--size)/2 + var(--size)/2 - var(--center-x) + var(--offset-x));padding:var(--padding);position:absolute;top:calc(50% - var(--size)/2 + var(--size)/2 - var(--center-y) + var(--offset-y));transform-origin:var(--center-x) var(--center-y);width:var(--size)}@keyframes x_ite-spinner-animation{to{transform:rotate(1turn)}}.x_ite-private-progress{left:calc(50% - 100px);position:absolute;top:calc(50% - 39pt);width:195px}.x_ite-private-x_ite{color:var(--text-color);font-family:X_ITE PT Sans,sans-serif;font-size:32pt;text-align:center;text-shadow:1px 1px 0 var(--text-shadow-color)}.x_ite-private-x_ite b{font-family:X_ITE PT Sans,sans-serif;font-weight:700}.x_ite-private-spinner-text{color:var(--text-color);font-family:X_ITE PT Sans,sans-serif;font-size:11pt;text-align:center;text-shadow:1px 1px 0 var(--text-shadow-color)}.x_ite-private-progressbar{background:var(--progress-background);border-radius:4px;height:8px;margin:8px;overflow:hidden}.x_ite-private-progressbar div{background:var(--red);height:100%;width:0}.x_ite-private-buttons{align-items:center;background:var(--gradient);background-clip:padding-box;border:var(--border);border-radius:32px;bottom:10px;display:flex;gap:16px;justify-content:center;padding:0 24px 0 16px;position:absolute;right:-16px}.x_ite-private-buttons:is(:empty,:not(:has(:not(.x_ite-private-hidden)))){display:none;opacity:0}.x_ite-private-button{background-repeat:no-repeat;background-size:30px 30px;cursor:pointer;filter:var(--icon-filter);height:30px;width:30px}.x_ite-private-button:hover{scale:1.2}.x_ite-private-no-sound-button{background-image:url(assets/images/no_sound.svg);order:1}.x_ite-private-xr-button{background-image:url(assets/images/head_mounted_device.svg);order:2}.x_ite-private-fade{opacity:1;transition:display allow-discrete .3s,opacity .3s ease-in-out}@starting-style{.x_ite-private-fade{opacity:0}}.x_ite-private-hidden{display:none;opacity:0}.x_ite-private-splash-screen.x_ite-private-fade{transition:none}.x_ite-private-splash-screen.x_ite-private-hidden{transition:display allow-discrete .2s,opacity .2s ease-in-out}.x_ite-private-button.x_ite-private-fade{transition:display allow-discrete 0s .3s,opacity .3s ease-in-out,scale .2s ease-in-out}@-moz-document url-prefix(){.x_ite-private-fade{transition:visibility .3s,opacity .3s ease-in-out}.x_ite-private-hidden{display:block;transition:visibility 0s .3s,opacity .3s ease-in-out;visibility:hidden}.x_ite-private-splash-screen.x_ite-private-hidden{transition:visibility 0s .2s,opacity .2s ease-in-out}.x_ite-private-button.x_ite-private-fade{transition:visibility 0s .3s,opacity .3s ease-in-out,scale .2s ease-in-out}.x_ite-private-button.x_ite-private-hidden{display:none}}
1
+ /* X_ITE v16.6.0 */:host,X3DCanvas{--red:#d71f1f;--orange:#ff9230;--orange-filter:brightness(0) saturate(100%) invert(71%) sepia(100%) saturate(1647%) hue-rotate(335deg) brightness(101%) contrast(101%);--text-color:#fff;--text-color-dark:#fff;--text-shadow-color:#000;--link-color:var(--orange);--progress-background:#fff;--splash-screen-background:#0f0f0f;--splash-screen-image:url(assets/images/background-dark.svg);--gradient:linear-gradient(180deg,rgba(35,37,40,.553) 0%,rgba(13,16,21,.831));--border:4px solid rgba(43,45,47,.675);--button-border:1px solid hsla(0,0%,100%,.1);--tint-color:rgba(50,50,50,.44);--tint-hover-color:rgba(64,64,64,.44);--table-tint-color:hsla(0,0%,100%,.083);--icon-filter:none}@media (prefers-color-scheme:light){:host(:not([theme=dark])),X3DCanvas:not([theme=dark]){--red:#e12b2b;--orange-filter:brightness(0) saturate(100%) invert(71%) sepia(100%) saturate(2647%) hue-rotate(335deg) brightness(70%) contrast(121%);--text-color:#000;--text-shadow-color:#fff;--link-color:var(--red);--progress-background:#000;--splash-screen-background:#fcfcfc;--splash-screen-image:url(assets/images/background-light.svg);--gradient:linear-gradient(180deg,rgba(247,247,252,.642) 0%,hsla(252,8%,88%,.6));--border:4px solid rgba(229,229,234,.66);--button-border:1px solid hsla(0,0%,100%,.49);--tint-color:hsla(0,0%,100%,.37);--tint-hover-color:hsla(0,0%,100%,.46);--table-tint-color:var(--tint-color);--icon-filter:invert(100%)}}:host([theme=light]),X3DCanvas[theme=light]{--red:#e12b2b;--orange-filter:brightness(0) saturate(100%) invert(71%) sepia(100%) saturate(2647%) hue-rotate(335deg) brightness(70%) contrast(121%);--text-color:#000;--text-shadow-color:#fff;--link-color:var(--red);--progress-background:#000;--splash-screen-background:#fcfcfc;--splash-screen-image:url(assets/images/background-light.svg);--gradient:linear-gradient(180deg,rgba(247,247,252,.642) 0%,hsla(252,8%,88%,.6));--border:4px solid rgba(229,229,234,.66);--button-border:1px solid hsla(0,0%,100%,.49);--tint-color:hsla(0,0%,100%,.37);--tint-hover-color:hsla(0,0%,100%,.46);--table-tint-color:var(--tint-color);--icon-filter:invert(100%)}:host,X3DCanvas{all:initial;display:inline-block;height:150px;overflow:hidden;-webkit-user-select:none;user-select:none;width:300px}:host(.x_ite-fullscreen),X3DCanvas.x_ite-fullscreen{height:100vh!important;width:100vw!important}X3DCanvas>:not(.x_ite-private-browser,.x_ite-private-menu){display:none}.x_ite-private-browser,.x_ite-private-browser *,.x_ite-private-menu,.x_ite-private-menu *{all:revert}.x_ite-private-browser{height:100%;outline:none;overflow:hidden;position:relative;-webkit-user-select:none;user-select:none}.x_ite-private-surface{height:100%}.x_ite-private-canvas{height:100%;width:100%}.x_ite-private-notification{backdrop-filter:blur(8px);background:var(--gradient);background-clip:padding-box;border:var(--border);border-bottom-left-radius:16px;border-right:none;border-top-left-radius:16px;color:var(--text-color);font-family:X_ITE PT Sans,sans-serif;font-size:10pt;line-height:1.1;padding:5px 0 3px 7px;pointer-events:none;position:absolute;right:0;top:20px;visibility:hidden;white-space:pre;width:0}.x_ite-private-notification span{background:url(assets/images/logo.svg) no-repeat top -1px left 0;background-size:17px 17px;display:inline-block;padding:0 16px 2px 22px;position:relative;top:-1px}.x_ite-private-browser-timings{backdrop-filter:blur(8px);background:var(--gradient);background-clip:padding-box;border-right:var(--border);border-top:var(--border);border-top-right-radius:12px;bottom:0;color:var(--text-color);font-family:X_ITE PT Sans,sans-serif;font-size:9pt;left:0;padding:8px 12px 10px;pointer-events:none;position:absolute;white-space:pre}.x_ite-private-browser-timings :is(table,thead,tbody,tfoot,tr,th,td){box-sizing:border-box;color:var(--text-color);font-size:inherit;line-height:1.1;text-align:left}.x_ite-private-browser-timings table{border-collapse:separate;border-spacing:2px;empty-cells:show;max-width:100%;overflow:hidden;width:100%}.x_ite-private-browser-timings thead th{background:url(assets/images/schedule.svg) no-repeat -1px 1px;background-size:17px 17px;color:var(--text-color-dark);filter:var(--icon-filter);font-weight:700;padding-bottom:5px;padding-left:20px;padding-top:3px}.x_ite-private-browser-timings td:first-child{padding-right:10px}.x_ite-private-browser-timings table.more tr.x_ite-private-more td{padding-bottom:5px}.x_ite-private-browser-timings table.less tr.x_ite-private-more~tr{display:none}.x_ite-private-browser-timings td{padding-bottom:2px}.x_ite-private-browser-timings td.pointer{pointer-events:all}.x_ite-private-browser-timings tfoot td:first-child{padding-right:0}.x_ite-private-browser-timings tfoot td{padding-top:4px}.x_ite-private-browser-timings button{background:var(--tint-color);border:var(--button-border);border-radius:10px;box-sizing:border-box;color:var(--text-color);cursor:pointer;font-family:X_ITE PT Sans,sans-serif;font-size:9pt;font-style:italic;height:14pt;line-height:1.1;margin-top:2px;padding:0;pointer-events:all;text-align:center;width:100%}.x_ite-private-browser-timings button:hover{background-color:var(--tint-hover-color)}.x_ite-private-world-info-overlay{inset:0;position:absolute}.x_ite-private-world-info{backdrop-filter:blur(8px);background:var(--gradient);background-clip:padding-box;border:var(--border);border-radius:15px;inset:0;margin:21pt;overflow-y:auto;padding:0 21pt 21pt;position:absolute}.x_ite-private-world-info .x_ite-private-world-info-buttons{border-bottom:4px solid var(--table-tint-color);margin-bottom:12pt}.x_ite-private-world-info button{background:none;border:none;color:var(--text-color);height:21pt;width:100pt}.x_ite-private-world-info button:hover{background-color:var(--table-tint-color)}.x_ite-private-world-info button.active{font-weight:700}.x_ite-private-world-info :is(.x_ite-private-world-info-top,.x_ite-private-world-info-title,.x_ite-private-world-info-info,p){box-sizing:border-box;color:var(--text-color);font-family:X_ITE PT Sans,sans-serif;font-style:normal;line-height:1.3;text-align:left}.x_ite-private-world-info .x_ite-private-world-info-top{font-size:9pt;font-style:italic;font-weight:700;margin:.3em 0}.x_ite-private-world-info .x_ite-private-world-info-title{font-size:16pt;font-weight:700;margin:.3em 0;overflow-wrap:break-word;word-break:break-word}.x_ite-private-world-info .x_ite-private-world-info-info,.x_ite-private-world-info .x_ite-private-world-info-info p{font-size:11pt;margin:.5em 0;overflow-wrap:break-word;word-break:break-word}.x_ite-private-world-info table{border-collapse:collapse;line-height:1.3;margin:.5em 0;width:100%}.x_ite-private-world-info tr:nth-child(odd){background-color:var(--table-tint-color)}.x_ite-private-world-info td{color:var(--text-color);font-family:X_ITE PT Sans,sans-serif;font-size:10pt;overflow-wrap:break-word;padding:4pt;vertical-align:top;word-break:break-word}.x_ite-private-world-info td:first-child{min-width:70px}.x_ite-private-world-info a{color:var(--link-color)}.x_ite-private-menu.context-menu-layer{inset:0;position:fixed;z-index:10000}.x_ite-private-menu .context-menu-list,.x_ite-private-menu.context-menu-list{border:4px solid transparent;border-radius:12px;box-sizing:border-box;color:var(--text-color);display:none;font-family:X_ITE PT Sans,sans-serif;font-size:10pt;line-height:1.2;list-style-type:none;margin:0 0 0 1px;min-width:120px;overscroll-behavior:none;padding:5px 10px 6px 9px;white-space:pre}.x_ite-private-menu.context-menu-list{isolation:isolate;position:fixed;z-index:10000}.x_ite-private-menu .context-menu-list{position:absolute;top:-13px}.x_ite-private-menu .context-menu-background{backdrop-filter:blur(8px);background:var(--gradient);background-clip:padding-box;border:var(--border);border-radius:12px;box-sizing:border-box;inset:0;margin:0 0 0 1px;min-width:120px;outline:none;padding:5px 10px 9px 9px;position:absolute}.x_ite-private-menu .context-menu-item{border-radius:12px;cursor:pointer;font-size:10pt;line-height:1;margin:0;margin:0 4px;padding:0 2px;position:relative;text-align:left}.x_ite-private-menu .context-menu-item:first-of-type{margin-top:4px}.x_ite-private-menu .context-menu-item:last-of-type{margin-bottom:4px}.x_ite-private-menu .context-menu-item:hover:not(.context-menu-not-selectable){background-color:var(--red)}.x_ite-private-menu .context-menu-item:hover>.context-menu-list{display:block}.x_ite-private-menu .context-menu-not-selectable{cursor:default}.x_ite-private-menu .context-menu-separator{border-bottom:1px solid #8a8a8a;border-top:0;cursor:default;margin:2px 0;padding-bottom:0;padding-top:0}.x_ite-private-menu .context-menu-separator+.context-menu-separator{display:none!important}.x_ite-private-menu .context-menu-submenu:after{border-color:transparent transparent transparent #e8eaed;border-style:solid;border-width:4px 0 4px 5px;content:"";display:block;filter:var(--icon-filter);height:0;margin-right:2px;position:absolute;right:4px;top:8px;width:0}.x_ite-private-menu .context-menu-item>span,.x_ite-private-menu label{display:block;padding:5px 24px;width:100%}.x_ite-private-menu label{box-sizing:border-box;cursor:pointer;font-size:10pt;font-weight:400;line-height:1;margin:0}.x_ite-private-menu label span{color:var(--text-color-dark);filter:var(--icon-filter)}.x_ite-private-menu label:has(>input[type=radio]:checked){font-weight:700}.x_ite-private-menu label>*{font-size:10pt;line-height:1;vertical-align:top}.x_ite-private-menu input{appearance:none;cursor:pointer}.x_ite-private-menu input[type=checkbox],.x_ite-private-menu input[type=radio]{background:url(assets/images/radio_button_unchecked.svg) no-repeat left 0 top 0;background-size:17px 17px;display:inline-block;filter:var(--icon-filter);height:17px;margin:0 0 0 -22px;padding:0;position:absolute;top:3px;width:17px}.x_ite-private-menu input:checked{filter:var(--orange-filter)}.x_ite-private-menu .context-menu-input:hover input:checked{filter:var(--icon-filter)}.x_ite-private-menu input[type=checkbox]:checked{background-image:url(assets/images/check_circle.svg)}.x_ite-private-menu input[type=radio]:checked{background-image:url(assets/images/radio_button_checked.svg)}.x_ite-private-menu span{padding-left:0}.x_ite-private-menu .context-menu-title{font-weight:700}.x_ite-private-menu .context-menu-icon>span{background-position:2px 3px;background-repeat:no-repeat;background-size:17px 17px;color:var(--text-color-dark);display:block;filter:var(--icon-filter)}.x_ite-private-menu .x_ite-private-icon-logo>span{background-image:url(assets/images/logo.svg);background-position:2px 4px;color:var(--text-color);filter:none}.x_ite-private-icon-viewpoint>span{background-image:url(assets/images/eye_tracking.svg)}.x_ite-private-menu .x_ite-private-viewpoint input{background-image:none}.x_ite-private-menu .x_ite-private-viewpoint input:checked{background-image:url(assets/images/visibility.svg)}.x_ite-private-icon-viewer>span{background-image:url(assets/images/stadia_controller.svg)}.x_ite-private-menu .x_ite-private-examine-viewer :is(input,input:checked){background-image:url(assets/images/language.svg)}.x_ite-private-menu .x_ite-private-walk-viewer :is(input,input:checked){background-image:url(assets/images/directions_run.svg)}.x_ite-private-menu .x_ite-private-fly-viewer :is(input,input:checked){background-image:url(assets/images/travel.svg)}.x_ite-private-menu .x_ite-private-plane-viewer :is(input,input:checked){background-image:url(assets/images/border_all.svg)}.x_ite-private-menu .x_ite-private-lookat-viewer :is(input,input:checked){background-image:url(assets/images/point_scan.svg)}.x_ite-private-menu .x_ite-private-none-viewer :is(input,input:checked){background-image:url(assets/images/block.svg)}.x_ite-private-icon-primitive-quality>span{background-image:url(assets/images/hexagon.svg)}.x_ite-private-icon-texture-quality>span{background-image:url(assets/images/texture.svg)}.x_ite-private-icon-shading>span{background-image:url(assets/images/stroke_partial.svg)}.x_ite-private-icon-animations>span{background-image:url(assets/images/animation.svg)}.x_ite-private-icon-play>span{background-image:url(assets/images/play_circle.svg)}.x_ite-private-icon-stop>span{background-image:url(assets/images/stop_circle.svg)}.x_ite-private-icon-enter-fullscreen>span{background-image:url(assets/images/fullscreen.svg)}.x_ite-private-icon-leave-fullscreen>span{background-image:url(assets/images/fullscreen_exit.svg)}.x_ite-private-icon-world-info>span{background-image:url(assets/images/globe.svg)}.x_ite-private-icon-info>span{background-image:url(assets/images/info.svg)}.x_ite-private-splash-screen{background:var(--splash-screen-image) var(--splash-screen-background);background-position:calc(50% - 30px) calc(50% + 58px);inset:0;pointer-events:none;position:absolute}.x_ite-private-spinner{--offset-x:100px;--offset-y:-48px;--size:32px;--padding:8px;--center-x:calc(var(--size)*0.44727 + var(--padding));--center-y:calc(var(--size)*0.52637 + var(--padding));animation:x_ite-spinner-animation 8s linear infinite;background:url(assets/images/logo.svg) no-repeat 50%;background-size:var(--size) var(--size);height:var(--size);left:calc(50% - var(--size)/2 + var(--size)/2 - var(--center-x) + var(--offset-x));padding:var(--padding);position:absolute;top:calc(50% - var(--size)/2 + var(--size)/2 - var(--center-y) + var(--offset-y));transform-origin:var(--center-x) var(--center-y);width:var(--size)}@keyframes x_ite-spinner-animation{to{transform:rotate(1turn)}}.x_ite-private-progress{left:calc(50% - 100px);position:absolute;top:calc(50% - 39pt);width:195px}.x_ite-private-x_ite{color:var(--text-color);font-family:X_ITE PT Sans,sans-serif;font-size:32pt;text-align:center;text-shadow:1px 1px 0 var(--text-shadow-color)}.x_ite-private-x_ite b{font-family:X_ITE PT Sans,sans-serif;font-weight:700}.x_ite-private-spinner-text{color:var(--text-color);font-family:X_ITE PT Sans,sans-serif;font-size:11pt;text-align:center;text-shadow:1px 1px 0 var(--text-shadow-color)}.x_ite-private-progressbar{background:var(--progress-background);border-radius:4px;height:8px;margin:8px;overflow:hidden}.x_ite-private-progressbar div{background:var(--red);height:100%;width:0}.x_ite-private-buttons{align-items:center;background:var(--gradient);background-clip:padding-box;border:var(--border);border-radius:32px;bottom:10px;display:flex;gap:16px;justify-content:center;padding:0 24px 0 16px;position:absolute;right:-16px}.x_ite-private-buttons:is(:empty,:not(:has(:not(.x_ite-private-hidden)))){display:none;opacity:0}.x_ite-private-button{background-repeat:no-repeat;background-size:30px 30px;cursor:pointer;filter:var(--icon-filter);height:30px;width:30px}.x_ite-private-button:hover{scale:1.2}.x_ite-private-no-sound-button{background-image:url(assets/images/no_sound.svg);order:1}.x_ite-private-xr-button{background-image:url(assets/images/head_mounted_device.svg);order:2}.x_ite-private-fade{opacity:1;transition:display allow-discrete .3s,opacity .3s ease-in-out}@starting-style{.x_ite-private-fade{opacity:0}}.x_ite-private-hidden{display:none;opacity:0}.x_ite-private-splash-screen.x_ite-private-fade{transition:none}.x_ite-private-splash-screen.x_ite-private-hidden{transition:display allow-discrete .2s,opacity .2s ease-in-out}.x_ite-private-button.x_ite-private-fade{transition:display allow-discrete 0s .3s,opacity .3s ease-in-out,scale .2s ease-in-out}@-moz-document url-prefix(){.x_ite-private-fade{transition:visibility .3s,opacity .3s ease-in-out}.x_ite-private-hidden{display:block;transition:visibility 0s .3s,opacity .3s ease-in-out;visibility:hidden}.x_ite-private-splash-screen.x_ite-private-hidden{transition:visibility 0s .2s,opacity .2s ease-in-out}.x_ite-private-button.x_ite-private-fade{transition:visibility 0s .3s,opacity .3s ease-in-out,scale .2s ease-in-out}.x_ite-private-button.x_ite-private-hidden{display:none}}
package/dist/x_ite.d.ts CHANGED
@@ -572,11 +572,11 @@ declare namespace X3D
572
572
  /**
573
573
  * Adds *node* to the list of root nodes. If the node already exists, the function silently returns.
574
574
  */
575
- addRootNode (node: SFNode): void;
575
+ addRootNode (node: SFNode | null): void;
576
576
  /**
577
- * Removes *node* from the list of root nodes.
577
+ * Removes all occurrences of *node* from the list of root nodes.
578
578
  */
579
- removeRootNode (node: SFNode): void;
579
+ removeRootNode (node: SFNode | null): void;
580
580
  /**
581
581
  * Returns a reference to the node with the exported name *exportedName.* If no exported node *exportedName* is found an exception is thrown.
582
582
  */
package/dist/x_ite.js CHANGED
@@ -1,4 +1,4 @@
1
- /* X_ITE v16.5.0 */
1
+ /* X_ITE v16.6.0 */
2
2
  (function webpackUniversalModuleDefinition(root, factory) {
3
3
  if(typeof exports === 'object' && typeof module === 'object')
4
4
  module.exports = factory();
@@ -12,7 +12,7 @@
12
12
  return /******/ (() => { // webpackBootstrap
13
13
  /******/ var __webpack_modules__ = ({
14
14
 
15
- /***/ 829
15
+ /***/ 23
16
16
  (module, exports) {
17
17
 
18
18
  var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*
@@ -1017,7 +1017,7 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_
1017
1017
 
1018
1018
  /***/ },
1019
1019
 
1020
- /***/ 247
1020
+ /***/ 197
1021
1021
  (module) {
1022
1022
 
1023
1023
  (function webpackUniversalModuleDefinition(root, factory) {
@@ -2013,7 +2013,7 @@ return /******/ (function(modules) { // webpackBootstrap
2013
2013
 
2014
2014
  /***/ },
2015
2015
 
2016
- /***/ 67
2016
+ /***/ 901
2017
2017
  (module) {
2018
2018
 
2019
2019
  /**
@@ -18894,7 +18894,7 @@ const Legacy_default_ = Legacy;
18894
18894
 
18895
18895
  /* harmony default export */ const Browser_Legacy = (x_ite_Namespace .add ("Legacy", Legacy_default_));
18896
18896
  ;// ./src/x_ite/BROWSER_VERSION.js
18897
- const BROWSER_VERSION_default_ = "16.5.0";
18897
+ const BROWSER_VERSION_default_ = "16.6.0";
18898
18898
  ;
18899
18899
 
18900
18900
  /* harmony default export */ const BROWSER_VERSION = (x_ite_Namespace .add ("BROWSER_VERSION", BROWSER_VERSION_default_));
@@ -23998,6 +23998,57 @@ const NamedNodesArray_default_ = NamedNodesArray;
23998
23998
 
23999
23999
  const _importedNode = Symbol ();
24000
24000
 
24001
+ const X3DImportedNodeInstance_handler =
24002
+ {
24003
+ get (target, key)
24004
+ {
24005
+ if (Reflect .has (target, key))
24006
+ return Reflect .get (target, key);
24007
+
24008
+ const exportedNode = helper.try (() => target [_importedNode] .getExportedNode ());
24009
+
24010
+ if (exportedNode)
24011
+ return Reflect .get (exportedNode, key);
24012
+ },
24013
+ set (target, key, value)
24014
+ {
24015
+ if (Reflect .has (target, key))
24016
+ return Reflect .set (target, key, value);
24017
+
24018
+ const exportedNode = helper.try (() => target [_importedNode] .getExportedNode ());
24019
+
24020
+ if (exportedNode)
24021
+ return Reflect .set (exportedNode, key, value);
24022
+
24023
+ return false;
24024
+ },
24025
+ has (target, key)
24026
+ {
24027
+ const exportedNode = helper.try (() => target [_importedNode] .getExportedNode ());
24028
+
24029
+ return Reflect .has (target, key)
24030
+ || (exportedNode && Reflect .has (exportedNode, key));
24031
+ },
24032
+ ownKeys (target)
24033
+ {
24034
+ let keys = Reflect .ownKeys (target);
24035
+
24036
+ const exportedNode = helper.try (() => target [_importedNode] .getExportedNode ());
24037
+
24038
+ if (exportedNode)
24039
+ keys = keys .concat (Reflect .ownKeys (exportedNode));
24040
+
24041
+ return Array .from (new Set (keys));
24042
+ },
24043
+ getOwnPropertyDescriptor (target, key)
24044
+ {
24045
+ const exportedNode = helper.try (() => target [_importedNode] .getExportedNode ());
24046
+
24047
+ return Reflect .getOwnPropertyDescriptor (target, key)
24048
+ ?? (exportedNode && Reflect .getOwnPropertyDescriptor (exportedNode, key));
24049
+ },
24050
+ };
24051
+
24001
24052
  function X3DImportedNodeInstance (executionContext, importedNode)
24002
24053
  {
24003
24054
  Core_X3DNode .call (this, executionContext);
@@ -24007,6 +24058,10 @@ function X3DImportedNodeInstance (executionContext, importedNode)
24007
24058
  // Private properties
24008
24059
 
24009
24060
  this [_importedNode] = importedNode;
24061
+
24062
+ // Return Proxy
24063
+
24064
+ return new Proxy (this, X3DImportedNodeInstance_handler);
24010
24065
  }
24011
24066
 
24012
24067
  Object .assign (Object .setPrototypeOf (X3DImportedNodeInstance .prototype, Core_X3DNode .prototype),
@@ -24046,7 +24101,6 @@ Object .assign (Object .setPrototypeOf (X3DImportedNodeInstance .prototype, Core
24046
24101
  },
24047
24102
  ... Object .fromEntries ([
24048
24103
  "getTypeName",
24049
- "getType",
24050
24104
  "getComponentInfo",
24051
24105
  "getContainerField",
24052
24106
  "getSpecificationRange",
@@ -31181,7 +31235,7 @@ const Plane3_default_ = Plane3;
31181
31235
 
31182
31236
  /* harmony default export */ const Geometry_Plane3 = (x_ite_Namespace .add ("Plane3", Plane3_default_));
31183
31237
  ;// ./src/standard/Math/Geometry/Triangle3.js
31184
- /* provided dependency */ var libtess = __webpack_require__(67);
31238
+ /* provided dependency */ var libtess = __webpack_require__(901);
31185
31239
 
31186
31240
 
31187
31241
  const Triangle3 =
@@ -32296,6 +32350,8 @@ const MatrixStack_default_ = MatrixStack;
32296
32350
 
32297
32351
 
32298
32352
 
32353
+ const _hAnimNodes = Symbol .for ("X_ITE.HAnim.hAnimNodes");
32354
+
32299
32355
  const DEPTH_BUFFER_SIZE = 16;
32300
32356
 
32301
32357
  function X3DRenderObject (executionContext)
@@ -32330,7 +32386,6 @@ function X3DRenderObject (executionContext)
32330
32386
  this .localFogs = [ null ];
32331
32387
  this .layouts = [ ];
32332
32388
  this .layoutRectangles = [ ];
32333
- this .hAnimNode = [ null ];
32334
32389
  this .invHumanoidMatrix = new Utility_MatrixStack (Numbers_Matrix4);
32335
32390
  this .renderedTextures = new Set ();
32336
32391
  this .collisions = [ ];
@@ -32589,10 +32644,6 @@ Object .assign (X3DRenderObject .prototype,
32589
32644
  {
32590
32645
  return this .layoutRectangles;
32591
32646
  },
32592
- getHAnimNode ()
32593
- {
32594
- return this .hAnimNode;
32595
- },
32596
32647
  getInvHumanoidMatrix ()
32597
32648
  {
32598
32649
  return this .invHumanoidMatrix;
@@ -32869,7 +32920,7 @@ Object .assign (X3DRenderObject .prototype,
32869
32920
  bboxSize = new Numbers_Vector3 (),
32870
32921
  bboxCenter = new Numbers_Vector3 ();
32871
32922
 
32872
- return function (shapeNode)
32923
+ return function (shapeNode, geometryContext)
32873
32924
  {
32874
32925
  const modelViewMatrix = this .getModelViewMatrix () .get ();
32875
32926
 
@@ -32883,27 +32934,18 @@ Object .assign (X3DRenderObject .prototype,
32883
32934
  if (!viewVolume .intersectsSphere (radius, bboxCenter))
32884
32935
  return false;
32885
32936
 
32886
- const num = this .numPointingShapes ++;
32887
-
32888
- if (num === this .pointingShapes .length)
32889
- {
32890
- const renderContext = {
32891
- renderObject: this,
32892
- modelViewMatrix: new Float32Array (16),
32893
- viewport: new Numbers_Vector4 (),
32894
- clipPlanes: [ ],
32895
- sensors: [ ],
32896
- get renderContext () { return this; },
32897
- };
32898
-
32899
- this .pointingShapes .push (renderContext);
32900
- }
32901
-
32902
- const renderContext = this .pointingShapes [num];
32937
+ const renderContext = this .pointingShapes [this .numPointingShapes ++] ??= {
32938
+ renderObject: this,
32939
+ modelViewMatrix: new Float32Array (16),
32940
+ viewport: new Numbers_Vector4 (),
32941
+ clipPlanes: [ ],
32942
+ sensors: [ ],
32943
+ get renderContext () { return this; },
32944
+ };
32903
32945
 
32904
32946
  renderContext .viewport .assign (viewVolume .getViewport ());
32905
32947
  renderContext .modelViewMatrix .set (modelViewMatrix);
32906
- renderContext .hAnimNode = this .hAnimNode .at (-1);
32948
+ renderContext .hAnimNode = geometryContext .getCoord () ?.[_hAnimNodes] ?.at (-1);
32907
32949
  renderContext .shapeNode = shapeNode;
32908
32950
 
32909
32951
  // Clip planes & sensors
@@ -32920,7 +32962,7 @@ Object .assign (X3DRenderObject .prototype,
32920
32962
  bboxSize = new Numbers_Vector3 (),
32921
32963
  bboxCenter = new Numbers_Vector3 ();
32922
32964
 
32923
- return function (shapeNode)
32965
+ return function (shapeNode, geometryContext)
32924
32966
  {
32925
32967
  const modelViewMatrix = this .getModelViewMatrix () .get ();
32926
32968
 
@@ -32934,27 +32976,18 @@ Object .assign (X3DRenderObject .prototype,
32934
32976
  if (!viewVolume .intersectsSphere (radius, bboxCenter))
32935
32977
  return false;
32936
32978
 
32937
- const num = this .numCollisionShapes ++;
32938
-
32939
- if (num === this .collisionShapes .length)
32940
- {
32941
- const renderContext = {
32942
- renderObject: this,
32943
- viewport: new Numbers_Vector4 (),
32944
- clipPlanes: [ ],
32945
- collisions: [ ],
32946
- modelViewMatrix: new Float32Array (16),
32947
- get renderContext () { return this; },
32948
- };
32949
-
32950
- this .collisionShapes .push (renderContext);
32951
- }
32952
-
32953
- const renderContext = this .collisionShapes [num];
32979
+ const renderContext = this .collisionShapes [this .numCollisionShapes ++] ??= {
32980
+ renderObject: this,
32981
+ viewport: new Numbers_Vector4 (),
32982
+ clipPlanes: [ ],
32983
+ collisions: [ ],
32984
+ modelViewMatrix: new Float32Array (16),
32985
+ get renderContext () { return this; },
32986
+ };
32954
32987
 
32955
32988
  renderContext .viewport .assign (viewVolume .getViewport ());
32956
32989
  renderContext .modelViewMatrix .set (modelViewMatrix);
32957
- renderContext .hAnimNode = this .hAnimNode .at (-1);
32990
+ renderContext .hAnimNode = geometryContext .getCoord () ?.[_hAnimNodes] ?.at (-1);
32958
32991
  renderContext .shapeNode = shapeNode;
32959
32992
 
32960
32993
  // Clip planes & Collision nodes
@@ -32971,7 +33004,7 @@ Object .assign (X3DRenderObject .prototype,
32971
33004
  bboxSize = new Numbers_Vector3 (),
32972
33005
  bboxCenter = new Numbers_Vector3 ();
32973
33006
 
32974
- return function (shapeNode)
33007
+ return function (shapeNode, geometryContext)
32975
33008
  {
32976
33009
  const modelViewMatrix = this .getModelViewMatrix () .get ();
32977
33010
 
@@ -32985,26 +33018,17 @@ Object .assign (X3DRenderObject .prototype,
32985
33018
  if (!viewVolume .intersectsSphere (radius, bboxCenter))
32986
33019
  return false;
32987
33020
 
32988
- const num = this .numDepthShapes ++;
32989
-
32990
- if (num === this .depthShapes .length)
32991
- {
32992
- const renderContext = {
32993
- renderObject: this,
32994
- viewport: new Numbers_Vector4 (),
32995
- clipPlanes: [ ],
32996
- modelViewMatrix: new Float32Array (16),
32997
- get renderContext () { return this; },
32998
- };
32999
-
33000
- this .depthShapes .push (renderContext);
33001
- }
33002
-
33003
- const renderContext = this .depthShapes [num];
33021
+ const renderContext = this .depthShapes [this .numDepthShapes ++] ??= {
33022
+ renderObject: this,
33023
+ viewport: new Numbers_Vector4 (),
33024
+ clipPlanes: [ ],
33025
+ modelViewMatrix: new Float32Array (16),
33026
+ get renderContext () { return this; },
33027
+ };
33004
33028
 
33005
33029
  renderContext .viewport .assign (viewVolume .getViewport ());
33006
33030
  renderContext .modelViewMatrix .set (modelViewMatrix);
33007
- renderContext .hAnimNode = this .hAnimNode .at (-1);
33031
+ renderContext .hAnimNode = geometryContext .getCoord () ?.[_hAnimNodes] ?.at (-1);
33008
33032
  renderContext .shapeNode = shapeNode;
33009
33033
 
33010
33034
  // Clip planes
@@ -33020,7 +33044,7 @@ Object .assign (X3DRenderObject .prototype,
33020
33044
  bboxSize = new Numbers_Vector3 (),
33021
33045
  bboxCenter = new Numbers_Vector3 ();
33022
33046
 
33023
- return function (shapeNode)
33047
+ return function (shapeNode, geometryContext)
33024
33048
  {
33025
33049
  const modelViewMatrix = this .getModelViewMatrix () .get ();
33026
33050
 
@@ -33038,23 +33062,15 @@ Object .assign (X3DRenderObject .prototype,
33038
33062
 
33039
33063
  if (shapeNode .isTransparent ())
33040
33064
  {
33041
- const num = this .numTransparentShapes ++;
33042
-
33043
- if (num === this .transparentShapes .length)
33044
- this .transparentShapes .push (this .createRenderContext (true));
33045
-
33046
- renderContext = this .transparentShapes [num];
33065
+ renderContext = this .transparentShapes [this .numTransparentShapes ++]
33066
+ ??= this .createRenderContext (true);
33047
33067
 
33048
33068
  renderContext .distance = bboxCenter .z;
33049
33069
  }
33050
33070
  else
33051
33071
  {
33052
- const num = this .numOpaqueShapes ++;
33053
-
33054
- if (num === this .opaqueShapes .length)
33055
- this .opaqueShapes .push (this .createRenderContext (false));
33056
-
33057
- renderContext = this .opaqueShapes [num];
33072
+ renderContext = this .opaqueShapes [this .numOpaqueShapes ++]
33073
+ ??= this .createRenderContext (false);
33058
33074
  }
33059
33075
 
33060
33076
  this .renderPasses |= shapeNode .getRenderPasses ();
@@ -33064,7 +33080,7 @@ Object .assign (X3DRenderObject .prototype,
33064
33080
 
33065
33081
  renderContext .shadows = this .localShadows .at (-1);
33066
33082
  renderContext .fogNode = this .localFogs .at (-1);
33067
- renderContext .hAnimNode = this .hAnimNode .at (-1);
33083
+ renderContext .hAnimNode = geometryContext .getCoord () ?.[_hAnimNodes] ?.at (-1);
33068
33084
  renderContext .shapeNode = shapeNode;
33069
33085
  renderContext .appearanceNode = shapeNode .getAppearance ();
33070
33086
 
@@ -36531,6 +36547,10 @@ Object .assign (GeometryContext .prototype,
36531
36547
  {
36532
36548
  return this .textureCoordinateNode;
36533
36549
  },
36550
+ getCoord ()
36551
+ {
36552
+ return null;
36553
+ },
36534
36554
  updateGeometryKey: Rendering_X3DGeometryNode .prototype .updateGeometryKey,
36535
36555
  });
36536
36556
 
@@ -42765,13 +42785,13 @@ function eventsProcessed ()
42765
42785
  {
42766
42786
  if (childNode .getType () .at (-1) !== Base_X3DConstants .HAnimJoint)
42767
42787
  {
42768
- const segmentNode = scene .createNode ("HAnimSegment", false);
42788
+ const siteNode = scene .createNode ("HAnimSite", false);
42769
42789
 
42770
- segmentNode ._children .push (childNode);
42790
+ siteNode ._children .push (childNode);
42771
42791
 
42772
- segmentNode .setup ();
42792
+ siteNode .setup ();
42773
42793
 
42774
- return segmentNode;
42794
+ return siteNode;
42775
42795
  }
42776
42796
  else
42777
42797
  {
@@ -47903,7 +47923,7 @@ const Bezier_default_ = Bezier;
47903
47923
 
47904
47924
  /* harmony default export */ const Algorithms_Bezier = (x_ite_Namespace .add ("Bezier", Bezier_default_));
47905
47925
  ;// ./src/x_ite/Parser/SVGParser.js
47906
- /* provided dependency */ var SVGParser_libtess = __webpack_require__(67);
47926
+ /* provided dependency */ var SVGParser_libtess = __webpack_require__(901);
47907
47927
 
47908
47928
 
47909
47929
 
@@ -54011,7 +54031,8 @@ Object .assign (Object .setPrototypeOf (X3DScene .prototype, Execution_X3DExecut
54011
54031
  },
54012
54032
  addRootNode (node)
54013
54033
  {
54014
- node = Fields_SFNodeCache .get (Base_X3DCast (Base_X3DConstants .X3DNode, node, false));
54034
+ node = Base_X3DCast (Base_X3DConstants .X3DNode, node, false);
54035
+ node &&= Fields_SFNodeCache .get (node);
54015
54036
 
54016
54037
  const rootNodes = this .getRootNodes ();
54017
54038
 
@@ -54022,7 +54043,8 @@ Object .assign (Object .setPrototypeOf (X3DScene .prototype, Execution_X3DExecut
54022
54043
  },
54023
54044
  removeRootNode (node)
54024
54045
  {
54025
- node = Fields_SFNodeCache .get (Base_X3DCast (Base_X3DConstants .X3DNode, node, false));
54046
+ node = Base_X3DCast (Base_X3DConstants .X3DNode, node, false);
54047
+ node &&= Fields_SFNodeCache .get (node);
54026
54048
 
54027
54049
  const rootNodes = this .getRootNodes ();
54028
54050
 
@@ -54677,7 +54699,7 @@ function X3DCoreContext (element)
54677
54699
  const link = document .createElement ("link");
54678
54700
 
54679
54701
  if (!DEVELOPMENT)
54680
- link .integrity = "sha384-PV+KMMYFFsD4yJSRNZxR5SQtB1+/svusY5D4rmCUw1HodNYMj3Nx2fKast5z9E0g";
54702
+ link .integrity = "sha384-6OXJlHzXsf/wUqb6nZzYEmTdwO5SKkQn/PDr8Ax82LGFXKZqL7ojVZCBBNFnuYOt";
54681
54703
 
54682
54704
  link .rel = "stylesheet";
54683
54705
  link .crossOrigin = "anonymous";
@@ -57912,7 +57934,7 @@ Object .assign (Object .setPrototypeOf (X3DShapeNode .prototype, Core_X3DChildNo
57912
57934
  {
57913
57935
  case Rendering_TraverseType .POINTER:
57914
57936
  {
57915
- renderObject .addPointingShape (this);
57937
+ renderObject .addPointingShape (this, geometryContext);
57916
57938
  break;
57917
57939
  }
57918
57940
  case Rendering_TraverseType .PICKING:
@@ -57922,20 +57944,20 @@ Object .assign (Object .setPrototypeOf (X3DShapeNode .prototype, Core_X3DChildNo
57922
57944
  }
57923
57945
  case Rendering_TraverseType .COLLISION:
57924
57946
  {
57925
- renderObject .addCollisionShape (this);
57947
+ renderObject .addCollisionShape (this, geometryContext);
57926
57948
  break;
57927
57949
  }
57928
57950
  case Rendering_TraverseType .DEPTH:
57929
57951
  case Rendering_TraverseType .SHADOW:
57930
57952
  {
57931
- renderObject .addDepthShape (this);
57953
+ renderObject .addDepthShape (this, geometryContext);
57932
57954
  break;
57933
57955
  }
57934
57956
  case Rendering_TraverseType .DISPLAY:
57935
57957
  {
57936
57958
  // X3DAppearanceNode traverse is needed for rendered textures.
57937
57959
 
57938
- if (renderObject .addDisplayShape (this))
57960
+ if (renderObject .addDisplayShape (this, geometryContext))
57939
57961
  this .appearanceNode .traverse (type, renderObject);
57940
57962
 
57941
57963
  break;
@@ -83899,13 +83921,14 @@ Object .assign (Object .setPrototypeOf (Inline .prototype, Core_X3DChildNode .pr
83899
83921
  else
83900
83922
  {
83901
83923
  const
83902
- globalLights = renderObject .getGlobalLights (),
83903
- globalShadows = renderObject .getGlobalShadows (),
83904
- globalsBegin = globalLights .length,
83905
- shadowsBegin = globalShadows .length,
83906
- localLights = this .localLights,
83907
- numLocalObjects = localLights .length,
83908
- lightsKeys = localLights .map (c => c .lightNode .getLightKey ());
83924
+ globalLights = renderObject .getGlobalLights (),
83925
+ globalLightsKeys = renderObject .getGlobalLightsKeys (),
83926
+ globalShadows = renderObject .getGlobalShadows (),
83927
+ globalsBegin = globalLights .length,
83928
+ shadowsBegin = globalShadows .length,
83929
+ localLights = this .localLights,
83930
+ numLocalObjects = localLights .length,
83931
+ lightsKeys = localLights .map (c => c .lightNode .getLightKey ());
83909
83932
 
83910
83933
  if (numLocalObjects)
83911
83934
  {
@@ -83950,8 +83973,9 @@ Object .assign (Object .setPrototypeOf (Inline .prototype, Core_X3DChildNode .pr
83950
83973
  localLights .length = numGlobalLights;
83951
83974
  this .localShadows = globalShadows .at (-1);
83952
83975
 
83953
- globalLights .length = globalsBegin;
83954
- globalShadows .length = shadowsBegin;
83976
+ globalLights .length = globalsBegin;
83977
+ globalLightsKeys .length = globalsBegin;
83978
+ globalShadows .length = shadowsBegin;
83955
83979
  }
83956
83980
 
83957
83981
  return;
@@ -91552,8 +91576,8 @@ const PNGMedia_default_ = PNGMedia;
91552
91576
 
91553
91577
  /* harmony default export */ const Texturing_PNGMedia = (x_ite_Namespace .add ("PNGMedia", PNGMedia_default_));
91554
91578
  ;// ./src/x_ite/Components/Texturing/MovieTexture.js
91555
- /* provided dependency */ var SuperGif = __webpack_require__(829);
91556
- /* provided dependency */ var APNG = __webpack_require__(247);
91579
+ /* provided dependency */ var SuperGif = __webpack_require__(23);
91580
+ /* provided dependency */ var APNG = __webpack_require__(197);
91557
91581
 
91558
91582
 
91559
91583
 
@@ -94197,7 +94221,7 @@ const QuickSort_default_ = QuickSort;
94197
94221
 
94198
94222
  /* harmony default export */ const Algorithms_QuickSort = (x_ite_Namespace .add ("QuickSort", QuickSort_default_));
94199
94223
  ;// ./src/lib/libtess.js
94200
- /* provided dependency */ var libtess_libtess = __webpack_require__(67);
94224
+ /* provided dependency */ var libtess_libtess = __webpack_require__(901);
94201
94225
  const libtess_default_ = libtess_libtess;
94202
94226
  ;
94203
94227