diff --git a/unpublishedScripts/marketplace/shapes/assets/audio/clone.wav b/unpublishedScripts/marketplace/shapes/assets/audio/clone.wav deleted file mode 100644 index 2a0e21cdd2..0000000000 Binary files a/unpublishedScripts/marketplace/shapes/assets/audio/clone.wav and /dev/null differ diff --git a/unpublishedScripts/marketplace/shapes/assets/audio/create.wav b/unpublishedScripts/marketplace/shapes/assets/audio/create.wav deleted file mode 100644 index 9571c5cff7..0000000000 Binary files a/unpublishedScripts/marketplace/shapes/assets/audio/create.wav and /dev/null differ diff --git a/unpublishedScripts/marketplace/shapes/assets/audio/delete.wav b/unpublishedScripts/marketplace/shapes/assets/audio/delete.wav deleted file mode 100644 index da93ca7e10..0000000000 Binary files a/unpublishedScripts/marketplace/shapes/assets/audio/delete.wav and /dev/null differ diff --git a/unpublishedScripts/marketplace/shapes/assets/audio/drop.wav b/unpublishedScripts/marketplace/shapes/assets/audio/drop.wav deleted file mode 100644 index 32d0e9f65a..0000000000 Binary files a/unpublishedScripts/marketplace/shapes/assets/audio/drop.wav and /dev/null differ diff --git a/unpublishedScripts/marketplace/shapes/assets/audio/equip.wav b/unpublishedScripts/marketplace/shapes/assets/audio/equip.wav deleted file mode 100644 index 32d0e9f65a..0000000000 Binary files a/unpublishedScripts/marketplace/shapes/assets/audio/equip.wav and /dev/null differ diff --git a/unpublishedScripts/marketplace/shapes/assets/audio/error.wav b/unpublishedScripts/marketplace/shapes/assets/audio/error.wav deleted file mode 100644 index 934a4d366b..0000000000 Binary files a/unpublishedScripts/marketplace/shapes/assets/audio/error.wav and /dev/null differ diff --git a/unpublishedScripts/marketplace/shapes/assets/audio/select.wav b/unpublishedScripts/marketplace/shapes/assets/audio/select.wav deleted file mode 100644 index e97b5ea6d7..0000000000 Binary files a/unpublishedScripts/marketplace/shapes/assets/audio/select.wav and /dev/null differ diff --git a/unpublishedScripts/marketplace/shapes/assets/blue-header-bar.fbx b/unpublishedScripts/marketplace/shapes/assets/blue-header-bar.fbx deleted file mode 100644 index 951a6667e7..0000000000 Binary files a/unpublishedScripts/marketplace/shapes/assets/blue-header-bar.fbx and /dev/null differ diff --git a/unpublishedScripts/marketplace/shapes/assets/create/circle.fbx b/unpublishedScripts/marketplace/shapes/assets/create/circle.fbx deleted file mode 100644 index db43fafab6..0000000000 Binary files a/unpublishedScripts/marketplace/shapes/assets/create/circle.fbx and /dev/null differ diff --git a/unpublishedScripts/marketplace/shapes/assets/create/cone.fbx b/unpublishedScripts/marketplace/shapes/assets/create/cone.fbx deleted file mode 100644 index d590ee04be..0000000000 Binary files a/unpublishedScripts/marketplace/shapes/assets/create/cone.fbx and /dev/null differ diff --git a/unpublishedScripts/marketplace/shapes/assets/create/create-heading.svg b/unpublishedScripts/marketplace/shapes/assets/create/create-heading.svg deleted file mode 100644 index fa2a096ede..0000000000 --- a/unpublishedScripts/marketplace/shapes/assets/create/create-heading.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - CREATE - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/unpublishedScripts/marketplace/shapes/assets/create/cube.fbx b/unpublishedScripts/marketplace/shapes/assets/create/cube.fbx deleted file mode 100644 index fa079219fe..0000000000 Binary files a/unpublishedScripts/marketplace/shapes/assets/create/cube.fbx and /dev/null differ diff --git a/unpublishedScripts/marketplace/shapes/assets/create/cylinder.fbx b/unpublishedScripts/marketplace/shapes/assets/create/cylinder.fbx deleted file mode 100644 index 319cbf0a6d..0000000000 Binary files a/unpublishedScripts/marketplace/shapes/assets/create/cylinder.fbx and /dev/null differ diff --git a/unpublishedScripts/marketplace/shapes/assets/create/dodecahedron.fbx b/unpublishedScripts/marketplace/shapes/assets/create/dodecahedron.fbx deleted file mode 100644 index af2b7f3f55..0000000000 Binary files a/unpublishedScripts/marketplace/shapes/assets/create/dodecahedron.fbx and /dev/null differ diff --git a/unpublishedScripts/marketplace/shapes/assets/create/hexagon.fbx b/unpublishedScripts/marketplace/shapes/assets/create/hexagon.fbx deleted file mode 100644 index ffb63fb64d..0000000000 Binary files a/unpublishedScripts/marketplace/shapes/assets/create/hexagon.fbx and /dev/null differ diff --git a/unpublishedScripts/marketplace/shapes/assets/create/icosahedron.fbx b/unpublishedScripts/marketplace/shapes/assets/create/icosahedron.fbx deleted file mode 100644 index 3103d6b2d6..0000000000 Binary files a/unpublishedScripts/marketplace/shapes/assets/create/icosahedron.fbx and /dev/null differ diff --git a/unpublishedScripts/marketplace/shapes/assets/create/octagon.fbx b/unpublishedScripts/marketplace/shapes/assets/create/octagon.fbx deleted file mode 100644 index 8de0f6f6f3..0000000000 Binary files a/unpublishedScripts/marketplace/shapes/assets/create/octagon.fbx and /dev/null differ diff --git a/unpublishedScripts/marketplace/shapes/assets/create/octahedron.fbx b/unpublishedScripts/marketplace/shapes/assets/create/octahedron.fbx deleted file mode 100644 index 6798566d3b..0000000000 Binary files a/unpublishedScripts/marketplace/shapes/assets/create/octahedron.fbx and /dev/null differ diff --git a/unpublishedScripts/marketplace/shapes/assets/create/prism.fbx b/unpublishedScripts/marketplace/shapes/assets/create/prism.fbx deleted file mode 100644 index f1ddc4933e..0000000000 Binary files a/unpublishedScripts/marketplace/shapes/assets/create/prism.fbx and /dev/null differ diff --git a/unpublishedScripts/marketplace/shapes/assets/create/sphere.fbx b/unpublishedScripts/marketplace/shapes/assets/create/sphere.fbx deleted file mode 100644 index 43b077b225..0000000000 Binary files a/unpublishedScripts/marketplace/shapes/assets/create/sphere.fbx and /dev/null differ diff --git a/unpublishedScripts/marketplace/shapes/assets/create/tetrahedron.fbx b/unpublishedScripts/marketplace/shapes/assets/create/tetrahedron.fbx deleted file mode 100644 index 60dd70edb1..0000000000 Binary files a/unpublishedScripts/marketplace/shapes/assets/create/tetrahedron.fbx and /dev/null differ diff --git a/unpublishedScripts/marketplace/shapes/assets/gray-header.fbx b/unpublishedScripts/marketplace/shapes/assets/gray-header.fbx deleted file mode 100644 index 0f51d66f38..0000000000 Binary files a/unpublishedScripts/marketplace/shapes/assets/gray-header.fbx and /dev/null differ diff --git a/unpublishedScripts/marketplace/shapes/assets/green-header-bar.fbx b/unpublishedScripts/marketplace/shapes/assets/green-header-bar.fbx deleted file mode 100644 index cf76830d8c..0000000000 Binary files a/unpublishedScripts/marketplace/shapes/assets/green-header-bar.fbx and /dev/null differ diff --git a/unpublishedScripts/marketplace/shapes/assets/green-header.fbx b/unpublishedScripts/marketplace/shapes/assets/green-header.fbx deleted file mode 100644 index db77ecf0bd..0000000000 Binary files a/unpublishedScripts/marketplace/shapes/assets/green-header.fbx and /dev/null differ diff --git a/unpublishedScripts/marketplace/shapes/assets/horizontal-rule.svg b/unpublishedScripts/marketplace/shapes/assets/horizontal-rule.svg deleted file mode 100644 index d7dc41f719..0000000000 --- a/unpublishedScripts/marketplace/shapes/assets/horizontal-rule.svg +++ /dev/null @@ -1,66 +0,0 @@ - - - - - - - - - - image/svg+xml - - - - - - - - - diff --git a/unpublishedScripts/marketplace/shapes/assets/shapes-a.svg b/unpublishedScripts/marketplace/shapes/assets/shapes-a.svg deleted file mode 100644 index 07918ba294..0000000000 --- a/unpublishedScripts/marketplace/shapes/assets/shapes-a.svg +++ /dev/null @@ -1,15 +0,0 @@ - - - - - diff --git a/unpublishedScripts/marketplace/shapes/assets/shapes-d.svg b/unpublishedScripts/marketplace/shapes/assets/shapes-d.svg deleted file mode 100644 index fa64b519b9..0000000000 --- a/unpublishedScripts/marketplace/shapes/assets/shapes-d.svg +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - diff --git a/unpublishedScripts/marketplace/shapes/assets/shapes-i.svg b/unpublishedScripts/marketplace/shapes/assets/shapes-i.svg deleted file mode 100644 index cc9df9e64a..0000000000 --- a/unpublishedScripts/marketplace/shapes/assets/shapes-i.svg +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - diff --git a/unpublishedScripts/marketplace/shapes/assets/tools/back-heading.svg b/unpublishedScripts/marketplace/shapes/assets/tools/back-heading.svg deleted file mode 100644 index d70f315ea1..0000000000 --- a/unpublishedScripts/marketplace/shapes/assets/tools/back-heading.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - BACK - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/unpublishedScripts/marketplace/shapes/assets/tools/back-icon.svg b/unpublishedScripts/marketplace/shapes/assets/tools/back-icon.svg deleted file mode 100644 index 7de1781804..0000000000 --- a/unpublishedScripts/marketplace/shapes/assets/tools/back-icon.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - back-icon - Created with Sketch. - - - - - - - - - \ No newline at end of file diff --git a/unpublishedScripts/marketplace/shapes/assets/tools/clone-icon.svg b/unpublishedScripts/marketplace/shapes/assets/tools/clone-icon.svg deleted file mode 100644 index 324c7d57ba..0000000000 --- a/unpublishedScripts/marketplace/shapes/assets/tools/clone-icon.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - clone-icon - Created with Sketch. - - - - - - - - - \ No newline at end of file diff --git a/unpublishedScripts/marketplace/shapes/assets/tools/clone-label.svg b/unpublishedScripts/marketplace/shapes/assets/tools/clone-label.svg deleted file mode 100644 index 1a141714e8..0000000000 --- a/unpublishedScripts/marketplace/shapes/assets/tools/clone-label.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - CLONE - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/unpublishedScripts/marketplace/shapes/assets/tools/clone-tool-heading.svg b/unpublishedScripts/marketplace/shapes/assets/tools/clone-tool-heading.svg deleted file mode 100644 index 6ab57cd0e1..0000000000 --- a/unpublishedScripts/marketplace/shapes/assets/tools/clone-tool-heading.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - CLONE TOOL - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/unpublishedScripts/marketplace/shapes/assets/tools/color-icon.svg b/unpublishedScripts/marketplace/shapes/assets/tools/color-icon.svg deleted file mode 100644 index 9363b7607f..0000000000 --- a/unpublishedScripts/marketplace/shapes/assets/tools/color-icon.svg +++ /dev/null @@ -1,15 +0,0 @@ - - - - color-icon - Created with Sketch. - - - - - - - - - - \ No newline at end of file diff --git a/unpublishedScripts/marketplace/shapes/assets/tools/color-label.svg b/unpublishedScripts/marketplace/shapes/assets/tools/color-label.svg deleted file mode 100644 index 008b7b963d..0000000000 --- a/unpublishedScripts/marketplace/shapes/assets/tools/color-label.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - COLOR - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/unpublishedScripts/marketplace/shapes/assets/tools/color-tool-heading.svg b/unpublishedScripts/marketplace/shapes/assets/tools/color-tool-heading.svg deleted file mode 100644 index 5b1979e776..0000000000 --- a/unpublishedScripts/marketplace/shapes/assets/tools/color-tool-heading.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - COLOR TOOL - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/unpublishedScripts/marketplace/shapes/assets/tools/color/color-circle-black.png b/unpublishedScripts/marketplace/shapes/assets/tools/color/color-circle-black.png deleted file mode 100644 index 4b62c28a4d..0000000000 Binary files a/unpublishedScripts/marketplace/shapes/assets/tools/color/color-circle-black.png and /dev/null differ diff --git a/unpublishedScripts/marketplace/shapes/assets/tools/color/color-circle.png b/unpublishedScripts/marketplace/shapes/assets/tools/color/color-circle.png deleted file mode 100644 index 8bf2613382..0000000000 Binary files a/unpublishedScripts/marketplace/shapes/assets/tools/color/color-circle.png and /dev/null differ diff --git a/unpublishedScripts/marketplace/shapes/assets/tools/color/pick-color-label.svg b/unpublishedScripts/marketplace/shapes/assets/tools/color/pick-color-label.svg deleted file mode 100644 index 6fa2997328..0000000000 --- a/unpublishedScripts/marketplace/shapes/assets/tools/color/pick-color-label.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - noun_792623 - Created with Sketch. - - - - - - - - - \ No newline at end of file diff --git a/unpublishedScripts/marketplace/shapes/assets/tools/color/slider-alpha.png b/unpublishedScripts/marketplace/shapes/assets/tools/color/slider-alpha.png deleted file mode 100644 index e7693935b2..0000000000 Binary files a/unpublishedScripts/marketplace/shapes/assets/tools/color/slider-alpha.png and /dev/null differ diff --git a/unpublishedScripts/marketplace/shapes/assets/tools/color/slider-white.png b/unpublishedScripts/marketplace/shapes/assets/tools/color/slider-white.png deleted file mode 100644 index 048936b106..0000000000 Binary files a/unpublishedScripts/marketplace/shapes/assets/tools/color/slider-white.png and /dev/null differ diff --git a/unpublishedScripts/marketplace/shapes/assets/tools/color/swatches-label.svg b/unpublishedScripts/marketplace/shapes/assets/tools/color/swatches-label.svg deleted file mode 100644 index 76c9d6228f..0000000000 --- a/unpublishedScripts/marketplace/shapes/assets/tools/color/swatches-label.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - SWATCHES - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/unpublishedScripts/marketplace/shapes/assets/tools/common/actions-label.svg b/unpublishedScripts/marketplace/shapes/assets/tools/common/actions-label.svg deleted file mode 100644 index d5428ae3f1..0000000000 --- a/unpublishedScripts/marketplace/shapes/assets/tools/common/actions-label.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - ACTIONS - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/unpublishedScripts/marketplace/shapes/assets/tools/common/down-arrow.svg b/unpublishedScripts/marketplace/shapes/assets/tools/common/down-arrow.svg deleted file mode 100644 index 352b830aad..0000000000 --- a/unpublishedScripts/marketplace/shapes/assets/tools/common/down-arrow.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - 5 - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/unpublishedScripts/marketplace/shapes/assets/tools/common/finish-label.svg b/unpublishedScripts/marketplace/shapes/assets/tools/common/finish-label.svg deleted file mode 100644 index 58120a337a..0000000000 --- a/unpublishedScripts/marketplace/shapes/assets/tools/common/finish-label.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - FINISH - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/unpublishedScripts/marketplace/shapes/assets/tools/common/info-icon.svg b/unpublishedScripts/marketplace/shapes/assets/tools/common/info-icon.svg deleted file mode 100644 index ef2495b728..0000000000 --- a/unpublishedScripts/marketplace/shapes/assets/tools/common/info-icon.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - [ - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/unpublishedScripts/marketplace/shapes/assets/tools/common/up-arrow.svg b/unpublishedScripts/marketplace/shapes/assets/tools/common/up-arrow.svg deleted file mode 100644 index da80a4e9ce..0000000000 --- a/unpublishedScripts/marketplace/shapes/assets/tools/common/up-arrow.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - 5 copy - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/unpublishedScripts/marketplace/shapes/assets/tools/delete-icon.svg b/unpublishedScripts/marketplace/shapes/assets/tools/delete-icon.svg deleted file mode 100644 index f77d40f1e6..0000000000 --- a/unpublishedScripts/marketplace/shapes/assets/tools/delete-icon.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - delete-icon - Created with Sketch. - - - - - - - - - \ No newline at end of file diff --git a/unpublishedScripts/marketplace/shapes/assets/tools/delete-label.svg b/unpublishedScripts/marketplace/shapes/assets/tools/delete-label.svg deleted file mode 100644 index e63000e209..0000000000 --- a/unpublishedScripts/marketplace/shapes/assets/tools/delete-label.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - DELETE - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/unpublishedScripts/marketplace/shapes/assets/tools/delete-tool-heading.svg b/unpublishedScripts/marketplace/shapes/assets/tools/delete-tool-heading.svg deleted file mode 100644 index e92e3c1d00..0000000000 --- a/unpublishedScripts/marketplace/shapes/assets/tools/delete-tool-heading.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - DELETE TOOL - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/unpublishedScripts/marketplace/shapes/assets/tools/delete/info-text.svg b/unpublishedScripts/marketplace/shapes/assets/tools/delete/info-text.svg deleted file mode 100644 index 4148bd8525..0000000000 --- a/unpublishedScripts/marketplace/shapes/assets/tools/delete/info-text.svg +++ /dev/null @@ -1,83 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/unpublishedScripts/marketplace/shapes/assets/tools/group-icon.svg b/unpublishedScripts/marketplace/shapes/assets/tools/group-icon.svg deleted file mode 100644 index 56abd0a30c..0000000000 --- a/unpublishedScripts/marketplace/shapes/assets/tools/group-icon.svg +++ /dev/null @@ -1,33 +0,0 @@ - - - - group-icon - Created with Sketch. - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/unpublishedScripts/marketplace/shapes/assets/tools/group-label.svg b/unpublishedScripts/marketplace/shapes/assets/tools/group-label.svg deleted file mode 100644 index 001ce5b953..0000000000 --- a/unpublishedScripts/marketplace/shapes/assets/tools/group-label.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - GROUP - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/unpublishedScripts/marketplace/shapes/assets/tools/group-tool-heading.svg b/unpublishedScripts/marketplace/shapes/assets/tools/group-tool-heading.svg deleted file mode 100644 index e1942213e2..0000000000 --- a/unpublishedScripts/marketplace/shapes/assets/tools/group-tool-heading.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - GROUP TOOL - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/unpublishedScripts/marketplace/shapes/assets/tools/group/clear-label.svg b/unpublishedScripts/marketplace/shapes/assets/tools/group/clear-label.svg deleted file mode 100644 index 8bc5daa8b4..0000000000 --- a/unpublishedScripts/marketplace/shapes/assets/tools/group/clear-label.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/unpublishedScripts/marketplace/shapes/assets/tools/group/group-label.svg b/unpublishedScripts/marketplace/shapes/assets/tools/group/group-label.svg deleted file mode 100644 index b2f15b4b22..0000000000 --- a/unpublishedScripts/marketplace/shapes/assets/tools/group/group-label.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - GROUP - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/unpublishedScripts/marketplace/shapes/assets/tools/group/selection-box-label.svg b/unpublishedScripts/marketplace/shapes/assets/tools/group/selection-box-label.svg deleted file mode 100644 index 21bed98a90..0000000000 --- a/unpublishedScripts/marketplace/shapes/assets/tools/group/selection-box-label.svg +++ /dev/null @@ -1,33 +0,0 @@ - - - - group-icon - Created with Sketch. - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/unpublishedScripts/marketplace/shapes/assets/tools/group/ungroup-label.svg b/unpublishedScripts/marketplace/shapes/assets/tools/group/ungroup-label.svg deleted file mode 100644 index ec246359b5..0000000000 --- a/unpublishedScripts/marketplace/shapes/assets/tools/group/ungroup-label.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - UNGROUP - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/unpublishedScripts/marketplace/shapes/assets/tools/physics-icon.svg b/unpublishedScripts/marketplace/shapes/assets/tools/physics-icon.svg deleted file mode 100644 index ef2635c312..0000000000 --- a/unpublishedScripts/marketplace/shapes/assets/tools/physics-icon.svg +++ /dev/null @@ -1,15 +0,0 @@ - - - - physics-icon - Created with Sketch. - - - - - - - - - - \ No newline at end of file diff --git a/unpublishedScripts/marketplace/shapes/assets/tools/physics-label.svg b/unpublishedScripts/marketplace/shapes/assets/tools/physics-label.svg deleted file mode 100644 index 27006f62b8..0000000000 --- a/unpublishedScripts/marketplace/shapes/assets/tools/physics-label.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - PHYSICS - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/unpublishedScripts/marketplace/shapes/assets/tools/physics-tool-heading.svg b/unpublishedScripts/marketplace/shapes/assets/tools/physics-tool-heading.svg deleted file mode 100644 index fb5d696111..0000000000 --- a/unpublishedScripts/marketplace/shapes/assets/tools/physics-tool-heading.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - PHYSICS TOOL - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/unpublishedScripts/marketplace/shapes/assets/tools/physics/buttons/collisions-label.svg b/unpublishedScripts/marketplace/shapes/assets/tools/physics/buttons/collisions-label.svg deleted file mode 100644 index ff3cb0dff3..0000000000 --- a/unpublishedScripts/marketplace/shapes/assets/tools/physics/buttons/collisions-label.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - COLLISIONS - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/unpublishedScripts/marketplace/shapes/assets/tools/physics/buttons/grabbable-label.svg b/unpublishedScripts/marketplace/shapes/assets/tools/physics/buttons/grabbable-label.svg deleted file mode 100644 index 5b1b797540..0000000000 --- a/unpublishedScripts/marketplace/shapes/assets/tools/physics/buttons/grabbable-label.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - GRABBABLE - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/unpublishedScripts/marketplace/shapes/assets/tools/physics/buttons/gravity-label.svg b/unpublishedScripts/marketplace/shapes/assets/tools/physics/buttons/gravity-label.svg deleted file mode 100644 index 6c92a792ef..0000000000 --- a/unpublishedScripts/marketplace/shapes/assets/tools/physics/buttons/gravity-label.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - GRAVITY Copy - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/unpublishedScripts/marketplace/shapes/assets/tools/physics/buttons/off-label.svg b/unpublishedScripts/marketplace/shapes/assets/tools/physics/buttons/off-label.svg deleted file mode 100644 index 0299aa9864..0000000000 --- a/unpublishedScripts/marketplace/shapes/assets/tools/physics/buttons/off-label.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - OFF - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/unpublishedScripts/marketplace/shapes/assets/tools/physics/buttons/on-label.svg b/unpublishedScripts/marketplace/shapes/assets/tools/physics/buttons/on-label.svg deleted file mode 100644 index a17a5091ad..0000000000 --- a/unpublishedScripts/marketplace/shapes/assets/tools/physics/buttons/on-label.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - ON - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/unpublishedScripts/marketplace/shapes/assets/tools/physics/presets-label.svg b/unpublishedScripts/marketplace/shapes/assets/tools/physics/presets-label.svg deleted file mode 100644 index abe9c5c084..0000000000 --- a/unpublishedScripts/marketplace/shapes/assets/tools/physics/presets-label.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - PRESETS - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/unpublishedScripts/marketplace/shapes/assets/tools/physics/presets/balloon-label.svg b/unpublishedScripts/marketplace/shapes/assets/tools/physics/presets/balloon-label.svg deleted file mode 100644 index 920e5f3c51..0000000000 --- a/unpublishedScripts/marketplace/shapes/assets/tools/physics/presets/balloon-label.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - BALLOON - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/unpublishedScripts/marketplace/shapes/assets/tools/physics/presets/cotton-label.svg b/unpublishedScripts/marketplace/shapes/assets/tools/physics/presets/cotton-label.svg deleted file mode 100644 index abc77ae8f3..0000000000 --- a/unpublishedScripts/marketplace/shapes/assets/tools/physics/presets/cotton-label.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - COTTON - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/unpublishedScripts/marketplace/shapes/assets/tools/physics/presets/custom-label.svg b/unpublishedScripts/marketplace/shapes/assets/tools/physics/presets/custom-label.svg deleted file mode 100644 index 7081e5b35d..0000000000 --- a/unpublishedScripts/marketplace/shapes/assets/tools/physics/presets/custom-label.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - CUSTOM … - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/unpublishedScripts/marketplace/shapes/assets/tools/physics/presets/default-label.svg b/unpublishedScripts/marketplace/shapes/assets/tools/physics/presets/default-label.svg deleted file mode 100644 index 24b053750d..0000000000 --- a/unpublishedScripts/marketplace/shapes/assets/tools/physics/presets/default-label.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/unpublishedScripts/marketplace/shapes/assets/tools/physics/presets/ice-label.svg b/unpublishedScripts/marketplace/shapes/assets/tools/physics/presets/ice-label.svg deleted file mode 100644 index b919283e9f..0000000000 --- a/unpublishedScripts/marketplace/shapes/assets/tools/physics/presets/ice-label.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - ICE - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/unpublishedScripts/marketplace/shapes/assets/tools/physics/presets/lead-label.svg b/unpublishedScripts/marketplace/shapes/assets/tools/physics/presets/lead-label.svg deleted file mode 100644 index a2119fb8f0..0000000000 --- a/unpublishedScripts/marketplace/shapes/assets/tools/physics/presets/lead-label.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - LEAD Copy - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/unpublishedScripts/marketplace/shapes/assets/tools/physics/presets/rubber-label.svg b/unpublishedScripts/marketplace/shapes/assets/tools/physics/presets/rubber-label.svg deleted file mode 100644 index 5b4ed55053..0000000000 --- a/unpublishedScripts/marketplace/shapes/assets/tools/physics/presets/rubber-label.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - RUBBER - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/unpublishedScripts/marketplace/shapes/assets/tools/physics/presets/tumbleweed-label.svg b/unpublishedScripts/marketplace/shapes/assets/tools/physics/presets/tumbleweed-label.svg deleted file mode 100644 index ecd824257e..0000000000 --- a/unpublishedScripts/marketplace/shapes/assets/tools/physics/presets/tumbleweed-label.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - TUMBLEWEED - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/unpublishedScripts/marketplace/shapes/assets/tools/physics/presets/wood-label.svg b/unpublishedScripts/marketplace/shapes/assets/tools/physics/presets/wood-label.svg deleted file mode 100644 index 59c348fd52..0000000000 --- a/unpublishedScripts/marketplace/shapes/assets/tools/physics/presets/wood-label.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - WOOD - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/unpublishedScripts/marketplace/shapes/assets/tools/physics/presets/zero-g-label.svg b/unpublishedScripts/marketplace/shapes/assets/tools/physics/presets/zero-g-label.svg deleted file mode 100644 index a1a349b8c5..0000000000 --- a/unpublishedScripts/marketplace/shapes/assets/tools/physics/presets/zero-g-label.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - ZERO-G - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/unpublishedScripts/marketplace/shapes/assets/tools/physics/properties-label.svg b/unpublishedScripts/marketplace/shapes/assets/tools/physics/properties-label.svg deleted file mode 100644 index 25198edb62..0000000000 --- a/unpublishedScripts/marketplace/shapes/assets/tools/physics/properties-label.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - PROPERTIES - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/unpublishedScripts/marketplace/shapes/assets/tools/physics/sliders/bounce-label.svg b/unpublishedScripts/marketplace/shapes/assets/tools/physics/sliders/bounce-label.svg deleted file mode 100644 index a997fa80a2..0000000000 --- a/unpublishedScripts/marketplace/shapes/assets/tools/physics/sliders/bounce-label.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - BOUNCE - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/unpublishedScripts/marketplace/shapes/assets/tools/physics/sliders/density-label.svg b/unpublishedScripts/marketplace/shapes/assets/tools/physics/sliders/density-label.svg deleted file mode 100644 index ec5fd5cf98..0000000000 --- a/unpublishedScripts/marketplace/shapes/assets/tools/physics/sliders/density-label.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - DENSITY - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/unpublishedScripts/marketplace/shapes/assets/tools/physics/sliders/friction-label.svg b/unpublishedScripts/marketplace/shapes/assets/tools/physics/sliders/friction-label.svg deleted file mode 100644 index 2ff20a71cb..0000000000 --- a/unpublishedScripts/marketplace/shapes/assets/tools/physics/sliders/friction-label.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - FRICTION - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/unpublishedScripts/marketplace/shapes/assets/tools/physics/sliders/gravity-label.svg b/unpublishedScripts/marketplace/shapes/assets/tools/physics/sliders/gravity-label.svg deleted file mode 100644 index 692a4ebf79..0000000000 --- a/unpublishedScripts/marketplace/shapes/assets/tools/physics/sliders/gravity-label.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - GRAVITY - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/unpublishedScripts/marketplace/shapes/assets/tools/redo-icon.svg b/unpublishedScripts/marketplace/shapes/assets/tools/redo-icon.svg deleted file mode 100644 index bd0cea1330..0000000000 --- a/unpublishedScripts/marketplace/shapes/assets/tools/redo-icon.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/unpublishedScripts/marketplace/shapes/assets/tools/redo-label.svg b/unpublishedScripts/marketplace/shapes/assets/tools/redo-label.svg deleted file mode 100644 index 19ae558bb9..0000000000 --- a/unpublishedScripts/marketplace/shapes/assets/tools/redo-label.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/unpublishedScripts/marketplace/shapes/assets/tools/stretch-icon.svg b/unpublishedScripts/marketplace/shapes/assets/tools/stretch-icon.svg deleted file mode 100644 index dc0547b813..0000000000 --- a/unpublishedScripts/marketplace/shapes/assets/tools/stretch-icon.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - stretch-icon - Created with Sketch. - - - - - - - - - \ No newline at end of file diff --git a/unpublishedScripts/marketplace/shapes/assets/tools/stretch-label.svg b/unpublishedScripts/marketplace/shapes/assets/tools/stretch-label.svg deleted file mode 100644 index 0aecd01a84..0000000000 --- a/unpublishedScripts/marketplace/shapes/assets/tools/stretch-label.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - STRETCH - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/unpublishedScripts/marketplace/shapes/assets/tools/stretch-tool-heading.svg b/unpublishedScripts/marketplace/shapes/assets/tools/stretch-tool-heading.svg deleted file mode 100644 index 0d3fde298c..0000000000 --- a/unpublishedScripts/marketplace/shapes/assets/tools/stretch-tool-heading.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - STRETCH TOOL - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/unpublishedScripts/marketplace/shapes/assets/tools/stretch/info-text.svg b/unpublishedScripts/marketplace/shapes/assets/tools/stretch/info-text.svg deleted file mode 100644 index 4bd23f7b7f..0000000000 --- a/unpublishedScripts/marketplace/shapes/assets/tools/stretch/info-text.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - Stretch objects by g - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/unpublishedScripts/marketplace/shapes/assets/tools/tool-icon.fbx b/unpublishedScripts/marketplace/shapes/assets/tools/tool-icon.fbx deleted file mode 100644 index b4a21c523b..0000000000 Binary files a/unpublishedScripts/marketplace/shapes/assets/tools/tool-icon.fbx and /dev/null differ diff --git a/unpublishedScripts/marketplace/shapes/assets/tools/tool-label.svg b/unpublishedScripts/marketplace/shapes/assets/tools/tool-label.svg deleted file mode 100644 index bc8b059bdb..0000000000 --- a/unpublishedScripts/marketplace/shapes/assets/tools/tool-label.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - TOOL - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/unpublishedScripts/marketplace/shapes/assets/tools/tools-heading.svg b/unpublishedScripts/marketplace/shapes/assets/tools/tools-heading.svg deleted file mode 100644 index e180ae7251..0000000000 --- a/unpublishedScripts/marketplace/shapes/assets/tools/tools-heading.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - TOOLS - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/unpublishedScripts/marketplace/shapes/assets/tools/undo-icon.svg b/unpublishedScripts/marketplace/shapes/assets/tools/undo-icon.svg deleted file mode 100644 index 566de28906..0000000000 --- a/unpublishedScripts/marketplace/shapes/assets/tools/undo-icon.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/unpublishedScripts/marketplace/shapes/assets/tools/undo-label.svg b/unpublishedScripts/marketplace/shapes/assets/tools/undo-label.svg deleted file mode 100644 index ca749f2765..0000000000 --- a/unpublishedScripts/marketplace/shapes/assets/tools/undo-label.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/unpublishedScripts/marketplace/shapes/modules/createPalette.js b/unpublishedScripts/marketplace/shapes/modules/createPalette.js deleted file mode 100644 index a7afc8a17e..0000000000 --- a/unpublishedScripts/marketplace/shapes/modules/createPalette.js +++ /dev/null @@ -1,552 +0,0 @@ -// -// createPalette.js -// -// Created by David Rowe on 28 Jul 2017. -// Copyright 2017 High Fidelity, Inc. -// -// Distributed under the Apache License, Version 2.0. -// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html -// - -/* global CreatePalette:true, App, Feedback, History, Preload, UIT */ - -CreatePalette = function (side, leftInputs, rightInputs, uiCommandCallback) { - // Tool menu displayed on top of forearm. - - "use strict"; - - var paletteOriginOverlay, - paletteHeaderHeadingOverlay, - paletteHeaderBarOverlay, - paletteTitleOverlay, - palettePanelOverlay, - paletteItemOverlays = [], - paletteItemPositions = [], - paletteItemHoverOverlays = [], - iconOverlays = [], - staticOverlays = [], - - LEFT_HAND = 0, - - controlJointName, - - PALETTE_ORIGIN_POSITION = { - x: 0, - y: UIT.dimensions.handOffset, - z: UIT.dimensions.canvasSeparation + UIT.dimensions.canvas.x / 2 - }, - PALETTE_ORIGIN_ROTATION = Quat.ZERO, - paletteLateralOffset, - - PALETTE_ORIGIN_PROPERTIES = { - dimensions: { x: 0.005, y: 0.005, z: 0.005 }, - localPosition: PALETTE_ORIGIN_POSITION, - localRotation: PALETTE_ORIGIN_ROTATION, - color: { red: 255, blue: 0, green: 0 }, - alpha: 1.0, - parentID: Uuid.SELF, - ignoreRayIntersection: true, - visible: false - }, - - PALETTE_HEADER_HEADING_PROPERTIES = { - url: Script.resolvePath("../assets/gray-header.fbx"), - dimensions: UIT.dimensions.headerHeading, // Model is in rotated coordinate system but can override. - localPosition: { - x: 0, - y: UIT.dimensions.canvas.y / 2 - UIT.dimensions.headerHeading.y / 2, - z: UIT.dimensions.headerHeading.z / 2 - }, - localRotation: Quat.ZERO, - alpha: 1.0, - solid: true, - ignoreRayIntersection: false, - visible: true - }, - - PALETTE_HEADER_BAR_PROPERTIES = { - url: Script.resolvePath("../assets/blue-header-bar.fbx"), - dimensions: UIT.dimensions.headerBar, // Model is in rotated coordinate system but can override. - localPosition: { - x: 0, - y: UIT.dimensions.canvas.y / 2 - UIT.dimensions.headerHeading.y - UIT.dimensions.headerBar.y / 2, - z: UIT.dimensions.headerBar.z / 2 - }, - localRotation: Quat.ZERO, - alpha: 1.0, - solid: true, - ignoreRayIntersection: false, - visible: true - }, - - PALETTE_TITLE_PROPERTIES = { - url: Script.resolvePath("../assets/create/create-heading.svg"), - scale: 0.0363, - localPosition: { - x: 0, - y: 0, - z: PALETTE_HEADER_HEADING_PROPERTIES.dimensions.z / 2 + UIT.dimensions.imageOverlayOffset - }, - localRotation: Quat.ZERO, - color: UIT.colors.white, - alpha: 1.0, - emissive: true, - ignoreRayIntersection: true, - isFacingAvatar: false, - visible: true - }, - - PALETTE_PANEL_PROPERTIES = { - dimensions: UIT.dimensions.panel, - localPosition: { x: 0, y: (UIT.dimensions.panel.y - UIT.dimensions.canvas.y) / 2, z: UIT.dimensions.panel.z / 2 }, - localRotation: Quat.ZERO, - color: UIT.colors.baseGray, - alpha: 1.0, - solid: true, - ignoreRayIntersection: false, - visible: true - }, - - ENTITY_CREATION_DIMENSIONS = { x: 0.2, y: 0.2, z: 0.2 }, - ENTITY_CREATION_COLOR = { red: 192, green: 192, blue: 192 }, - - PALETTE_ITEM = { - overlay: "cube", // Invisible cube for hit area. - properties: { - dimensions: UIT.dimensions.itemCollisionZone, - localRotation: Quat.ZERO, - alpha: 0.0, // Invisible. - solid: true, - ignoreRayIntersection: false, - visible: true // So that laser intersects. - }, - hoverButton: { - // Relative to root overlay. - overlay: "cube", - properties: { - dimensions: UIT.dimensions.paletteItemButtonDimensions, - localPosition: UIT.dimensions.paletteItemButtonOffset, - localRotation: Quat.ZERO, - color: UIT.colors.blueHighlight, - alpha: 1.0, - emissive: true, // TODO: This has no effect. - solid: true, - ignoreRayIntersection: true, - visible: false - } - }, - icon: { - // Relative to hoverButton. - overlay: "model", - properties: { - dimensions: UIT.dimensions.paletteItemIconDimensions, - localPosition: UIT.dimensions.paletteItemIconOffset, - localRotation: Quat.ZERO, - emissive: true, // TODO: This has no effect. - ignoreRayIntersection: true - } - }, - entity: { - dimensions: ENTITY_CREATION_DIMENSIONS - } - }, - - PALETTE_ITEMS = [ - { - icon: { - properties: { - url: Script.resolvePath("../assets/create/cube.fbx") - } - }, - entity: { - type: "Box", - dimensions: ENTITY_CREATION_DIMENSIONS, - color: ENTITY_CREATION_COLOR - } - }, - { - icon: { - properties: { - url: Script.resolvePath("../assets/create/sphere.fbx") - } - }, - entity: { - type: "Sphere", - dimensions: ENTITY_CREATION_DIMENSIONS, - color: ENTITY_CREATION_COLOR - } - }, - { - icon: { - properties: { - url: Script.resolvePath("../assets/create/tetrahedron.fbx") - } - }, - entity: { - type: "Shape", - shape: "Tetrahedron", - dimensions: ENTITY_CREATION_DIMENSIONS, - color: ENTITY_CREATION_COLOR - } - }, - { - icon: { - properties: { - url: Script.resolvePath("../assets/create/octahedron.fbx") - } - }, - entity: { - type: "Shape", - shape: "Octahedron", - dimensions: ENTITY_CREATION_DIMENSIONS, - color: ENTITY_CREATION_COLOR - } - }, - { - icon: { - properties: { - url: Script.resolvePath("../assets/create/icosahedron.fbx") - } - }, - entity: { - type: "Shape", - shape: "Icosahedron", - dimensions: ENTITY_CREATION_DIMENSIONS, - color: ENTITY_CREATION_COLOR - } - }, - { - icon: { - properties: { - url: Script.resolvePath("../assets/create/dodecahedron.fbx") - } - }, - entity: { - type: "Shape", - shape: "Dodecahedron", - dimensions: ENTITY_CREATION_DIMENSIONS, - color: ENTITY_CREATION_COLOR - } - }, - { - icon: { - properties: { - url: Script.resolvePath("../assets/create/hexagon.fbx"), - dimensions: { x: 0.02078, y: 0.024, z: 0.024 }, - localRotation: Quat.fromVec3Degrees({ x: 90, y: 0, z: 0 }) - } - }, - entity: { - type: "Shape", - shape: "Hexagon", - dimensions: ENTITY_CREATION_DIMENSIONS, - color: ENTITY_CREATION_COLOR - } - }, - { - icon: { - properties: { - url: Script.resolvePath("../assets/create/prism.fbx"), - localRotation: Quat.fromVec3Degrees({ x: 90, y: 0, z: 0 }) - } - }, - entity: { - type: "Shape", - shape: "Triangle", - dimensions: ENTITY_CREATION_DIMENSIONS, - color: ENTITY_CREATION_COLOR - } - }, - { - icon: { - properties: { - url: Script.resolvePath("../assets/create/octagon.fbx"), - dimensions: { x: 0.023805, y: 0.024, z: 0.024 }, - localRotation: Quat.fromVec3Degrees({ x: 90, y: 0, z: 0 }) - } - }, - entity: { - type: "Shape", - shape: "Octagon", - dimensions: ENTITY_CREATION_DIMENSIONS, - color: ENTITY_CREATION_COLOR - } - }, - { - icon: { - properties: { - url: Script.resolvePath("../assets/create/cylinder.fbx"), - localRotation: Quat.fromVec3Degrees({ x: 90, y: 0, z: 0 }) - } - }, - entity: { - type: "Shape", - shape: "Cylinder", - dimensions: ENTITY_CREATION_DIMENSIONS, - color: ENTITY_CREATION_COLOR - } - }, - { - icon: { - properties: { - url: Script.resolvePath("../assets/create/cone.fbx"), - localRotation: Quat.fromVec3Degrees({ x: 90, y: 0, z: 0 }) - } - }, - entity: { - type: "Shape", - shape: "Cone", - dimensions: ENTITY_CREATION_DIMENSIONS, - color: ENTITY_CREATION_COLOR - } - }, - { - icon: { - properties: { - url: Script.resolvePath("../assets/create/circle.fbx"), - dimensions: { x: 0.024, y: 0.0005, z: 0.024 }, - localRotation: Quat.fromVec3Degrees({ x: 90, y: 0, z: 0 }) - } - }, - entity: { - type: "Shape", - shape: "Circle", - dimensions: ENTITY_CREATION_DIMENSIONS, - color: ENTITY_CREATION_COLOR - } - } - ], - - isDisplaying = false, - - NONE = -1, - highlightedItem = NONE, - wasTriggerClicked = false, - otherSide, - - // References. - controlHand; - - if (!(this instanceof CreatePalette)) { - return new CreatePalette(); - } - - - function getAssetURLs() { - return Preload.findURLs([PALETTE_HEADER_HEADING_PROPERTIES, PALETTE_HEADER_BAR_PROPERTIES, PALETTE_TITLE_PROPERTIES, - PALETTE_ITEMS]); - } - - function setHand(hand) { - // Assumes UI is not displaying. - var NUMBER_OF_HANDS = 2; - side = hand; - otherSide = (side + 1) % NUMBER_OF_HANDS; - controlHand = side === LEFT_HAND ? rightInputs.hand() : leftInputs.hand(); - controlJointName = side === LEFT_HAND ? "LeftHand" : "RightHand"; - paletteLateralOffset = side === LEFT_HAND ? -UIT.dimensions.handLateralOffset : UIT.dimensions.handLateralOffset; - } - - setHand(side); - - function getOverlayIDs() { - return [palettePanelOverlay, paletteHeaderHeadingOverlay, paletteHeaderBarOverlay].concat(paletteItemOverlays); - } - - function setVisible(visible) { - var i, - length; - - for (i = 0, length = staticOverlays.length; i < length; i++) { - Overlays.editOverlay(staticOverlays[i], { visible: visible }); - } - - if (!visible) { - for (i = 0, length = paletteItemHoverOverlays.length; i < length; i++) { - Overlays.editOverlay(paletteItemHoverOverlays[i], { visible: false }); - } - } - } - - function update(intersectionOverlayID) { - var itemIndex, - isTriggerClicked, - properties, - CREATE_OFFSET = { x: 0, y: 0.05, z: -0.02 }, - INVERSE_HAND_BASIS_ROTATION = Quat.fromVec3Degrees({ x: 0, y: 0, z: -90 }), - entityID; - - itemIndex = paletteItemOverlays.indexOf(intersectionOverlayID); - - // Unhighlight and lower old item. - if (highlightedItem !== NONE && (itemIndex === NONE || itemIndex !== highlightedItem)) { - Overlays.editOverlay(paletteItemHoverOverlays[highlightedItem], { - localPosition: UIT.dimensions.paletteItemButtonOffset, - visible: false - }); - highlightedItem = NONE; - } - - // Highlight and raise new item. - if (itemIndex !== NONE && highlightedItem !== itemIndex) { - Feedback.play(otherSide, Feedback.HOVER_BUTTON); - Overlays.editOverlay(paletteItemHoverOverlays[itemIndex], { - localPosition: UIT.dimensions.paletteItemButtonHoveredOffset, - visible: true - }); - highlightedItem = itemIndex; - } - - // Press item and create new entity. - isTriggerClicked = controlHand.triggerClicked(); - if (highlightedItem !== NONE && isTriggerClicked && !wasTriggerClicked) { - // Create entity. - Feedback.play(otherSide, Feedback.CREATE_ENTITY); - properties = Object.clone(PALETTE_ITEMS[itemIndex].entity); - properties.position = Vec3.sum(controlHand.palmPosition(), - Vec3.multiplyQbyV(controlHand.orientation(), - Vec3.sum({ x: 0, y: properties.dimensions.z / 2, z: 0 }, CREATE_OFFSET))); - properties.rotation = Quat.multiply(controlHand.orientation(), INVERSE_HAND_BASIS_ROTATION); - entityID = Entities.addEntity(properties); - if (entityID !== Uuid.NULL) { - History.prePush( - otherSide, - { deleteEntities: [{ entityID: entityID }] }, - { createEntities: [{ entityID: entityID, properties: properties }] } - ); - } else { - Feedback.play(otherSide, Feedback.GENERAL_ERROR); - } - - // Lower and unhighlight item. - Overlays.editOverlay(paletteItemHoverOverlays[itemIndex], { - localPosition: UIT.dimensions.paletteItemButtonOffset, - visible: false - }); - - uiCommandCallback("autoGrab"); - } - - wasTriggerClicked = isTriggerClicked; - } - - function itemPosition(index) { - // Position relative to palette panel. - var ITEMS_PER_ROW = 4, - ROW_ZERO_Y_OFFSET = 0.0860, - ROW_SPACING = 0.0560, - COLUMN_ZERO_OFFSET = -0.08415, - COLUMN_SPACING = 0.0561, - row, - column; - - row = Math.floor(index / ITEMS_PER_ROW); - column = index % ITEMS_PER_ROW; - - return { - x: COLUMN_ZERO_OFFSET + column * COLUMN_SPACING, - y: ROW_ZERO_Y_OFFSET - row * ROW_SPACING, - z: UIT.dimensions.panel.z / 2 + UIT.dimensions.itemCollisionZone.z / 2 - }; - } - - function display() { - // Creates and shows menu entities. - var handJointIndex, - properties, - i, - length; - - if (isDisplaying) { - return; - } - - // Joint index. - handJointIndex = MyAvatar.getJointIndex(controlJointName); - if (handJointIndex === NONE) { - // Don't display if joint isn't available (yet) to attach to. - // User can clear this condition by toggling the app off and back on once avatar finishes loading. - console.log(side, "ERROR: CreatePalette: Hand joint index isn't available!"); - return; - } - - // Calculate position to put palette. - properties = Object.clone(PALETTE_ORIGIN_PROPERTIES); - properties.parentJointIndex = handJointIndex; - properties.localPosition = Vec3.sum(PALETTE_ORIGIN_POSITION, { x: paletteLateralOffset, y: 0, z: 0 }); - paletteOriginOverlay = Overlays.addOverlay("sphere", properties); - - // Header. - properties = Object.clone(PALETTE_HEADER_HEADING_PROPERTIES); - properties.parentID = paletteOriginOverlay; - paletteHeaderHeadingOverlay = Overlays.addOverlay("model", properties); - properties = Object.clone(PALETTE_HEADER_BAR_PROPERTIES); - properties.parentID = paletteOriginOverlay; - paletteHeaderBarOverlay = Overlays.addOverlay("model", properties); - properties = Object.clone(PALETTE_TITLE_PROPERTIES); - properties.parentID = paletteHeaderHeadingOverlay; - paletteTitleOverlay = Overlays.addOverlay("image3d", properties); - - // Palette background. - properties = Object.clone(PALETTE_PANEL_PROPERTIES); - properties.parentID = paletteOriginOverlay; - palettePanelOverlay = Overlays.addOverlay("cube", properties); - - // Palette items. - for (i = 0, length = PALETTE_ITEMS.length; i < length; i++) { - // Collision overlay. - properties = Object.clone(PALETTE_ITEM.properties); - properties.parentID = palettePanelOverlay; - properties.localPosition = itemPosition(i); - paletteItemOverlays[i] = Overlays.addOverlay(PALETTE_ITEM.overlay, properties); - paletteItemPositions[i] = properties.localPosition; - - // Highlight overlay. - properties = Object.clone(PALETTE_ITEM.hoverButton.properties); - properties.parentID = paletteItemOverlays[i]; - paletteItemHoverOverlays[i] = Overlays.addOverlay(PALETTE_ITEM.hoverButton.overlay, properties); - - // Icon overlay. - properties = Object.clone(PALETTE_ITEM.icon.properties); - properties = Object.merge(properties, PALETTE_ITEMS[i].icon.properties); - properties.parentID = paletteItemHoverOverlays[i]; - iconOverlays[i] = Overlays.addOverlay(PALETTE_ITEM.icon.overlay, properties); - } - - // Always-visible overlays. - staticOverlays = [].concat(paletteHeaderHeadingOverlay, paletteHeaderBarOverlay, paletteTitleOverlay, - palettePanelOverlay, paletteItemOverlays, iconOverlays); - - isDisplaying = true; - } - - function clear() { - // Deletes menu entities. - if (!isDisplaying) { - return; - } - Overlays.deleteOverlay(paletteOriginOverlay); // Automatically deletes all other overlays because they're children. - paletteItemOverlays = []; - paletteItemHoverOverlays = []; - iconOverlays = []; - staticOverlays = []; - isDisplaying = false; - } - - function destroy() { - clear(); - } - - return { - assetURLs: getAssetURLs, - setHand: setHand, - overlayIDs: getOverlayIDs, - setVisible: setVisible, - update: update, - display: display, - clear: clear, - destroy: destroy - }; -}; - -CreatePalette.prototype = {}; diff --git a/unpublishedScripts/marketplace/shapes/modules/feedback.js b/unpublishedScripts/marketplace/shapes/modules/feedback.js deleted file mode 100644 index 0d45ae2019..0000000000 --- a/unpublishedScripts/marketplace/shapes/modules/feedback.js +++ /dev/null @@ -1,80 +0,0 @@ -// -// feedback.js -// -// Created by David Rowe on 31 Aug 2017. -// Copyright 2017 High Fidelity, Inc. -// -// Distributed under the Apache License, Version 2.0. -// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html -// - -/* global Feedback:true */ - -Feedback = (function () { - // Provide audio and haptic user feedback. - // Global object. - - "use strict"; - - var DROP_SOUND = SoundCache.getSound(Script.resolvePath("../assets/audio/drop.wav")), - DELETE_SOUND = SoundCache.getSound(Script.resolvePath("../assets/audio/delete.wav")), - SELECT_SOUND = SoundCache.getSound(Script.resolvePath("../assets/audio/select.wav")), - CLONE_SOUND = SoundCache.getSound(Script.resolvePath("../assets/audio/clone.wav")), - CREATE_SOUND = SoundCache.getSound(Script.resolvePath("../assets/audio/create.wav")), - EQUIP_SOUND = SoundCache.getSound(Script.resolvePath("../assets/audio/equip.wav")), - ERROR_SOUND = SoundCache.getSound(Script.resolvePath("../assets/audio/error.wav")), - UNDO_SOUND = DROP_SOUND, - REDO_SOUND = DROP_SOUND, - - FEEDBACK_PARAMETERS = { - DROP_TOOL: { sound: DROP_SOUND, volume: 0.3, haptic: 0.75 }, - DELETE_ENTITY: { sound: DELETE_SOUND, volume: 0.5, haptic: 0.2 }, - SELECT_ENTITY: { sound: SELECT_SOUND, volume: 0.2, haptic: 0.1 }, // E.g., Group tool. - CLONE_ENTITY: { sound: CLONE_SOUND, volume: 0.2, haptic: 0.1 }, - CREATE_ENTITY: { sound: CREATE_SOUND, volume: 0.4, haptic: 0.2 }, - HOVER_MENU_ITEM: { sound: null, volume: 0, haptic: 0.1 }, // Tools menu. - HOVER_BUTTON: { sound: null, volume: 0, haptic: 0.075 }, // Tools options and Create palette items. - EQUIP_TOOL: { sound: EQUIP_SOUND, volume: 0.3, haptic: 0.6 }, - APPLY_PROPERTY: { sound: null, volume: 0, haptic: 0.3 }, - APPLY_ERROR: { sound: ERROR_SOUND, volume: 0.2, haptic: 0.7 }, - UNDO_ACTION: { sound: UNDO_SOUND, volume: 0.1, haptic: 0.2 }, - REDO_ACTION: { sound: REDO_SOUND, volume: 0.1, haptic: 0.2 }, - GENERAL_ERROR: { sound: ERROR_SOUND, volume: 0.2, haptic: 0.7 } - }, - - VOLUME_MULTPLIER = 0.5, // Resulting volume range should be within 0.0 - 1.0. - HAPTIC_STRENGTH_MULTIPLIER = 1.3, // Resulting strength range should be within 0.0 - 1.0. - HAPTIC_LENGTH_MULTIPLIER = 75.0; // Resulting length range should be within 0 - 50, say. - - function play(side, item) { - var parameters = FEEDBACK_PARAMETERS[item]; - - if (parameters.sound) { - Audio.playSound(parameters.sound, { - position: side ? MyAvatar.getRightPalmPosition() : MyAvatar.getLeftPalmPosition(), - volume: parameters.volume * VOLUME_MULTPLIER, - localOnly: true - }); - } - - Controller.triggerHapticPulse(parameters.haptic * HAPTIC_STRENGTH_MULTIPLIER, - parameters.haptic * HAPTIC_LENGTH_MULTIPLIER, side); - } - - return { - DROP_TOOL: "DROP_TOOL", - DELETE_ENTITY: "DELETE_ENTITY", - SELECT_ENTITY: "SELECT_ENTITY", - CLONE_ENTITY: "CLONE_ENTITY", - CREATE_ENTITY: "CREATE_ENTITY", - HOVER_MENU_ITEM: "HOVER_MENU_ITEM", - HOVER_BUTTON: "HOVER_BUTTON", - EQUIP_TOOL: "EQUIP_TOOL", - APPLY_PROPERTY: "APPLY_PROPERTY", - APPLY_ERROR: "APPLY_ERROR", - UNDO_ACTION: "UNDO_ACTION", - REDO_ACTION: "REDO_ACTION", - GENERAL_ERROR: "GENERAL_ERROR", - play: play - }; -}()); diff --git a/unpublishedScripts/marketplace/shapes/modules/groups.js b/unpublishedScripts/marketplace/shapes/modules/groups.js deleted file mode 100644 index 3c96b014dd..0000000000 --- a/unpublishedScripts/marketplace/shapes/modules/groups.js +++ /dev/null @@ -1,275 +0,0 @@ -// -// groups.js -// -// Created by David Rowe on 1 Aug 2017. -// Copyright 2017 High Fidelity, Inc. -// -// Distributed under the Apache License, Version 2.0. -// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html -// - -/* global Groups:true, App, History */ - -Groups = function () { - // Groups and ungroups trees of entities. - - "use strict"; - - var rootEntityIDs = [], - selections = [], - entitiesSelectedCount = 0; - - if (!(this instanceof Groups)) { - return new Groups(); - } - - function add(selection) { - rootEntityIDs.push(selection[0].id); - selections.push(Object.clone(selection)); - entitiesSelectedCount += selection.length; - } - - function remove(selection) { - var index = rootEntityIDs.indexOf(selection[0].id); - - entitiesSelectedCount -= selections[index].length; - rootEntityIDs.splice(index, 1); - selections.splice(index, 1); - } - - function toggle(selection) { - if (selection.length === 0) { - return; - } - - if (rootEntityIDs.indexOf(selection[0].id) === -1) { - add(selection); - } else { - remove(selection); - } - } - - function selection(excludes) { - var result = [], - i, - lengthI, - j, - lengthJ; - - for (i = 0, lengthI = rootEntityIDs.length; i < lengthI; i++) { - if (excludes.indexOf(rootEntityIDs[i]) === -1) { - for (j = 0, lengthJ = selections[i].length; j < lengthJ; j++) { - result.push(selections[i][j]); - } - } - } - - return result; - } - - function includes(rootEntityID) { - return rootEntityIDs.indexOf(rootEntityID) !== -1; - } - - function getRootEntityIDs() { - return rootEntityIDs; - } - - function groupsCount() { - return selections.length; - } - - function entitiesCount() { - return entitiesSelectedCount; - } - - function group() { - // Groups all selections into one. - var DYNAMIC_AND_COLLISIONLESS = { dynamic: true, collisionless: true }, - rootID, - undoData = [], - redoData = [], - i, - lengthI, - j, - lengthJ; - - // If the first group has physics (i.e., root entity is dynamic) make all entities in child groups dynamic and - // collisionless. (Don't need to worry about other groups physics properties because only those of the first entity in - // the linkset are used by High Fidelity.) See Selection.applyPhysics(). - if (selections[0][0].dynamic) { - for (i = 1, lengthI = selections.length; i < lengthI; i++) { - for (j = 0, lengthJ = selections[i].length; j < lengthJ; j++) { - undoData.push({ - entityID: selections[i][j].id, - properties: { - dynamic: selections[i][j].dynamic, - collisionless: selections[i][j].collisionless - } - }); - Entities.editEntity(selections[i][j].id, DYNAMIC_AND_COLLISIONLESS); - selections[i][j].dynamic = true; - selections[i][j].collisionless = true; - redoData.push({ - entityID: selections[i][j].id, - properties: DYNAMIC_AND_COLLISIONLESS - }); - } - } - } - - // Make the first entity in the first group the root and link the first entities of all other groups to it. - rootID = rootEntityIDs[0]; - for (i = 1, lengthI = rootEntityIDs.length; i < lengthI; i++) { - undoData.push({ - entityID: rootEntityIDs[i], - properties: { parentID: Uuid.NULL } - }); - Entities.editEntity(rootEntityIDs[i], { - parentID: rootID - }); - redoData.push({ - entityID: rootEntityIDs[i], - properties: { parentID: rootID } - }); - } - - // Update selection. - rootEntityIDs.splice(1, rootEntityIDs.length - 1); - for (i = 1, lengthI = selections.length; i < lengthI; i++) { - selections[i][0].parentID = rootID; - selections[0] = selections[0].concat(selections[i]); - } - selections.splice(1, selections.length - 1); - - // Add history entry. - History.push(null, { setProperties: undoData }, { setProperties: redoData }); - } - - function ungroup() { - // Ungroups the first and assumed to be only selection. - // If the first entity in the selection has a mix of solo and group children then just the group children are unlinked, - // otherwise all are unlinked. - var rootID, - childrenIDs = [], - childrenIndexes = [], - childrenIndexIsGroup = [], - previousWasGroup, - hasSoloChildren = false, - hasGroupChildren = false, - isUngroupAll, - NONDYNAMIC_AND_NONCOLLISIONLESS = { dynamic: false, collisionless: false }, - undoData = [], - redoData = [], - i, - lengthI, - j, - lengthJ; - - function updateGroupInformation() { - var childrenIndexesLength = childrenIndexes.length; - if (childrenIndexesLength > 1) { - previousWasGroup = childrenIndexes[childrenIndexesLength - 2] < i - 1; - childrenIndexIsGroup.push(previousWasGroup); - if (previousWasGroup) { - hasGroupChildren = true; - } else { - hasSoloChildren = true; - } - } - } - - if (entitiesSelectedCount === 0) { - console.log("ERROR: Groups: Nothing to ungroup!"); - return; - } - if (entitiesSelectedCount === 1) { - console.log("ERROR: Groups: Cannot ungroup sole entity!"); - return; - } - - // Compile information on immediate children. - rootID = rootEntityIDs[0]; - for (i = 1, lengthI = selections[0].length; i < lengthI; i++) { - if (selections[0][i].parentID === rootID) { - childrenIDs.push(selections[0][i].id); - childrenIndexes.push(i); - updateGroupInformation(); - } - } - childrenIndexes.push(selections[0].length); // Special extra item at end to aid updating selection. - updateGroupInformation(); - - // Unlink children. - isUngroupAll = hasSoloChildren !== hasGroupChildren; - for (i = childrenIDs.length - 1; i >= 0; i--) { - if (isUngroupAll || childrenIndexIsGroup[i]) { - undoData.push({ - entityID: childrenIDs[i], - properties: { parentID: selections[0][childrenIndexes[i]].parentID } - }); - Entities.editEntity(childrenIDs[i], { - parentID: Uuid.NULL - }); - redoData.push({ - entityID: childrenIDs[i], - properties: { parentID: Uuid.NULL } - }); - rootEntityIDs.push(childrenIDs[i]); - selections[0][childrenIndexes[i]].parentID = Uuid.NULL; - selections.push(selections[0].splice(childrenIndexes[i], childrenIndexes[i + 1] - childrenIndexes[i])); - } - } - - // If root group has physics, reset child groups to defaults for dynamic and collisionless. See - // Selection.applyPhysics(). - if (selections[0][0].dynamic) { - for (i = 1, lengthI = selections.length; i < lengthI; i++) { - for (j = 0, lengthJ = selections[i].length; j < lengthJ; j++) { - undoData.push({ - entityID: selections[i][j].id, - properties: { - dynamic: selections[i][j].dynamic, - collisionless: selections[i][j].collisionless - } - }); - Entities.editEntity(selections[i][j].id, NONDYNAMIC_AND_NONCOLLISIONLESS); - selections[i][j].dynamic = false; - selections[i][j].collisionless = false; - redoData.push({ - entityID: selections[i][j].id, - properties: NONDYNAMIC_AND_NONCOLLISIONLESS - }); - } - } - } - - // Add history entry. - History.push(null, { setProperties: undoData }, { setProperties: redoData }); - } - - function clear() { - rootEntityIDs = []; - selections = []; - entitiesSelectedCount = 0; - } - - function destroy() { - clear(); - } - - return { - toggle: toggle, - selection: selection, - includes: includes, - rootEntityIDs: getRootEntityIDs, - groupsCount: groupsCount, - entitiesCount: entitiesCount, - group: group, - ungroup: ungroup, - clear: clear, - destroy: destroy - }; -}; - -Groups.prototype = {}; diff --git a/unpublishedScripts/marketplace/shapes/modules/hand.js b/unpublishedScripts/marketplace/shapes/modules/hand.js deleted file mode 100644 index 73efed8017..0000000000 --- a/unpublishedScripts/marketplace/shapes/modules/hand.js +++ /dev/null @@ -1,250 +0,0 @@ -// -// hand.js -// -// Created by David Rowe on 21 Jul 2017. -// Copyright 2017 High Fidelity, Inc. -// -// Distributed under the Apache License, Version 2.0. -// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html -// - -/* global Hand:true */ - -Hand = function (side) { - - "use strict"; - - // Hand controller input. - var handController, - controllerTrigger, - controllerTriggerClicked, - controllerGrip, - - isGripClicked = false, - isGripClickedHandled = false, - GRIP_ON_VALUE = 0.99, - GRIP_OFF_VALUE = 0.95, - - isTriggerPressed, - isTriggerClicked, - TRIGGER_ON_VALUE = 0.15, // Per controllerDispatcherUtils.js. - TRIGGER_OFF_VALUE = 0.1, // Per controllerDispatcherUtils.js. - TRIGGER_CLICKED_VALUE = 1.0, - - NEAR_GRAB_RADIUS = 0.05, // Different from controllerDispatcherUtils.js. - NEAR_HOVER_RADIUS = 0.025, - - LEFT_HAND = 0, - HALF_TREE_SCALE = 16384, - - handPose, - handPosition, - handOrientation, - palmPosition, - - handleOverlayIDs = [], - intersection = {}; - - if (!(this instanceof Hand)) { - return new Hand(side); - } - - if (side === LEFT_HAND) { - handController = Controller.Standard.LeftHand; - controllerTrigger = Controller.Standard.LT; - controllerTriggerClicked = Controller.Standard.LTClick; - controllerGrip = Controller.Standard.LeftGrip; - } else { - handController = Controller.Standard.RightHand; - controllerTrigger = Controller.Standard.RT; - controllerTriggerClicked = Controller.Standard.RTClick; - controllerGrip = Controller.Standard.RightGrip; - } - - function setHandleOverlays(overlayIDs) { - handleOverlayIDs = overlayIDs; - } - - function valid() { - return handPose.valid; - } - - function position() { - return handPosition; - } - - function orientation() { - return handOrientation; - } - - function getPalmPosition() { - return palmPosition; - } - - function triggerPressed() { - return isTriggerPressed; - } - - function triggerClicked() { - return isTriggerClicked; - } - - function gripClicked() { - return isGripClicked; - } - - function setGripClickedHandled() { - isGripClicked = false; - isGripClickedHandled = true; - } - - function getIntersection() { - return intersection; - } - - function getNearGrabRadius() { - return NEAR_GRAB_RADIUS; - } - - function update() { - var gripValue, - overlayID, - overlayIDs, - overlayDistance, - intersectionPosition, - distance, - entityID, - entityIDs, - entitySize, - size, - i, - length; - - - // Hand pose. - handPose = Controller.getPoseValue(handController); - if (!handPose.valid) { - intersection = {}; - return; - } - handPosition = Vec3.sum(Vec3.multiplyQbyV(MyAvatar.orientation, handPose.translation), MyAvatar.position); - handOrientation = Quat.multiply(MyAvatar.orientation, handPose.rotation); - - // Controller trigger. - isTriggerPressed = Controller.getValue(controllerTrigger) > (isTriggerPressed - ? TRIGGER_OFF_VALUE : TRIGGER_ON_VALUE); - isTriggerClicked = Controller.getValue(controllerTriggerClicked) === TRIGGER_CLICKED_VALUE; - - // Controller grip. - gripValue = Controller.getValue(controllerGrip); - if (isGripClicked) { - isGripClicked = gripValue > GRIP_OFF_VALUE; - } else { - isGripClicked = gripValue > GRIP_ON_VALUE; - } - // Grip clicked may be being handled by UI. - if (isGripClicked) { - isGripClicked = !isGripClickedHandled; - } else { - isGripClickedHandled = false; - } - - // Hand-overlay intersection, if any handle overlays. - overlayID = null; - palmPosition = side === LEFT_HAND ? MyAvatar.getLeftPalmPosition() : MyAvatar.getRightPalmPosition(); - if (handleOverlayIDs.length > 0) { - overlayIDs = Overlays.findOverlays(palmPosition, NEAR_HOVER_RADIUS); - if (overlayIDs.length > 0) { - // Typically, there will be only one overlay; optimize for that case. - overlayID = overlayIDs[0]; - if (overlayIDs.length > 1) { - // Find closest overlay. - overlayDistance = Vec3.length(Vec3.subtract(Overlays.getProperty(overlayID, "position"), palmPosition)); - for (i = 1, length = overlayIDs.length; i < length; i++) { - distance = - Vec3.length(Vec3.subtract(Overlays.getProperty(overlayIDs[i], "position"), palmPosition)); - if (distance > overlayDistance) { - overlayID = overlayIDs[i]; - overlayDistance = distance; - } - } - } - } - if (overlayID && handleOverlayIDs.indexOf(overlayID) === -1) { - overlayID = null; - } - if (overlayID) { - intersectionPosition = Overlays.getProperty(overlayID, "position"); - } - } - - // Hand-entity intersection, if any editable, if overlay not intersected. - entityID = null; - if (overlayID === null) { - // palmPosition is set above. - entityIDs = Entities.findEntities(palmPosition, NEAR_GRAB_RADIUS); - if (entityIDs.length > 0) { - // Typically, there will be only one entity; optimize for that case. - if (Entities.hasEditableRoot(entityIDs[0])) { - entityID = entityIDs[0]; - } - if (entityIDs.length > 1) { - // Find smallest, editable entity. - entitySize = HALF_TREE_SCALE; - for (i = 0, length = entityIDs.length; i < length; i++) { - if (Entities.hasEditableRoot(entityIDs[i])) { - size = Vec3.length(Entities.getEntityProperties(entityIDs[i], "dimensions").dimensions); - if (size < entitySize) { - entityID = entityIDs[i]; - entitySize = size; - } - } - } - } - } - if (entityID) { - intersectionPosition = Entities.getEntityProperties(entityID, "position").position; - if (Vec3.distance(palmPosition, intersectionPosition) > NEAR_GRAB_RADIUS) { - intersectionPosition = Vec3.sum(palmPosition, - Vec3.multiply(NEAR_GRAB_RADIUS, Vec3.normalize(Vec3.subtract(intersectionPosition, palmPosition)))); - } - } - } - - intersection = { - intersects: overlayID !== null || entityID !== null, - overlayID: overlayID, - entityID: entityID, - handIntersected: overlayID !== null || entityID !== null, - editableEntity: entityID !== null, - intersection: intersectionPosition - }; - } - - function clear() { - // Nothing to do. - } - - function destroy() { - // Nothing to do. - } - - return { - setHandleOverlays: setHandleOverlays, - valid: valid, - position: position, - orientation: orientation, - palmPosition: getPalmPosition, - triggerPressed: triggerPressed, - triggerClicked: triggerClicked, - gripClicked: gripClicked, - setGripClickedHandled: setGripClickedHandled, - intersection: getIntersection, - getNearGrabRadius: getNearGrabRadius, - update: update, - clear: clear, - destroy: destroy - }; -}; - -Hand.prototype = {}; diff --git a/unpublishedScripts/marketplace/shapes/modules/handles.js b/unpublishedScripts/marketplace/shapes/modules/handles.js deleted file mode 100644 index d7627e8626..0000000000 --- a/unpublishedScripts/marketplace/shapes/modules/handles.js +++ /dev/null @@ -1,372 +0,0 @@ -// -// handles.js -// -// Created by David Rowe on 21 Jul 2017. -// Copyright 2017 High Fidelity, Inc. -// -// Distributed under the Apache License, Version 2.0. -// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html -// - -/* global Handles:true */ - -Handles = function (side) { - // Draws scaling handles. - - "use strict"; - - var boundingBoxOverlay, - boundingBoxDimensions, - boundingBoxLocalCenter, - cornerIndexes = [], - cornerHandleOverlays = [], - faceHandleOverlays = [], - faceHandleOffsets, - BOUNDING_BOX_COLOR = { red: 0, green: 240, blue: 240 }, - BOUNDING_BOX_ALPHA = 0.8, - HANDLE_NORMAL_COLOR = { red: 0, green: 240, blue: 240 }, - HANDLE_HOVER_COLOR = { red: 0, green: 255, blue: 120 }, - HANDLE_NORMAL_ALPHA = 0.7, - HANDLE_HOVER_ALPHA = 0.9, - NUM_CORNERS = 8, - NUM_CORNER_HANDLES = 2, - CORNER_HANDLE_OVERLAY_DIMENSIONS = { x: 0.1, y: 0.1, z: 0.1 }, - CORNER_HANDLE_OVERLAY_AXES, - NUM_FACE_HANDLES = 6, - FACE_HANDLE_OVERLAY_DIMENSIONS = { x: 0.1, y: 0.12, z: 0.1 }, - FACE_HANDLE_OVERLAY_AXES, - FACE_HANDLE_OVERLAY_OFFSETS, - FACE_HANDLE_OVERLAY_ROTATIONS, - FACE_HANDLE_OVERLAY_SCALE_AXES, - DISTANCE_MULTIPLIER_MULTIPLIER = 0.25, - hoveredOverlayID = null, - isVisible = false, - - // Scaling. - scalingBoundingBoxDimensions, - scalingBoundingBoxLocalCenter, - - i; - - if (!(this instanceof Handles)) { - return new Handles(side); - } - - CORNER_HANDLE_OVERLAY_AXES = [ - // Ordered such that items 4 apart are opposite corners - used in display(). - { x: -0.5, y: -0.5, z: -0.5 }, - { x: -0.5, y: -0.5, z: 0.5 }, - { x: -0.5, y: 0.5, z: -0.5 }, - { x: -0.5, y: 0.5, z: 0.5 }, - { x: 0.5, y: 0.5, z: 0.5 }, - { x: 0.5, y: 0.5, z: -0.5 }, - { x: 0.5, y: -0.5, z: 0.5 }, - { x: 0.5, y: -0.5, z: -0.5 } - ]; - - FACE_HANDLE_OVERLAY_AXES = [ - { x: -0.5, y: 0, z: 0 }, - { x: 0.5, y: 0, z: 0 }, - { x: 0, y: -0.5, z: 0 }, - { x: 0, y: 0.5, z: 0 }, - { x: 0, y: 0, z: -0.5 }, - { x: 0, y: 0, z: 0.5 } - ]; - - FACE_HANDLE_OVERLAY_OFFSETS = { - x: FACE_HANDLE_OVERLAY_DIMENSIONS.y, - y: FACE_HANDLE_OVERLAY_DIMENSIONS.y, - z: FACE_HANDLE_OVERLAY_DIMENSIONS.y - }; - - FACE_HANDLE_OVERLAY_ROTATIONS = [ - Quat.fromVec3Degrees({ x: 0, y: 0, z: 90 }), - Quat.fromVec3Degrees({ x: 0, y: 0, z: -90 }), - Quat.fromVec3Degrees({ x: 180, y: 0, z: 0 }), - Quat.fromVec3Degrees({ x: 0, y: 0, z: 0 }), - Quat.fromVec3Degrees({ x: -90, y: 0, z: 0 }), - Quat.fromVec3Degrees({ x: 90, y: 0, z: 0 }) - ]; - - FACE_HANDLE_OVERLAY_SCALE_AXES = [ - Vec3.UNIT_NEG_X, - Vec3.UNIT_X, - Vec3.UNIT_NEG_Y, - Vec3.UNIT_Y, - Vec3.UNIT_NEG_Z, - Vec3.UNIT_Z - ]; - - function isAxisHandle(overlayID) { - return faceHandleOverlays.indexOf(overlayID) !== -1; - } - - function isCornerHandle(overlayID) { - return cornerHandleOverlays.indexOf(overlayID) !== -1; - } - - function isHandle(overlayID) { - return isAxisHandle(overlayID) || isCornerHandle(overlayID); - } - - function handleOffset(overlayID) { - // Distance from overlay position to entity surface. - if (isCornerHandle(overlayID)) { - return 0; // Corner overlays are centered on the corner. - } - return faceHandleOffsets.y / 2; - } - - function getOverlays() { - return [].concat(cornerHandleOverlays, faceHandleOverlays); - } - - function scalingAxis(overlayID) { - var axesIndex; - if (isCornerHandle(overlayID)) { - axesIndex = CORNER_HANDLE_OVERLAY_AXES[cornerIndexes[cornerHandleOverlays.indexOf(overlayID)]]; - return Vec3.normalize(Vec3.multiplyVbyV(axesIndex, boundingBoxDimensions)); - } - return FACE_HANDLE_OVERLAY_SCALE_AXES[faceHandleOverlays.indexOf(overlayID)]; - } - - function scalingDirections(overlayID) { - if (isCornerHandle(overlayID)) { - return Vec3.ONE; - } - return Vec3.abs(FACE_HANDLE_OVERLAY_SCALE_AXES[faceHandleOverlays.indexOf(overlayID)]); - } - - function display(rootEntityID, boundingBox, isMultipleEntities, isSuppressZAxis) { - var boundingBoxCenter, - boundingBoxOrientation, - cameraPosition, - boundingBoxVector, - distanceMultiplier, - cameraUp, - cornerPosition, - cornerVector, - crossProductScale, - maxCrossProductScale, - rightCornerIndex, - leftCornerIndex, - cornerHandleDimensions, - faceHandleDimensions, - i; - - isVisible = true; - - boundingBoxDimensions = boundingBox.dimensions; - boundingBoxCenter = boundingBox.center; - boundingBoxLocalCenter = boundingBox.localCenter; - boundingBoxOrientation = boundingBox.orientation; - - // Selection bounding box. - boundingBoxOverlay = Overlays.addOverlay("cube", { - parentID: rootEntityID, - localPosition: boundingBoxLocalCenter, - localRotation: Quat.ZERO, - dimensions: boundingBoxDimensions, - color: BOUNDING_BOX_COLOR, - alpha: BOUNDING_BOX_ALPHA, - solid: false, - drawInFront: true, - ignoreRayIntersection: true, - visible: true - }); - - // Somewhat maintain general angular size of scale handles per bounding box center but make more distance ones - // display smaller in order to give comfortable depth cue. - cameraPosition = Camera.position; - boundingBoxVector = Vec3.subtract(boundingBox.center, Camera.position); - distanceMultiplier = Vec3.length(boundingBoxVector); - distanceMultiplier = DISTANCE_MULTIPLIER_MULTIPLIER - * (distanceMultiplier + (1 - Math.LOG10E * Math.log(distanceMultiplier + 1))); - - // Corner scale handles. - // At right-most and opposite corners of bounding box. - cameraUp = Quat.getUp(Camera.orientation); - maxCrossProductScale = 0; - for (i = 0; i < NUM_CORNERS; i++) { - cornerPosition = Vec3.sum(boundingBoxCenter, - Vec3.multiplyQbyV(boundingBoxOrientation, - Vec3.multiplyVbyV(CORNER_HANDLE_OVERLAY_AXES[i], boundingBoxDimensions))); - cornerVector = Vec3.subtract(cornerPosition, cameraPosition); - crossProductScale = Vec3.dot(Vec3.cross(cornerVector, boundingBoxVector), cameraUp); - if (crossProductScale > maxCrossProductScale) { - maxCrossProductScale = crossProductScale; - rightCornerIndex = i; - } - } - leftCornerIndex = (rightCornerIndex + 4) % NUM_CORNERS; - cornerIndexes[0] = leftCornerIndex; - cornerIndexes[1] = rightCornerIndex; - cornerHandleDimensions = Vec3.multiply(distanceMultiplier, CORNER_HANDLE_OVERLAY_DIMENSIONS); - for (i = 0; i < NUM_CORNER_HANDLES; i++) { - cornerHandleOverlays[i] = Overlays.addOverlay("sphere", { - parentID: rootEntityID, - localPosition: Vec3.sum(boundingBoxLocalCenter, - Vec3.multiplyVbyV(CORNER_HANDLE_OVERLAY_AXES[cornerIndexes[i]], boundingBoxDimensions)), - localRotation: Quat.ZERO, - dimensions: cornerHandleDimensions, - color: HANDLE_NORMAL_COLOR, - alpha: HANDLE_NORMAL_ALPHA, - solid: true, - drawInFront: true, - ignoreRayIntersection: false, - visible: true - }); - } - - // Face scale handles. - // Only valid for a single entity because for multiple entities, some may be at an angle relative to the root entity - // which would necessitate a (non-existent) shear transform be applied to them when scaling a face of the set. - if (!isMultipleEntities) { - faceHandleDimensions = Vec3.multiply(distanceMultiplier, FACE_HANDLE_OVERLAY_DIMENSIONS); - faceHandleOffsets = Vec3.multiply(distanceMultiplier, FACE_HANDLE_OVERLAY_OFFSETS); - for (i = 0; i < NUM_FACE_HANDLES; i++) { - if (!isSuppressZAxis || FACE_HANDLE_OVERLAY_AXES[i].z === 0) { - faceHandleOverlays[i] = Overlays.addOverlay("shape", { - parentID: rootEntityID, - localPosition: Vec3.sum(boundingBoxLocalCenter, - Vec3.multiplyVbyV(FACE_HANDLE_OVERLAY_AXES[i], Vec3.sum(boundingBoxDimensions, faceHandleOffsets))), - localRotation: FACE_HANDLE_OVERLAY_ROTATIONS[i], - dimensions: faceHandleDimensions, - shape: "Cone", - color: HANDLE_NORMAL_COLOR, - alpha: HANDLE_NORMAL_ALPHA, - solid: true, - drawInFront: true, - ignoreRayIntersection: false, - visible: true - }); - } - } - } else { - faceHandleOverlays = []; - } - } - - function startScaling() { - // Nothing to do. - } - - function scale(scale3D) { - // Scale relative to dimensions and positions at start of scaling. - - // Selection bounding box. - scalingBoundingBoxDimensions = Vec3.multiplyVbyV(scale3D, boundingBoxLocalCenter); - scalingBoundingBoxLocalCenter = Vec3.multiplyVbyV(scale3D, boundingBoxDimensions); - Overlays.editOverlay(boundingBoxOverlay, { - localPosition: scalingBoundingBoxDimensions, - dimensions: scalingBoundingBoxLocalCenter - }); - - // Corner scale handles. - for (i = 0; i < NUM_CORNER_HANDLES; i++) { - Overlays.editOverlay(cornerHandleOverlays[i], { - localPosition: Vec3.sum(scalingBoundingBoxDimensions, - Vec3.multiplyVbyV(CORNER_HANDLE_OVERLAY_AXES[cornerIndexes[i]], scalingBoundingBoxLocalCenter)) - }); - } - - // Face scale handles. - if (faceHandleOverlays.length > 0) { - for (i = 0; i < NUM_FACE_HANDLES; i++) { - Overlays.editOverlay(faceHandleOverlays[i], { - localPosition: Vec3.sum(scalingBoundingBoxDimensions, - Vec3.multiplyVbyV(FACE_HANDLE_OVERLAY_AXES[i], - Vec3.sum(scalingBoundingBoxLocalCenter, faceHandleOffsets))) - }); - } - } - } - - function finishScaling() { - // Adopt final scale. - boundingBoxLocalCenter = scalingBoundingBoxDimensions; - boundingBoxDimensions = scalingBoundingBoxLocalCenter; - } - - function hover(overlayID) { - if (overlayID !== hoveredOverlayID) { - if (hoveredOverlayID !== null) { - Overlays.editOverlay(hoveredOverlayID, { color: HANDLE_NORMAL_COLOR }); - hoveredOverlayID = null; - } - - if (overlayID !== null - && (faceHandleOverlays.indexOf(overlayID) !== -1 || cornerHandleOverlays.indexOf(overlayID) !== -1)) { - Overlays.editOverlay(overlayID, { - color: HANDLE_HOVER_COLOR, - alpha: HANDLE_HOVER_ALPHA - }); - hoveredOverlayID = overlayID; - } - } - } - - function grab(overlayID) { - var overlay, - isShowAll = overlayID === null, - color = isShowAll ? HANDLE_NORMAL_COLOR : HANDLE_HOVER_COLOR, - alpha = isShowAll ? HANDLE_NORMAL_ALPHA : HANDLE_HOVER_ALPHA, - i, - length; - - for (i = 0, length = cornerHandleOverlays.length; i < length; i++) { - overlay = cornerHandleOverlays[i]; - Overlays.editOverlay(overlay, { - visible: isVisible && (isShowAll || overlay === overlayID), - color: color, - alpha: alpha - }); - } - - for (i = 0, length = faceHandleOverlays.length; i < length; i++) { - overlay = faceHandleOverlays[i]; - Overlays.editOverlay(overlay, { - visible: isVisible && (isShowAll || overlay === overlayID), - color: color, - alpha: alpha - }); - } - } - - function clear() { - var i, - length; - - Overlays.deleteOverlay(boundingBoxOverlay); - for (i = 0; i < NUM_CORNER_HANDLES; i++) { - Overlays.deleteOverlay(cornerHandleOverlays[i]); - } - for (i = 0, length = faceHandleOverlays.length; i < length; i++) { - Overlays.deleteOverlay(faceHandleOverlays[i]); - } - - isVisible = false; - } - - function destroy() { - clear(); - } - - return { - display: display, - overlays: getOverlays, - isHandle: isHandle, - handleOffset: handleOffset, - scalingAxis: scalingAxis, - scalingDirections: scalingDirections, - startScaling: startScaling, - scale: scale, - finishScaling: finishScaling, - hover: hover, - grab: grab, - clear: clear, - destroy: destroy - }; -}; - -Handles.prototype = {}; diff --git a/unpublishedScripts/marketplace/shapes/modules/highlights.js b/unpublishedScripts/marketplace/shapes/modules/highlights.js deleted file mode 100644 index 98c200a808..0000000000 --- a/unpublishedScripts/marketplace/shapes/modules/highlights.js +++ /dev/null @@ -1,167 +0,0 @@ -// -// highlights.js -// -// Created by David Rowe on 21 Jul 2017. -// Copyright 2017 High Fidelity, Inc. -// -// Distributed under the Apache License, Version 2.0. -// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html -// - -/* global Highlights: true */ - -Highlights = function (side) { - // Draws highlights on selected entities. - - "use strict"; - - var handOverlay, - entityOverlays = [], - boundingBoxOverlay, - isDisplayingBoundingBox = false, - HIGHLIGHT_COLOR = { red: 240, green: 240, blue: 0 }, - SCALE_COLOR = { red: 0, green: 240, blue: 240 }, - GROUP_COLOR = { red: 220, green: 60, blue: 220 }, - HAND_HIGHLIGHT_ALPHA = 0.35, - ENTITY_HIGHLIGHT_ALPHA = 0.8, - BOUNDING_BOX_ALPHA = 0.8, - HAND_HIGHLIGHT_OFFSET = { x: 0.0, y: 0.11, z: 0.02 }, - LEFT_HAND = 0; - - if (!(this instanceof Highlights)) { - return new Highlights(); - } - - handOverlay = Overlays.addOverlay("sphere", { - dimension: Vec3.ZERO, - parentID: Uuid.SELF, - parentJointIndex: MyAvatar.getJointIndex(side === LEFT_HAND - ? "_CONTROLLER_LEFTHAND" - : "_CONTROLLER_RIGHTHAND"), - localPosition: HAND_HIGHLIGHT_OFFSET, - alpha: HAND_HIGHLIGHT_ALPHA, - solid: true, - drawInFront: true, - ignoreRayIntersection: true, - visible: false - }); - - boundingBoxOverlay = Overlays.addOverlay("cube", { - alpha: BOUNDING_BOX_ALPHA, - solid: false, - drawInFront: true, - ignoreRayIntersection: true, - visible: false - }); - - function setHandHighlightRadius(radius) { - var dimension = 2 * radius; - Overlays.editOverlay(handOverlay, { - dimensions: { x: dimension, y: dimension, z: dimension } - }); - } - - function maybeAddEntityOverlay(index) { - if (index >= entityOverlays.length) { - entityOverlays.push(Overlays.addOverlay("cube", { - alpha: ENTITY_HIGHLIGHT_ALPHA, - solid: false, - drawInFront: true, - ignoreRayIntersection: true, - visible: false - })); - } - } - - function editEntityOverlay(index, details, overlayColor) { - var offset = Vec3.multiplyVbyV(Vec3.subtract(Vec3.HALF, details.registrationPoint), details.dimensions); - - Overlays.editOverlay(entityOverlays[index], { - parentID: details.id, - localPosition: offset, - localRotation: Quat.ZERO, - dimensions: details.dimensions, - color: overlayColor, - visible: true - }); - } - - function display(handIntersected, selection, entityIndex, boundingBox, overlayColor) { - // Displays highlight for just entityIndex if non-null, otherwise highlights whole selection. - var i, - length; - - // Show/hide hand overlay. - Overlays.editOverlay(handOverlay, { - color: overlayColor, - visible: handIntersected - }); - - // Display entity overlays. - if (entityIndex !== null) { - // Add/edit entity overlay for just entityIndex. - maybeAddEntityOverlay(0); - editEntityOverlay(0, selection[entityIndex], overlayColor); - } else { - // Add/edit entity overlays for all entities in selection. - for (i = 0, length = selection.length; i < length; i++) { - maybeAddEntityOverlay(i); - editEntityOverlay(i, selection[i], overlayColor); - } - } - - // Delete extra entity overlays. - for (i = entityOverlays.length - 1, length = selection.length; i >= length; i--) { - Overlays.deleteOverlay(entityOverlays[i]); - entityOverlays.splice(i, 1); - } - - // Update bounding box overlay. - if (boundingBox !== null) { - Overlays.editOverlay(boundingBoxOverlay, { - position: boundingBox.center, - rotation: boundingBox.orientation, - dimensions: boundingBox.dimensions, - color: overlayColor, - visible: true - }); - isDisplayingBoundingBox = true; - } else if (isDisplayingBoundingBox) { - Overlays.editOverlay(boundingBoxOverlay, { visible: false }); - isDisplayingBoundingBox = false; - } - } - - function clear() { - var i, - length; - - // Hide hand and bounding box overlays. - Overlays.editOverlay(handOverlay, { visible: false }); - Overlays.editOverlay(boundingBoxOverlay, { visible: false }); - - // Delete entity overlays. - for (i = 0, length = entityOverlays.length; i < length; i++) { - Overlays.deleteOverlay(entityOverlays[i]); - } - entityOverlays = []; - } - - function destroy() { - clear(); - Overlays.deleteOverlay(handOverlay); - Overlays.deleteOverlay(boundingBoxOverlay); - } - - return { - HIGHLIGHT_COLOR: HIGHLIGHT_COLOR, - SCALE_COLOR: SCALE_COLOR, - GROUP_COLOR: GROUP_COLOR, - setHandHighlightRadius: setHandHighlightRadius, - display: display, - clear: clear, - destroy: destroy - }; -}; - -Highlights.prototype = {}; diff --git a/unpublishedScripts/marketplace/shapes/modules/history.js b/unpublishedScripts/marketplace/shapes/modules/history.js deleted file mode 100644 index 9f2c45046a..0000000000 --- a/unpublishedScripts/marketplace/shapes/modules/history.js +++ /dev/null @@ -1,246 +0,0 @@ -// -// history.js -// -// Created by David Rowe on 12 Sep 2017. -// Copyright 2017 High Fidelity, Inc. -// -// Distributed under the Apache License, Version 2.0. -// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html -// - -/* global History: true */ - -History = (function () { - // Provides undo facility. - // Global object. - - "use strict"; - - var history = [ - /* - { - undoData: { - setProperties: [ - { - entityID: , - properties: { : , : , ... } - } - ], - createEntities: [ - { - entityID: , - properties: { : , : , ... } - } - ], - deleteEntities: [ - { - entityID: , - properties: { : , : , ... } - } - ] - }, - redoData: { - "" - } - } - */ - ], - MAX_HISTORY_ITEMS = 1000, - undoPosition = -1, // The next history item to undo; the next history item to redo = undoIndex + 1. - undoData = [{}, {}, {}], // Left side, right side, no side. - redoData = [{}, {}, {}], - NO_SIDE = 2; - - function doKick(entityID) { - var properties, - NO_KICK_ENTITY_TYPES = ["Text", "Web", "PolyLine", "ParticleEffect"], // Don't respond to gravity so don't kick. - DYNAMIC_VELOCITY_THRESHOLD = 0.05, // See EntityMotionState.cpp DYNAMIC_LINEAR_VELOCITY_THRESHOLD - DYNAMIC_VELOCITY_KICK = { x: 0, y: 0.1, z: 0 }; - - properties = Entities.getEntityProperties(entityID, ["type", "dynamic", "gravity", "velocity"]); - if (NO_KICK_ENTITY_TYPES.indexOf(properties.type) === -1 && properties.dynamic - && Vec3.length(properties.gravity) > 0 && Vec3.length(properties.velocity) < DYNAMIC_VELOCITY_THRESHOLD) { - Entities.editEntity(entityID, { velocity: DYNAMIC_VELOCITY_KICK }); - } - } - - function kickPhysics(entityID) { - // Gives entities a small kick to start off physics, if necessary. - var KICK_DELAY = 750; // ms - - // Give physics a chance to catch up. Avoids some erratic behavior. - Script.setTimeout(function () { - doKick(entityID); - }, KICK_DELAY); - } - - function prePush(side, undo, redo) { - // Stores undo and redo data to include in the next history entry generated for the side. - undoData[side] = undo; - redoData[side] = redo; - } - - function push(side, undo, redo) { - // Add a history entry. - if (side === null) { - side = NO_SIDE; - } - undoData[side] = Object.merge(undoData[side], undo); - redoData[side] = Object.merge(redoData[side], redo); - - // Wipe any redo history after current undo position. - if (undoPosition < history.length - 1) { - history.splice(undoPosition + 1, history.length - undoPosition - 1); - } - - // Limit the number of history items. - if (history.length >= MAX_HISTORY_ITEMS) { - history.splice(0, history.length - MAX_HISTORY_ITEMS + 1); - undoPosition = history.length - 1; - } - - history.push({ undoData: undoData[side], redoData: redoData[side] }); - undoPosition++; - - undoData[side] = {}; - redoData[side] = {}; - } - - function updateEntityIDs(oldEntityID, newEntityID) { - // Replace oldEntityID value with newEntityID in history. - var i, - length; - - function updateEntityIDsInProperty(properties) { - var i, - length; - - if (properties) { - for (i = 0, length = properties.length; i < length; i++) { - if (properties[i].entityID === oldEntityID) { - properties[i].entityID = newEntityID; - } - if (properties[i].properties && properties[i].properties.parentID === oldEntityID) { - properties[i].properties.parentID = newEntityID; - } - } - } - } - - for (i = 0, length = history.length; i < length; i++) { - if (history[i].undoData) { - updateEntityIDsInProperty(history[i].undoData.setProperties); - updateEntityIDsInProperty(history[i].undoData.createEntities); - updateEntityIDsInProperty(history[i].undoData.deleteEntities); - } - if (history[i].redoData) { - updateEntityIDsInProperty(history[i].redoData.setProperties); - updateEntityIDsInProperty(history[i].redoData.createEntities); - updateEntityIDsInProperty(history[i].redoData.deleteEntities); - } - } - } - - function hasUndo() { - return undoPosition > -1; - } - - function hasRedo() { - return undoPosition < history.length - 1; - } - - function undoSetProperties(entityID, properties) { - Entities.editEntity(entityID, properties); - if (properties.gravity) { - kickPhysics(entityID); - } - } - - function undo() { - var undoData, - entityID, - REPEAT_UNDO_DELAY = 500, // ms - i, - length; - - if (undoPosition > -1) { - undoData = history[undoPosition].undoData; - - if (undoData.createEntities) { - for (i = 0, length = undoData.createEntities.length; i < length; i++) { - entityID = Entities.addEntity(undoData.createEntities[i].properties); - updateEntityIDs(undoData.createEntities[i].entityID, entityID); - } - } - - if (undoData.setProperties) { - for (i = 0, length = undoData.setProperties.length; i < length; i++) { - undoSetProperties(undoData.setProperties[i].entityID, undoData.setProperties[i].properties); - if (undoData.setProperties[i].properties.velocity - && Vec3.equal(undoData.setProperties[i].properties.velocity, Vec3.ZERO) - && undoData.setProperties[i].properties.angularVelocity - && Vec3.equal(undoData.setProperties[i].properties.angularVelocity, Vec3.ZERO)) { - // Work around physics bug wherein the entity doesn't always end up at the correct position. - Script.setTimeout( - undoSetProperties(undoData.setProperties[i].entityID, undoData.setProperties[i].properties), - REPEAT_UNDO_DELAY - ); - } - } - } - - if (undoData.deleteEntities) { - for (i = 0, length = undoData.deleteEntities.length; i < length; i++) { - Entities.deleteEntity(undoData.deleteEntities[i].entityID); - } - } - - undoPosition--; - } - } - - function redo() { - var redoData, - entityID, - i, - length; - - - if (undoPosition < history.length - 1) { - redoData = history[undoPosition + 1].redoData; - - if (redoData.createEntities) { - for (i = 0, length = redoData.createEntities.length; i < length; i++) { - entityID = Entities.addEntity(redoData.createEntities[i].properties); - updateEntityIDs(redoData.createEntities[i].entityID, entityID); - } - } - - if (redoData.setProperties) { - for (i = 0, length = redoData.setProperties.length; i < length; i++) { - Entities.editEntity(redoData.setProperties[i].entityID, redoData.setProperties[i].properties); - if (redoData.setProperties[i].properties.gravity) { - kickPhysics(redoData.setProperties[i].entityID); - } - } - } - - if (redoData.deleteEntities) { - for (i = 0, length = redoData.deleteEntities.length; i < length; i++) { - Entities.deleteEntity(redoData.deleteEntities[i].entityID); - } - } - - undoPosition++; - } - } - - return { - prePush: prePush, - push: push, - hasUndo: hasUndo, - hasRedo: hasRedo, - undo: undo, - redo: redo - }; -}()); diff --git a/unpublishedScripts/marketplace/shapes/modules/laser.js b/unpublishedScripts/marketplace/shapes/modules/laser.js deleted file mode 100644 index 067b605047..0000000000 --- a/unpublishedScripts/marketplace/shapes/modules/laser.js +++ /dev/null @@ -1,296 +0,0 @@ -// -// laser.js -// -// Created by David Rowe on 21 Jul 2017. -// Copyright 2017 High Fidelity, Inc. -// -// Distributed under the Apache License, Version 2.0. -// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html -// - -/* global Laser:true */ - -Laser = function (side) { - // Draws hand lasers. - // May intersect with overlays or entities, or bounding box of other hand's selection. - // Laser dot is always drawn on UI entities. - - "use strict"; - - var isLaserEnabled = true, - isLaserOn = false, - - laserLine = null, - laserSphere = null, - - searchDistance = 0.0, - - SEARCH_SPHERE_SIZE = 0.013, // Per farActionGrabEntity.js multiplied by 1.2 per farActionGrabEntity.js. - MINUMUM_SEARCH_SPHERE_SIZE = 0.006, - SEARCH_SPHERE_FOLLOW_RATE = 0.5, - COLORS_GRAB_SEARCHING_HALF_SQUEEZE = { red: 10, green: 10, blue: 255 }, // Per controllerDispatcherUtils.js. - COLORS_GRAB_SEARCHING_FULL_SQUEEZE = { red: 250, green: 10, blue: 10 }, // Per controllerDispatcherUtils.js. - COLORS_GRAB_SEARCHING_HALF_SQUEEZE_BRIGHT, - COLORS_GRAB_SEARCHING_FULL_SQUEEZE_BRIGHT, - BRIGHT_POW = 0.06, // Per old handControllerGrab.js. - - GRAB_POINT_SPHERE_OFFSET = { x: 0.04, y: 0.13, z: 0.039 }, // Per HmdDisplayPlugin.cpp and controllers.js. - - PICK_MAX_DISTANCE = 500, // Per controllerDispatcherUtils.js. - PRECISION_PICKING = true, - NO_INCLUDE_IDS = [], - NO_EXCLUDE_IDS = [], - VISIBLE_ONLY = true, - - laserLength, - specifiedLaserLength = null, - laserSphereSize = 0, - - LEFT_HAND = 0, - - uiOverlayIDs = [], - - intersection; - - if (!(this instanceof Laser)) { - return new Laser(side); - } - - function colorPow(color, power) { // Per old handControllerGrab.js. - return { - red: Math.pow(color.red / 255, power) * 255, - green: Math.pow(color.green / 255, power) * 255, - blue: Math.pow(color.blue / 255, power) * 255 - }; - } - - COLORS_GRAB_SEARCHING_HALF_SQUEEZE_BRIGHT = colorPow(COLORS_GRAB_SEARCHING_HALF_SQUEEZE, BRIGHT_POW); - COLORS_GRAB_SEARCHING_FULL_SQUEEZE_BRIGHT = colorPow(COLORS_GRAB_SEARCHING_FULL_SQUEEZE, BRIGHT_POW); - - if (side === LEFT_HAND) { - GRAB_POINT_SPHERE_OFFSET.x = -GRAB_POINT_SPHERE_OFFSET.x; - } - - laserLine = Overlays.addOverlay("line3d", { - alpha: 1.0, - glow: 1.0, - ignoreRayIntersection: true, - drawInFront: true, - parentID: Uuid.SELF, - parentJointIndex: MyAvatar.getJointIndex(side === LEFT_HAND - ? "_CAMERA_RELATIVE_CONTROLLER_LEFTHAND" - : "_CAMERA_RELATIVE_CONTROLLER_RIGHTHAND"), - visible: false - }); - laserSphere = Overlays.addOverlay("circle3d", { - innerAlpha: 1.0, - outerAlpha: 0.0, - solid: true, - ignoreRayIntersection: true, - drawInFront: true, - visible: false - }); - - function updateLine(start, end, color) { - Overlays.editOverlay(laserLine, { - start: start, - end: end, - color: color, - visible: true - }); - } - - function updateSphere(location, size, color, brightColor) { - var rotation; - - rotation = Quat.lookAt(location, Camera.getPosition(), Vec3.UP); - - Overlays.editOverlay(laserSphere, { - position: location, - rotation: rotation, - innerColor: brightColor, - outerColor: color, - outerRadius: size, - visible: true - }); - } - - function display(origin, direction, distance, isPressed, isClicked) { - var searchTarget, - sphereSize, - color, - brightColor; - - searchDistance = SEARCH_SPHERE_FOLLOW_RATE * searchDistance + (1.0 - SEARCH_SPHERE_FOLLOW_RATE) * distance; - searchTarget = Vec3.sum(origin, Vec3.multiply(searchDistance, direction)); - sphereSize = Math.max(SEARCH_SPHERE_SIZE * searchDistance, MINUMUM_SEARCH_SPHERE_SIZE); - color = isClicked ? COLORS_GRAB_SEARCHING_FULL_SQUEEZE : COLORS_GRAB_SEARCHING_HALF_SQUEEZE; - brightColor = isClicked ? COLORS_GRAB_SEARCHING_FULL_SQUEEZE_BRIGHT : COLORS_GRAB_SEARCHING_HALF_SQUEEZE_BRIGHT; - - if (isPressed) { - updateLine(origin, searchTarget, color); - } else { - Overlays.editOverlay(laserLine, { visible: false }); - } - // Avoid flash from large laser sphere when turn on or suddenly increase distance. Rendering seems to update overlay - // position one frame behind so use sphere size from preceding frame. - updateSphere(searchTarget, laserSphereSize, color, brightColor); - laserSphereSize = sphereSize; - } - - function hide() { - Overlays.editOverlay(laserLine, { visible: false }); - Overlays.editOverlay(laserSphere, { visible: false }); - laserSphereSize = 0; - } - - function setUIOverlays(overlayIDs) { - uiOverlayIDs = overlayIDs; - } - - function update(hand) { - var handPosition, - handOrientation, - deltaOrigin, - pickRay; - - if (!isLaserEnabled) { - intersection = {}; - return; - } - - handPosition = hand.position(); - handOrientation = hand.orientation(); - deltaOrigin = Vec3.multiplyQbyV(handOrientation, GRAB_POINT_SPHERE_OFFSET); - pickRay = { - origin: Vec3.sum(handPosition, deltaOrigin), - direction: Quat.getUp(handOrientation), - length: PICK_MAX_DISTANCE - }; - - if (hand.triggerPressed()) { - - // Normal laser operation with trigger. - intersection = Overlays.findRayIntersection(pickRay, PRECISION_PICKING, NO_INCLUDE_IDS, NO_EXCLUDE_IDS, - VISIBLE_ONLY); - var tabletIDs = []; - if (HMD.tabletID) { - tabletIDs.push(HMD.tabletID); - } - if (HMD.tabletScreenID) { - tabletIDs.push(HMD.tabletScreenID); - } - if (HMD.homeButtonID) { - tabletIDs.push(HMD.homeButtonID); - } - if (Reticle.pointingAtSystemOverlay || (intersection.overlayID - && tabletIDs.indexOf(intersection.overlayID) !== -1)) { - // No laser if pointing at HUD overlay or tablet; system provides lasers for these cases. - if (isLaserOn) { - isLaserOn = false; - hide(); - } - } else { - if (!intersection.intersects) { - intersection = Entities.findRayIntersection(pickRay, PRECISION_PICKING, NO_INCLUDE_IDS, NO_EXCLUDE_IDS, - VISIBLE_ONLY); - intersection.editableEntity = intersection.intersects && Entities.hasEditableRoot(intersection.entityID); - intersection.overlayID = null; - } - intersection.laserIntersected = intersection.intersects; - laserLength = (specifiedLaserLength !== null) - ? specifiedLaserLength - : (intersection.intersects ? intersection.distance : PICK_MAX_DISTANCE); - isLaserOn = true; - display(pickRay.origin, pickRay.direction, laserLength, true, hand.triggerClicked()); - } - - } else if (uiOverlayIDs.length > 0) { - - // Special UI cursor. - intersection = Overlays.findRayIntersection(pickRay, PRECISION_PICKING, uiOverlayIDs, NO_EXCLUDE_IDS, - VISIBLE_ONLY); - if (intersection.intersects) { - intersection.laserIntersected = true; - laserLength = (specifiedLaserLength !== null) - ? specifiedLaserLength - : (intersection.intersects ? intersection.distance : PICK_MAX_DISTANCE); - if (!isLaserOn) { - // Start laser dot at UI distance. - searchDistance = laserLength; - } - isLaserOn = true; - display(pickRay.origin, pickRay.direction, laserLength, false, false); - } else if (isLaserOn) { - isLaserOn = false; - hide(); - } - - } else { - intersection = { intersects: false }; - if (isLaserOn) { - isLaserOn = false; - hide(); - } - } - } - - function getIntersection() { - return intersection; - } - - function setLength(length) { - specifiedLaserLength = length; - laserLength = length; - } - - function clearLength() { - specifiedLaserLength = null; - } - - function getLength() { - return laserLength; - } - - function handOffset() { - return GRAB_POINT_SPHERE_OFFSET; - } - - function clear() { - isLaserOn = false; - hide(); - } - - function enable() { - isLaserEnabled = true; - } - - function disable() { - isLaserEnabled = false; - if (isLaserOn) { - hide(); - } - isLaserOn = false; - } - - function destroy() { - Overlays.deleteOverlay(laserLine); - Overlays.deleteOverlay(laserSphere); - } - - return { - setUIOverlays: setUIOverlays, - update: update, - intersection: getIntersection, - setLength: setLength, - clearLength: clearLength, - length: getLength, - enable: enable, - disable: disable, - handOffset: handOffset, - clear: clear, - destroy: destroy - }; -}; - -Laser.prototype = {}; diff --git a/unpublishedScripts/marketplace/shapes/modules/preload.js b/unpublishedScripts/marketplace/shapes/modules/preload.js deleted file mode 100644 index a075a0728c..0000000000 --- a/unpublishedScripts/marketplace/shapes/modules/preload.js +++ /dev/null @@ -1,175 +0,0 @@ -// -// preload.js -// -// Created by David Rowe on 11 Oct 2017. -// Copyright 2017 High Fidelity, Inc. -// -// Distributed under the Apache License, Version 2.0. -// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html -// - -/* global Preload:true, App */ - -Preload = (function () { - // Provide facility to preload asset files so that they are in disk cache. - // Global object. - - "use strict"; - - var loadTimer = null, - urlsToLoad = [], - nextURLToLoad = 0, - LOAD_INTERVAL = 50, // ms - overlays = [], - deleteTimer = null, - DELETE_INTERVAL = LOAD_INTERVAL; // ms - - function findURLs(items) { - var urls = [], - i, - length; - - function findURLsInObject(item) { - var property; - - for (property in item) { - if (item.hasOwnProperty(property)) { - if (property === "url" || property === "imageURL" || property === "imageOverlayURL") { - if (item[property]) { - urls.push(item[property]); - } - } else if (typeof item[property] === "object") { - findURLsInObject(item[property]); - } - } - } - } - - for (i = 0, length = items.length; i < length; i++) { - switch (typeof items[i]) { - case "string": - urls.push(items[i]); - break; - case "object": - findURLsInObject(items[i]); - break; - default: - console.log("ERROR: Cannot find URL in item type " + (typeof items[i])); - } - } - - return urls; - } - - function deleteOverlay() { - if (overlays.length === 0) { // Just in case. - deleteTimer = null; - return; - } - - Overlays.deleteOverlay(overlays[0]); - overlays.shift(); - - if (overlays.length > 0) { - deleteTimer = Script.setTimeout(deleteOverlay, DELETE_INTERVAL); - } else { - deleteTimer = null; - } - } - - function loadNextURL() { - - function loadURL(url) { - var DOMAIN_CORNER = { x: -16382, y: -16382, z: -16382 }, // Near but not right on domain corner. - DUMMY_OVERLAY_PROPERTIES = { - fbx: { - overlay: "model", - dimensions: { x: 0.001, y: 0.001, z: 0.001 }, - position: DOMAIN_CORNER, - ignoreRayIntersection: false, - alpha: 0.0, - visible: false - }, - svg: { - overlay: "image3d", - scale: 0.001, - position: DOMAIN_CORNER, - ignoreRayIntersection: true, - alpha: 0.0, - visible: false - }, - png: { - overlay: "image3d", - scale: 0.001, - position: DOMAIN_CORNER, - ignoreRayIntersection: true, - alpha: 0.0, - visible: false - } - }, - fileType, - properties; - - fileType = url.slice(-3); - if (DUMMY_OVERLAY_PROPERTIES.hasOwnProperty(fileType)) { - properties = Object.clone(DUMMY_OVERLAY_PROPERTIES[fileType]); - properties.url = url; - overlays.push(Overlays.addOverlay(properties.overlay, properties)); - if (deleteTimer === null) { - // Can't delete overlay straight away otherwise asset load is abandoned. - deleteTimer = Script.setTimeout(deleteOverlay, DELETE_INTERVAL); - } - } else { - console.log("ERROR: Cannot preload asset " + url); - } - } - - // Find next URL that hasn't already been loaded; - while (nextURLToLoad < urlsToLoad.length && urlsToLoad.indexOf(urlsToLoad[nextURLToLoad]) < nextURLToLoad) { - nextURLToLoad += 1; - } - - // Load the URL if there's one to load. - if (nextURLToLoad < urlsToLoad.length) { - // Load the URL. - loadURL(urlsToLoad[nextURLToLoad]); - nextURLToLoad += 1; - - // Load the next, if any, after a short delay. - loadTimer = Script.setTimeout(loadNextURL, LOAD_INTERVAL); - } else { - loadTimer = null; - } - } - - function load(urls) { - urlsToLoad = urlsToLoad.concat(urls); - if (loadTimer === null) { - loadNextURL(); - } - } - - function tearDown() { - var i, - length; - - if (loadTimer) { - Script.clearTimeout(loadTimer); - } - - if (deleteTimer) { - Script.clearTimeout(deleteTimer); - for (i = 0, length = overlays.length; i < length; i++) { - Overlays.deleteOverlay(overlays[i]); - } - } - } - - Script.scriptEnding.connect(tearDown); - - return { - findURLs: findURLs, - load: load - }; - -}()); diff --git a/unpublishedScripts/marketplace/shapes/modules/selection.js b/unpublishedScripts/marketplace/shapes/modules/selection.js deleted file mode 100644 index 7849469733..0000000000 --- a/unpublishedScripts/marketplace/shapes/modules/selection.js +++ /dev/null @@ -1,795 +0,0 @@ -// -// selection.js -// -// Created by David Rowe on 21 Jul 2017. -// Copyright 2017 High Fidelity, Inc. -// -// Distributed under the Apache License, Version 2.0. -// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html -// - -/* global SelectionManager:true, App, History */ - -SelectionManager = function (side) { - // Manages set of selected entities. Currently supports just one set of linked entities. - - "use strict"; - - var selection = [], // Subset of properties to provide externally. - selectionIDs = [], - selectionProperties = [], // Full set of properties for history. - intersectedEntityID = null, - intersectedEntityIndex, - rootEntityID = null, - rootPosition, - rootOrientation, - scaleFactor, - scaleRootOffset, - scaleRootOrientation, - startPosition, - startOrientation, - isEditing = false, - ENTITY_TYPE = "entity", - ENTITY_TYPES_WITH_COLOR = ["Box", "Sphere", "Shape", "PolyLine"], - ENTITY_TYPES_2D = ["Text", "Web"], - MIN_HISTORY_MOVE_DISTANCE = 0.005, - MIN_HISTORY_ROTATE_ANGLE = 0.017453; // Radians = 1 degree. - - if (!(this instanceof SelectionManager)) { - return new SelectionManager(side); - } - - function traverseEntityTree(id, selection, selectionIDs, selectionProperties) { - // Recursively traverses tree of entities and their children, gather IDs and properties. - // The root entity is always the first entry. - var children, - properties, - i, - length; - - properties = Entities.getEntityProperties(id); - delete properties.entityID; - selection.push({ - id: id, - type: properties.type, - position: properties.position, - parentID: properties.parentID, - localPosition: properties.localPosition, - localRotation: properties.localRotation, - registrationPoint: properties.registrationPoint, - rotation: properties.rotation, - dimensions: properties.dimensions, - dynamic: properties.dynamic, - collisionless: properties.collisionless, - userData: properties.userData - }); - selectionIDs.push(id); - selectionProperties.push({ entityID: id, properties: properties }); - - if (id === intersectedEntityID) { - intersectedEntityIndex = selection.length - 1; - } - - children = Entities.getChildrenIDs(id); - for (i = 0, length = children.length; i < length; i++) { - if (Entities.getNestableType(children[i]) === ENTITY_TYPE) { - traverseEntityTree(children[i], selection, selectionIDs, selectionProperties); - } - } - } - - function select(intersectionEntityID) { - var entityProperties, - PARENT_PROPERTIES = ["parentID", "position", "rotation", "dymamic", "collisionless"]; - - intersectedEntityID = intersectionEntityID; - - // Find root parent. - rootEntityID = Entities.rootOf(intersectedEntityID); - - // Selection position and orientation is that of the root entity. - entityProperties = Entities.getEntityProperties(rootEntityID, PARENT_PROPERTIES); - rootPosition = entityProperties.position; - rootOrientation = entityProperties.rotation; - - // Find all children. - selection = []; - selectionIDs = []; - selectionProperties = []; - traverseEntityTree(rootEntityID, selection, selectionIDs, selectionProperties); - } - - function append(rootEntityID) { - // Add further entities to the selection. - // Assumes that rootEntityID is not already in the selection. - traverseEntityTree(rootEntityID, selection, selectionIDs, selectionProperties); - } - - function getIntersectedEntityID() { - return intersectedEntityID; - } - - function getIntersectedEntityIndex() { - return intersectedEntityIndex; - } - - function getRootEntityID() { - return rootEntityID; - } - - function getSelection() { - return selection; - } - - function contains(entityID) { - return selectionIDs.indexOf(entityID) !== -1; - } - - function count() { - return selection.length; - } - - function getBoundingBox() { - var center, - localCenter, - orientation, - inverseOrientation, - dimensions, - min, - max, - i, - j, - length, - registration, - position, - rotation, - corners = [], - NUM_CORNERS = 8; - - if (selection.length === 1) { - if (Vec3.equal(selection[0].registrationPoint, Vec3.HALF)) { - center = rootPosition; - } else { - center = Vec3.sum(rootPosition, - Vec3.multiplyQbyV(rootOrientation, - Vec3.multiplyVbyV(selection[0].dimensions, - Vec3.subtract(Vec3.HALF, selection[0].registrationPoint)))); - } - localCenter = Vec3.multiplyQbyV(Quat.inverse(rootOrientation), Vec3.subtract(center, rootPosition)); - orientation = rootOrientation; - dimensions = selection[0].dimensions; - } else if (selection.length > 1) { - // Find min & max x, y, z values of entities' dimension box corners in root entity coordinate system. - // Note: Don't use entities' bounding boxes because they're in world coordinates and may make the calculated - // bounding box be larger than necessary. - min = Vec3.multiplyVbyV(Vec3.subtract(Vec3.ZERO, selection[0].registrationPoint), selection[0].dimensions); - max = Vec3.multiplyVbyV(Vec3.subtract(Vec3.ONE, selection[0].registrationPoint), selection[0].dimensions); - inverseOrientation = Quat.inverse(rootOrientation); - for (i = 1, length = selection.length; i < length; i++) { - - registration = selection[i].registrationPoint; - corners = [ - { x: -registration.x, y: -registration.y, z: -registration.z }, - { x: -registration.x, y: -registration.y, z: 1.0 - registration.z }, - { x: -registration.x, y: 1.0 - registration.y, z: -registration.z }, - { x: -registration.x, y: 1.0 - registration.y, z: 1.0 - registration.z }, - { x: 1.0 - registration.x, y: -registration.y, z: -registration.z }, - { x: 1.0 - registration.x, y: -registration.y, z: 1.0 - registration.z }, - { x: 1.0 - registration.x, y: 1.0 - registration.y, z: -registration.z }, - { x: 1.0 - registration.x, y: 1.0 - registration.y, z: 1.0 - registration.z } - ]; - - position = selection[i].position; - rotation = selection[i].rotation; - dimensions = selection[i].dimensions; - - for (j = 0; j < NUM_CORNERS; j++) { - // Corner position in world coordinates. - corners[j] = Vec3.sum(position, Vec3.multiplyQbyV(rotation, Vec3.multiplyVbyV(corners[j], dimensions))); - // Corner position in root entity coordinates. - corners[j] = Vec3.multiplyQbyV(inverseOrientation, Vec3.subtract(corners[j], rootPosition)); - // Update min & max. - min = Vec3.min(corners[j], min); - max = Vec3.max(corners[j], max); - } - } - - // Calculate bounding box. - center = Vec3.sum(rootPosition, - Vec3.multiplyQbyV(rootOrientation, Vec3.multiply(0.5, Vec3.sum(min, max)))); - localCenter = Vec3.multiply(0.5, Vec3.sum(min, max)); - orientation = rootOrientation; - dimensions = Vec3.subtract(max, min); - } - - return { - center: center, - localCenter: localCenter, - orientation: orientation, - dimensions: dimensions - }; - } - - function is2D() { - return selection.length === 1 && ENTITY_TYPES_2D.indexOf(selection[0].type) !== -1; - } - - function doKick(entityID) { - var properties, - NO_KICK_ENTITY_TYPES = ["Text", "Web", "PolyLine", "ParticleEffect"], // Don't respond to gravity so don't kick. - DYNAMIC_VELOCITY_THRESHOLD = 0.05, // See EntityMotionState.cpp DYNAMIC_LINEAR_VELOCITY_THRESHOLD - DYNAMIC_VELOCITY_KICK = { x: 0, y: 0.1, z: 0 }; - - if (entityID === rootEntityID && isEditing) { - // Don't kick if have started editing entity again. - return; - } - - properties = Entities.getEntityProperties(entityID, ["type", "velocity", "gravity"]); - if (NO_KICK_ENTITY_TYPES.indexOf(properties.type) === -1 - && Vec3.length(properties.gravity) > 0 && Vec3.length(properties.velocity) < DYNAMIC_VELOCITY_THRESHOLD) { - Entities.editEntity(entityID, { velocity: DYNAMIC_VELOCITY_KICK }); - } - } - - function kickPhysics(entityID) { - // Gives entities a small kick to start off physics, if necessary. - var KICK_DELAY = 750; // ms - - // Give physics a chance to catch up. Avoids some erratic behavior. - Script.setTimeout(function () { - doKick(entityID); - }, KICK_DELAY); - } - - function startEditing() { - var i; - - // Remember start properties for history entry. - startPosition = selection[0].position; - startOrientation = selection[0].rotation; - - // Disable entity set's physics. - for (i = selection.length - 1; i >= 0; i--) { - Entities.editEntity(selection[i].id, { - dynamic: false, // So that gravity doesn't fight with us trying to hold the entity in place. - collisionless: true, // So that entity doesn't bump us about as we resize the entity. - velocity: Vec3.ZERO, // So that entity doesn't drift if we've grabbed a set while it was moving. - angularVelocity: Vec3.ZERO // "" - }); - } - - // Stop moving. - Entities.editEntity(rootEntityID, { velocity: Vec3.ZERO, angularVelocity: Vec3.ZERO }); - - isEditing = true; - } - - function finishEditing() { - var i; - - // Restore entity set's physics. - // Note: Need to apply children-first in order to avoid children's relative positions sometimes drifting. - for (i = selection.length - 1; i >= 0; i--) { - Entities.editEntity(selection[i].id, { - dynamic: selection[i].dynamic, - collisionless: selection[i].collisionless - }); - } - - // Add history entry. - if (selection.length > 0 - && (!Vec3.equal(startPosition, rootPosition) || !Quat.equal(startOrientation, rootOrientation))) { - // Positions and orientations can be identical if change grabbing hands when finish scaling. - History.push( - side, - { - setProperties: [ - { entityID: rootEntityID, properties: { position: startPosition, rotation: startOrientation } } - ] - }, - { - setProperties: [ - { entityID: rootEntityID, properties: { position: rootPosition, rotation: rootOrientation } } - ] - } - ); - } - - // Kick off physics if necessary. - if (selection.length > 0 && selection[0].dynamic) { - kickPhysics(selection[0].id); - } - - isEditing = false; - } - - function getPositionAndOrientation() { - // Position and orientation of root entity. - return { - position: rootPosition, - orientation: rootOrientation - }; - } - - function setPositionAndOrientation(position, orientation) { - // Position and orientation of root entity. - rootPosition = position; - rootOrientation = orientation; - Entities.editEntity(rootEntityID, { - position: position, - rotation: orientation - }); - } - - function startDirectScaling(center) { - // Save initial position and orientation so that can scale relative to these without accumulating float errors. - scaleRootOffset = Vec3.subtract(rootPosition, center); - scaleRootOrientation = rootOrientation; - - // User is grabbing entity; add a history entry for movement up until the start of scaling and update start position and - // orientation; unless very small movement. - if (Vec3.distance(startPosition, rootPosition) >= MIN_HISTORY_MOVE_DISTANCE - || Quat.rotationBetween(startOrientation, rootOrientation) >= MIN_HISTORY_ROTATE_ANGLE) { - History.push( - side, - { - setProperties: [ - { entityID: rootEntityID, properties: { position: startPosition, rotation: startOrientation } } - ] - }, - { - setProperties: [ - { entityID: rootEntityID, properties: { position: rootPosition, rotation: rootOrientation } } - ] - } - ); - startPosition = rootPosition; - startOrientation = rootOrientation; - } - } - - function directScale(factor, rotation, center) { - // Scale, position, and rotate selection. - // We can get away with scaling the z size of 2D entities - incongruities are barely noticeable and things recover. - var i, - length; - - // Scale, position, and orient root. - rootPosition = Vec3.sum(center, Vec3.multiply(factor, Vec3.multiplyQbyV(rotation, scaleRootOffset))); - rootOrientation = Quat.multiply(rotation, scaleRootOrientation); - Entities.editEntity(selection[0].id, { - dimensions: Vec3.multiply(factor, selection[0].dimensions), - position: rootPosition, - rotation: rootOrientation - }); - - // Scale and position children. - for (i = 1, length = selection.length; i < length; i++) { - Entities.editEntity(selection[i].id, { - dimensions: Vec3.multiply(factor, selection[i].dimensions), - localPosition: Vec3.multiply(factor, selection[i].localPosition), - localRotation: selection[i].localRotation // Always specify localRotation otherwise rotations can drift. - }); - } - - // Save most recent scale factor. - scaleFactor = factor; - } - - function finishDirectScaling() { - // Update selection with final entity properties. - var undoData = [], - redoData = [], - i, - length; - - // Final scale, position, and orientation of root. - undoData.push({ - entityID: selection[0].id, - properties: { - dimensions: selection[0].dimensions, - position: startPosition, - rotation: startOrientation - } - }); - selection[0].dimensions = Vec3.multiply(scaleFactor, selection[0].dimensions); - selection[0].position = rootPosition; - selection[0].rotation = rootOrientation; - redoData.push({ - entityID: selection[0].id, - properties: { - dimensions: selection[0].dimensions, - position: selection[0].position, - rotation: selection[0].rotation - } - }); - - // Final scale and position of children. - for (i = 1, length = selection.length; i < length; i++) { - undoData.push({ - entityID: selection[i].id, - properties: { - dimensions: selection[i].dimensions, - localPosition: selection[i].localPosition, - localRotation: selection[i].localRotation - } - }); - selection[i].dimensions = Vec3.multiply(scaleFactor, selection[i].dimensions); - selection[i].localPosition = Vec3.multiply(scaleFactor, selection[i].localPosition); - redoData.push({ - entityID: selection[i].id, - properties: { - dimensions: selection[i].dimensions, - localPosition: selection[i].localPosition, - localRotation: selection[i].localRotation - } - }); - } - - // Add history entry. - History.push(side, { setProperties: undoData }, { setProperties: redoData }); - - // Update grab start data for its undo. - startPosition = rootPosition; - startOrientation = rootOrientation; - } - - function startHandleScaling(position) { - // Save initial offset from hand position to root position so that can scale without accumulating float errors. - scaleRootOffset = Vec3.multiplyQbyV(Quat.inverse(rootOrientation), Vec3.subtract(rootPosition, position)); - - // User is grabbing entity; add a history entry for movement up until the start of scaling and update start position and - // orientation; unless very small movement. - if (Vec3.distance(startPosition, rootPosition) >= MIN_HISTORY_MOVE_DISTANCE - || Quat.rotationBetween(startOrientation, rootOrientation) >= MIN_HISTORY_ROTATE_ANGLE) { - History.push( - side, - { - setProperties: [ - { entityID: rootEntityID, properties: { position: startPosition, rotation: startOrientation } } - ] - }, - { - setProperties: [ - { entityID: rootEntityID, properties: { position: rootPosition, rotation: rootOrientation } } - ] - } - ); - startPosition = rootPosition; - startOrientation = rootOrientation; - } - } - - function handleScale(factor, position, orientation) { - // Scale and reposition and orient selection. - // We can get away with scaling the z size of 2D entities - incongruities are barely noticeable and things recover. - var i, - length; - - // Scale and position root. - rootPosition = Vec3.sum(Vec3.multiplyQbyV(orientation, Vec3.multiplyVbyV(factor, scaleRootOffset)), position); - rootOrientation = orientation; - Entities.editEntity(selection[0].id, { - dimensions: Vec3.multiplyVbyV(factor, selection[0].dimensions), - position: rootPosition, - rotation: rootOrientation - }); - - // Scale and position children. - // Only corner handles are used for scaling multiple entities so scale factor is the same in all dimensions. - // Therefore don't need to take into account orientation relative to parent when scaling local position. - for (i = 1, length = selection.length; i < length; i++) { - Entities.editEntity(selection[i].id, { - dimensions: Vec3.multiplyVbyV(factor, selection[i].dimensions), - localPosition: Vec3.multiplyVbyV(factor, selection[i].localPosition), - localRotation: selection[i].localRotation // Always specify localRotation otherwise rotations can drift. - }); - } - - // Save most recent scale factor. - scaleFactor = factor; - } - - function finishHandleScaling() { - // Update selection with final entity properties. - var undoData = [], - redoData = [], - i, - length; - - // Final scale and position of root. - undoData.push({ - entityID: selection[0].id, - properties: { - dimensions: selection[0].dimensions, - position: startPosition, - rotation: startOrientation - } - }); - selection[0].dimensions = Vec3.multiplyVbyV(scaleFactor, selection[0].dimensions); - selection[0].position = rootPosition; - selection[0].rotation = rootOrientation; - redoData.push({ - entityID: selection[0].id, - properties: { - dimensions: selection[0].dimensions, - position: selection[0].position, - rotation: selection[0].rotation - } - }); - - // Final scale and position of children. - for (i = 1, length = selection.length; i < length; i++) { - undoData.push({ - entityID: selection[i].id, - properties: { - dimensions: selection[i].dimensions, - localPosition: selection[i].localPosition, - localRotation: selection[i].localRotation - } - }); - selection[i].dimensions = Vec3.multiplyVbyV(scaleFactor, selection[i].dimensions); - selection[i].localPosition = Vec3.multiplyVbyV(scaleFactor, selection[i].localPosition); - redoData.push({ - entityID: selection[i].id, - properties: { - dimensions: selection[i].dimensions, - localPosition: selection[i].localPosition, - localRotation: selection[i].localRotation - } - }); - } - - // Add history entry. - History.push(side, { setProperties: undoData }, { setProperties: redoData }); - - // Update grab start data for its undo. - startPosition = rootPosition; - startOrientation = rootOrientation; - } - - function cloneEntities() { - var parentIDIndexes = [], - intersectedEntityIndex = 0, - parentID, - properties, - undoData = [], - redoData = [], - i, - j, - length; - - // Map parent IDs; find intersectedEntityID's index. - for (i = 1, length = selection.length; i < length; i++) { - if (selection[i].id === intersectedEntityID) { - intersectedEntityIndex = i; - } - parentID = selection[i].parentID; - for (j = 0; j < i; j++) { - if (parentID === selection[j].id) { - parentIDIndexes[i] = j; - break; - } - } - } - - // Clone entities. - for (i = 0, length = selection.length; i < length; i++) { - properties = Entities.getEntityProperties(selection[i].id); - if (i > 0) { - properties.parentID = selection[parentIDIndexes[i]].id; - } - selection[i].id = Entities.addEntity(properties); - undoData.push({ entityID: selection[i].id }); - redoData.push({ entityID: selection[i].id, properties: properties }); - } - - // Update selection info. - intersectedEntityID = selection[intersectedEntityIndex].id; - rootEntityID = selection[0].id; - - // Add history entry. - History.prePush(side, { deleteEntities: undoData }, { createEntities: redoData }); - } - - function applyColor(color, isApplyToAll) { - // Entities without a color property simply ignore the edit. - var properties, - isOK = false, - undoData = [], - redoData = [], - i, - length; - - if (isApplyToAll) { - for (i = 0, length = selection.length; i < length; i++) { - properties = Entities.getEntityProperties(selection[i].id, ["type", "color"]); - if (ENTITY_TYPES_WITH_COLOR.indexOf(properties.type) !== -1) { - Entities.editEntity(selection[i].id, { - color: color - }); - undoData.push({ entityID: intersectedEntityID, properties: { color: properties.color } }); - redoData.push({ entityID: intersectedEntityID, properties: { color: color } }); - isOK = true; - } - } - if (undoData.length > 0) { - History.push(side, { setProperties: undoData }, { setProperties: redoData }); - } - } else { - properties = Entities.getEntityProperties(intersectedEntityID, ["type", "color"]); - if (ENTITY_TYPES_WITH_COLOR.indexOf(properties.type) !== -1) { - Entities.editEntity(intersectedEntityID, { - color: color - }); - History.push( - side, - { setProperties: [{ entityID: intersectedEntityID, properties: { color: properties.color } }] }, - { setProperties: [{ entityID: intersectedEntityID, properties: { color: color } }] } - ); - isOK = true; - } - } - - return isOK; - } - - function getColor(entityID) { - var properties; - - properties = Entities.getEntityProperties(entityID, "color"); - if (ENTITY_TYPES_WITH_COLOR.indexOf(properties.type) === -1) { - // Some entities don't have a color property. - return null; - } - - return properties.color; - } - - function updatePhysicsUserData(userDataString, physicsUserData) { - var userData = {}; - - if (userDataString !== "") { - try { - userData = JSON.parse(userDataString); - } catch (e) { - console.log(side, "ERROR: Invalid userData in entity being updated! " + userDataString); - } - } - - if (!userData.hasOwnProperty("grabbableKey")) { - userData.grabbableKey = {}; - } - userData.grabbableKey.grabbable = physicsUserData.grabbableKey.grabbable; - - return JSON.stringify(userData); - } - - function applyPhysics(physicsProperties) { - // Regarding trees of entities, when physics is to be enabled the physics engine currently: - // - Only works with physics applied to the root entity; i.e., child entities are ignored for collisions. - // - Requires child entities to be dynamic if the root entity is dynamic, otherwise child entities can drift. - // - Requires child entities to be collisionless, otherwise the entity tree can become self-propelled. - // See also: Groups.group() and ungroup(). - var properties, - property, - undoData = [], - redoData = [], - i, - length; - - // Make children cater to physicsProperties. - properties = { - dynamic: physicsProperties.dynamic, - collisionless: physicsProperties.dynamic || physicsProperties.collisionless - }; - for (i = 1, length = selection.length; i < length; i++) { - undoData.push({ - entityID: selection[i].id, - properties: { - dynamic: selection[i].dynamic, - collisionless: selection[i].collisionless - } - }); - Entities.editEntity(selection[i].id, properties); - undoData.push({ - entityID: selection[i].id, - properties: properties - }); - } - - // Undo data. - properties = { - position: selection[0].position, - rotation: selection[0].rotation, - velocity: Vec3.ZERO, - angularVelocity: Vec3.ZERO - }; - for (property in physicsProperties) { - if (physicsProperties.hasOwnProperty(property)) { - properties[property] = selectionProperties[0].properties[property]; - } - } - if (properties.userData === undefined) { - properties.userData = ""; - } - undoData.push({ - entityID: selection[0].id, - properties: properties - }); - - // Set root per physicsProperties. - properties = Object.clone(physicsProperties); - properties.userData = updatePhysicsUserData(selection[intersectedEntityIndex].userData, physicsProperties.userData); - Entities.editEntity(rootEntityID, properties); - - // Redo data. - properties.position = selection[0].position; - properties.rotation = selection[0].rotation; - properties.velocity = Vec3.ZERO; - properties.angularVelocity = Vec3.ZERO; - redoData.push({ - entityID: selection[0].id, - properties: properties - }); - - // Add history entry. - History.push(side, { setProperties: undoData }, { setProperties: redoData }); - - // Kick off physics if necessary. - if (physicsProperties.dynamic) { - kickPhysics(rootEntityID); - } - } - - function clear() { - selection = []; - intersectedEntityID = null; - rootEntityID = null; - } - - function deleteEntities() { - if (rootEntityID) { - History.push(side, { createEntities: selectionProperties }, { deleteEntities: [{ entityID: rootEntityID }] }); - Entities.deleteEntity(rootEntityID); // Children are automatically deleted. - clear(); - } - } - - function destroy() { - clear(); - } - - return { - select: select, - append: append, - selection: getSelection, - contains: contains, - count: count, - intersectedEntityID: getIntersectedEntityID, - intersectedEntityIndex: getIntersectedEntityIndex, - rootEntityID: getRootEntityID, - boundingBox: getBoundingBox, - is2D: is2D, - getPositionAndOrientation: getPositionAndOrientation, - setPositionAndOrientation: setPositionAndOrientation, - startEditing: startEditing, - startDirectScaling: startDirectScaling, - directScale: directScale, - finishDirectScaling: finishDirectScaling, - startHandleScaling: startHandleScaling, - handleScale: handleScale, - finishHandleScaling: finishHandleScaling, - finishEditing: finishEditing, - cloneEntities: cloneEntities, - applyColor: applyColor, - getColor: getColor, - applyPhysics: applyPhysics, - deleteEntities: deleteEntities, - clear: clear, - destroy: destroy - }; -}; - -SelectionManager.prototype = {}; diff --git a/unpublishedScripts/marketplace/shapes/modules/toolIcon.js b/unpublishedScripts/marketplace/shapes/modules/toolIcon.js deleted file mode 100644 index c8ea4d7f8b..0000000000 --- a/unpublishedScripts/marketplace/shapes/modules/toolIcon.js +++ /dev/null @@ -1,169 +0,0 @@ -// -// toolIcon.js -// -// Created by David Rowe on 28 Jul 2017. -// Copyright 2017 High Fidelity, Inc. -// -// Distributed under the Apache License, Version 2.0. -// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html -// - -/* global ToolIcon:true, App, UIT */ - -ToolIcon = function (side) { - // Tool icon displayed on non-dominant hand. - - "use strict"; - - var LEFT_HAND = 0, - - MODEL_DIMENSIONS = { x: 0.1944, y: 0.1928, z: 0.1928 }, // Raw FBX dimensions. - MODEL_SCALE = 0.7, // Adjust icon dimensions so that the green bar matches that of the Tools header. - MODEL_POSITION_LEFT_HAND = { x: -0.025, y: 0.03, z: 0 }, // x raises in thumb direction; y moves in fingers direction. - MODEL_POSITION_RIGHT_HAND = { x: 0.025, y: 0.03, z: 0 }, // "" - MODEL_ROTATION_LEFT_HAND = Quat.fromVec3Degrees({ x: 0, y: 0, z: 100 }), - MODEL_ROTATION_RIGHT_HAND = Quat.fromVec3Degrees({ x: 0, y: 180, z: -100 }), - - MODEL_TYPE = "model", - MODEL_PROPERTIES = { - url: Script.resolvePath("../assets/tools/tool-icon.fbx"), - dimensions: Vec3.multiply(MODEL_SCALE, MODEL_DIMENSIONS), - solid: true, - alpha: 1.0, - parentID: Uuid.SELF, - ignoreRayIntersection: true, - visible: true - }, - - IMAGE_TYPE = "image3d", - IMAGE_PROPERTIES = { - localRotation: Quat.fromVec3Degrees({ x: -90, y: -90, z: 0 }), - alpha: 1.0, - emissive: true, - ignoreRayIntersection: true, - isFacingAvatar: false, - visible: true - }, - - ICON_PROPERTIES = { - // Relative to model overlay. x is in fingers direction; y is in thumb direction. - localPosition: { x: 0.020, y: 0.069, z: 0 }, - color: UIT.colors.lightGrayText - }, - LABEL_PROPERTIES = { - localPosition: { x: -0.040, y: 0.067, z: 0 }, - color: UIT.colors.white - }, - SUBLABEL_PROPERTIES = { - localPosition: { x: -0.055, y: 0.067, z: 0 }, - color: UIT.colors.lightGrayText - }, - - ICON_SCALE_FACTOR = 3.0, - LABEL_SCALE_FACTOR = 1.8, - - handJointName, - localPosition, - localRotation, - - modelOverlay = null; - - if (!(this instanceof ToolIcon)) { - return new ToolIcon(); - } - - function getAssetURLs() { - return [MODEL_PROPERTIES.url]; - } - - function setHand(side) { - // Assumes UI is not displaying. - if (side === LEFT_HAND) { - handJointName = "LeftHand"; - localPosition = MODEL_POSITION_LEFT_HAND; - localRotation = MODEL_ROTATION_LEFT_HAND; - } else { - handJointName = "RightHand"; - localPosition = MODEL_POSITION_RIGHT_HAND; - localRotation = MODEL_ROTATION_RIGHT_HAND; - } - } - - setHand(side); - - function clear() { - // Deletes current tool model. - if (modelOverlay) { - Overlays.deleteOverlay(modelOverlay); // Child overlays are automatically deleted. - modelOverlay = null; - } - } - - function display(iconInfo) { - // Displays icon on hand. - var handJointIndex, - properties; - - handJointIndex = MyAvatar.getJointIndex(handJointName); - if (handJointIndex === -1) { - // Don't display if joint isn't available (yet) to attach to. - // User can clear this condition by toggling the app off and back on once avatar finishes loading. - console.log(side, "ERROR: ToolIcon: Hand joint index isn't available!"); - return; - } - - if (modelOverlay !== null) { - // Should never happen because tool needs to be cleared in order for user to return to Tools menu. - clear(); - } - - // Model. - properties = Object.clone(MODEL_PROPERTIES); - properties.parentJointIndex = handJointIndex; - properties.localPosition = localPosition; - properties.localRotation = localRotation; - modelOverlay = Overlays.addOverlay(MODEL_TYPE, properties); - - // Icon. - properties = Object.clone(IMAGE_PROPERTIES); - properties = Object.merge(properties, ICON_PROPERTIES); - properties.parentID = modelOverlay; - properties.url = iconInfo.icon.properties.url; - properties.dimensions = { - x: ICON_SCALE_FACTOR * iconInfo.icon.properties.dimensions.x, - y: ICON_SCALE_FACTOR * iconInfo.icon.properties.dimensions.y - }; - properties.localPosition.y += ICON_SCALE_FACTOR * iconInfo.icon.headerOffset.y; - Overlays.addOverlay(IMAGE_TYPE, properties); - - // Label. - properties = Object.clone(IMAGE_PROPERTIES); - properties = Object.merge(properties, LABEL_PROPERTIES); - properties.parentID = modelOverlay; - properties.url = iconInfo.label.properties.url; - properties.scale = LABEL_SCALE_FACTOR * iconInfo.label.properties.scale; - Overlays.addOverlay(IMAGE_TYPE, properties); - - // Sublabel. - properties = Object.clone(IMAGE_PROPERTIES); - properties = Object.merge(properties, SUBLABEL_PROPERTIES); - properties.parentID = modelOverlay; - properties.url = iconInfo.sublabel.properties.url; - properties.scale = LABEL_SCALE_FACTOR * iconInfo.sublabel.properties.scale; - Overlays.addOverlay(IMAGE_TYPE, properties); - } - - function destroy() { - clear(); - } - - return { - assetURLs: getAssetURLs, - setHand: setHand, - display: display, - clear: clear, - destroy: destroy - }; -}; - -ToolIcon.prototype = {}; diff --git a/unpublishedScripts/marketplace/shapes/modules/toolsMenu.js b/unpublishedScripts/marketplace/shapes/modules/toolsMenu.js deleted file mode 100644 index 78cafb4244..0000000000 --- a/unpublishedScripts/marketplace/shapes/modules/toolsMenu.js +++ /dev/null @@ -1,3701 +0,0 @@ -// -// toolsMenu.js -// -// Created by David Rowe on 22 Jul 2017. -// Copyright 2017 High Fidelity, Inc. -// -// Distributed under the Apache License, Version 2.0. -// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html -// - -/* global ToolsMenu:true, App, Feedback, Preload, UIT */ - -ToolsMenu = function (side, leftInputs, rightInputs, uiCommandCallback) { - // Tool menu displayed on top of forearm. - - "use strict"; - - var attachmentJointName, - - menuOriginLocalPosition, - menuOriginLocalRotation, - - menuOriginOverlay, - menuHeaderOverlay, - menuHeaderHeadingOverlay, - menuHeaderBarOverlay, - menuHeaderBackOverlay, - menuHeaderTitleOverlay, - menuHeaderIconOverlay, - menuPanelOverlay, - - menuOverlays = [], - menuHoverOverlays = [], - menuIconOverlays = [], - menuLabelOverlays = [], - menuEnabled = [], - - optionsOverlays = [], - optionsOverlaysIDs = [], // Text ids (names) of options overlays. - optionsOverlaysLabels = [], // Overlay IDs of labels for optionsOverlays. - optionsOverlaysSublabels = [], // Overlay IDs of sublabels for optionsOverlays. - optionsSliderData = [], // Uses same index values as optionsOverlays. - optionsColorData = [], // Uses same index values as optionsOverlays. - optionsExtraOverlays = [], - optionsEnabled = [], - optionsSettings = { - //