janusweb 1.5.41 → 1.5.43

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 (250) hide show
  1. package/CHANGELOG +23 -0
  2. package/css/janusweb.css +7 -2
  3. package/media/assets/webui/apps/buttons/buttons.js +17 -43
  4. package/media/assets/webui/apps/comms/chat.html +1 -0
  5. package/media/assets/webui/apps/comms/chat_message.html +1 -1
  6. package/media/assets/webui/apps/comms/comms.js +14 -7
  7. package/media/assets/webui/apps/comms/external/naf-shim.js +1 -1
  8. package/media/assets/webui/apps/comms/voip.css +32 -3
  9. package/media/assets/webui/apps/comms/voip.js +191 -12
  10. package/media/assets/webui/apps/editor/editor.css +1 -0
  11. package/media/assets/webui/apps/editor/editor.js +97 -20
  12. package/media/assets/webui/apps/inventory/inventory.css +2 -1
  13. package/media/assets/webui/apps/locomotion/teleporter.js +21 -10
  14. package/media/assets/webui/apps/xrmenu/images/audio-settings.png +0 -0
  15. package/media/assets/webui/apps/xrmenu/xrmenu-assets.json +2 -1
  16. package/media/assets/webui/apps/xrmenu/xrmenu.js +119 -32
  17. package/media/assets/webui/themes/default.css +42 -0
  18. package/media/lib/basis/basis_transcoder.js +8 -8
  19. package/media/lib/basis/basis_transcoder.wasm +0 -0
  20. package/media/lib/three-icosa/brushes/BlocksBasic-0e87b49c-6546-3a34-3a44-8a556d7d6c3e/BlocksBasic-0e87b49c-6546-3a34-3a44-8a556d7d6c3e-v10.0-fragment.glsl +284 -0
  21. package/media/lib/three-icosa/brushes/BlocksBasic-0e87b49c-6546-3a34-3a44-8a556d7d6c3e/BlocksBasic-0e87b49c-6546-3a34-3a44-8a556d7d6c3e-v10.0-vertex.glsl +60 -0
  22. package/media/lib/three-icosa/brushes/BlocksGem-232998f8-d357-47a2-993a-53415df9be10/BlocksGem-232998f8-d357-47a2-993a-53415df9be10-v10.0-fragment.glsl +334 -0
  23. package/media/lib/three-icosa/brushes/BlocksGem-232998f8-d357-47a2-993a-53415df9be10/BlocksGem-232998f8-d357-47a2-993a-53415df9be10-v10.0-vertex.glsl +46 -0
  24. package/media/lib/three-icosa/brushes/BlocksGlass-3d813d82-5839-4450-8ddc-8e889ecd96c7/BlocksGlass-3d813d82-5839-4450-8ddc-8e889ecd96c7-v10.0-fragment.glsl +248 -0
  25. package/media/lib/three-icosa/brushes/BlocksGlass-3d813d82-5839-4450-8ddc-8e889ecd96c7/BlocksGlass-3d813d82-5839-4450-8ddc-8e889ecd96c7-v10.0-vertex.glsl +60 -0
  26. package/media/lib/three-icosa/brushes/Bubbles-89d104cd-d012-426b-b5b3-bbaee63ac43c/Bubbles-89d104cd-d012-426b-b5b3-bbaee63ac43c-v10.0-MainTex.png +0 -0
  27. package/media/lib/three-icosa/brushes/Bubbles-89d104cd-d012-426b-b5b3-bbaee63ac43c/Bubbles-89d104cd-d012-426b-b5b3-bbaee63ac43c-v10.0-fragment.glsl +34 -0
  28. package/media/lib/three-icosa/brushes/Bubbles-89d104cd-d012-426b-b5b3-bbaee63ac43c/Bubbles-89d104cd-d012-426b-b5b3-bbaee63ac43c-v10.0-vertex.glsl +120 -0
  29. package/media/lib/three-icosa/brushes/CelVinyl-700f3aa8-9a7c-2384-8b8a-ea028905dd8c/CelVinyl-700f3aa8-9a7c-2384-8b8a-ea028905dd8c-v10.0-MainTex.png +0 -0
  30. package/media/lib/three-icosa/brushes/CelVinyl-700f3aa8-9a7c-2384-8b8a-ea028905dd8c/CelVinyl-700f3aa8-9a7c-2384-8b8a-ea028905dd8c-v10.0-fragment.glsl +89 -0
  31. package/media/lib/three-icosa/brushes/CelVinyl-700f3aa8-9a7c-2384-8b8a-ea028905dd8c/CelVinyl-700f3aa8-9a7c-2384-8b8a-ea028905dd8c-v10.0-vertex.glsl +60 -0
  32. package/media/lib/three-icosa/brushes/ChromaticWave-0f0ff7b2-a677-45eb-a7d6-0cd7206f4816/ChromaticWave-0f0ff7b2-a677-45eb-a7d6-0cd7206f4816-v10.0-fragment.glsl +69 -0
  33. package/media/lib/three-icosa/brushes/ChromaticWave-0f0ff7b2-a677-45eb-a7d6-0cd7206f4816/ChromaticWave-0f0ff7b2-a677-45eb-a7d6-0cd7206f4816-v10.0-vertex.glsl +60 -0
  34. package/media/lib/three-icosa/brushes/CoarseBristles-1161af82-50cf-47db-9706-0c3576d43c43/CoarseBristles-1161af82-50cf-47db-9706-0c3576d43c43-v10.0-MainTex.png +0 -0
  35. package/media/lib/three-icosa/brushes/CoarseBristles-1161af82-50cf-47db-9706-0c3576d43c43/CoarseBristles-1161af82-50cf-47db-9706-0c3576d43c43-v10.0-fragment.glsl +289 -0
  36. package/media/lib/three-icosa/brushes/CoarseBristles-1161af82-50cf-47db-9706-0c3576d43c43/CoarseBristles-1161af82-50cf-47db-9706-0c3576d43c43-v10.0-vertex.glsl +60 -0
  37. package/media/lib/three-icosa/brushes/CoarseBristles-79168f10-6961-464a-8be1-57ed364c5600/CoarseBristles-79168f10-6961-464a-8be1-57ed364c5600-v10.0-MainTex.png +0 -0
  38. package/media/lib/three-icosa/brushes/CoarseBristles-79168f10-6961-464a-8be1-57ed364c5600/CoarseBristles-79168f10-6961-464a-8be1-57ed364c5600-v10.0-fragment.glsl +292 -0
  39. package/media/lib/three-icosa/brushes/CoarseBristles-79168f10-6961-464a-8be1-57ed364c5600/CoarseBristles-79168f10-6961-464a-8be1-57ed364c5600-v10.0-vertex.glsl +60 -0
  40. package/media/lib/three-icosa/brushes/Comet-1caa6d7d-f015-3f54-3a4b-8b5354d39f81/Comet-1caa6d7d-f015-3f54-3a4b-8b5354d39f81-v10.0-AlphaMask.png +0 -0
  41. package/media/lib/three-icosa/brushes/Comet-1caa6d7d-f015-3f54-3a4b-8b5354d39f81/Comet-1caa6d7d-f015-3f54-3a4b-8b5354d39f81-v10.0-MainTex.png +0 -0
  42. package/media/lib/three-icosa/brushes/Comet-1caa6d7d-f015-3f54-3a4b-8b5354d39f81/Comet-1caa6d7d-f015-3f54-3a4b-8b5354d39f81-v10.0-fragment.glsl +65 -0
  43. package/media/lib/three-icosa/brushes/Comet-1caa6d7d-f015-3f54-3a4b-8b5354d39f81/Comet-1caa6d7d-f015-3f54-3a4b-8b5354d39f81-v10.0-vertex.glsl +60 -0
  44. package/media/lib/three-icosa/brushes/DiamondHull-c8313697-2563-47fc-832e-290f4c04b901/DiamondHull-c8313697-2563-47fc-832e-290f4c04b901-v10.0-MainTex.png +0 -0
  45. package/media/lib/three-icosa/brushes/DiamondHull-c8313697-2563-47fc-832e-290f4c04b901/DiamondHull-c8313697-2563-47fc-832e-290f4c04b901-v10.0-fragment.glsl +481 -0
  46. package/media/lib/three-icosa/brushes/DiamondHull-c8313697-2563-47fc-832e-290f4c04b901/DiamondHull-c8313697-2563-47fc-832e-290f4c04b901-v10.0-vertex.glsl +57 -0
  47. package/media/lib/three-icosa/brushes/Disco-4391aaaa-df73-4396-9e33-31e4e4930b27/Disco-4391aaaa-df73-4396-9e33-31e4e4930b27-v10.0-fragment.glsl +290 -0
  48. package/media/lib/three-icosa/brushes/Disco-4391aaaa-df73-4396-9e33-31e4e4930b27/Disco-4391aaaa-df73-4396-9e33-31e4e4930b27-v10.0-vertex.glsl +70 -0
  49. package/media/lib/three-icosa/brushes/DotMarker-d1d991f2-e7a0-4cf1-b328-f57e915e6260/DotMarker-d1d991f2-e7a0-4cf1-b328-f57e915e6260-v10.0-MainTex.png +0 -0
  50. package/media/lib/three-icosa/brushes/DotMarker-d1d991f2-e7a0-4cf1-b328-f57e915e6260/DotMarker-d1d991f2-e7a0-4cf1-b328-f57e915e6260-v10.0-fragment.glsl +113 -0
  51. package/media/lib/three-icosa/brushes/DotMarker-d1d991f2-e7a0-4cf1-b328-f57e915e6260/DotMarker-d1d991f2-e7a0-4cf1-b328-f57e915e6260-v10.0-vertex.glsl +60 -0
  52. package/media/lib/three-icosa/brushes/Dots-6a1cf9f9-032c-45ec-9b1d-a6680bee30f7/Dots-6a1cf9f9-032c-45ec-9b1d-a6680bee30f7-v10.0-MainTex.png +0 -0
  53. package/media/lib/three-icosa/brushes/Dots-6a1cf9f9-032c-45ec-9b1d-a6680bee30f7/Dots-6a1cf9f9-032c-45ec-9b1d-a6680bee30f7-v10.0-fragment.glsl +35 -0
  54. package/media/lib/three-icosa/brushes/Dots-6a1cf9f9-032c-45ec-9b1d-a6680bee30f7/Dots-6a1cf9f9-032c-45ec-9b1d-a6680bee30f7-v10.0-vertex.glsl +120 -0
  55. package/media/lib/three-icosa/brushes/DoubleTaperedFlat-0d3889f3-3ede-470c-8af4-f44813306126/DoubleTaperedFlat-0d3889f3-3ede-470c-8af4-f44813306126-v10.0-fragment.glsl +286 -0
  56. package/media/lib/three-icosa/brushes/DoubleTaperedFlat-0d3889f3-3ede-470c-8af4-f44813306126/DoubleTaperedFlat-0d3889f3-3ede-470c-8af4-f44813306126-v10.0-vertex.glsl +54 -0
  57. package/media/lib/three-icosa/brushes/DoubleTaperedMarker-0d3889f3-3ede-470c-8af4-de4813306126/DoubleTaperedMarker-0d3889f3-3ede-470c-8af4-de4813306126-v10.0-fragment.glsl +81 -0
  58. package/media/lib/three-icosa/brushes/DoubleTaperedMarker-0d3889f3-3ede-470c-8af4-de4813306126/DoubleTaperedMarker-0d3889f3-3ede-470c-8af4-de4813306126-v10.0-vertex.glsl +54 -0
  59. package/media/lib/three-icosa/brushes/DuctTape-3ca16e2f-bdcd-4da2-8631-dcef342f40f1/DuctTape-3ca16e2f-bdcd-4da2-8631-dcef342f40f1-v10.0-BumpMap.png +0 -0
  60. package/media/lib/three-icosa/brushes/DuctTape-3ca16e2f-bdcd-4da2-8631-dcef342f40f1/DuctTape-3ca16e2f-bdcd-4da2-8631-dcef342f40f1-v10.0-MainTex.png +0 -0
  61. package/media/lib/three-icosa/brushes/DuctTape-3ca16e2f-bdcd-4da2-8631-dcef342f40f1/DuctTape-3ca16e2f-bdcd-4da2-8631-dcef342f40f1-v10.0-fragment.glsl +376 -0
  62. package/media/lib/three-icosa/brushes/DuctTape-3ca16e2f-bdcd-4da2-8631-dcef342f40f1/DuctTape-3ca16e2f-bdcd-4da2-8631-dcef342f40f1-v10.0-vertex.glsl +60 -0
  63. package/media/lib/three-icosa/brushes/DuctTape-d0262945-853c-4481-9cbd-88586bed93cb/DuctTape-d0262945-853c-4481-9cbd-88586bed93cb-v10.0-BumpMap.png +0 -0
  64. package/media/lib/three-icosa/brushes/DuctTape-d0262945-853c-4481-9cbd-88586bed93cb/DuctTape-d0262945-853c-4481-9cbd-88586bed93cb-v10.0-MainTex.png +0 -0
  65. package/media/lib/three-icosa/brushes/DuctTape-d0262945-853c-4481-9cbd-88586bed93cb/DuctTape-d0262945-853c-4481-9cbd-88586bed93cb-v10.0-fragment.glsl +378 -0
  66. package/media/lib/three-icosa/brushes/DuctTape-d0262945-853c-4481-9cbd-88586bed93cb/DuctTape-d0262945-853c-4481-9cbd-88586bed93cb-v10.0-vertex.glsl +60 -0
  67. package/media/lib/three-icosa/brushes/Electricity-f6e85de3-6dcc-4e7f-87fd-cee8c3d25d51/Electricity-f6e85de3-6dcc-4e7f-87fd-cee8c3d25d51-v10.0-fragment.glsl +50 -0
  68. package/media/lib/three-icosa/brushes/Electricity-f6e85de3-6dcc-4e7f-87fd-cee8c3d25d51/Electricity-f6e85de3-6dcc-4e7f-87fd-cee8c3d25d51-v10.0-vertex.glsl +79 -0
  69. package/media/lib/three-icosa/brushes/Embers-02ffb866-7fb2-4d15-b761-1012cefb1360/Embers-02ffb866-7fb2-4d15-b761-1012cefb1360-v10.0-MainTex.png +0 -0
  70. package/media/lib/three-icosa/brushes/Embers-02ffb866-7fb2-4d15-b761-1012cefb1360/Embers-02ffb866-7fb2-4d15-b761-1012cefb1360-v10.0-fragment.glsl +32 -0
  71. package/media/lib/three-icosa/brushes/Embers-02ffb866-7fb2-4d15-b761-1012cefb1360/Embers-02ffb866-7fb2-4d15-b761-1012cefb1360-v10.0-vertex.glsl +152 -0
  72. package/media/lib/three-icosa/brushes/EnvironmentDiffuse-0ad58bbd-42bc-484e-ad9a-b61036ff4ce7/EnvironmentDiffuse-0ad58bbd-42bc-484e-ad9a-b61036ff4ce7-v1.0-fragment.glsl +288 -0
  73. package/media/lib/three-icosa/brushes/EnvironmentDiffuse-0ad58bbd-42bc-484e-ad9a-b61036ff4ce7/EnvironmentDiffuse-0ad58bbd-42bc-484e-ad9a-b61036ff4ce7-v1.0-vertex.glsl +47 -0
  74. package/media/lib/three-icosa/brushes/EnvironmentDiffuseLightMap-d01d9d6c-9a61-4aba-8146-5891fafb013b/EnvironmentDiffuseLightMap-d01d9d6c-9a61-4aba-8146-5891fafb013b-v1.0-fragment.glsl +288 -0
  75. package/media/lib/three-icosa/brushes/EnvironmentDiffuseLightMap-d01d9d6c-9a61-4aba-8146-5891fafb013b/EnvironmentDiffuseLightMap-d01d9d6c-9a61-4aba-8146-5891fafb013b-v1.0-vertex.glsl +50 -0
  76. package/media/lib/three-icosa/brushes/Fire-cb92b597-94ca-4255-b017-0e3f42f12f9e/Fire-cb92b597-94ca-4255-b017-0e3f42f12f9e-v10.0-MainTex.png +0 -0
  77. package/media/lib/three-icosa/brushes/Fire-cb92b597-94ca-4255-b017-0e3f42f12f9e/Fire-cb92b597-94ca-4255-b017-0e3f42f12f9e-v10.0-fragment.glsl +61 -0
  78. package/media/lib/three-icosa/brushes/Fire-cb92b597-94ca-4255-b017-0e3f42f12f9e/Fire-cb92b597-94ca-4255-b017-0e3f42f12f9e-v10.0-vertex.glsl +60 -0
  79. package/media/lib/three-icosa/brushes/Flat-280c0a7a-aad8-416c-a7d2-df63d129ca70/Flat-280c0a7a-aad8-416c-a7d2-df63d129ca70-v10.0-fragment.glsl +285 -0
  80. package/media/lib/three-icosa/brushes/Flat-280c0a7a-aad8-416c-a7d2-df63d129ca70/Flat-280c0a7a-aad8-416c-a7d2-df63d129ca70-v10.0-vertex.glsl +60 -0
  81. package/media/lib/three-icosa/brushes/Flat-2d35bcf0-e4d8-452c-97b1-3311be063130/Flat-2d35bcf0-e4d8-452c-97b1-3311be063130-v10.0-fragment.glsl +286 -0
  82. package/media/lib/three-icosa/brushes/Flat-2d35bcf0-e4d8-452c-97b1-3311be063130/Flat-2d35bcf0-e4d8-452c-97b1-3311be063130-v10.0-vertex.glsl +60 -0
  83. package/media/lib/three-icosa/brushes/FlatDeprecated-55303bc4-c749-4a72-98d9-d23e68e76e18/FlatDeprecated-55303bc4-c749-4a72-98d9-d23e68e76e18-v10.0-fragment.glsl +285 -0
  84. package/media/lib/three-icosa/brushes/FlatDeprecated-55303bc4-c749-4a72-98d9-d23e68e76e18/FlatDeprecated-55303bc4-c749-4a72-98d9-d23e68e76e18-v10.0-vertex.glsl +60 -0
  85. package/media/lib/three-icosa/brushes/Highlighter-cf019139-d41c-4eb0-a1d0-5cf54b0a42f3/Highlighter-cf019139-d41c-4eb0-a1d0-5cf54b0a42f3-v10.0-MainTex.png +0 -0
  86. package/media/lib/three-icosa/brushes/Highlighter-cf019139-d41c-4eb0-a1d0-5cf54b0a42f3/Highlighter-cf019139-d41c-4eb0-a1d0-5cf54b0a42f3-v10.0-fragment.glsl +40 -0
  87. package/media/lib/three-icosa/brushes/Highlighter-cf019139-d41c-4eb0-a1d0-5cf54b0a42f3/Highlighter-cf019139-d41c-4eb0-a1d0-5cf54b0a42f3-v10.0-vertex.glsl +60 -0
  88. package/media/lib/three-icosa/brushes/HyperGrid-6a1cf9f9-032c-45ec-9b6e-a6680bee32e9/HyperGrid-6a1cf9f9-032c-45ec-9b6e-a6680bee32e9-v10.0-MainTex.png +0 -0
  89. package/media/lib/three-icosa/brushes/HyperGrid-6a1cf9f9-032c-45ec-9b6e-a6680bee32e9/HyperGrid-6a1cf9f9-032c-45ec-9b6e-a6680bee32e9-v10.0-fragment.glsl +33 -0
  90. package/media/lib/three-icosa/brushes/HyperGrid-6a1cf9f9-032c-45ec-9b6e-a6680bee32e9/HyperGrid-6a1cf9f9-032c-45ec-9b6e-a6680bee32e9-v10.0-vertex.glsl +60 -0
  91. package/media/lib/three-icosa/brushes/Hypercolor-dce872c2-7b49-4684-b59b-c45387949c5c/Hypercolor-dce872c2-7b49-4684-b59b-c45387949c5c-v10.0-BumpMap.png +0 -0
  92. package/media/lib/three-icosa/brushes/Hypercolor-dce872c2-7b49-4684-b59b-c45387949c5c/Hypercolor-dce872c2-7b49-4684-b59b-c45387949c5c-v10.0-MainTex.png +0 -0
  93. package/media/lib/three-icosa/brushes/Hypercolor-dce872c2-7b49-4684-b59b-c45387949c5c/Hypercolor-dce872c2-7b49-4684-b59b-c45387949c5c-v10.0-fragment.glsl +386 -0
  94. package/media/lib/three-icosa/brushes/Hypercolor-dce872c2-7b49-4684-b59b-c45387949c5c/Hypercolor-dce872c2-7b49-4684-b59b-c45387949c5c-v10.0-vertex.glsl +60 -0
  95. package/media/lib/three-icosa/brushes/Hypercolor-e8ef32b1-baa8-460a-9c2c-9cf8506794f5/Hypercolor-e8ef32b1-baa8-460a-9c2c-9cf8506794f5-v10.0-BumpMap.png +0 -0
  96. package/media/lib/three-icosa/brushes/Hypercolor-e8ef32b1-baa8-460a-9c2c-9cf8506794f5/Hypercolor-e8ef32b1-baa8-460a-9c2c-9cf8506794f5-v10.0-MainTex.png +0 -0
  97. package/media/lib/three-icosa/brushes/Hypercolor-e8ef32b1-baa8-460a-9c2c-9cf8506794f5/Hypercolor-e8ef32b1-baa8-460a-9c2c-9cf8506794f5-v10.0-fragment.glsl +385 -0
  98. package/media/lib/three-icosa/brushes/Hypercolor-e8ef32b1-baa8-460a-9c2c-9cf8506794f5/Hypercolor-e8ef32b1-baa8-460a-9c2c-9cf8506794f5-v10.0-vertex.glsl +60 -0
  99. package/media/lib/three-icosa/brushes/Icing-2f212815-f4d3-c1a4-681a-feeaf9c6dc37/Icing-2f212815-f4d3-c1a4-681a-feeaf9c6dc37-v10.0-BumpMap.png +0 -0
  100. package/media/lib/three-icosa/brushes/Icing-2f212815-f4d3-c1a4-681a-feeaf9c6dc37/Icing-2f212815-f4d3-c1a4-681a-feeaf9c6dc37-v10.0-fragment.glsl +376 -0
  101. package/media/lib/three-icosa/brushes/Icing-2f212815-f4d3-c1a4-681a-feeaf9c6dc37/Icing-2f212815-f4d3-c1a4-681a-feeaf9c6dc37-v10.0-vertex.glsl +60 -0
  102. package/media/lib/three-icosa/brushes/Ink-c0012095-3ffd-4040-8ee1-fc180d346eaa/Ink-c0012095-3ffd-4040-8ee1-fc180d346eaa-v10.0-BumpMap.png +0 -0
  103. package/media/lib/three-icosa/brushes/Ink-c0012095-3ffd-4040-8ee1-fc180d346eaa/Ink-c0012095-3ffd-4040-8ee1-fc180d346eaa-v10.0-MainTex.png +0 -0
  104. package/media/lib/three-icosa/brushes/Ink-c0012095-3ffd-4040-8ee1-fc180d346eaa/Ink-c0012095-3ffd-4040-8ee1-fc180d346eaa-v10.0-fragment.glsl +376 -0
  105. package/media/lib/three-icosa/brushes/Ink-c0012095-3ffd-4040-8ee1-fc180d346eaa/Ink-c0012095-3ffd-4040-8ee1-fc180d346eaa-v10.0-vertex.glsl +60 -0
  106. package/media/lib/three-icosa/brushes/Ink-f5c336cf-5108-4b40-ade9-c687504385ab/Ink-f5c336cf-5108-4b40-ade9-c687504385ab-v10.0-BumpMap.png +0 -0
  107. package/media/lib/three-icosa/brushes/Ink-f5c336cf-5108-4b40-ade9-c687504385ab/Ink-f5c336cf-5108-4b40-ade9-c687504385ab-v10.0-MainTex.png +0 -0
  108. package/media/lib/three-icosa/brushes/Ink-f5c336cf-5108-4b40-ade9-c687504385ab/Ink-f5c336cf-5108-4b40-ade9-c687504385ab-v10.0-fragment.glsl +377 -0
  109. package/media/lib/three-icosa/brushes/Ink-f5c336cf-5108-4b40-ade9-c687504385ab/Ink-f5c336cf-5108-4b40-ade9-c687504385ab-v10.0-vertex.glsl +60 -0
  110. package/media/lib/three-icosa/brushes/Leaves-ea19de07-d0c0-4484-9198-18489a3c1487/Leaves-ea19de07-d0c0-4484-9198-18489a3c1487-v10.0-BumpMap.png +0 -0
  111. package/media/lib/three-icosa/brushes/Leaves-ea19de07-d0c0-4484-9198-18489a3c1487/Leaves-ea19de07-d0c0-4484-9198-18489a3c1487-v10.0-MainTex.png +0 -0
  112. package/media/lib/three-icosa/brushes/Leaves-ea19de07-d0c0-4484-9198-18489a3c1487/Leaves-ea19de07-d0c0-4484-9198-18489a3c1487-v10.0-fragment.glsl +319 -0
  113. package/media/lib/three-icosa/brushes/Leaves-ea19de07-d0c0-4484-9198-18489a3c1487/Leaves-ea19de07-d0c0-4484-9198-18489a3c1487-v10.0-vertex.glsl +60 -0
  114. package/media/lib/three-icosa/brushes/Light-2241cd32-8ba2-48a5-9ee7-2caef7e9ed62/Light-2241cd32-8ba2-48a5-9ee7-2caef7e9ed62-v10.0-MainTex.png +0 -0
  115. package/media/lib/three-icosa/brushes/Light-2241cd32-8ba2-48a5-9ee7-2caef7e9ed62/Light-2241cd32-8ba2-48a5-9ee7-2caef7e9ed62-v10.0-fragment.glsl +47 -0
  116. package/media/lib/three-icosa/brushes/Light-2241cd32-8ba2-48a5-9ee7-2caef7e9ed62/Light-2241cd32-8ba2-48a5-9ee7-2caef7e9ed62-v10.0-vertex.glsl +60 -0
  117. package/media/lib/three-icosa/brushes/LightWire-4391aaaa-df81-4396-9e33-31e4e4930b27/LightWire-4391aaaa-df81-4396-9e33-31e4e4930b27-v10.0-MainTex.png +0 -0
  118. package/media/lib/three-icosa/brushes/LightWire-4391aaaa-df81-4396-9e33-31e4e4930b27/LightWire-4391aaaa-df81-4396-9e33-31e4e4930b27-v10.0-fragment.glsl +330 -0
  119. package/media/lib/three-icosa/brushes/LightWire-4391aaaa-df81-4396-9e33-31e4e4930b27/LightWire-4391aaaa-df81-4396-9e33-31e4e4930b27-v10.0-vertex.glsl +64 -0
  120. package/media/lib/three-icosa/brushes/Lofted-d381e0f5-3def-4a0d-8853-31e9200bcbda/Lofted-d381e0f5-3def-4a0d-8853-31e9200bcbda-v10.0-fragment.glsl +285 -0
  121. package/media/lib/three-icosa/brushes/Lofted-d381e0f5-3def-4a0d-8853-31e9200bcbda/Lofted-d381e0f5-3def-4a0d-8853-31e9200bcbda-v10.0-vertex.glsl +60 -0
  122. package/media/lib/three-icosa/brushes/Marker-429ed64a-4e97-4466-84d3-145a861ef684/Marker-429ed64a-4e97-4466-84d3-145a861ef684-v10.0-MainTex.png +0 -0
  123. package/media/lib/three-icosa/brushes/Marker-429ed64a-4e97-4466-84d3-145a861ef684/Marker-429ed64a-4e97-4466-84d3-145a861ef684-v10.0-fragment.glsl +87 -0
  124. package/media/lib/three-icosa/brushes/Marker-429ed64a-4e97-4466-84d3-145a861ef684/Marker-429ed64a-4e97-4466-84d3-145a861ef684-v10.0-vertex.glsl +60 -0
  125. package/media/lib/three-icosa/brushes/MatteHull-79348357-432d-4746-8e29-0e25c112e3aa/MatteHull-79348357-432d-4746-8e29-0e25c112e3aa-v10.0-fragment.glsl +285 -0
  126. package/media/lib/three-icosa/brushes/MatteHull-79348357-432d-4746-8e29-0e25c112e3aa/MatteHull-79348357-432d-4746-8e29-0e25c112e3aa-v10.0-vertex.glsl +60 -0
  127. package/media/lib/three-icosa/brushes/NeonPulse-b2ffef01-eaaa-4ab5-aa64-95a2c4f5dbc6/NeonPulse-b2ffef01-eaaa-4ab5-aa64-95a2c4f5dbc6-v10.0-fragment.glsl +267 -0
  128. package/media/lib/three-icosa/brushes/NeonPulse-b2ffef01-eaaa-4ab5-aa64-95a2c4f5dbc6/NeonPulse-b2ffef01-eaaa-4ab5-aa64-95a2c4f5dbc6-v10.0-vertex.glsl +60 -0
  129. package/media/lib/three-icosa/brushes/OilPaint-f72ec0e7-a844-4e38-82e3-140c44772699/OilPaint-f72ec0e7-a844-4e38-82e3-140c44772699-v10.0-BumpMap.png +0 -0
  130. package/media/lib/three-icosa/brushes/OilPaint-f72ec0e7-a844-4e38-82e3-140c44772699/OilPaint-f72ec0e7-a844-4e38-82e3-140c44772699-v10.0-MainTex.png +0 -0
  131. package/media/lib/three-icosa/brushes/OilPaint-f72ec0e7-a844-4e38-82e3-140c44772699/OilPaint-f72ec0e7-a844-4e38-82e3-140c44772699-v10.0-fragment.glsl +377 -0
  132. package/media/lib/three-icosa/brushes/OilPaint-f72ec0e7-a844-4e38-82e3-140c44772699/OilPaint-f72ec0e7-a844-4e38-82e3-140c44772699-v10.0-vertex.glsl +60 -0
  133. package/media/lib/three-icosa/brushes/Paper-759f1ebd-20cd-4720-8d41-234e0da63716/Paper-759f1ebd-20cd-4720-8d41-234e0da63716-v10.0-BumpMap.png +0 -0
  134. package/media/lib/three-icosa/brushes/Paper-759f1ebd-20cd-4720-8d41-234e0da63716/Paper-759f1ebd-20cd-4720-8d41-234e0da63716-v10.0-MainTex.png +0 -0
  135. package/media/lib/three-icosa/brushes/Paper-759f1ebd-20cd-4720-8d41-234e0da63716/Paper-759f1ebd-20cd-4720-8d41-234e0da63716-v10.0-fragment.glsl +376 -0
  136. package/media/lib/three-icosa/brushes/Paper-759f1ebd-20cd-4720-8d41-234e0da63716/Paper-759f1ebd-20cd-4720-8d41-234e0da63716-v10.0-vertex.glsl +60 -0
  137. package/media/lib/three-icosa/brushes/Paper-f1114e2e-eb8d-4fde-915a-6e653b54e9f5/Paper-f1114e2e-eb8d-4fde-915a-6e653b54e9f5-v10.0-BumpMap.png +0 -0
  138. package/media/lib/three-icosa/brushes/Paper-f1114e2e-eb8d-4fde-915a-6e653b54e9f5/Paper-f1114e2e-eb8d-4fde-915a-6e653b54e9f5-v10.0-MainTex.png +0 -0
  139. package/media/lib/three-icosa/brushes/Paper-f1114e2e-eb8d-4fde-915a-6e653b54e9f5/Paper-f1114e2e-eb8d-4fde-915a-6e653b54e9f5-v10.0-fragment.glsl +377 -0
  140. package/media/lib/three-icosa/brushes/Paper-f1114e2e-eb8d-4fde-915a-6e653b54e9f5/Paper-f1114e2e-eb8d-4fde-915a-6e653b54e9f5-v10.0-vertex.glsl +60 -0
  141. package/media/lib/three-icosa/brushes/PbrTemplate-f86a096c-2f4f-4f9d-ae19-81b99f2944e0/PbrTemplate-f86a096c-2f4f-4f9d-ae19-81b99f2944e0-v1.0-fragment.glsl +370 -0
  142. package/media/lib/three-icosa/brushes/PbrTemplate-f86a096c-2f4f-4f9d-ae19-81b99f2944e0/PbrTemplate-f86a096c-2f4f-4f9d-ae19-81b99f2944e0-v1.0-vertex.glsl +48 -0
  143. package/media/lib/three-icosa/brushes/PbrTransparentTemplate-19826f62-42ac-4a9e-8b77-4231fbd0cfbf/PbrTransparentTemplate-19826f62-42ac-4a9e-8b77-4231fbd0cfbf-v1.0-fragment.glsl +374 -0
  144. package/media/lib/three-icosa/brushes/PbrTransparentTemplate-19826f62-42ac-4a9e-8b77-4231fbd0cfbf/PbrTransparentTemplate-19826f62-42ac-4a9e-8b77-4231fbd0cfbf-v1.0-vertex.glsl +48 -0
  145. package/media/lib/three-icosa/brushes/Petal-e0abbc80-0f80-e854-4970-8924a0863dcc/Petal-e0abbc80-0f80-e854-4970-8924a0863dcc-v10.0-fragment.glsl +367 -0
  146. package/media/lib/three-icosa/brushes/Petal-e0abbc80-0f80-e854-4970-8924a0863dcc/Petal-e0abbc80-0f80-e854-4970-8924a0863dcc-v10.0-vertex.glsl +60 -0
  147. package/media/lib/three-icosa/brushes/Plasma-c33714d1-b2f9-412e-bd50-1884c9d46336/Plasma-c33714d1-b2f9-412e-bd50-1884c9d46336-v10.0-MainTex.png +0 -0
  148. package/media/lib/three-icosa/brushes/Plasma-c33714d1-b2f9-412e-bd50-1884c9d46336/Plasma-c33714d1-b2f9-412e-bd50-1884c9d46336-v10.0-fragment.glsl +64 -0
  149. package/media/lib/three-icosa/brushes/Plasma-c33714d1-b2f9-412e-bd50-1884c9d46336/Plasma-c33714d1-b2f9-412e-bd50-1884c9d46336-v10.0-vertex.glsl +60 -0
  150. package/media/lib/three-icosa/brushes/Rainbow-ad1ad437-76e2-450d-a23a-e17f8310b960/Rainbow-ad1ad437-76e2-450d-a23a-e17f8310b960-v10.0-fragment.glsl +70 -0
  151. package/media/lib/three-icosa/brushes/Rainbow-ad1ad437-76e2-450d-a23a-e17f8310b960/Rainbow-ad1ad437-76e2-450d-a23a-e17f8310b960-v10.0-vertex.glsl +60 -0
  152. package/media/lib/three-icosa/brushes/ShinyHull-faaa4d44-fcfb-4177-96be-753ac0421ba3/ShinyHull-faaa4d44-fcfb-4177-96be-753ac0421ba3-v10.0-fragment.glsl +367 -0
  153. package/media/lib/three-icosa/brushes/ShinyHull-faaa4d44-fcfb-4177-96be-753ac0421ba3/ShinyHull-faaa4d44-fcfb-4177-96be-753ac0421ba3-v10.0-vertex.glsl +60 -0
  154. package/media/lib/three-icosa/brushes/Smoke-70d79cca-b159-4f35-990c-f02193947fe8/Smoke-70d79cca-b159-4f35-990c-f02193947fe8-v10.0-MainTex.png +0 -0
  155. package/media/lib/three-icosa/brushes/Smoke-70d79cca-b159-4f35-990c-f02193947fe8/Smoke-70d79cca-b159-4f35-990c-f02193947fe8-v10.0-fragment.glsl +30 -0
  156. package/media/lib/three-icosa/brushes/Smoke-70d79cca-b159-4f35-990c-f02193947fe8/Smoke-70d79cca-b159-4f35-990c-f02193947fe8-v10.0-vertex.glsl +125 -0
  157. package/media/lib/three-icosa/brushes/Snow-d902ed8b-d0d1-476c-a8de-878a79e3a34c/Snow-d902ed8b-d0d1-476c-a8de-878a79e3a34c-v10.0-MainTex.png +0 -0
  158. package/media/lib/three-icosa/brushes/Snow-d902ed8b-d0d1-476c-a8de-878a79e3a34c/Snow-d902ed8b-d0d1-476c-a8de-878a79e3a34c-v10.0-fragment.glsl +31 -0
  159. package/media/lib/three-icosa/brushes/Snow-d902ed8b-d0d1-476c-a8de-878a79e3a34c/Snow-d902ed8b-d0d1-476c-a8de-878a79e3a34c-v10.0-vertex.glsl +143 -0
  160. package/media/lib/three-icosa/brushes/SoftHighlighter-accb32f5-4509-454f-93f8-1df3fd31df1b/SoftHighlighter-accb32f5-4509-454f-93f8-1df3fd31df1b-v10.0-MainTex.png +0 -0
  161. package/media/lib/three-icosa/brushes/SoftHighlighter-accb32f5-4509-454f-93f8-1df3fd31df1b/SoftHighlighter-accb32f5-4509-454f-93f8-1df3fd31df1b-v10.0-fragment.glsl +34 -0
  162. package/media/lib/three-icosa/brushes/SoftHighlighter-accb32f5-4509-454f-93f8-1df3fd31df1b/SoftHighlighter-accb32f5-4509-454f-93f8-1df3fd31df1b-v10.0-vertex.glsl +60 -0
  163. package/media/lib/three-icosa/brushes/Spikes-cf7f0059-7aeb-53a4-2b67-c83d863a9ffa/Spikes-cf7f0059-7aeb-53a4-2b67-c83d863a9ffa-v10.0-fragment.glsl +285 -0
  164. package/media/lib/three-icosa/brushes/Spikes-cf7f0059-7aeb-53a4-2b67-c83d863a9ffa/Spikes-cf7f0059-7aeb-53a4-2b67-c83d863a9ffa-v10.0-vertex.glsl +60 -0
  165. package/media/lib/three-icosa/brushes/Splatter-7a1c8107-50c5-4b70-9a39-421576d6617e/Splatter-7a1c8107-50c5-4b70-9a39-421576d6617e-v10.0-MainTex.png +0 -0
  166. package/media/lib/three-icosa/brushes/Splatter-7a1c8107-50c5-4b70-9a39-421576d6617e/Splatter-7a1c8107-50c5-4b70-9a39-421576d6617e-v10.0-fragment.glsl +290 -0
  167. package/media/lib/three-icosa/brushes/Splatter-7a1c8107-50c5-4b70-9a39-421576d6617e/Splatter-7a1c8107-50c5-4b70-9a39-421576d6617e-v10.0-vertex.glsl +60 -0
  168. package/media/lib/three-icosa/brushes/Splatter-8dc4a70c-d558-4efd-a5ed-d4e860f40dc3/Splatter-8dc4a70c-d558-4efd-a5ed-d4e860f40dc3-v10.0-MainTex.png +0 -0
  169. package/media/lib/three-icosa/brushes/Splatter-8dc4a70c-d558-4efd-a5ed-d4e860f40dc3/Splatter-8dc4a70c-d558-4efd-a5ed-d4e860f40dc3-v10.0-fragment.glsl +291 -0
  170. package/media/lib/three-icosa/brushes/Splatter-8dc4a70c-d558-4efd-a5ed-d4e860f40dc3/Splatter-8dc4a70c-d558-4efd-a5ed-d4e860f40dc3-v10.0-vertex.glsl +60 -0
  171. package/media/lib/three-icosa/brushes/Stars-0eb4db27-3f82-408d-b5a1-19ebd7d5b711/Stars-0eb4db27-3f82-408d-b5a1-19ebd7d5b711-v10.0-MainTex.png +0 -0
  172. package/media/lib/three-icosa/brushes/Stars-0eb4db27-3f82-408d-b5a1-19ebd7d5b711/Stars-0eb4db27-3f82-408d-b5a1-19ebd7d5b711-v10.0-fragment.glsl +31 -0
  173. package/media/lib/three-icosa/brushes/Stars-0eb4db27-3f82-408d-b5a1-19ebd7d5b711/Stars-0eb4db27-3f82-408d-b5a1-19ebd7d5b711-v10.0-vertex.glsl +128 -0
  174. package/media/lib/three-icosa/brushes/Streamers-44bb800a-fbc3-4592-8426-94ecb05ddec3/Streamers-44bb800a-fbc3-4592-8426-94ecb05ddec3-v10.0-MainTex.png +0 -0
  175. package/media/lib/three-icosa/brushes/Streamers-44bb800a-fbc3-4592-8426-94ecb05ddec3/Streamers-44bb800a-fbc3-4592-8426-94ecb05ddec3-v10.0-fragment.glsl +63 -0
  176. package/media/lib/three-icosa/brushes/Streamers-44bb800a-fbc3-4592-8426-94ecb05ddec3/Streamers-44bb800a-fbc3-4592-8426-94ecb05ddec3-v10.0-vertex.glsl +60 -0
  177. package/media/lib/three-icosa/brushes/Taffy-0077f88c-d93a-42f3-b59b-b31c50cdb414/Taffy-0077f88c-d93a-42f3-b59b-b31c50cdb414-v10.0-MainTex.png +0 -0
  178. package/media/lib/three-icosa/brushes/Taffy-0077f88c-d93a-42f3-b59b-b31c50cdb414/Taffy-0077f88c-d93a-42f3-b59b-b31c50cdb414-v10.0-fragment.glsl +113 -0
  179. package/media/lib/three-icosa/brushes/Taffy-0077f88c-d93a-42f3-b59b-b31c50cdb414/Taffy-0077f88c-d93a-42f3-b59b-b31c50cdb414-v10.0-vertex.glsl +62 -0
  180. package/media/lib/three-icosa/brushes/TaperedFlat-b468c1fb-f254-41ed-8ec9-57030bc5660c/TaperedFlat-b468c1fb-f254-41ed-8ec9-57030bc5660c-v10.0-MainTex.png +0 -0
  181. package/media/lib/three-icosa/brushes/TaperedFlat-b468c1fb-f254-41ed-8ec9-57030bc5660c/TaperedFlat-b468c1fb-f254-41ed-8ec9-57030bc5660c-v10.0-fragment.glsl +292 -0
  182. package/media/lib/three-icosa/brushes/TaperedFlat-b468c1fb-f254-41ed-8ec9-57030bc5660c/TaperedFlat-b468c1fb-f254-41ed-8ec9-57030bc5660c-v10.0-vertex.glsl +60 -0
  183. package/media/lib/three-icosa/brushes/TaperedFlat-c8ccb53d-ae13-45ef-8afb-b730d81394eb/TaperedFlat-c8ccb53d-ae13-45ef-8afb-b730d81394eb-v10.0-MainTex.png +0 -0
  184. package/media/lib/three-icosa/brushes/TaperedFlat-c8ccb53d-ae13-45ef-8afb-b730d81394eb/TaperedFlat-c8ccb53d-ae13-45ef-8afb-b730d81394eb-v10.0-fragment.glsl +287 -0
  185. package/media/lib/three-icosa/brushes/TaperedFlat-c8ccb53d-ae13-45ef-8afb-b730d81394eb/TaperedFlat-c8ccb53d-ae13-45ef-8afb-b730d81394eb-v10.0-vertex.glsl +58 -0
  186. package/media/lib/three-icosa/brushes/TaperedMarker-d90c6ad8-af0f-4b54-b422-e0f92abe1b3c/TaperedMarker-d90c6ad8-af0f-4b54-b422-e0f92abe1b3c-v10.0-MainTex.png +0 -0
  187. package/media/lib/three-icosa/brushes/TaperedMarker-d90c6ad8-af0f-4b54-b422-e0f92abe1b3c/TaperedMarker-d90c6ad8-af0f-4b54-b422-e0f92abe1b3c-v10.0-fragment.glsl +113 -0
  188. package/media/lib/three-icosa/brushes/TaperedMarker-d90c6ad8-af0f-4b54-b422-e0f92abe1b3c/TaperedMarker-d90c6ad8-af0f-4b54-b422-e0f92abe1b3c-v10.0-vertex.glsl +60 -0
  189. package/media/lib/three-icosa/brushes/TaperedMarker_Flat-1a26b8c0-8a07-4f8a-9fac-d2ef36e0cad0/TaperedMarker_Flat-1a26b8c0-8a07-4f8a-9fac-d2ef36e0cad0-v10.0-MainTex.png +0 -0
  190. package/media/lib/three-icosa/brushes/TaperedMarker_Flat-1a26b8c0-8a07-4f8a-9fac-d2ef36e0cad0/TaperedMarker_Flat-1a26b8c0-8a07-4f8a-9fac-d2ef36e0cad0-v10.0-fragment.glsl +314 -0
  191. package/media/lib/three-icosa/brushes/TaperedMarker_Flat-1a26b8c0-8a07-4f8a-9fac-d2ef36e0cad0/TaperedMarker_Flat-1a26b8c0-8a07-4f8a-9fac-d2ef36e0cad0-v10.0-vertex.glsl +60 -0
  192. package/media/lib/three-icosa/brushes/ThickPaint-75b32cf0-fdd6-4d89-a64b-e2a00b247b0f/ThickPaint-75b32cf0-fdd6-4d89-a64b-e2a00b247b0f-v10.0-BumpMap.png +0 -0
  193. package/media/lib/three-icosa/brushes/ThickPaint-75b32cf0-fdd6-4d89-a64b-e2a00b247b0f/ThickPaint-75b32cf0-fdd6-4d89-a64b-e2a00b247b0f-v10.0-MainTex.png +0 -0
  194. package/media/lib/three-icosa/brushes/ThickPaint-75b32cf0-fdd6-4d89-a64b-e2a00b247b0f/ThickPaint-75b32cf0-fdd6-4d89-a64b-e2a00b247b0f-v10.0-fragment.glsl +378 -0
  195. package/media/lib/three-icosa/brushes/ThickPaint-75b32cf0-fdd6-4d89-a64b-e2a00b247b0f/ThickPaint-75b32cf0-fdd6-4d89-a64b-e2a00b247b0f-v10.0-vertex.glsl +60 -0
  196. package/media/lib/three-icosa/brushes/ThickPaint-fdf0326a-c0d1-4fed-b101-9db0ff6d071f/ThickPaint-fdf0326a-c0d1-4fed-b101-9db0ff6d071f-v10.0-BumpMap.png +0 -0
  197. package/media/lib/three-icosa/brushes/ThickPaint-fdf0326a-c0d1-4fed-b101-9db0ff6d071f/ThickPaint-fdf0326a-c0d1-4fed-b101-9db0ff6d071f-v10.0-MainTex.png +0 -0
  198. package/media/lib/three-icosa/brushes/ThickPaint-fdf0326a-c0d1-4fed-b101-9db0ff6d071f/ThickPaint-fdf0326a-c0d1-4fed-b101-9db0ff6d071f-v10.0-fragment.glsl +380 -0
  199. package/media/lib/three-icosa/brushes/ThickPaint-fdf0326a-c0d1-4fed-b101-9db0ff6d071f/ThickPaint-fdf0326a-c0d1-4fed-b101-9db0ff6d071f-v10.0-vertex.glsl +58 -0
  200. package/media/lib/three-icosa/brushes/Toon-4391385a-df73-4396-9e33-31e4e4930b27/Toon-4391385a-df73-4396-9e33-31e4e4930b27-v10.0-fragment.glsl +85 -0
  201. package/media/lib/three-icosa/brushes/Toon-4391385a-df73-4396-9e33-31e4e4930b27/Toon-4391385a-df73-4396-9e33-31e4e4930b27-v10.0-vertex.glsl +60 -0
  202. package/media/lib/three-icosa/brushes/UnlitHull-a8fea537-da7c-4d4b-817f-24f074725d6d/UnlitHull-a8fea537-da7c-4d4b-817f-24f074725d6d-v10.0-fragment.glsl +81 -0
  203. package/media/lib/three-icosa/brushes/UnlitHull-a8fea537-da7c-4d4b-817f-24f074725d6d/UnlitHull-a8fea537-da7c-4d4b-817f-24f074725d6d-v10.0-vertex.glsl +60 -0
  204. package/media/lib/three-icosa/brushes/VelvetInk-d229d335-c334-495a-a801-660ac8a87360/VelvetInk-d229d335-c334-495a-a801-660ac8a87360-v10.0-MainTex.png +0 -0
  205. package/media/lib/three-icosa/brushes/VelvetInk-d229d335-c334-495a-a801-660ac8a87360/VelvetInk-d229d335-c334-495a-a801-660ac8a87360-v10.0-fragment.glsl +80 -0
  206. package/media/lib/three-icosa/brushes/VelvetInk-d229d335-c334-495a-a801-660ac8a87360/VelvetInk-d229d335-c334-495a-a801-660ac8a87360-v10.0-vertex.glsl +60 -0
  207. package/media/lib/three-icosa/brushes/Waveform-10201aa3-ebc2-42d8-84b7-2e63f6eeb8ab/Waveform-10201aa3-ebc2-42d8-84b7-2e63f6eeb8ab-v10.0-MainTex.png +0 -0
  208. package/media/lib/three-icosa/brushes/Waveform-10201aa3-ebc2-42d8-84b7-2e63f6eeb8ab/Waveform-10201aa3-ebc2-42d8-84b7-2e63f6eeb8ab-v10.0-fragment.glsl +82 -0
  209. package/media/lib/three-icosa/brushes/Waveform-10201aa3-ebc2-42d8-84b7-2e63f6eeb8ab/Waveform-10201aa3-ebc2-42d8-84b7-2e63f6eeb8ab-v10.0-vertex.glsl +55 -0
  210. package/media/lib/three-icosa/brushes/WetPaint-b67c0e81-ce6d-40a8-aeb0-ef036b081aa3/WetPaint-b67c0e81-ce6d-40a8-aeb0-ef036b081aa3-v10.0-BumpMap.png +0 -0
  211. package/media/lib/three-icosa/brushes/WetPaint-b67c0e81-ce6d-40a8-aeb0-ef036b081aa3/WetPaint-b67c0e81-ce6d-40a8-aeb0-ef036b081aa3-v10.0-MainTex.png +0 -0
  212. package/media/lib/three-icosa/brushes/WetPaint-b67c0e81-ce6d-40a8-aeb0-ef036b081aa3/WetPaint-b67c0e81-ce6d-40a8-aeb0-ef036b081aa3-v10.0-fragment.glsl +376 -0
  213. package/media/lib/three-icosa/brushes/WetPaint-b67c0e81-ce6d-40a8-aeb0-ef036b081aa3/WetPaint-b67c0e81-ce6d-40a8-aeb0-ef036b081aa3-v10.0-vertex.glsl +60 -0
  214. package/media/lib/three-icosa/brushes/WetPaint-dea67637-cd1a-27e4-c9b1-52f4bbcb84e5/WetPaint-dea67637-cd1a-27e4-c9b1-52f4bbcb84e5-v10.0-BumpMap.png +0 -0
  215. package/media/lib/three-icosa/brushes/WetPaint-dea67637-cd1a-27e4-c9b1-52f4bbcb84e5/WetPaint-dea67637-cd1a-27e4-c9b1-52f4bbcb84e5-v10.0-MainTex.png +0 -0
  216. package/media/lib/three-icosa/brushes/WetPaint-dea67637-cd1a-27e4-c9b1-52f4bbcb84e5/WetPaint-dea67637-cd1a-27e4-c9b1-52f4bbcb84e5-v10.0-fragment.glsl +313 -0
  217. package/media/lib/three-icosa/brushes/WetPaint-dea67637-cd1a-27e4-c9b1-52f4bbcb84e5/WetPaint-dea67637-cd1a-27e4-c9b1-52f4bbcb84e5-v10.0-vertex.glsl +58 -0
  218. package/media/lib/three-icosa/brushes/WigglyGraphite-5347acf0-a8e2-47b6-8346-30c70719d763/WigglyGraphite-5347acf0-a8e2-47b6-8346-30c70719d763-v10.0-MainTex.png +0 -0
  219. package/media/lib/three-icosa/brushes/WigglyGraphite-5347acf0-a8e2-47b6-8346-30c70719d763/WigglyGraphite-5347acf0-a8e2-47b6-8346-30c70719d763-v10.0-fragment.glsl +377 -0
  220. package/media/lib/three-icosa/brushes/WigglyGraphite-5347acf0-a8e2-47b6-8346-30c70719d763/WigglyGraphite-5347acf0-a8e2-47b6-8346-30c70719d763-v10.0-vertex.glsl +60 -0
  221. package/media/lib/three-icosa/brushes/WigglyGraphite-e814fef1-97fd-7194-4a2f-50c2bb918be2/WigglyGraphite-e814fef1-97fd-7194-4a2f-50c2bb918be2-v10.0-MainTex.png +0 -0
  222. package/media/lib/three-icosa/brushes/WigglyGraphite-e814fef1-97fd-7194-4a2f-50c2bb918be2/WigglyGraphite-e814fef1-97fd-7194-4a2f-50c2bb918be2-v10.0-fragment.glsl +107 -0
  223. package/media/lib/three-icosa/brushes/WigglyGraphite-e814fef1-97fd-7194-4a2f-50c2bb918be2/WigglyGraphite-e814fef1-97fd-7194-4a2f-50c2bb918be2-v10.0-vertex.glsl +58 -0
  224. package/media/lib/three-icosa/brushes/Wire-4391385a-cf83-4396-9e33-31e4e4930b27/Wire-4391385a-cf83-4396-9e33-31e4e4930b27-v10.0-fragment.glsl +75 -0
  225. package/media/lib/three-icosa/brushes/Wire-4391385a-cf83-4396-9e33-31e4e4930b27/Wire-4391385a-cf83-4396-9e33-31e4e4930b27-v10.0-vertex.glsl +60 -0
  226. package/media/manifest.json +1 -1
  227. package/package.json +2 -2
  228. package/scripts/client.js +20 -3
  229. package/scripts/elements/outliner.js +182 -0
  230. package/scripts/external/JanusClientConnection.js +14 -8
  231. package/scripts/external/JanusFireboxParser.js +1 -1
  232. package/scripts/image.js +1 -1
  233. package/scripts/janusbase.js +40 -17
  234. package/scripts/janusghost.js +17 -6
  235. package/scripts/januslight.js +46 -4
  236. package/scripts/janusparticle.js +121 -15
  237. package/scripts/janusplayer.js +176 -92
  238. package/scripts/janusweb.js +9 -5
  239. package/scripts/janusxrplayer.js +152 -20
  240. package/scripts/multiplayermanager.js +4 -0
  241. package/scripts/object.js +83 -38
  242. package/scripts/parts.js +1 -1
  243. package/scripts/portal.js +13 -9
  244. package/scripts/remoteplayer.js +3 -2
  245. package/scripts/room.js +109 -32
  246. package/scripts/sound.js +8 -3
  247. package/scripts/text.js +9 -2
  248. package/scripts/tracking.js +1 -1
  249. package/scripts/ui/main.js +6 -2
  250. package/scripts/websurface.js +3 -3
@@ -115,7 +115,8 @@ elation.elements.define('janus.ui.editor.panel', class extends elation.elements.
115
115
  'manipulate_out': [ 'keyboard_e', (ev) => this.editObjectManipulateOut(ev) ],
116
116
  });
117
117
  janus.engine.systems.controls.addContext('roomedit_paste', {
118
- 'paste': [ 'keyboard_ctrl_v', (ev) => { if (ev.value == 1) this.editObjectPaste(ev); } ],
118
+ 'add': [ 'keyboard_ctrl_a', (ev) => { if (ev.value == 1) this.showCreateDialog(ev); } ],
119
+ 'paste': [ 'keyboard_ctrl_v', (ev) => { if (ev.value == 1) this.editObjectPaste(ev);} ],
119
120
  });
120
121
  janus.engine.systems.controls.activateContext('roomedit_paste');
121
122
 
@@ -134,6 +135,7 @@ elation.elements.define('janus.ui.editor.panel', class extends elation.elements.
134
135
  room.addEventListener('wheel', (ev) => this.editObjectMousewheel(ev));
135
136
  window.addEventListener('keydown', (ev) => this.editObjectKeydown(ev));
136
137
  window.addEventListener('keyup', (ev) => this.editObjectKeyup(ev));
138
+
137
139
  }
138
140
  initRoomEvents(room) {
139
141
  if (!this.initialized.has(room)) {
@@ -149,6 +151,40 @@ elation.elements.define('janus.ui.editor.panel', class extends elation.elements.
149
151
  room.addEventListener('thing_remove', (ev) => this.handleThingRemove(ev));
150
152
  this.initialized.add(room);
151
153
  }
154
+
155
+ if (!this.outliner_selected) {
156
+ this.outliner_selected = room.createObject('outliner', {
157
+ col: 'lime',
158
+ opacity: .4,
159
+ outline: 3,
160
+ layers: '10',
161
+ });
162
+ this.outliner_hover = room.createObject('outliner', {
163
+ col: 'gray',
164
+ opacity: .4,
165
+ outline: 1,
166
+ layers: '10',
167
+ });
168
+ setTimeout(() => {
169
+ this.outliner_selected.col = 'lime';
170
+ this.outliner_hover.col = 'gray';
171
+ this.outliner_selected.setLayers('10');
172
+ this.outliner_hover.setLayers('10');
173
+ }, 0);
174
+ let editor = this;
175
+ this.outliner_hover.update = function() {
176
+ /*
177
+ let rc = player.raycast();
178
+ if (rc.length > 0 && rc[0].object !== room) {
179
+ this.select(rc[0].object);
180
+ } else {
181
+ this.deselect();
182
+ }
183
+ */
184
+ }
185
+ } else if (this.outliner_selected.room !== room) {
186
+ room.appendChild(this.outliner_selected);
187
+ }
152
188
  }
153
189
 
154
190
  getManipulator() {
@@ -226,7 +262,7 @@ elation.elements.define('janus.ui.editor.panel', class extends elation.elements.
226
262
  this.roomedit.rotationsnap = snap;
227
263
  let manipulator = this.getManipulator();
228
264
  if (snap == 'Off') snap = 0;
229
- if (manipulator) manipulator.setRotationSnap(+snap * THREE.Math.DEG2RAD);
265
+ if (manipulator) manipulator.setRotationSnap(+snap * THREE.MathUtils.DEG2RAD);
230
266
  /*
231
267
  if (this.elements.rotatesnap.value != snap) {
232
268
  this.elements.rotatesnap.value = snap || 'Off';
@@ -329,6 +365,7 @@ console.log('set translation snap', ev.data, ev);
329
365
  return locked;
330
366
  }
331
367
  editObject(object, isnew) {
368
+ if (this.roomedit.object) this.editObjectStop()
332
369
  this.roomedit.object = object;
333
370
  this.roomedit.parentObject = null;
334
371
  this.roomedit.objectBoundingBox = false;
@@ -346,11 +383,13 @@ console.log('set translation snap', ev.data, ev);
346
383
  object.addEventListener('load', (ev) => {
347
384
  this.roomedit.objectBoundingBox = object.getBoundingBox(true);
348
385
  this.editObjectUpdate();
349
- this.editObjectShowWireframe();
386
+ //this.editObjectShowWireframe();
387
+ this.editObjectShowOutline();
350
388
  console.log('update bbox', this.roomedit.objectBoundingBox);
351
389
  });
352
390
 
353
- object.pickable = false;
391
+ //object.pickable = false;
392
+ //console.log('set object unpickable', object);
354
393
 
355
394
  room.addEventListener('mousemove', (ev) => this.editObjectMousemove(ev));
356
395
  elation.events.add(this, 'mousedown', this.editObjectClick);
@@ -374,7 +413,8 @@ console.log('set translation snap', ev.data, ev);
374
413
  // activate context
375
414
  janus.engine.systems.controls.activateContext('roomedit', this);
376
415
 
377
- this.editObjectShowWireframe();
416
+ //this.editObjectShowWireframe();
417
+ this.editObjectShowOutline();
378
418
  this.editObjectShowInfo(object);
379
419
  let manipulator = this.getManipulator();
380
420
  manipulator.attach(object.objects['3d']);
@@ -393,6 +433,18 @@ console.log('set translation snap', ev.data, ev);
393
433
  inventorypanel.refresh();
394
434
  }
395
435
 
436
+ editObjectShowOutline() {
437
+ if (this.roomedit.object === room) {
438
+ this.outliner_selected.deselect();
439
+ } else {
440
+ this.outliner_selected.select(this.roomedit.object);
441
+ }
442
+ }
443
+ editObjectRemoveOutline() {
444
+ if (this.outliner_selected) {
445
+ this.outliner_selected.deselect();
446
+ }
447
+ }
396
448
  editObjectShowWireframe() {
397
449
  if (this.roomedit.wireframe) {
398
450
  this.editObjectRemoveWireframe();
@@ -518,7 +570,7 @@ console.log('set translation snap', ev.data, ev);
518
570
  // restore collider
519
571
  this.roomedit.object.collision_id = this.roomedit.collision_id;
520
572
  this.roomedit.collision_id = false;
521
- } else {
573
+ } else if (false) {
522
574
  this.roomedit.object.collision_id = 'cube';
523
575
  this.roomedit.object.collision_trigger = true;
524
576
  this.roomedit.object.collision_scale = this.roomedit.objectBoundingBox.max.clone().sub(this.roomedit.objectBoundingBox.min);
@@ -534,11 +586,13 @@ console.log('set translation snap', ev.data, ev);
534
586
  this.roomedit.object.dispatchEvent({type: 'edit', bubbles: true});
535
587
  }
536
588
  }
537
- this.roomedit.object.pickable = true;
589
+ //this.roomedit.object.pickable = true;
590
+ this.roomedit.object.sync = true;
538
591
  this.roomedit.object = false;
539
592
  this.roomedit.raycast = false;
540
593
  this.roomedit.parentObject = null;
541
- this.editObjectRemoveWireframe();
594
+ //this.editObjectRemoveWireframe();
595
+ this.editObjectRemoveOutline();
542
596
  this.editObjectRemoveParentWireframe();
543
597
  let manipulator = this.getManipulator();
544
598
  manipulator.detach();
@@ -573,7 +627,22 @@ console.log('set translation snap', ev.data, ev);
573
627
  if (this.roomedit.object) {
574
628
  var obj = this.roomedit.object;
575
629
  if (this.roomedit.moving && this.roomedit.raycast && ev.element.getProxyObject() !== obj) {
576
- this.roomedit.objectPosition = ev.data.point;
630
+ let raycast = player.raycast(V(0, 0, -1));
631
+ if (raycast) {
632
+ let hit;
633
+ for (let i = 0; i < raycast.length; i++) {
634
+ if (raycast[i].object !== obj) {
635
+ hit = raycast[i];
636
+ break;
637
+ }
638
+ }
639
+
640
+ if (hit) {
641
+ this.roomedit.objectPosition = hit.point;
642
+ }
643
+ } else {
644
+ this.roomedit.objectPosition = ev.data.point;
645
+ }
577
646
  let manipulator = this.getManipulator();
578
647
  manipulator.enabled = false;
579
648
  this.editObjectUpdate();
@@ -641,7 +710,7 @@ console.log('set translation snap', ev.data, ev);
641
710
  this.editObjectSnapVector(obj[attrname], this.roomedit.snap);
642
711
  } else if (attrtype == 'euler') {
643
712
  let rot = new THREE.Euler();
644
- let move = (ev.deltaY > 0 ? -1 : 1) * this.roomedit.rotationsnap * THREE.Math.DEG2RAD;
713
+ let move = (ev.deltaY > 0 ? -1 : 1) * this.roomedit.rotationsnap * THREE.MathUtils.DEG2RAD;
645
714
  if (ev.ctrlKey) {
646
715
  rot.x += move;
647
716
  }
@@ -659,7 +728,7 @@ console.log('set translation snap', ev.data, ev);
659
728
  let quat2 = new THREE.Quaternion().setFromEuler(rot);
660
729
  quat.multiply(quat2);
661
730
  obj[attrname].radians.setFromQuaternion(quat);
662
- //this.editObjectSnapVector(obj[attrname], this.roomedit.rotationsnap * THREE.Math.DEG2RAD);
731
+ //this.editObjectSnapVector(obj[attrname], this.roomedit.rotationsnap * THREE.MathUtils.DEG2RAD);
663
732
  } else if (attrtype == 'color') {
664
733
  let move = 4/255 * (ev.deltaY < 0 ? 1 : -1);
665
734
 
@@ -679,9 +748,9 @@ console.log('set translation snap', ev.data, ev);
679
748
  col.g += move;
680
749
  col.b += move;
681
750
  }
682
- col.r = THREE.Math.clamp(col.r, 0, 1);
683
- col.g = THREE.Math.clamp(col.g, 0, 1);
684
- col.b = THREE.Math.clamp(col.b, 0, 1);
751
+ col.r = THREE.MathUtils.clamp(col.r, 0, 1);
752
+ col.g = THREE.MathUtils.clamp(col.g, 0, 1);
753
+ col.b = THREE.MathUtils.clamp(col.b, 0, 1);
685
754
  console.log('opacity after', obj.opacity);
686
755
  obj[mode] = col;
687
756
  obj.opacity = obj.opacity;
@@ -707,7 +776,7 @@ obj.opacity = obj.opacity;
707
776
  } else {
708
777
  amount /= divisor;
709
778
  }
710
- obj[attrname] = THREE.Math.clamp(obj[attrname] + amount, min, max);
779
+ obj[attrname] = THREE.MathUtils.clamp(obj[attrname] + amount, min, max);
711
780
 
712
781
  } else if (attrtype == 'boolean' || attrtype == 'bool') {
713
782
  if (ev.deltaY < 1) {
@@ -831,10 +900,10 @@ obj.updateDirvecsFromOrientation();
831
900
  else if (this.roomedit.snap == .01) amount = 15;
832
901
  else if (this.roomedit.snap == .001) amount = 5;
833
902
 
834
- let rot = new THREE.Euler().setFromVector3(vec.clone().multiplyScalar(amount * THREE.Math.DEG2RAD));
903
+ let rot = new THREE.Euler().setFromVector3(vec.clone().multiplyScalar(amount * THREE.MathUtils.DEG2RAD));
835
904
  let quat = new THREE.Quaternion();
836
905
  quat.setFromEuler(rot);
837
- //obj.rotation = V(rot.x * THREE.Math.RAD2DEG, rot.y * THREE.Math.RAD2DEG, rot.z * THREE.Math.RAD2DEG);
906
+ //obj.rotation = V(rot.x * THREE.MathUtils.RAD2DEG, rot.y * THREE.MathUtils.RAD2DEG, rot.z * THREE.MathUtils.RAD2DEG);
838
907
  obj.orientation.multiply(quat);
839
908
  console.log('rotate it', vec.clone().multiplyScalar(amount), amount, rot, quat);
840
909
 
@@ -853,9 +922,9 @@ console.log('rotate it', vec.clone().multiplyScalar(amount), amount, rot, quat);
853
922
  break;
854
923
  case 'col':
855
924
  let snap = 10 / 255;
856
- obj.col = V(THREE.Math.clamp(obj.col.r + vec.x * snap, 0, 1),
857
- THREE.Math.clamp(obj.col.g + vec.y * snap, 0, 1),
858
- THREE.Math.clamp(obj.col.b + vec.z * snap, 0, 1));
925
+ obj.col = V(THREE.MathUtils.clamp(obj.col.r + vec.x * snap, 0, 1),
926
+ THREE.MathUtils.clamp(obj.col.g + vec.y * snap, 0, 1),
927
+ THREE.MathUtils.clamp(obj.col.b + vec.z * snap, 0, 1));
859
928
 
860
929
  console.log('change color', obj.col, vec);
861
930
  break;
@@ -1042,6 +1111,7 @@ console.log('change color', obj.col, vec);
1042
1111
  if (obj) {
1043
1112
  this.roomedit.pastebuffer = obj;
1044
1113
 
1114
+ /*
1045
1115
  let data = new DataTransfer();
1046
1116
  data.items.add('text/plain', 'blublub');
1047
1117
  //data.items.add('x-janus/x-' + obj.tag, 'cool huh');
@@ -1050,6 +1120,7 @@ console.log('change color', obj.col, vec);
1050
1120
  }, (e) => {
1051
1121
  console.log('FAILED!', e);
1052
1122
  });
1123
+ */
1053
1124
  }
1054
1125
  }
1055
1126
  editObjectCut(ev) {
@@ -1159,6 +1230,9 @@ console.log('[editor] scene added a thing', ev);
1159
1230
  let parts = newobjargs[j].split('=');
1160
1231
  objargs[parts[0]] = decodeURIComponent(parts[1]);
1161
1232
  }
1233
+ if (objargs.id) {
1234
+ objargs.collision_id = objargs.id;
1235
+ }
1162
1236
  newobject = room.createObject(objtype, objargs);
1163
1237
  objects.push(newobject);
1164
1238
  if (objects[0]) {
@@ -1361,6 +1435,9 @@ console.log('pastey!', ev.clipboardData.items[0], ev);
1361
1435
  this.loadObjectFromURIList(url);
1362
1436
  ev.preventDefault();
1363
1437
  }
1438
+ showCreateDialog(ev) {
1439
+ console.log('create thing?');
1440
+ }
1364
1441
  });
1365
1442
 
1366
1443
  elation.elements.define('janus.ui.editor.objectinfo', class extends elation.elements.base {
@@ -54,8 +54,9 @@ ui-grid.models>* a {
54
54
  display: flex;
55
55
  align-items: center;
56
56
  justify-content: center;
57
- text-align: Center;
57
+ text-align: center;
58
58
  text-decoration: none;
59
+ color: white;
59
60
  }
60
61
  ui-grid.models>* p {
61
62
  display: none;
@@ -65,9 +65,9 @@ janus.registerElement('locomotion_teleporter', {
65
65
  rand_pos: V(.5,0,.5),
66
66
  accel: V(0,-1,0),
67
67
  rand_accel: V(0,2,0),
68
- rate: 50,
68
+ rate: 10,
69
69
  count: 60,
70
- duration: .5,
70
+ duration: 3,
71
71
  collision_id: '',
72
72
  collidable: false,
73
73
  pickable: false,
@@ -113,11 +113,18 @@ janus.registerElement('locomotion_teleporter', {
113
113
  onchange: ev => this.handleTeleportChange(ev),
114
114
  onactivate: ev => this.handleTeleportTurn(ev),
115
115
  },
116
- 'teleport_y': {
116
+ 'teleport_y_right': {
117
117
  defaultbindings: 'gamepad_any_axis_1,gamepad_any_axis_3',
118
- onchange: ev => this.handleTeleportChange(ev),
119
- onactivate: ev => this.handleTeleportStart(ev),
118
+ onchange: ev => this.handleTeleportChange(ev, 'right'),
119
+ onactivate: ev => this.handleTeleportStart(ev, 'right'),
120
+ },
121
+ /*
122
+ 'teleport_y_left': {
123
+ defaultbindings: 'gamepad_6_axis_1,gamepad_6_axis_3',
124
+ onchange: ev => this.handleTeleportChange(ev, 'left'),
125
+ onactivate: ev => this.handleTeleportStart(ev, 'left'),
120
126
  },
127
+ */
121
128
  'teleport_trigger': {
122
129
  defaultbindings: 'gamepad_any_button_0',
123
130
  onactivate: ev => this.handleTeleportTrigger(ev),
@@ -147,6 +154,7 @@ janus.registerElement('locomotion_teleporter', {
147
154
  } else {
148
155
  startpoint = player.head.localToWorld(V(0,0,0));
149
156
  v0 = player.head.localToWorld(V(0,0,-speed)).sub(startpoint);
157
+ return; // Head-locked teleporter is awkward, do we really still support this?
150
158
  }
151
159
  let i = 0,
152
160
  p0 = startpoint.clone(),
@@ -210,7 +218,7 @@ janus.registerElement('locomotion_teleporter', {
210
218
  //if (!room.teleport) return;
211
219
  if (this.teleportactive) {
212
220
  let controls = this.activecontrols;
213
- let xy = new THREE.Vector2(controls.teleport_x, controls.teleport_y),
221
+ let xy = new THREE.Vector2(controls.teleport_x, controls['teleport_y_' + this.teleporthand]),
214
222
  len = xy.length();
215
223
 
216
224
  if (len > .8) {
@@ -228,7 +236,7 @@ janus.registerElement('locomotion_teleporter', {
228
236
  if (!room.teleport) return;
229
237
  if (!this.teleportactive && Math.abs(ev.value) > .8) {
230
238
  this.teleportactive = true;
231
- this.teleporthand = 'right';
239
+ this.teleporthand = hand || 'right';
232
240
  this.enableCursor();
233
241
  this.updateTeleportAngle();
234
242
  }
@@ -260,15 +268,17 @@ janus.registerElement('locomotion_teleporter', {
260
268
  },
261
269
  updateTeleportAngle() {
262
270
  let controls = this.activecontrols;
263
- let controllerangle = Math.atan2(controls.teleport_x, controls.teleport_y);
271
+ let controllerangle = Math.atan2(controls.teleport_x, controls['teleport_y_' + this.teleporthand]);
264
272
  let playerangle = Math.atan2(this.pos.x, this.pos.z);
265
273
  this.teleportangle = (controllerangle + playerangle) + Math.PI;
266
274
  },
267
275
  handleMouseDown(ev) {
268
276
  if (!room.teleport) return;
269
277
  if (ev.button == 0 && (player.enabled || janus.hmd)) {
270
- this.longpresstimer = setTimeout(() => { console.log('timer fired'); this.enableCursor(); }, this.longpresstime);
271
- this.mousediff = [0,0];
278
+ if (!this.longpresstimer) {
279
+ //this.longpresstimer = setTimeout(() => { console.log('timer fired'); this.enableCursor(); }, this.longpresstime);
280
+ this.mousediff = [0,0];
281
+ }
272
282
  //this.active = true;
273
283
  }
274
284
  },
@@ -327,6 +337,7 @@ janus.registerElement('locomotion_teleporter', {
327
337
  enableCursor() {
328
338
  if (!room.teleport) return;
329
339
  this.visible = true;
340
+ this.particles.resetParticles();
330
341
  this.particles.visible = true;
331
342
  if (this.laser.room !== room._target) room.appendChild(this.laser);
332
343
  if (this.particles.room !== room._target) room.appendChild(this.particles);
@@ -2,5 +2,6 @@
2
2
  { "assettype": "image", "name": "xrmenu-button-home", "src": "./images/home-button.png", "hasalpha": true },
3
3
  { "assettype": "image", "name": "xrmenu-button-back", "src": "./images/previous-button.png", "hasalpha": true },
4
4
  { "assettype": "image", "name": "xrmenu-button-reset", "src": "./images/address-location.png", "hasalpha": true },
5
- { "assettype": "image", "name": "xrmenu-button-reload", "src": "./images/redo-arrow.png", "hasalpha": true }
5
+ { "assettype": "image", "name": "xrmenu-button-reload", "src": "./images/redo-arrow.png", "hasalpha": true },
6
+ { "assettype": "image", "name": "xrmenu-button-sound", "src": "./images/audio-settings.png", "hasalpha": true }
6
7
  ]
@@ -18,43 +18,88 @@ janus.registerElement('xrmenu', {
18
18
  this.worlddir = V();
19
19
  this.playervec = V();
20
20
 
21
+ this.panels = {};
22
+
21
23
  let xrmenu = janus.ui.apps.default.apps.xrmenu;
22
24
  let asseturl = xrmenu.resolveFullURL('./xrmenu-assets.json');
23
25
  fetch(asseturl).then(res => res.json()).then(assetlist => {
24
26
  this.assetpack = elation.engine.assets.loadJSON(assetlist, xrmenu.resolveFullURL('./'));
25
27
 
28
+ /*
29
+ * Navigation
30
+ * Home
31
+ * Respawn
32
+ * Exit VR
33
+ * Refresh
34
+ * Sound
35
+ * Output
36
+ * Output Select
37
+ * Volume Levels
38
+ * Environment
39
+ * Media
40
+ * Voices
41
+ * Input
42
+ * Input Select
43
+ * Volume Levels
44
+ * Settings
45
+ */
46
+
26
47
  this.buttons = {
27
48
  home: this.createObject('xrmenu-button', {
28
49
  pos: V(.08, 0, 0),
29
50
  label: 'Home',
30
51
  image_id: 'xrmenu-button-home',
31
- onactivate: (ev) => janus.navigateHome(),
52
+ //onactivate: (ev) => janus.navigateHome(),
32
53
  }),
33
54
  back: this.createObject('xrmenu-button', {
34
55
  pos: V(.20, 0, 0),
35
56
  label: 'Back',
36
57
  image_id: 'xrmenu-button-back',
37
- onactivate: (ev) => janus.navigateBack(),
58
+ //onactivate: (ev) => janus.navigateBack(),
38
59
  }),
39
60
  reset: this.createObject('xrmenu-button', {
40
61
  pos: V(.32, 0, 0),
41
62
  label: 'Reset',
42
63
  image_id: 'xrmenu-button-reset',
43
- onactivate: (ev) => player.reset_position(),
64
+ //onactivate: (ev) => player.reset_position(),
44
65
  }),
45
66
  reload: this.createObject('xrmenu-button', {
46
67
  pos: V(.44, 0, 0),
47
68
  label: 'Reload',
48
69
  image_id: 'xrmenu-button-reload',
49
- onactivate: (ev) => location.reload(),
70
+ //onactivate: (ev) => location.reload(),
50
71
  }),
51
72
  exitvr: this.createObject('xrmenu-button', {
52
73
  pos: V(.56, 0, 0),
53
74
  label: 'Exit VR',
54
75
  //image_id: 'xrmenu-button-exitvr',
55
- onactivate: (ev) => this.engine.client.stopXR(),
76
+ //onactivate: (ev) => this.engine.client.stopXR(),
77
+ }),
78
+ sound: this.createObject('xrmenu-button', {
79
+ pos: V(.56, 0, 0),
80
+ label: 'Exit VR',
81
+ image_id: 'xrmenu-button-sound',
82
+ //onactivate: (ev) => this.engine.client.stopXR(),
56
83
  }),
57
84
  };
85
+ this.buttons.home.addEventListener('activate', ev => janus.navigateHome());
86
+ this.buttons.back.addEventListener('activate', ev => janus.navigateBack());
87
+ this.buttons.reset.addEventListener('activate', ev => player.reset_position());
88
+ this.buttons.reload.addEventListener('activate', ev => location.reload());
89
+ this.buttons.exitvr.addEventListener('activate', ev => this.engine.client.stopXR());
90
+ this.buttons.sound.addEventListener('activate', ev => {
91
+ if (!this.panels['sound']) {
92
+ this.panels['sound'] = this.buttons.sound.createObject('xrmenu-popup', {
93
+ content: 'janus-voip-picker'
94
+ });
95
+ } else {
96
+ if (this.panels['sound'].parent === this.buttons.sound) {
97
+ this.buttons.sound.removeChild(this.panels['sound']);
98
+ } else {
99
+ this.buttons.sound.appendChild(this.panels['sound']);
100
+ }
101
+ }
102
+ });
58
103
  this.reflow();
59
104
  });
60
105
  },
@@ -133,7 +178,7 @@ janus.registerElement('xrmenu-popup', {
133
178
 
134
179
  create() {
135
180
 
136
- let element = elation.elements.create(this.content);
181
+ let element = elation.elements.create(this.content, { deferred: false });
137
182
  //document.body.appendChild(element);
138
183
  //this.shadowdom.appendChild(element);
139
184
 
@@ -142,14 +187,9 @@ janus.registerElement('xrmenu-popup', {
142
187
  //container.appendChild(element);
143
188
 
144
189
  setTimeout(() => {
145
- for (let i = 0; i < document.styleSheets.length; i++) {
146
- let styleel = document.createElement('link');
147
- styleel.rel = 'stylesheet';
148
- styleel.href = document.styleSheets[i].href;
149
- this.shadowdom.appendChild(styleel);
150
- }
151
- }, 1000);
152
-
190
+ console.log('LOADED????', janus.ui, janus.ui.apps.default);
191
+ this.initShadowStylesheets();
192
+ }, 0);
153
193
  this.shadowdom.appendChild(element);
154
194
  document.body.appendChild(container);
155
195
 
@@ -167,24 +207,7 @@ container.style.opacity = 0;
167
207
 
168
208
  this.elementcontainer = container;
169
209
 
170
- setTimeout(() => {
171
- let canvas = element.toCanvas(this.width, this.height, 1);
172
- /*
173
- document.body.appendChild(canvas);
174
- canvas.style.position = 'absolute';
175
- canvas.style.top = '0';
176
- canvas.style.left = '0';
177
- canvas.style.zIndex = 1000;
178
- canvas.style.border = '1px solid red';
179
- */
180
- this.loadNewAsset('image', {
181
- id: 'xrmenu-element-canvas',
182
- canvas: canvas,
183
- });
184
- this.plane.image_id = 'xrmenu-element-canvas';
185
- this.canvas = canvas;
186
- elation.events.add(canvas, 'update', ev => this.refresh());
187
- }, 1000);
210
+ this.initElementCanvas();
188
211
 
189
212
  this.plane = this.createObject('object', {
190
213
  id: 'plane',
@@ -205,6 +228,59 @@ canvas.style.border = '1px solid red';
205
228
  this.plane.addEventListener('mouseover', ev => this.handleMouseOver(ev));
206
229
  this.plane.addEventListener('mouseout', ev => this.handleMouseOut(ev));
207
230
  },
231
+ initElementCanvas() {
232
+ let element = this.element;
233
+
234
+ if (!(element && element.isConnected && element.toCanvas)) {
235
+ setTimeout(() => this.initElementCanvas(), 100);
236
+ return;
237
+ }
238
+
239
+ console.log(element.isConnected, element);
240
+ let canvas = element.toCanvas(this.width, this.height, 1);
241
+ /*
242
+ document.body.appendChild(canvas);
243
+ canvas.style.position = 'absolute';
244
+ canvas.style.top = '0';
245
+ canvas.style.left = '0';
246
+ canvas.style.zIndex = 1000;
247
+ canvas.style.border = '1px solid red';
248
+ */
249
+ this.loadNewAsset('image', {
250
+ id: 'xrmenu-element-canvas',
251
+ canvas: canvas,
252
+ });
253
+ this.plane.image_id = 'xrmenu-element-canvas';
254
+ this.canvas = canvas;
255
+ elation.events.add(canvas, 'asset_update', ev => this.refresh());
256
+
257
+ element.updateStylesheets(elation.engine.assets.corsproxy).then(d => {
258
+ element.updateCanvas();
259
+ this.refresh();
260
+ });
261
+
262
+ },
263
+ initShadowStylesheets() {
264
+ let promises = [];
265
+ for (let i = 0; i < document.styleSheets.length; i++) {
266
+ //promises.push(new Promise(accept => {
267
+ let styleel = document.createElement('link');
268
+ styleel.rel = 'stylesheet';
269
+ styleel.href = elation.engine.assets.corsproxy + document.styleSheets[i].href;
270
+ //styleel.onload = accept;
271
+ this.shadowdom.appendChild(styleel);
272
+ console.log('add link', document.styleSheets[i].href);
273
+ //}));
274
+ }
275
+ /*
276
+ Promise.all(promises).then(() => {
277
+ console.log('stylesheets loaded!');
278
+ setTimeout(() => {
279
+ this.element.updateCanvas().then(() => this.refresh());
280
+ }, 400);
281
+ });
282
+ */
283
+ },
208
284
  handleMouse(ev) {
209
285
  if (this.element && this.canvas) {
210
286
  let mousexy = [ev.data.uv.x * this.canvas.width, (1 - ev.data.uv.y) * this.canvas.height];
@@ -240,6 +316,16 @@ canvas.style.border = '1px solid red';
240
316
  this.currenttarget.dispatchEvent(mouseout);
241
317
  }
242
318
  this.currenttarget = target;
319
+ let mousemove = new EventClass('mousemove', {
320
+ bubbles: true,
321
+ cancelable: true,
322
+ screenX: mousexy[0],
323
+ screenY: mousexy[1],
324
+ clientX: mousexy[0],
325
+ clientY: mousexy[1],
326
+ view: window,
327
+ });
328
+ this.currenttarget.dispatchEvent(mousemove);
243
329
  //let mouseover = elation.events.clone(fakeev, { type: 'mouseover' });
244
330
  let mouseover = new EventClass('mouseover', {
245
331
  bubbles: true,
@@ -250,6 +336,7 @@ canvas.style.border = '1px solid red';
250
336
  clientY: mousexy[1],
251
337
  view: window,
252
338
  });
339
+ console.log(mouseover);
253
340
  target.dispatchEvent(mouseover);
254
341
  }
255
342
  }
@@ -426,12 +426,21 @@ ui-tooltip {
426
426
  ui-input {
427
427
  display: flex;
428
428
  }
429
+ ui-input>ui-label {
430
+ min-width: 5em;
431
+ }
429
432
  ui-input>input {
430
433
  flex: 1 1;
434
+ background: #999;
435
+ border: 1px solid black;
436
+ border-radius: 4px;
431
437
  }
438
+ ui-input>input:hover,
432
439
  ui-input>input[hover] {
440
+ background: #aaa;
433
441
  }
434
442
  ui-input>input:focus {
443
+ background: #bbb;
435
444
  }
436
445
  ui-input>input:active {
437
446
  }
@@ -675,6 +684,18 @@ ui-slider-handle {
675
684
  cursor: pointer;
676
685
  box-shadow: 0 0 5px rgba(0,0,0,.8);
677
686
  }
687
+ ui-slider-handle>ui-label {
688
+ pointer-events: none;
689
+ position: absolute;
690
+ left: 20px;
691
+ z-index: 100;
692
+ background: rgba(0,0,0,.5);
693
+ border-radius: 20px;
694
+ padding: 0 .4em;
695
+ }
696
+ ui-slider-track[hover] ui-slider-handle>ui-label {
697
+ display: block !important;
698
+ }
678
699
 
679
700
 
680
701
  /***********
@@ -881,6 +902,10 @@ ui-select>select {
881
902
  ui-select:hover>select {
882
903
  background: #555;
883
904
  }
905
+ ui-select>ui-label {
906
+ min-width: 5em;
907
+ }
908
+
884
909
 
885
910
  ui-formgroup {
886
911
  position: relative;
@@ -1242,3 +1267,20 @@ ui-spinner[full] {
1242
1267
  right: 0;
1243
1268
  background: rgba(0,0,0,.1);
1244
1269
  }
1270
+ ui-image-picker {
1271
+ display: block;
1272
+ }
1273
+ ui-image-picker ui-label {
1274
+ vertical-align: top;
1275
+ min-width: 5em;
1276
+ display: inline-block;
1277
+ }
1278
+ ui-image-picker canvas {
1279
+ width: 30px;
1280
+ height: 30px;
1281
+ border: 1px solid black;
1282
+ border-radius: 2px;
1283
+ padding: 2px;
1284
+ display: inline-block;
1285
+ vertical-align: top;
1286
+ }