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
@@ -0,0 +1,60 @@
1
+ #version 300 es
2
+ // Copyright 2020 The Tilt Brush Authors
3
+ // Updated to OpenGL ES 3.0 by the Icosa Gallery Authors
4
+ //
5
+ // Licensed under the Apache License, Version 2.0 (the "License");
6
+ // you may not use this file except in compliance with the License.
7
+ // You may obtain a copy of the License at
8
+ //
9
+ // http://www.apache.org/licenses/LICENSE-2.0
10
+ //
11
+ // Unless required by applicable law or agreed to in writing, software
12
+ // distributed under the License is distributed on an "AS IS" BASIS,
13
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ // See the License for the specific language governing permissions and
15
+ // limitations under the License.
16
+
17
+ // Copyright 2020 The Tilt Brush Authors
18
+ //
19
+ // Licensed under the Apache License, Version 2.0 (the "License");
20
+ // you may not use this file except in compliance with the License.
21
+ // You may obtain a copy of the License at
22
+ //
23
+ // http://www.apache.org/licenses/LICENSE-2.0
24
+ //
25
+ // Unless required by applicable law or agreed to in writing, software
26
+ // distributed under the License is distributed on an "AS IS" BASIS,
27
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
28
+ // See the License for the specific language governing permissions and
29
+ // limitations under the License.
30
+
31
+ // DefaultVS.glsl
32
+ in vec4 a_position;
33
+ in vec3 a_normal;
34
+ in vec4 a_color;
35
+ in vec2 a_texcoord0;
36
+
37
+ out vec4 v_color;
38
+ out vec3 v_normal; // Camera-space normal.
39
+ out vec3 v_position; // Camera-space position.
40
+ out vec2 v_texcoord0;
41
+ out vec3 v_light_dir_0; // Camera-space light direction, main light.
42
+ out vec3 v_light_dir_1; // Camera-space light direction, other light.
43
+ out float f_fog_coord;
44
+
45
+ uniform mat4 modelViewMatrix;
46
+ uniform mat4 projectionMatrix;
47
+ uniform mat3 normalMatrix;
48
+ uniform mat4 u_SceneLight_0_matrix;
49
+ uniform mat4 u_SceneLight_1_matrix;
50
+
51
+ void main() {
52
+ gl_Position = projectionMatrix * modelViewMatrix * a_position;
53
+ f_fog_coord = gl_Position.z;
54
+ v_normal = normalMatrix * a_normal;
55
+ v_position = (modelViewMatrix * a_position).xyz;
56
+ v_light_dir_0 = mat3(u_SceneLight_0_matrix) * vec3(0, 0, 1);
57
+ v_light_dir_1 = mat3(u_SceneLight_1_matrix) * vec3(0, 0, 1);
58
+ v_color = a_color;
59
+ v_texcoord0 = a_texcoord0;
60
+ }
@@ -5,7 +5,7 @@
5
5
  "theme_color": "#2f363b",
6
6
  "lang": "en-US",
7
7
  "orientation": "any",
8
- "start_url": "https://web.janusxr.org/",
8
+ "start_url": "index.html",
9
9
  "description": "Webpages become 3D spaces interconnected by portals. Explore, collaborate and build, with or without a headset.",
10
10
  "ovr_package_name": "web.JanusXR.org",
11
11
  "icons": [
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "janusweb",
3
3
  "description": "Web client for JanusVR worlds",
4
- "version": "1.5.41",
4
+ "version": "1.5.43",
5
5
  "main": "scripts/janusweb.js",
6
6
  "author": "James Baicoianu",
7
7
  "license": "MIT",
@@ -18,7 +18,7 @@
18
18
  "url": "https://github.com/jbaicoianu/janusweb"
19
19
  },
20
20
  "dependencies": {
21
- "elation-engine": ">=0.9.73",
21
+ "elation-engine": ">=0.9.114",
22
22
  "uglify-es": "*"
23
23
  },
24
24
  "keywords": [
package/scripts/client.js CHANGED
@@ -1,4 +1,4 @@
1
- elation.require(['elements.elements', 'elements', 'engine.engine', 'engine.assets', 'engine.things.light_ambient', 'engine.things.light_directional', 'engine.things.light_point', 'janusweb.janusweb', 'janusweb.chat', 'janusweb.janusplayer', 'janusweb.janusxrplayer', 'janusweb.external.document-register-element', 'janusweb.ui.main', 'elements.elements'], function() {
1
+ elation.require(['elements.elements', 'elements', 'engine.engine', 'engine.assets', 'engine.things.light_ambient', 'engine.things.light_directional', 'engine.things.light_point', 'janusweb.janusweb', 'janusweb.janusplayer', 'janusweb.janusxrplayer', 'janusweb.ui.main'], function() {
2
2
  // If getCurrentScript returns non-null here, then it means we're in release mode
3
3
  var clientScript = elation.utils.getCurrentScript();
4
4
 
@@ -47,8 +47,12 @@ elation.require(['elements.elements', 'elements', 'engine.engine', 'engine.asset
47
47
  }
48
48
  elation.config.set('dependencies.path', fullpath);
49
49
 
50
- var usetracking = elation.utils.any(args.tracking, elation.config.get('janusweb.tracking.enabled'), false);
50
+ var usetracking = elation.utils.any(args.tracking, elation.config.get('janusweb.tracking.enabled'), false),
51
+ trackingid = elation.utils.any(args.trackingid, elation.config.get('janusweb.tracking.clientid'), '');
51
52
  if (usetracking && usetracking != 'false') {
53
+ elation.config.set('janusweb.tracking.enabled', true);
54
+ elation.config.set('janusweb.tracking.clientid', trackingid);
55
+
52
56
  var tracking = elation.janusweb.tracking({});
53
57
  }
54
58
  var link = document.createElement('link');
@@ -76,6 +80,7 @@ elation.require(['elements.elements', 'elements', 'engine.engine', 'engine.asset
76
80
  useWebVRPolyfill: args.useWebVRPolyfill,
77
81
  server: args.server,
78
82
  tracking: usetracking,
83
+ trackingid: trackingid,
79
84
  avatarsrc: args.avatarsrc,
80
85
  });
81
86
  return new Promise(function(resolve, reject) {
@@ -191,6 +196,7 @@ elation.require(['elements.elements', 'elements', 'engine.engine', 'engine.asset
191
196
 
192
197
  elation.engine.assets.initTextureLoaders(this.engine.systems.render, elation.config.get('janusweb.datapath') + 'lib/basis/');
193
198
  elation.engine.assets.setDracoPath(elation.config.get('janusweb.datapath') + 'lib/draco/');
199
+ elation.engine.assets.icosapath = elation.config.get('janusweb.datapath') + 'lib/three-icosa/brushes/';
194
200
  }
195
201
  createUI() {
196
202
  if (!this.ui) {
@@ -305,7 +311,8 @@ elation.require(['elements.elements', 'elements', 'engine.engine', 'engine.asset
305
311
  homepage: { type: 'string' },
306
312
  width: { type: 'integer', default: 640 },
307
313
  height: { type: 'integer', default: 480 },
308
- tracking: { type: 'boolean', default: true },
314
+ tracking: { type: 'boolean', default: false },
315
+ trackingid: { type: 'string' },
309
316
  networking: { type: 'boolean', default: true },
310
317
  avatarsrc: { type: 'string', default: false },
311
318
  uiconfig: { type: 'string', default: false },
@@ -333,6 +340,7 @@ elation.require(['elements.elements', 'elements', 'engine.engine', 'engine.asset
333
340
  url: this.getRoomURL(),
334
341
  homepage: this.homepage || this.src,
335
342
  tracking: this.tracking,
343
+ trackingid: this.trackingid,
336
344
  networking: this.networking,
337
345
  corsproxy: this.corsproxy,
338
346
  //resolution: width + 'x' + height,
@@ -456,11 +464,20 @@ elation.require(['elements.elements', 'elements', 'engine.engine', 'engine.asset
456
464
  }
457
465
  show() {
458
466
  super.show();
467
+ if (this.oldparent && !this.parentNode) {
468
+ this.oldparent.appendChild(this);
469
+ }
459
470
  elation.events.fire({type: 'overlay_show', element: this});
460
471
  }
461
472
  hide() {
462
473
  super.hide();
463
474
  elation.events.fire({type: 'overlay_hide', element: this});
475
+ setTimeout(() => {
476
+ if (this.parentNode) {
477
+ this.oldparent = this.parentNode;
478
+ this.parentNode.removeChild(this);
479
+ }
480
+ }, 1000);
464
481
  }
465
482
  });
466
483
  }
@@ -0,0 +1,182 @@
1
+ elation.require(['janusweb.janusbase'], function() {
2
+ elation.component.add('janusweb.elements.outliner', {
3
+ create() {
4
+ this.defineProperties({
5
+ 'target': { type: 'string', set: this.updateTarget },
6
+ 'outline': { type: 'float', default: 2, set: this.updateOutlineSize },
7
+ });
8
+ this.meshes = [];
9
+ this.skinnedmeshes = [];
10
+ // Shader used to outline the selected object. Based on https://www.videopoetics.com/tutorials/pixel-perfect-outline-shaders-unity/
11
+ // Thanks to @donrmccurdy for the example of how to include skinning in a custom shader https://github.com/mrdoob/three.js/issues/4800#issuecomment-580901344
12
+ this.outlinematerial = new THREE.ShaderMaterial({
13
+ vertexShader: `
14
+ uniform float offset;
15
+ uniform vec2 screenSize;
16
+
17
+ ${THREE.ShaderChunk.skinning_pars_vertex}
18
+
19
+ void main() {
20
+ mat4 modelViewProjectionMatrix = projectionMatrix * modelViewMatrix;
21
+
22
+ // If USE_SKINNING is set, this will transform our vertices by any skinned mesh attributes
23
+ // Otherwise, it'll just use our regular vertex positions
24
+ ${THREE.ShaderChunk.beginnormal_vertex}
25
+ ${THREE.ShaderChunk.skinbase_vertex}
26
+ ${THREE.ShaderChunk.skinnormal_vertex}
27
+ vec3 transformed = vec3( position );
28
+ ${THREE.ShaderChunk.skinning_vertex}
29
+
30
+ // Transform our new vertex position into clip space
31
+ vec4 pos = modelViewProjectionMatrix * vec4(transformed, 1.0);
32
+
33
+ // Offset our vertices along the normal direction, scaled to the specified pixel offset in screen space
34
+ vec3 clipNormal = mat3(projectionMatrix) * (mat3(modelViewMatrix) * normal);
35
+ pos.xy += normalize(clipNormal.xy) / screenSize * offset * pos.w * 2.0;
36
+ gl_Position = pos;
37
+ }
38
+ `,
39
+
40
+ fragmentShader: `
41
+ uniform vec3 color;
42
+ uniform float opacity;
43
+ void main(){
44
+ gl_FragColor = vec4( color, opacity );
45
+ }
46
+ `,
47
+
48
+ uniforms: {
49
+ offset: { type: "f", value: this.outline },
50
+ color: { value: this.col},
51
+ opacity: { value: this.opacity },
52
+ screenSize: { type: 'v2', value: new THREE.Vector2(window.innerWidth, window.innerHeight) },
53
+ },
54
+ });
55
+ this.col = '#00ff00';
56
+ this.outlinematerial.transparent = true;
57
+ this.outlinematerial.uniforms.color.value = this.col;
58
+ this.outlinematerial.depthWrite = false;
59
+ this.outlinematerial.side = THREE.BackSide;
60
+ //this.outlinematerial.blending = THREE.AdditiveBlending;
61
+
62
+ if (this.target) {
63
+ this.updateTarget();
64
+ } else {
65
+ setTimeout(() => {
66
+ this.select(this.children[0]);
67
+ }, 50);
68
+ }
69
+ },
70
+ select(object) {
71
+ this.selected = object;
72
+ let objmeshes = [], skinnedmeshes = [];
73
+ object.traverseObjects(n => {
74
+ if (n instanceof THREE.Mesh && n.material !== this.outlinematerial) {
75
+ if (n.isSkinnedMesh)
76
+ skinnedmeshes.push(n);
77
+ else
78
+ objmeshes.push(n);
79
+ }
80
+ });
81
+ // Create and update regular Meshes
82
+ let meshIdx = 0;
83
+ for (; meshIdx < objmeshes.length; meshIdx++) {
84
+ let n = objmeshes[meshIdx],
85
+ m = this.getMesh(n, this.meshes[meshIdx]);
86
+ this.meshes[meshIdx] = m;
87
+ n.parent.add(m);
88
+ }
89
+ // Hide all unused Meshes
90
+ if (meshIdx < this.meshes.length) {
91
+ for (; meshIdx < this.meshes.length; meshIdx++) {
92
+ this.meshes[meshIdx].geometry = null;
93
+ if (this.meshes[meshIdx].parent) {
94
+ this.meshes[meshIdx].parent.remove(this.meshes[meshIdx]);
95
+ }
96
+ }
97
+ }
98
+ // Create and update SkinnedMeshes
99
+ let skinnedMeshIdx = 0;
100
+ for (; skinnedMeshIdx < skinnedmeshes.length; skinnedMeshIdx++) {
101
+ let n = skinnedmeshes[skinnedMeshIdx],
102
+ m = this.getSkinnedMesh(n, this.skinnedmeshes[skinnedMeshIdx]);
103
+ this.skinnedmeshes[skinnedMeshIdx] = m;
104
+ n.parent.add(m);
105
+ }
106
+ // Hide all unused Meshes
107
+ if (skinnedMeshIdx < this.skinnedmeshes.length) {
108
+ for (; skinnedMeshIdx < this.skinnedmeshes.length; skinnedMeshIdx++) {
109
+ this.skinnedmeshes[skinnedMeshIdx].geometry = null;
110
+ if (this.skinnedmeshes[skinnedMeshIdx].parent) {
111
+ this.skinnedmeshes[skinnedMeshIdx].parent.remove(this.skinnedmeshes[skinnedMeshIdx]);
112
+ }
113
+ }
114
+ }
115
+ this.refresh();
116
+ },
117
+ deselect() {
118
+ for (let meshIdx = 0; meshIdx < this.meshes.length; meshIdx++) {
119
+ this.meshes[meshIdx].geometry = null;
120
+ if (this.meshes[meshIdx].parent) {
121
+ this.meshes[meshIdx].parent.remove(this.meshes[meshIdx]);
122
+ }
123
+ }
124
+ for (let skinnedMeshIdx = 0; skinnedMeshIdx < this.skinnedmeshes.length; skinnedMeshIdx++) {
125
+ this.skinnedmeshes[skinnedMeshIdx].geometry = null;
126
+ if (this.skinnedmeshes[skinnedMeshIdx].parent) {
127
+ this.skinnedmeshes[skinnedMeshIdx].parent.remove(this.skinnedmeshes[skinnedMeshIdx]);
128
+ }
129
+ }
130
+ this.refresh();
131
+ },
132
+ updateOutlineSize() {
133
+ if (this.outlinematerial) {
134
+ this.outlinematerial.uniforms.offset.value = this.outline;
135
+ this.refresh();
136
+ }
137
+ },
138
+ setOpacity() {
139
+ if (this.outlinematerial) {
140
+ this.outlinematerial.uniforms.opacity.value = this.opacity;
141
+ this.refresh();
142
+ }
143
+ },
144
+ updateTarget() {
145
+ if (this.target && this.outlinematerial) {
146
+ let obj = room.objects[this.target];
147
+ if (obj) {
148
+ this.select(obj);
149
+ if (!obj.loaded) {
150
+ obj.addEventListener('asset_load_complete', ev => this.select(obj));
151
+ }
152
+ } else if (!room.loaded) {
153
+ room.addEventListener('room_load_complete', ev => this.updateTarget());
154
+ }
155
+ }
156
+ },
157
+ getMesh(n, m) {
158
+ if (!m) {
159
+ m = new THREE.Mesh(n.geometry, this.outlinematerial);
160
+ m.matrixAutoUpdate = false;
161
+ } else {
162
+ m.geometry = n.geometry;
163
+ m.material = this.outlinematerial;
164
+ }
165
+ m.matrix.copy(n.matrix);
166
+ return m;
167
+ },
168
+ getSkinnedMesh(n, m) {
169
+ if (!m) {
170
+ m = new THREE.SkinnedMesh(n.geometry, this.outlinematerial);
171
+ m.skeleton = n.skeleton;
172
+ m.matrixAutoUpdate = false;
173
+ } else {
174
+ m.geometry = n.geometry;
175
+ m.material = this.outlinematerial;
176
+ }
177
+ m.matrix.copy(n.matrix);
178
+ return m;
179
+ }
180
+ }, elation.janusweb.janusbase);
181
+
182
+ });
@@ -329,9 +329,7 @@ JanusClientConnection.prototype.connect = function() {
329
329
  this.status = 2;
330
330
  this._useridSuffix = '';
331
331
  this.sendLogon();
332
- while (this.msgQueue.length > 0) {
333
- this.send(this.msgQueue.shift());
334
- }
332
+ this.sendQueuedCommands()
335
333
  this.dispatchEvent({type: 'connect'});
336
334
  }.bind(this);
337
335
 
@@ -362,6 +360,15 @@ JanusClientConnection.prototype.disconnect = function() {
362
360
  this.dispatchEvent({type: 'disconnecting'});
363
361
  this._websocket.close();
364
362
  }
363
+ JanusClientConnection.prototype.sendQueuedCommands = function() {
364
+ if (this._websocket.readyState > 0) {
365
+ while (this.msgQueue.length > 0) {
366
+ this.send(this.msgQueue.shift());
367
+ }
368
+ } else {
369
+ setTimeout(() => this.sendQueuedCommands(), 100);
370
+ }
371
+ }
365
372
 
366
373
  JanusClientConnection.prototype.sendLogon = function() {
367
374
  var msgData = {
@@ -385,13 +392,12 @@ JanusClientConnection.prototype.setUserId = function(userId) {
385
392
  };
386
393
 
387
394
  JanusClientConnection.prototype.send = function(msg) {
388
- if (this._websocket.readyState == 0) {
389
- this.msgQueue.push(msg);
390
- } else if (this._websocket.readyState == 1) {
395
+ try {
391
396
  this._websocket.send(JSON.stringify(msg) + '\r\n');
392
- } else {
393
- //this.reconnect();
397
+ } catch (e) {
398
+ this.msgQueue.push(msg);
394
399
  }
400
+ //this.reconnect();
395
401
  };
396
402
 
397
403
  JanusClientConnection.prototype.onMessage = function(msg) {
@@ -305,7 +305,7 @@ JanusFireboxParser.prototype.parseXML = function(imgxml, leaf, forceLower) {
305
305
  } else if (child.nodeName) {
306
306
  if (child.nodeName == "#text" || child.nodeName == "#cdata-section") {
307
307
  // this gets confused if you have multiple text/cdata nodes...
308
- if (!child.nodeValue.match(/^[\s\n]*$/m)) {
308
+ if (!child.nodeValue.match(/^[\s\n]*$/s)) {
309
309
  parent._content = child.nodeValue;
310
310
  }
311
311
  } else {
package/scripts/image.js CHANGED
@@ -37,7 +37,7 @@ elation.require(['janusweb.janusbase'], function() {
37
37
  this.createGeometry = function() {
38
38
  var aspect = this.getAspect(),
39
39
  thickness = 0.1; //Math.max(this.scale.x, this.scale.z) / (10 * this.scale.z);
40
- var box = new THREE.BoxBufferGeometry(2, 2 * aspect, thickness);
40
+ var box = new THREE.BoxGeometry(2, 2 * aspect, thickness);
41
41
  box.applyMatrix4(new THREE.Matrix4().makeTranslation(0, 0, thickness / this.scale.z));
42
42
 
43
43
  // Flip the back face for images
@@ -231,7 +231,7 @@ elation.require(['engine.things.generic', 'utils.template', 'janusweb.parts'], f
231
231
  }
232
232
  }
233
233
  this.createForces = function() {
234
- if (this.collidable && !this.collision_trigger) {
234
+ if (this.collidable || this.collision_trigger) {
235
235
  elation.events.add(this.objects.dynamics, 'physics_collide', elation.bind(this, this.handleCollision));
236
236
  }
237
237
  this.updateRotationSpeed();
@@ -383,8 +383,9 @@ elation.require(['engine.things.generic', 'utils.template', 'janusweb.parts'], f
383
383
  rotate_deg_per_sec: [ 'property', 'rotate_deg_per_sec'],
384
384
  rotate_axis: [ 'property', 'rotate_axis'],
385
385
 
386
- anim_id: ['property', 'anim_id'],
387
- anim_transition_time: ['property', 'anim_transition_time'],
386
+ anim_id: ['property', 'anim_id'],
387
+ anim_transition_time: ['property', 'anim_transition_time'],
388
+ activeanimation: ['property', 'activeanimation'],
388
389
 
389
390
  fwd: ['property', 'zdir'],
390
391
  xdir: ['property', 'xdir'],
@@ -596,13 +597,16 @@ elation.require(['engine.things.generic', 'utils.template', 'janusweb.parts'], f
596
597
  sbs3d: args.sbs3d,
597
598
  ou3d: args.ou3d,
598
599
  eac360: args.eac360,
600
+ vr180: args.vr180,
599
601
  hasalpha: args.hasalpha,
600
602
  auto_play: args.auto_play,
601
603
  type: args.type,
602
604
  format: args.format,
603
605
  hls: args.hls,
604
606
  preload: args.preload,
605
- baseurl: this.baseurl
607
+ baseurl: this.baseurl,
608
+ proxy: args.proxy,
609
+ extratracks: args.extratracks,
606
610
  });
607
611
  } else if (args.video) {
608
612
  assetlist.push({
@@ -612,12 +616,15 @@ elation.require(['engine.things.generic', 'utils.template', 'janusweb.parts'], f
612
616
  loop: args.loop,
613
617
  sbs3d: args.sbs3d,
614
618
  ou3d: args.ou3d,
619
+ vr180: args.vr180,
615
620
  hasalpha: args.hasalpha,
616
621
  auto_play: args.auto_play,
617
622
  type: args.type,
618
623
  format: args.format,
619
624
  hls: args.hls,
620
- baseurl: this.baseurl
625
+ baseurl: this.baseurl,
626
+ proxy: args.proxy,
627
+ extratracks: args.extratracks,
621
628
  });
622
629
  }
623
630
  } else if (type == 'sound') {
@@ -795,7 +802,7 @@ elation.require(['engine.things.generic', 'utils.template', 'janusweb.parts'], f
795
802
  }
796
803
  parent.worldToLocal(camera.getWorldPosition(playerpos)).sub(this.position);
797
804
  dir.copy(playerpos).normalize();
798
- if (billboard == 'y') {
805
+ if (billboard == 'y' || billboard === true || billboard == 'true') {
799
806
  this.rotation.radians.set(0, Math.atan2(dir.x, dir.z), 0);
800
807
  this.frameupdates['rotation'] = true;
801
808
  }
@@ -817,10 +824,12 @@ elation.require(['engine.things.generic', 'utils.template', 'janusweb.parts'], f
817
824
  this.refresh();
818
825
  }
819
826
 
827
+ /*
820
828
  let pos = this.position;
821
829
  if (isNaN(pos.x)) pos.x = 0;
822
830
  if (isNaN(pos.y)) pos.y = 0;
823
831
  if (isNaN(pos.z)) pos.z = 0;
832
+ */
824
833
 
825
834
  if (this.properties.color === this.defaultcolor && (this.properties.color.r != 1 || this.properties.color.g != 1 || this.properties.color.b != 1)) {
826
835
  this.updateColor();
@@ -829,7 +838,7 @@ elation.require(['engine.things.generic', 'utils.template', 'janusweb.parts'], f
829
838
  this.resetFrameUpdates();
830
839
  this.dispatchEvent({type: 'update', data: ev.data, bubbles: false});
831
840
  var proxy = this.getProxyObject();
832
- if (typeof proxy.update == 'function' && this.created) {
841
+ if (this.created && typeof proxy.update == 'function') {
833
842
  proxy.update(ev.data);
834
843
  }
835
844
  }
@@ -978,13 +987,13 @@ elation.require(['engine.things.generic', 'utils.template', 'janusweb.parts'], f
978
987
  if (other) {
979
988
  if (other.getProxyObject) {
980
989
  var proxy = other.getProxyObject();
981
- //console.log('I collided', proxy, this);
990
+ //console.log('I collided', this.collision_trigger, other.collision_trigger, proxy, this);
982
991
 
983
- if (this.collision_trigger || proxy.collision_trigger) {
992
+ if (this.collision_trigger || proxy.collision_trigger || other.collision_trigger) {
984
993
  this.dispatchEvent({type: 'trigger', data: { collision: ev.data, other: proxy }});
985
994
  ev.preventDefault();
986
995
  ev.stopPropagation();
987
- } else if (this.collidable) {
996
+ } else if (this.collidable && other.collidable) {
988
997
  this.dispatchEvent({type: 'collision', data: { collision: ev.data, other: proxy }});
989
998
  } else {
990
999
  ev.preventDefault();
@@ -1030,7 +1039,7 @@ elation.require(['engine.things.generic', 'utils.template', 'janusweb.parts'], f
1030
1039
  }
1031
1040
  this.updateAnimation = function() {
1032
1041
  // Triggered whenever this.anim_id changes
1033
- if (this.anim_id) {
1042
+ if (this.anim_id || !this.activeanimation) {
1034
1043
  this.setAnimation(this.anim_id);
1035
1044
  } else if (this.activeanimation) {
1036
1045
  this.stopAnimation();
@@ -1051,7 +1060,7 @@ elation.require(['engine.things.generic', 'utils.template', 'janusweb.parts'], f
1051
1060
  if (!this.fadetimers[clipname]) {
1052
1061
  // FIXME - for some reason, THREE.AnimationAction.fadeIn() / fadeOut() / etc are just causing the animations to stop, so we'll handle fading ourselves
1053
1062
  this.fadetimers[clipname] = setInterval(() => {
1054
- oldaction.weight *= .95;
1063
+ oldaction.weight *= .9;
1055
1064
  if (oldaction.weight <= .001) {
1056
1065
  oldaction.weight = 0;
1057
1066
  oldaction.stop();
@@ -1087,10 +1096,12 @@ elation.require(['engine.things.generic', 'utils.template', 'janusweb.parts'], f
1087
1096
  if (!event.target) {
1088
1097
  event.target = target || event.element;
1089
1098
  }
1099
+ /*
1090
1100
  var handlerfn = 'on' + event.type;
1091
1101
  if (handlerfn in this) {
1092
1102
  this.executeCallback(this[handlerfn], event);
1093
1103
  }
1104
+ */
1094
1105
  // Bubble event up to parents, unless the event was thrown with bubbling disabled or an event handler called stopPropagation()
1095
1106
  let firedev = elation.events.fire(event);
1096
1107
  let returnValue = true;
@@ -1171,7 +1182,7 @@ elation.require(['engine.things.generic', 'utils.template', 'janusweb.parts'], f
1171
1182
  this.raycast = (function() {
1172
1183
  var _pos = new THREE.Vector3(),
1173
1184
  _dir = new THREE.Vector3(0,0,-1);
1174
- return function(dir, offset, classname, maxdist) {
1185
+ return function(dir, offset, classname, maxdist, colliderroot=null) {
1175
1186
  if (!this.room) return [];
1176
1187
  if (dir) {
1177
1188
  _dir.copy(dir);
@@ -1184,7 +1195,7 @@ elation.require(['engine.things.generic', 'utils.template', 'janusweb.parts'], f
1184
1195
  }
1185
1196
  this.localToWorld(_pos);
1186
1197
  this.objects.dynamics.localToWorldDir(_dir);
1187
- return this.room.raycast(_dir, _pos, classname, maxdist);
1198
+ return this.room.raycast(_dir, _pos, classname, maxdist, colliderroot);
1188
1199
  };
1189
1200
  })();
1190
1201
  this.getElementsByTagName = function(tagname, elements) {
@@ -1281,9 +1292,9 @@ console.log('its null', k, this[k], prop);
1281
1292
  // Special handling for 'rotation' and 'color'
1282
1293
  if (realkey == 'rotation') {
1283
1294
  /*
1284
- props['rotation'][0] *= THREE.Math.RAD2DEG;
1285
- props['rotation'][1] *= THREE.Math.RAD2DEG;
1286
- props['rotation'][2] *= THREE.Math.RAD2DEG;
1295
+ props['rotation'][0] *= THREE.MathUtils.RAD2DEG;
1296
+ props['rotation'][1] *= THREE.MathUtils.RAD2DEG;
1297
+ props['rotation'][2] *= THREE.MathUtils.RAD2DEG;
1287
1298
  */
1288
1299
  } else if (realkey == 'color') {
1289
1300
  if (!this.colorIsDefault) {
@@ -1401,5 +1412,17 @@ console.log('clone', props);
1401
1412
  }
1402
1413
  return false;
1403
1414
  }
1415
+ this.physics_collide = function(ev) {
1416
+ let obj1 = ev.data.bodies[0].object, obj2 = ev.data.bodies[1].object,
1417
+ other = (obj1 == this ? obj2 : obj1);
1418
+
1419
+ let events = elation.events.fire({type: 'collide', element: this, data: {
1420
+ other: (typeof other.getProxyObject == 'function' ? other.getProxyObject() : other),
1421
+ collision: ev.data
1422
+ } });
1423
+ if (elation.events.wasDefaultPrevented(events)) {
1424
+ ev.preventDefault();
1425
+ }
1426
+ }
1404
1427
  }, elation.engine.things.generic);
1405
1428
  });
@@ -33,8 +33,8 @@ elation.require(['janusweb.janusbase', 'engine.things.leapmotion'], function() {
33
33
  diffuseColor.rgb *= vColor;
34
34
  #endif
35
35
  float dist = length(vViewPosition);
36
- float mindist = .4;
37
- float maxdist = .6;
36
+ float mindist = .2;
37
+ float maxdist = .4;
38
38
  if (dist < maxdist) {
39
39
  diffuseColor.a = clamp(((dist - mindist) / (maxdist - mindist)), 0., 1.);
40
40
  }
@@ -131,13 +131,11 @@ elation.require(['janusweb.janusbase', 'engine.things.leapmotion'], function() {
131
131
  this.ghostassets = assets;
132
132
  this.assetpack = elation.engine.assets.loadJSON(assets.assetlist);
133
133
  } else {
134
- console.log(this.ghostassets);
135
- this.assetpack.loadJSON(assets.assetlist);
134
+ this.assetpack.loadJSON(assets.assetlist, true);
136
135
  }
137
136
 
138
137
  let animnames = []; //'idle', 'walk', 'walk_left', 'walk_right', 'walk_back', 'run', 'jump', 'fly', 'speak', 'type', 'portal'];
139
138
  let animassets = assets.assetlist.filter(asset => animnames.indexOf(asset.name) != -1);
140
- console.log('some ghost animations', animassets, assets);
141
139
 
142
140
  if (!this.animationmixer) {
143
141
  // Set up our animation mixer with a simple bone mapper for our head. We'll add more animations to this ass other assets load
@@ -341,7 +339,7 @@ elation.require(['janusweb.janusbase', 'engine.things.leapmotion'], function() {
341
339
  if (this.body.animationmixer) {
342
340
  this.cloneAnimations(animasset);
343
341
  }
344
- //this.body.setAnimation('idle');
342
+ this.body.setAnimation('idle');
345
343
  }
346
344
  });
347
345
  animasset.load();
@@ -611,6 +609,15 @@ elation.require(['janusweb.janusbase', 'engine.things.leapmotion'], function() {
611
609
  if (isNaN(this.head.orientation.x) || isNaN(this.head.orientation.y) || isNaN(this.head.orientation.z) || isNaN(this.head.orientation.w)) this.head.orientation.set(0,0,0,1);
612
610
  }
613
611
 
612
+ if (movedata.morphtargets) {
613
+ if (this.body) {
614
+ let morphtargets = movedata.morphtargets;
615
+ for (let target in morphtargets) {
616
+ this.body.setMorphTargetInfluence(target, morphtargets[target]);
617
+ }
618
+ }
619
+ }
620
+
614
621
  this.objects.dynamics.updateState();
615
622
  this.refresh();
616
623
  }
@@ -655,9 +662,13 @@ elation.require(['janusweb.janusbase', 'engine.things.leapmotion'], function() {
655
662
  }
656
663
  if (ghostdef.head_id) {
657
664
  this.setHead(ghostdef.head_id, headpos, ghostdef.scale);
665
+ } else if (this.head) {
666
+ this.setHead(false);
658
667
  }
659
668
  if (ghostdef.body_id) {
660
669
  this.setBody(ghostdef.body_id, ghostdef.scale, ghostdef.pos);
670
+ } else if (this.body) {
671
+ this.setBody(false);
661
672
  }
662
673
  if (ghostdef._children) {
663
674
  for (var type in ghostdef._children) {