From be45f600d4594fdf098e8a3ae36df6b735645612 Mon Sep 17 00:00:00 2001 From: David Rowe Date: Wed, 23 Aug 2017 21:56:59 +1200 Subject: [PATCH] Style Create palette items --- scripts/vr-edit/assets/create/cone.fbx | Bin 0 -> 19056 bytes scripts/vr-edit/assets/create/cube.fbx | Bin 0 -> 17696 bytes scripts/vr-edit/assets/create/cylinder.fbx | Bin 0 -> 20240 bytes scripts/vr-edit/assets/create/sphere.fbx | Bin 0 -> 29312 bytes scripts/vr-edit/modules/createPalette.js | 181 ++++++++++----------- scripts/vr-edit/modules/toolsMenu.js | 21 ++- scripts/vr-edit/modules/uit.js | 12 +- 7 files changed, 112 insertions(+), 102 deletions(-) create mode 100644 scripts/vr-edit/assets/create/cone.fbx create mode 100644 scripts/vr-edit/assets/create/cube.fbx create mode 100644 scripts/vr-edit/assets/create/cylinder.fbx create mode 100644 scripts/vr-edit/assets/create/sphere.fbx diff --git a/scripts/vr-edit/assets/create/cone.fbx b/scripts/vr-edit/assets/create/cone.fbx new file mode 100644 index 0000000000000000000000000000000000000000..b883b042c56337c43754ddd3fa7614304cdb7c48 GIT binary patch literal 19056 zcmeHPdw5humap(i!XqFuybRh3f-gvipx^`ZB#i?Hhh)=@Ddin2P2GqMbYO^~)Twh$JudUL)}Ur-p6ZIFo(kR2tX7YQjc1<~GWNf@ES^SIS1g^! zwIH|Vv^d(r{f-ui?p2_3<7oRc_KDIkU>Vn}n&0L!_N`Jou+B7` z=9)al*jYIV4*FMVtu;d!V^fsM0rSk5RWpV$R;ttvs?&{_!)q>Mj4e^?{XAeA!5Rp} zQR;`(>EW<$%SM-{c-l@qr!dBH1*4|rzko4@8Sz)mFGB7M$C`A*_NBCz&6{7#jewC$)O1 z6}-d+90bw*1}qI$*blJze#g>{CO<@iI^gkRSrkFYc99m+Vu5CE6}f*fjVSXc3+U8|bgo zS~X6XN+qUq(qJOnlK~l)Y6l^!lgO|@UBTR1r8yjS?WVbPiv%xjg~B2%P;qgQcUIAK zZ}Cje^pdM)%(%*X`82QB``tlF>Ts5dx>^tO46OdSHTBLxQXMXoT<0^!YBk&OYpZ!M zjXr!x+*Br{9tY`@LR^w7#WPzX9H-KtBFrErS0h>oRhdLpm=0BTD)Ba9TOhHGPQvD@ zKp%Ai%OZ<3F;98`sN*2$N=G>DT<+ade}} z-baHZc`1YeC*aj6C0X^!`BEP)mSP_S%N;Fm(QRSGb;A)WxyEpK6PK>127!o1U{fX7 z-~^c7WMl@tpFj~U)`ONY8!BPUU*KyAtEIC!itu#$5n0Z{t z>^g!}#!W!>I_}*Bjk(V83IF8Ux@;u<7J*+b!AC0gjKF)PVB8SN`7DWII3~-`9e+Rz z^J*=C_zLqLG-HinE{Y3ckw%*CDycO`N}C7^EqADToR8DT_Tmu65Hie@G!2E%iZtrn za4OBPX^}Y$o7Td)6@I9*tOhYeQL4hwp_0>bi4_`B#Y0*w>{MzIZfR-U(kRB5&oYCt z0Jl6oZrM>DK#);N=*VEhvBERenL#eBAU9%>gjW*L@@fL1^#r~E;5Z-)I1;Z^0fU8}&{Amk?;$c!| z(-Sk1Kww7G!jE|T@B_;jV`~Ur(XPsv?U)fk`a;c-DwSEgUV3Dh^o^4x6)-5EqE53` zaaS9<2TQ-Bk!MI4xcbVNWpTq%KoN_kG-F*|U0vWmb-D&qKq=o1ChZvoi4D@gN;76S z!WtG0m)ih@S9xyd+Q;vBZA|-Zj7bfF4vUS)00ncBDSosdNd!=Rv;(uYAJ%Vv5bW3mK%D+?`VNl863ILXKfYtc)c)AiFCnm$tEI{yoILeEHHz- zHqo9gtx#ASypV^u#f<>Ble$k+yz!7K9?}gRJ6U@@jhW=Su)*4*G?2_8iT|N$usm2w zNNn2R9Fv{m;hqSTy|hg4pCvg?g$<$P7U@swn5{{s4Q|lrgiH5NNFqhSh zE%8bDH*}+vqyx{5kn?$|oKLaI;&#B&#bH1i^94jl36Ojg)=#Y&(88H*fJ?*lv*fTv za##_WO6Uv*zy)>)n3f?XAU^lm4gU;bP;8ijAqx_+OdCdJG0U}DE4L<$OgYPU5Q1K3 zSs=L$euYxfEI%+(iu)2NZm9DTt~WJ1-JP!=ids$%Z&}&D6WsX{P6XmHNBW{h)1(bI zMij2$M9=PiGi(aD6x}aATT-Q9uQda!(sge+TY7NvwFw^$vm(583fFz#2BgEKJqy2} z(a8Zo1uMeb2&Qwk;PNYiq1XuKccJNswOSqs#3HeNm?w+Nm{ zfB}q?UC|oVY+JC>P-_}Z_$QqKh>x$IEYpXhrAi{GQ4Jo%J(rsi?pUpFlYU|{6#w)l zfx-;+G)@S^svBGCxZS)H+b&8;8q2@)C!Or)2pu##$0sPLs4!dVbVIPSm?J1HsS?XU z{tzO|5c%bgmIQXksI~MJWA*4Hn~1>MXXz0f2rt%cy-~**RjS2-HM@?0X@z6XDmB}& zJ^p4bXs)r-!97oKN*uV52e`hP_Xe3|T347}i|RCoTe=n=KPIK|yO}_tBR#bUCb7D) z#UHamT7cJT*g!ZzY>_D?>C@&hQn+OCMXb}T1$Cndi#7Q)5%BU4G?g&FPY7_-o8uGy zt}YgKbYXZ?Nf%fy8!MHBPS-Fib0WHJ>#MokUL=f|7*w^sskR&8u}Q`Qp3lXn?5mW` zR1(G`r7sXYWI`c@q)kvta-<2}<(g2XaDvF8ohH~LbXieTGcIY3gPJNm6pGoIgp=N& z|6rUHjzSHg%Zi%)$<)BtRm39EzOLp=$4lm_rM|$uEHJHz7OvC!j59nwNr@42fkcJ9 z%$uIlmx!o2k|>-tEwVJjj%wJ%^hqWApCf6)F;k9DSgi!gK&wJqI<;hM`8iTnbUKTb zU8UR6uomDr?U!_A^76FeQ`qaxL>}!|U{qDq3VFSVF0WA1h=rQt6Q>ceAbWaUk@S+z_e#?XT~eJqEP=3$&yo@D=HW*XTt*L%U0klR{YtXPvnEJ> zl|bma7#xCu+e^dYR@4-G8LY%^2OnT+{RBB7^W}tyT>!;m^`Vf>oxZNz!-V*6Bw|=K z7qL%YZT1;&`MHu{1ur5$-Do;9dhaE?kV=kEx;BaTjL3caTsc3}Bw8#=v9M)`D>wb= z{NB{_dd!Uidj?V0?U@nxJ^1Q4PjaioLCF*^O~>nr-XNEygPh^%Wz6f-K^mDMwU)Hh zZs`p&Ewvx@2AP)H@#jlEmDto>Q1w=j%jhY^3SUley2>A zxENMqGvQF|e;kLShe8Io?WH2@&uIS{JCX&WW!WIQ@&YN1OcY(84Wc!Kh)!S-tKw>* zmK(i8Pbz!k0=Y!#JRAo`hUD2e8602g1e5UQ3DcTz+N}16qm1^rV8=|L( z9)(MnmNT$I`ICCcE{?VDCa7$ZWKucFk7L!-+n+TV!O|}0M>B$@UCWl(Cr$dnOnL%u}u?Dyi8DvnIb=$S;t0CmfA2^j)q8z;LbqB zR;5RporWDLrKngbY@94-L6J*>(zGsPeag!cogIZCj zxQgXpEN7csHDcyE-Kf$c(S@4P#Iy3Sb(wKwyH18Fxufc_=ut z;^oH7II`kp6XCd0YAdFk=Ed(=+-P!|vznUEdqtBKN7FBrQb|uuR!p^~KqG~FT1<8H ziY6C9j$`SKc%f_rc}wOO0p4kn^oerb zaWz+MalSU~-dgJkP+MPBVYZ~A6I-Acr%8`RE(JG6wSlllbylhB0Gf1s%u*b$on4d^ z3F9;fxZ|FxM@3dxn+PkNog#h%R@X;$|J?&;Di5`}NXnUxn-HZbw<_I!roecD;OXcT zcM=JB4~3VS5#X7c1YZ2<`5++6G#)z{O1bhCf_-thd<_Ea&vS3)YQ4`tFJFUzH7Cqdv5qgtP{po3^%`|sv|F<;>fFSA@688cv!9Pn7H>N zQ9p6-M{0e0%fZ8_@BHf3x72#iaPv!nFOdZPHYRiQr*=6m^>3qbKndE*2)~DNw|)in zYcGh8Bk>d7GJ<#eyD3$FL3cO&WyB|PmCnvJQZDW|F8&n-aXGHoAqNxmco;hZ{GM*| zDRcXGlV=CvZ>QYF@1cGk7tWQBf>)J)isZI4cB({bMqLhLBYkGLwaLVrT8Fm?d#3vc zx=iYbc*BB&bp)$0*{~)s_=o~w0I*)6gyMA%UZdiBgeQXBL^KQBL`h5BL|%*BM03mBL^QSBL`n7 zBL|--BM09oBZnMNMh>~4j2v%$P)3e~@{2R1tbYkU<^-F#t;1y^wG+snLbNnf;wlx6 z3bzYzd*?DH%mzLfz|AHcFP_-qObJ(|i02Wl;WtAPaFwB3a8T!5p6C<*)Fp(Mf=a^x@vaPVX{K6iy++q*(Wq`T z;X4~kKAIAbvM?nTtx39jFM(lp$Hrg#bO(gqROuEEIOAtZs*D`QawWBP@CZyPo+IZl z){?XHA2%-OUq0gYW3#=N4&Gi-cQ}7k{S$ZI{q(lg6SmLUAGl=8KRmVb#yJf?xwG== z{Ja5=?!KYvp82noZp_bby5j0%U#;mnb@g-SJ3qT?%)kEhvExVW=f+ojcZ%<^@{=!p zvw7W^<8x!bDt%`8sf%WQ{MLUT-uTjl-?zTG)0rCBdjI9to||tzzHiSn=Pv)}Nk_kJ zU46@i+fJUk@xW_`LKmKF`-VTUY1)+H{RhiVHt)-u^2mAHzA|Sos6MgzK-IUC-}~yg z^Qm?Bx?5jAynkKWwfdt!J+Z!UcB${N&mXi_?)l(guzmRZ!=Ics_WSlXv*z72W68Pi z?HIY~nk~28eeJo&e?IHAjjxoi{ru|pmh9YmOW~#|Z@e?>o`+s5Khb`2Md8=KyZP=N z_Z^%3`_g^)mE3jpUHy;V_sH?}_R(46K6~iU%5{_G-qru;wmq{Rt~?p|H2RC@{&wlV ze6gGz8~f%@4*mMz#-Gjn`?=VA zecE6WL~_E#Q zI&N7>i5nx!@ptc*e30DQLLn(1`t4!tzf|~+4I2cXZu^Ro5-DF-?r-cCe7nEfL!kpI zyvOZFdFSrkN%Cmlu;I6A{}rK-8|#aHo|2M-YI|o_SJLnH-MfW;xcFCW*zk$k-xCT6 zeRA77rxK^ZwB zEtHYt1`}oE_|g((=jPDkJw$896q9=z|;|Fr$ndXA3AJ zN2G@`a(rfjGIBhFMHx9FL6ngr8bvuNJye=7WusJ6=f3C@2Ja7wK}<4u`3iUfmU9QJDwZc_KtG;;q$U)jq`^u z2xjAxB}zk8@r){y5Ks*H$v3E1d&n@yOZ|X(Fap}3P-rn~Qu=wik=h6YR85Wqg;hs# zd4C|=v4-Pi5~U=r4iN_IYvfqsxDU_TDcEmV+)oi%;7B`cj?C-A|;@31=V9CLx*M5Egn-iG>-E-#axd_H+5Aruzv#`itYj zhIsViN>`+l6;kyPOXSki+sZ|rN?D8jT5e@5jMq@&z>3QCA?yPaskU0`04!6UtHHI8 z@7f`cx}f7BO*fpInk=oA<+wcrb$>@=B`sH=-%JhQZ)lHK!D0Eb_!R|uaN^~!kW(oR zDk&wY(xp{$ZcppIt&6E=VQo)zy+4=*x~FdWLf+LS6}DDMeLejLv+ek#;v|9h{pIJ8 zQr{dYAUajW>5TiJIh(7ZQI#gQKqcFW% zN?v)oQyTB>+}%y8v}3MZ9&q9X$)AzccCOqe7YWRC{42bi_$OjwjXVJ> zL@7y=KTf6?$7NZ3?&W^+dH!6UrP*qpMPdwUQ^yC-Eg*Yd`@C8Z7}U>OLNvkPjZy@$WfrEh1&B61b- zDW$^zR3^19q*erPdGY^T19lr-Z}NJJr#afHwKekG7_n8p&{BM!8`p;TtUj#t8x}ti zOx-ujbYlA>L*IG%K;YSRU*A6V=)|=IhW~HrFO~jy{T(Y09DR4)7l(%)jNNtdkpBa( CO_Y=X literal 0 HcmV?d00001 diff --git a/scripts/vr-edit/assets/create/cube.fbx b/scripts/vr-edit/assets/create/cube.fbx new file mode 100644 index 0000000000000000000000000000000000000000..530122b16efab5be9127898ba6f25bcf7d28872e GIT binary patch literal 17696 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 literal 0 HcmV?d00001 diff --git a/scripts/vr-edit/assets/create/cylinder.fbx b/scripts/vr-edit/assets/create/cylinder.fbx new file mode 100644 index 0000000000000000000000000000000000000000..250ce66773f3f970ef26c58798ac070956746bad GIT binary patch literal 20240 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 k*{AMK^Mn_F5AMHJE literal 0 HcmV?d00001 diff --git a/scripts/vr-edit/assets/create/sphere.fbx b/scripts/vr-edit/assets/create/sphere.fbx new file mode 100644 index 0000000000000000000000000000000000000000..b7a5a32952823de483a5cf4eaf26263339d95ca1 GIT binary patch literal 29312 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 literal 0 HcmV?d00001 diff --git a/scripts/vr-edit/modules/createPalette.js b/scripts/vr-edit/modules/createPalette.js index 91bb7f5db8..1caa6de854 100644 --- a/scripts/vr-edit/modules/createPalette.js +++ b/scripts/vr-edit/modules/createPalette.js @@ -20,9 +20,9 @@ CreatePalette = function (side, leftInputs, rightInputs, uiCommandCallback) { paletteHeaderBarOverlay, paletteTitleOverlay, palettePanelOverlay, - highlightOverlay, paletteItemOverlays = [], paletteItemPositions = [], + paletteItemHoverOverlays = [], LEFT_HAND = 0, @@ -101,35 +101,55 @@ CreatePalette = function (side, leftInputs, rightInputs, uiCommandCallback) { visible: true }, - HIGHLIGHT_PROPERTIES = { - dimensions: { x: 0.034, y: 0.034, z: 0.034 }, - localPosition: { x: 0.02, y: 0.02, z: 0.0 }, - localRotation: Quat.ZERO, - color: { red: 240, green: 240, blue: 0 }, - alpha: 0.8, - solid: false, - drawInFront: true, - ignoreRayIntersection: true, - visible: false - }, - - PALETTE_ENTITY_DIMENSIONS = { x: 0.024, y: 0.024, z: 0.024 }, - PALETTE_ENTITY_COLOR = UIT.colors.faintGray, 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 = [ { - overlay: { - type: "cube", + icon: { properties: { - dimensions: PALETTE_ENTITY_DIMENSIONS, - localRotation: Quat.ZERO, - color: PALETTE_ENTITY_COLOR, - alpha: 1.0, - solid: true, - ignoreRayIntersection: false, - visible: true + url: "../assets/create/cube.fbx" } }, entity: { @@ -139,17 +159,10 @@ CreatePalette = function (side, leftInputs, rightInputs, uiCommandCallback) { } }, { - overlay: { - type: "shape", + icon: { properties: { - shape: "Cylinder", - dimensions: PALETTE_ENTITY_DIMENSIONS, - localRotation: Quat.fromVec3Degrees({ x: -90, y: 0, z: 0 }), - color: PALETTE_ENTITY_COLOR, - alpha: 1.0, - solid: true, - ignoreRayIntersection: false, - visible: true + url: "../assets/create/cylinder.fbx", + localRotation: Quat.fromVec3Degrees({ x: 90, y: 0, z: 0 }) } }, entity: { @@ -160,17 +173,10 @@ CreatePalette = function (side, leftInputs, rightInputs, uiCommandCallback) { } }, { - overlay: { - type: "shape", + icon: { properties: { - shape: "Cone", - dimensions: PALETTE_ENTITY_DIMENSIONS, - localRotation: Quat.fromVec3Degrees({ x: 90, y: 0, z: 0 }), - color: PALETTE_ENTITY_COLOR, - alpha: 1.0, - solid: true, - ignoreRayIntersection: false, - visible: true + url: "../assets/create/cone.fbx", + localRotation: Quat.fromVec3Degrees({ x: 90, y: 0, z: 0 }) } }, entity: { @@ -181,16 +187,9 @@ CreatePalette = function (side, leftInputs, rightInputs, uiCommandCallback) { } }, { - overlay: { - type: "sphere", + icon: { properties: { - dimensions: PALETTE_ENTITY_DIMENSIONS, - localRotation: Quat.ZERO, - color: PALETTE_ENTITY_COLOR, - alpha: 1.0, - solid: true, - ignoreRayIntersection: false, - visible: true + url: "../assets/create/sphere.fbx" } }, entity: { @@ -205,17 +204,16 @@ CreatePalette = function (side, leftInputs, rightInputs, uiCommandCallback) { NONE = -1, highlightedItem = NONE, - pressedItem = NONE, wasTriggerClicked = false, // References. controlHand; - if (!this instanceof CreatePalette) { return new CreatePalette(); } + function setHand(hand) { // Assumes UI is not displaying. side = hand; @@ -234,45 +232,32 @@ CreatePalette = function (side, leftInputs, rightInputs, uiCommandCallback) { var itemIndex, isTriggerClicked, properties, - PRESS_DELTA = { x: 0, y: 0, z: -0.01 }, CREATE_OFFSET = { x: 0, y: 0.05, z: -0.02 }, INVERSE_HAND_BASIS_ROTATION = Quat.fromVec3Degrees({ x: 0, y: 0, z: -90 }); - // Highlight cube. itemIndex = paletteItemOverlays.indexOf(intersectionOverlayID); - if (itemIndex !== NONE) { - if (highlightedItem !== itemIndex) { - Overlays.editOverlay(highlightOverlay, { - parentID: intersectionOverlayID, - localPosition: Vec3.ZERO, - visible: true - }); - highlightedItem = itemIndex; - } - } else { - Overlays.editOverlay(highlightOverlay, { + + // Unhighlight and lower old item. + if (highlightedItem !== NONE && (itemIndex === NONE || itemIndex !== highlightedItem)) { + Overlays.editOverlay(paletteItemHoverOverlays[highlightedItem], { + localPosition: UIT.dimensions.paletteItemButtonOffset, visible: false }); highlightedItem = NONE; } - // Unpress currently pressed item. - if (pressedItem !== NONE && pressedItem !== itemIndex) { - Overlays.editOverlay(paletteItemOverlays[pressedItem], { - localPosition: paletteItemPositions[pressedItem] + // Highlight and raise new item. + if (itemIndex !== NONE && highlightedItem !== itemIndex) { + Overlays.editOverlay(paletteItemHoverOverlays[itemIndex], { + localPosition: UIT.dimensions.paletteItemButtonHoveredOffset, + visible: true }); - pressedItem = NONE; + highlightedItem = itemIndex; } // Press item and create new entity. isTriggerClicked = controlHand.triggerClicked(); - if (highlightedItem !== NONE && pressedItem === NONE && isTriggerClicked && !wasTriggerClicked) { - // Press item. - Overlays.editOverlay(paletteItemOverlays[itemIndex], { - localPosition: Vec3.sum(paletteItemPositions[itemIndex], PRESS_DELTA) - }); - pressedItem = itemIndex; - + if (highlightedItem !== NONE && isTriggerClicked && !wasTriggerClicked) { // Create entity. properties = Object.clone(PALETTE_ITEMS[itemIndex].entity); properties.position = Vec3.sum(controlHand.palmPosition(), @@ -281,6 +266,12 @@ CreatePalette = function (side, leftInputs, rightInputs, uiCommandCallback) { properties.rotation = Quat.multiply(controlHand.orientation(), INVERSE_HAND_BASIS_ROTATION); Entities.addEntity(properties); + // Lower and unhighlight item. + Overlays.editOverlay(paletteItemHoverOverlays[itemIndex], { + localPosition: UIT.dimensions.paletteItemButtonOffset, + visible: false + }); + uiCommandCallback("autoGrab"); } @@ -303,7 +294,7 @@ CreatePalette = function (side, leftInputs, rightInputs, uiCommandCallback) { return { x: COLUMN_ZERO_OFFSET + column * COLUMN_SPACING, y: ROW_ZERO_Y_OFFSET - row * ROW_SPACING, - z: UIT.dimensions.panel.z + PALETTE_ENTITY_DIMENSIONS.z / 2 + z: UIT.dimensions.panel.z / 2 + UIT.dimensions.itemCollisionZone.z / 2 }; } @@ -352,17 +343,26 @@ CreatePalette = function (side, leftInputs, rightInputs, uiCommandCallback) { // Palette items. for (i = 0, length = PALETTE_ITEMS.length; i < length; i += 1) { - properties = Object.clone(PALETTE_ITEMS[i].overlay.properties); + // Collision overlay. + properties = Object.clone(PALETTE_ITEM.properties); properties.parentID = palettePanelOverlay; properties.localPosition = itemPosition(i); - paletteItemOverlays[i] = Overlays.addOverlay(PALETTE_ITEMS[i].overlay.type, properties); - paletteItemPositions[i] = properties.localPosition; - } - // Prepare cube highlight overlay. - properties = Object.clone(HIGHLIGHT_PROPERTIES); - properties.parentID = paletteOriginOverlay; - highlightOverlay = Overlays.addOverlay("cube", properties); + 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]; + properties.url = Script.resolvePath(properties.url); + Overlays.addOverlay(PALETTE_ITEM.icon.overlay, properties); + } isDisplaying = true; } @@ -376,9 +376,8 @@ CreatePalette = function (side, leftInputs, rightInputs, uiCommandCallback) { return; } - Overlays.deleteOverlay(highlightOverlay); for (i = 0, length = paletteItemOverlays.length; i < length; i += 1) { - Overlays.deleteOverlay(paletteItemOverlays[i]); + Overlays.deleteOverlay(paletteItemOverlays[i]); // Child overlays are automatically deleted. } Overlays.deleteOverlay(palettePanelOverlay); Overlays.deleteOverlay(paletteTitleOverlay); diff --git a/scripts/vr-edit/modules/toolsMenu.js b/scripts/vr-edit/modules/toolsMenu.js index 61ba482bf1..b6f9ae0daf 100644 --- a/scripts/vr-edit/modules/toolsMenu.js +++ b/scripts/vr-edit/modules/toolsMenu.js @@ -143,9 +143,9 @@ ToolsMenu = function (side, leftInputs, rightInputs, uiCommandCallback) { properties: { shape: "Cylinder", dimensions: { - x: UIT.dimensions.menuButton.x, - y: UIT.dimensions.menuButton.z, - z: UIT.dimensions.menuButton.y + x: UIT.dimensions.menuButtonDimensions.x, + y: UIT.dimensions.menuButtonDimensions.z, + z: UIT.dimensions.menuButtonDimensions.y }, localPosition: UIT.dimensions.menuButtonIconOffset, localRotation: Quat.fromVec3Degrees({ x: 90, y: 0, z: -90 }), @@ -161,7 +161,11 @@ ToolsMenu = function (side, leftInputs, rightInputs, uiCommandCallback) { // Relative to hoverButton. type: "image", properties: { - localPosition: { x: 0, y: UIT.dimensions.menuButton.z / 2 + UIT.dimensions.imageOverlayOffset, z: 0 }, + localPosition: { + x: 0, + y: UIT.dimensions.menuButtonDimensions.z / 2 + UIT.dimensions.imageOverlayOffset, + z: 0 + }, localRotation: Quat.fromVec3Degrees({ x: -90, y: 90, z: 0 }), color: UIT.colors.lightGrayText } @@ -401,6 +405,7 @@ ToolsMenu = function (side, leftInputs, rightInputs, uiCommandCallback) { SLIDER_UI_ELEMENTS = ["barSlider", "imageSlider"], COLOR_CIRCLE_UI_ELEMENTS = ["colorCircle"], PICKLIST_UI_ELEMENTS = ["picklist", "picklistItem"], + MENU_RAISE_DELTA = { x: 0, y: 0, z: 0.006 }, ITEM_RAISE_DELTA = { x: 0, y: 0, z: 0.004 }, MIN_BAR_SLIDER_DIMENSION = 0.0001, // Avoid visual artifact for 0 slider values. @@ -1160,7 +1165,7 @@ ToolsMenu = function (side, leftInputs, rightInputs, uiCommandCallback) { } if (MENU_ITEMS[i].type === "menuButton") { - // Hover button. + // Collision overlay. properties = Object.clone(UI_ELEMENTS.menuButton.hoverButton.properties); properties.parentID = itemID; buttonID = Overlays.addOverlay(UI_ELEMENTS.menuButton.hoverButton.overlay, properties); @@ -1877,7 +1882,7 @@ ToolsMenu = function (side, leftInputs, rightInputs, uiCommandCallback) { (intersectionItems[intersectedItem].command !== undefined || intersectionItems[intersectedItem].callback !== undefined)) { if (isHighlightingMenuButton) { - // Lower menu button. + // Lower old menu button. Overlays.editOverlay(menuHoverOverlays[highlightedItem], { localPosition: UI_ELEMENTS.menuButton.hoverButton.properties.localPosition, visible: false @@ -1897,9 +1902,9 @@ ToolsMenu = function (side, leftInputs, rightInputs, uiCommandCallback) { isHighlightingColorCircle = COLOR_CIRCLE_UI_ELEMENTS.indexOf(intersectionItems[highlightedItem].type) !== NONE; isHighlightingPicklist = PICKLIST_UI_ELEMENTS.indexOf(intersectionItems[highlightedItem].type) !== NONE; if (isHighlightingMenuButton) { - // Raise menu button. + // Raise new menu button. Overlays.editOverlay(menuHoverOverlays[highlightedItem], { - localPosition: Vec3.sum(UI_ELEMENTS.menuButton.hoverButton.properties.localPosition, ITEM_RAISE_DELTA), + localPosition: Vec3.sum(UI_ELEMENTS.menuButton.hoverButton.properties.localPosition, MENU_RAISE_DELTA), visible: true }); } else if (isHighlightingSlider || isHighlightingColorCircle) { diff --git a/scripts/vr-edit/modules/uit.js b/scripts/vr-edit/modules/uit.js index e9ba08ca24..8bc9cf76e4 100644 --- a/scripts/vr-edit/modules/uit.js +++ b/scripts/vr-edit/modules/uit.js @@ -36,13 +36,19 @@ UIT = (function () { headerBar: { x: 0.24, y: 0.004, z: 0.012 }, panel: { x: 0.24, y: 0.18, z: 0.008 }, - itemCollisionZone: { x: 0.0481, y: 0.0480, z: 0.0060 }, // Cursor intersection zone for Tools and Create items. + itemCollisionZone: { x: 0.0481, y: 0.0480, z: 0.0040 }, // Cursor intersection zone for Tools and Create items. - menuButton: { x: 0.0267, y: 0.0267, z: 0.0040 }, - menuButtonIconOffset: { x: 0, y: 0.00935, z: -0.0050 }, // Non-hovered position. + menuButtonDimensions: { x: 0.0267, y: 0.0267, z: 0.0040 }, + menuButtonIconOffset: { x: 0, y: 0.00935, z: -0.0040 }, // Non-hovered position relative to itemCollisionZone. menuButtonLabelYOffset: -0.00915, // Relative to itemCollisionZone. menuButtonSublabelYOffset: -0.01775, // Relative to itemCollisionZone. + paletteItemButtonDimensions: { x: 0.0481, y: 0.0480, z: 0.0020 }, + paletteItemButtonOffset: { x: 0, y: 0, z: -0.0020 }, // Non-hovered position relative to itemCollisionZone. + paletteItemButtonHoveredOffset: { x: 0, y: 0, z: -0.0010 }, + paletteItemIconDimensions: { x: 0.024, y: 0.024, z: 0.024 }, + paletteItemIconOffset: { x: 0, y: 0, z: 0.015 }, // Non-hovered position relative to palette button. + imageOverlayOffset: 0.001 // Raise image above surface. } };