From b56c78d36c96f5c3196915843e8d6b02222a47c9 Mon Sep 17 00:00:00 2001 From: Elisa Lupin-Jimenez <elisa@highfidelity.io> Date: Fri, 23 Feb 2018 17:06:29 -0800 Subject: [PATCH] image has correct orientation and is collisionless --- .../meshes/images/default-image-model.fbx | Bin 51420 -> 34348 bytes interface/resources/qml/hifi/AssetServer.qml | 7 +++++-- .../qml/hifi/dialogs/TabletAssetServer.qml | 9 ++++++--- interface/src/Application.cpp | 10 ++++++---- .../entities/src/EntityScriptingInterface.cpp | 3 ++- .../entities/src/EntityScriptingInterface.h | 2 +- scripts/system/edit.js | 7 ++++--- 7 files changed, 24 insertions(+), 14 deletions(-) diff --git a/interface/resources/meshes/images/default-image-model.fbx b/interface/resources/meshes/images/default-image-model.fbx index 641a7f82ebd0a67a9364c21867bad4a02d246048..781b01fb0fb66afda96da659343b42c4840776ca 100644 GIT binary patch delta 3568 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 delta 16782 zcmd74c~nzZ_ctDJK<iXQK#`$>LM;L!^OUp|K_oyG1q6XYBr%2%LYPCiZ5^1C>Q!dQ zQ$?s6Knw{}fGUI(nF^6a5(Xg*VhA%~2*bO;4$t#`-)DV)fBw!|S&RF*`|f={`|PvN zxp$onEmgkv-nO3yfk6cbWEBE|$Uz{G9h*NFTuAs0r_DbV<^F-U*$2cpsX-tRy?+C@ zpT|XnIVnOQ5ZJ$=J6+Hr5#d2jdJqW2^WSmzAOtSty3=t81QPxieh>nI>~TQ{2crp} z?%tK7hsj;svmFxq!i>(@+o^sZzFj_B9~{)zp}#t*CNH;*-m9;6R8F40=&*Z-oIG6) z&fO-@WrI97gY6>!*ATkGcQ56)mm1&Ipx0j7vrFv)8Uon{fj~|`Adp>-K{#wscvuYF zmc4f;IOL52e)j!D@{BwLvdbeVEF6spB3#e>vwtV#A&_Xf+VuJh+rIg{$>PaR=HJq` zE9>hUTsa=|<NJEo&!_f1Qu*nj-pROaJB}VLzV(H-*YF|Q8n@@%p*YA6$$VW^4&rd+ zeeQ9OmbFnK?ru+TWG*4#MDz{IvFxK<3ol=w*5ga|9!n1`l-&@tcKDU>z0UlrnHCL? zDE#HZsm!xuqQnG${fb0PEybA>{t`&U<#~oJh55DhP-Dt{e_7w2p=0sR(~szVr+#=T zJ$DsR%T`3y9?f%J@fYiD+*pj%#5WJ>SPiv#;qZ-DwbDrUf$}Sr3H>hnjsB?11lxgz zllilq;$t86;tKL(zEdxnOM9l&9MjzpG|>?~V`~-F=1%e=*-ejU)l5ab5hKl&Hhz41 z?!zne!t}wRla$DnU*n5W{VcVjfq>;@)2DO6xZQO}s0O+*W^N0ED+=AE3#}t-kE$Ej z9@);+$_zNrn5lPqMvl;d+I4*n^y&dXHar;Tw%p$=>rccI+m?Z^$0R2l{o~d*UXj-9 z`~AXV$gB0wI%?h9*WN<=-p^hu04%H){bf;aMr`iHF87V!7TJ=ZF;)x3Y}v0Q!MI|^ z!VBnujHy%et0AL<`_7hH#rf3o(=}z+?Iv_$o-gLb*-hC<Hg;q{S0}}+`_8~dq-~B8 zZTZy@?^*yJ)Bhs+V*}y5N6}F6sM7q8W1nXrLcXDrV#gZ@Ded}I^Joseik%Id3TZp1 zQZafWr3h;47!+|~eOsgAQH2)2PobnP2Z0>?4i_AQ!i8)`R8X{2$n~ITbmE`W?10>6 zQ0?Qi=xad$$Zs?LPS=KwOJmyThs;1n?eqs1G35a<G?rG(Xj#(0=P;Y9DuSRb0DnyK zuk@5X=jKqm^bO*n32p;*JAVB7Uuj0U2@QjvX#}Lg)){pp`}lR==|3IpQbn6ZTw97W z_$9Y~J<t4)*L6VYF`ng2TlH`133Zn<yas=-z!)`5tN?+MVG~d2x5N)a&CdV2<z~AA z)%ZS9W1#rf{2Z6_anHfZ8Dlj!^@{k*oUH3Y$D0S;S7%+UztJvQzg75iD-2dV7Z=oG zaZ}ACcloQl6M5VG3!k!v>o*Ep;`D|eFDQQ_jjJ`h-+T+#ed^4T#53ZS%TMc%*T2Xh z`akcX5hfm+0tvR0t0qwexsU7pKY4FxGYOr$jtU~66aI8qH)P9U4R<anLm-eBj!_AT zUmWW@_OBnpolf?h?E6>O$@fw8K7-G9ZU1SndE<8tdo5m{f1GOG<RwbAcx4a5&Doc^ z@Ws3%br#$M$SjE?q1CJ-4tDkXU(TrjK7mhz(tQG+T=DQh6i4u6Jv)zLXH)#KOtwdT z53)uhQV>*OCl#RTx5Y>OaV$Xt|5j@~ycMsP8~z53%8h7`QN0%49OQW|qAdcb8Z7h) zsS%YBCyDQWanvLZJw>fcDS+MLYv)pyw8>|RwfM@Bx;jQTs#_Vb_>7?Aaak@9bVg{) zulj>HgzDjg-~W?wx4Q;lgWMqy2*l}oFdtziAM-ufjW7fp13$@B%RwLtuDCF4K=42L zs(35380odn4PPJn?ZCaCv@8>Eox4LgXl+@!%doapqp{hAZj<;ZWxq#g#e0PiBtG=Z z^=;pN9HQNFPRPDsa8P#V{Y_TXxc<}^K7P2EVb!I+mX?;9UB+IsF(o3gKCT{EP1pMF zSY<T+>D3+e*R(M1Fjdb1RsQ=cI)LxTv7vtWGGx}1dT+$7<)KzTH?9`+7mW>-NYD0H z{?WnibPl9UW~A3}ivM^!_Um^=eujocdYJU6Ui2$7)dPmkO{I}4-lJA4I|hfm{FkS@ zjMr1=E-VI!Vxd1+prHkWVe$IF{LHcNQ~d_<KTyD12UHgbq4W3OJ@zx)Kh>#l^|j2U zp<DK>J7XxcYUeT`4AfHjY01j+=B+P3de^O|mG|x|{rKGhW7&;`lX@00dP`Q8yo7vu zx$EBCh<-%f;SucIp4kPDmua@&YE)H5Damdzf^YHeq$s#cm$miO=W6lzOThhKS~ccd z(y%6~!|v_5l-_IDrg(nG)wwUtVES1s{Tk`Aer4t7XN!qn#6K&a(jUt*pFgSU`IzZ{ z12(~7v(c*?qY~vItK_tXR~vFFIjEM+A^y9)M*b54`{4mGL1E{DgRns%;a5DIHigpU z0yiT?{?|Y-`1%p~fxxZMP(gro*UbQC(5Hv*$wMIWS3It-|2cndZ>?h3hjuqEU;O;e z)In`+C;jcpn%{n*^5glB9~g?OXKx=r{0&L*Q2DMKkKZjl`&uof@!Lng>pWEX>0xjc z!(rF4JKn!<+jx00Trv2km$74Q7I+mdOMSA}2GyRGweQ$v_eGf2zGJ|Hyit!8k9wpz z*CHgX&UqksdbnsF>x<jf&d=YY3l$q)h!ej}SUg!`8^s<xy?j2ja@l=SHSJ15i-gvs zj~j+gDQYD+)~y=B;*ygT!uC^F!{`PxZxpV<$!}Q-g0TLSLENfTauC|&zuZIYXzC@- zV14FWIy9e&J7w=Hfzv)>6Z{|IK1sY=+;R%{XqXmsdC<9J{ia^s+*ED-B8C=A(AxMz zuic*z8>Bjwq&bbtiyoO(PNDePuKftRD@(@!RGM>~v}QGPsb{(Mr(CYqa0Bl2>a>Lo zcloOb>C!jA5Nu|NO&nH8sKRy*40Z0?cIYvE#B;s7f2|Zy(&Ex%THCh8C(QT^RRpYz zHO*hDrWy@g1*;=x-vHfrL?wXej{_Y3{3B|3|MX)sWqYIfjzw1Jl=0MC{{=1l7<>5} z{((CyN2t(4FnSY9>^}#Reu*DEu)?K$kSj4yxJEJuCT{grXuxJ0wBo;?f33xJULJV{ z7)QO&SpuS0p0#Sl+b@8N(?@d;)Q89W0AKpAq^!QZrMdJC?2JFFV->HpE@u}$(B;1r z6#I<I!mWlw_lco~JqgtvzaD@#`7a*LjGI6$4e7m;*0dYN<6Y~2I-)R2kqzGhj0*jR zUa{QlT2;p;QvS6%)Ms3=@!K>)>sCu$JfAv&>j%bqUr3Lxq1JD%!)1L#3ybpWtLvfd zwm<faeK@;zrXGOU^v8=Ce@3_%0)Z%8@%YcBv41Pm8?;|>SNZ<XolZ*nPPF~k1vMAH zyYzK+O-+mZj%5ig>aGbL+0G`E?a{gSy9R8j+32&SHm%7RM?lded?qOl>3;`i`pZ6- z8)uaSR-@?0dHb!eqHe{TANf878@Y7es&=*Lfim>Pg(H~jKVMKAk9+cylIw1pZ1i9% z!LV{T8KZk-ILr5C^zodKm0cF+bSqdvsp?_lgFoV-ga&`zB}dJ(@VPXj<7eRd5ABU# zf9Ym=A8yKS{M=dH?8;?#w|yrHUcfbGj!);=saOvEuxR?i?V!sk{O`t$Q?qwfM{AC` z{yo<>TO$gD1s#`{Lv7A#EmhP%v;Uv`fBsK&KS;iQ^uTTi1oCanpW6!nwK?(qD*lwv zhCm>@T>`>`!q5T11oY<R=DvP&)r^)yT>t+2?~iZW#`yWkfec^B?%P}9|1>-FKgM@# zrJk*fGmiqN_o>SJ-2kxxs`6$xK=lA!`HMF|97<2V@e`PH0~|nV%U65?PouXa70}>B zz?bqmXb^|`#v%aoX&0{Z=@sL8P%!*lcA)yEb@#mx2;{rqfRG@FoXh4N_w5h}#3hJu zBNGi$LR964Z-Rq+Rpk|Kf*Loh!H}D3@;)~~C=?3*e)Ew0FE_!9SbKT?O)%c{H29mw zcJK%N{c;%aJG7eoQ4IJ8{)oIW22>0=B!3wL%7q!KzQz8Jp4|UIwi{f=Xv&vjHVw*o zg2usz<&Ou0uR_j(<X~0#*x)VGgTZR@?ZF@vY6DtgRpkzW-(k<mU%>vG<$dx5?3QUV zcFS}DcFQyeyJflr|H-uOKTg1%d9Mftha8hT0g^)w%NygjsAh+NuR^@#r$ayu++}%t z+@EX@fWP5($S32r82^U*%dY$~4m=xbA!h*+L+#`uz^YI?`RAeFQmCo?a42Yqw~#vy zBJpr}7yM?|<Zgf+cs2QW{8rC?!Eg3V{^tnLIPB2&-6m>Api`K>+TO5#VnM+pD2#x{ zg*YK05Qq^-4%3!%2Ft>Z%HN9E>TE$6I2LBRXBIXW27xF*AdqjsKR#0hBg2j4z6B!) zuJS(;KsLcn{w)EV`Nj@3iasQNJRDrMHwELr-36Zh_MrUraM0<T?e;%l)NnBAobhM% zb#--h(92&Bg@d2RSp9uz8UZRe*lsC^i~z4XK*0okb+!1IPfpd}e82lE_Tk?>z{`R9 zk-A66BmN7My^$a#?3nzQkz3=1kJ;jKFA_ZWwe^;X&PZ@9%nJPNz>eKtMEzgH<Z)48 zB*AJ+?se4Pv<^o92dzudf6_{e-lAn`vDtLK{v#UvJmwpD?U=vmT#xySj(i&tl#5l` zWg$8I+2-T`@5LTb*xCgS#DKQ3$JLf%{vUkaKp>ElU~KGZIS=r8>?zgy*iS;2H+|xO z4i4JdOS*v+lKCz|NI)pz1}+@zBpv!{?N7mD5D4V+OF_W_;poVq%?Cm@H=mo+^WVkg ze<N;sNzMuU7x9cdKm_faPlG=n*)C5ff}h2~9c|-34TbS$YQG#59Uc)D1h=UV+Osvy zH8<b;gQ5*XZ{Wgl-v-471si<YzCz^wl-=TK8Mnz3xES|ec&7e&V>6TN`SZaodjGrr z+CLxF+M0hs*U<s)o1ZlPqWEWb3~z>_AiLx|(AR@-Uy;C`SZD3OBn**(Sfjr#{!KiX z1dfru_+Q10;<tjVk_7%jG?t$v{p~;P_)Y(*mfrs4KZDKwZP|xM4=U+{*tjp%AI5+3 z$7cH9emN#IXe&#e4MvB;fK9Et&j6o3;6#F*abL>)&#?x-Bkhy-20(w(5!D9Z|B8>T z;r^e`d?ok8C&B-Z@$u+3{bW3CyHOMSpFsGN$RApp-+dsE|Ch(XAL9<G@4fTi2v*<O za$E5o@J$@@Z}<PVvDmWmSL?pB$yff{yI?Hoe;>x%cQ=R8;;#YzZx*W9e>w#Qfhe5C zg@gx%gkMsJ(V_9*$je!RKm1@LX9fQ7!x6Ci2cx~_=JxjASXx?{d}D3~e*WX>zkqMH zfZu*l1_OTV1>_;}%x!Xt5P3zpZHjUmjgTsc97KMboZRN}{b$>$ASb_L`?g(j|KrY% zopRf@%PZ{qTn-{Hw_Q$t`*yiqJ3rg}=p`q=O>z5<oeIYe8h>+9DM0(sF8q)8&U|~x zL|NsRz_6D(^s>&Gvj~Fkt>dN<X6CAjn+oK&Z{N0k=gwU_|5k9!_~4FjE(YwxYb*VD z?~KAPW#3*3JT(0(?4=2z^QZe~kDHpQ3_j9vzol#+equua*}F{+BCohj5dwp(eYN)S z30QUq1O9gB+W(J!j)n({dfK36cjvVHuWvx!&hh;%W&N>_+ts|81&w}mC+clDdIREY zY;2qVC?eozu<VW<ptS!NZq!;0fyJ=!ijF^Um$N9-LiP<vf|*C7*O|^8?cu8o%GGs6 zlh4-%ScC5_RrA7vnynEWFWzFs1IGu^t<x0MY7yfRQs*{lfIGkZ?Y`<Yc0^j;6ydk^ zo;XjpQz1*TcFnV`zTmpTj>U0npZQEZ**i)qnznvMR8#@fkY{!D!uwqN!KTyi^K^BV zW(iqy<B18GlBL<1j&zLMmxCtLTwmzKy)otd1G@ft@l!E-sQ`Y&^}r7WtCsO5iN)q` zDHH6M2u7Z=G@;^=r35)A<1t22qPYgFjS-`qYuLVwYR7V6B&5##*>26tvy)m_;s(Tf z$Tookj4M_R1mlG}R~URz@dBf0`UytM=d8<GMFo2<c=mb&R8fUjKjCwG1Hv#FIXJfg zK@bTM8xYsYqhw)azW=58!Xs3DLYEy<XXs<Vz(PO!WrY#XLPcgqT^mzQx2ux!sJ^;p z)br~mT22)-ri4fij!O0UH4PbFESeU?85ZiLVaLCc%8VkV>l+X)+|;}0<R0KvuRD3K zV799_77JB0Dd^ahhdegoTJ$wocE<+Ltb-w{M=XR;3q&$uDry-&C>W%OuQ%T)Ml6pM z;i;N?JzMUFKhZ{_-e{Yp_Z~LLIf3Wr6>7tZ9z?Hb`(a1Me)oL@gxL9zNTrFk2+Nnt zsQW@c{Pl@k=}mUMQ}Dw~D#L4`4qVgFr`=4Dwzms>YC<p@5T#1WeZ4gvVAMm4fpgko zX3Ce(@(I2C<)=M^tB0e#<0Nn5$9Z+23i;xdhn+PlEga&$sU<BhA*ydsNFskV$1Ikz zJh;lp<uLvswD-EVj5J_?a7$%Ht>sn3oc7f9@!TsMO>PG<aP;}CvBEk<>GW+Thdv?8 z2p-@Yl((g*zNKM|ff8#VsbHBM-AKrT`kj8d;vX_18&Iy2tX3Qe(b2N1>c~mx8Bh;w zUip$5aw?+$a0o+Na7Pa2v*~HYI(z+a$}?F!k~WHSez5e>9Z4+{Ti1n-<7VGO=SF7n z;&W$c@TIosraI$2gvuFT_kx8<3sOteXZ~e4(GL1_<_o~(g{0mc25KxS-JlI~MP5l= zB-o*y99BpLG3A^&ceUIbb40h3)*70XOc>|ihOheekM&N<RK}DoY+`b+>N0XXBC=gJ zAbSP$g83D`SK?6VEWWO7A;#|vJ>~uqve0q^GIEK8OsCuy0MB9mPV?uZ49fjAiVInm zoGE)CIu4PC%5^(2#Ta?Fh<zwih$7eC9lL{!Zr=;Ot~v=-EXljrBCSMQuSE*q4ELgh z-iU$oC2)5&8J2P!bG4+7uB4=-b-S^HoiEJBr4*u`VT!bl&}Oq1rYmOb>rg#U>m<V3 zf$NhdB~t<M<fj{u7&6e%ET)BKiD*rAfKlu@1d_ohy1>K2&Zl{0C5|?>o;7jinK2B! zR$Af4DoG>9;ZBEGJnW$?S{$~hXpT<9{6aI4&Z0|&OsaqI2hQb~yo;lq<LRBw!WGjT zU{_WkR<YeHD>1N}fpYf1z?{-{W#+>_wqBC*Fiz!;oby?KWF?L^y>PHiPXjPy9))J# zqI82ChS9{vYl7o2$3h>Xkz|pmCtNGma~nf=@m;)lM`SVDc3g6&e<?E@@yxaj(N>JX zxIUx_;_s=^O%z+R5_Orh@tbX^apQt})-PKxNhuL%^HS*}T|{S6xnqi2gI7{km(Eq{ zZM!r5_#g^d-+`*tVg%Sl%-ywq+(z@@<>_B7U(+^AM+P3r>dfTaM+O=TkWk|S@!kl> z95qgkl8;9?14*CH?7EtibUj(XeS$Hk7C02No>e;4X5__t%Rq>YPd9q&J-BCl%HE~u zLgQxNT1>1>&U6TyX?%$QtEDz>-Jo%?u)2&EQ+888fAV~f8MUA(wXtzF=<e6xF_<2p zMA5>Xp0S-A%kR+4BLvhB3{oeCU)}9*0S;&JV9HUw^D8wM-cPrInpR8Rouvbcr(eqa zPP#N<*^j-1gUuOkmNbX5MR>i<QVI&x`mWTdI;;6jWbLTz;mBM^aVa$>o3}tsm0_L$ z_fT!NfjSTD?V(YU8lmAE6Yq#RAHbVyBC;MY6&BLPXIPedjjK34k=*Q>*h$NHXN`&@ zdO|opE|ypf`!X%!fdVn_<WJ#z_`3}VYekDW)8saWHcw_Va}s$m4&~gd^JKz@)bJ4f zA4g-0l<bZ&ur<g51cQC8Qd}}XQ086`gbsIgs%Ea1S$hwB**V(xG4wi+OKf$&8^L`( za|tE8_*$<iFr3StZDURm-bD&Y6;VQejFMM!Q0B*1>867>gGv}(2r_8=$Yi)Khci05 z`i-9tu969tt)uP_%q+k3K1q`DHBKh?oP=prn3yM0#qbv3M&AacG2}TJF}_-jZb=J7 zxsjhQvTU9#MiaLSfbQla__5;R*Rju&1My<xj-m%{c9yPBQ7Z>a6!e**eEsrp-#(1D zdpUN|a;;3wv6_+B<dnFojXuAszss=mNf?qNOD`wo>ed%xVVJ1V<1T9rJ;dC2yUBL^ z2(_PSXx&kgjgQ2OnAb9A+|Sqfcrdb-Fz7Bb7eS|@2^2VRc-*2Eqdpo4UEj_5**0sK zoKr9Ew^*xQ@Uym%rCtn)s==8LJZ-zdAsc0wNxX+yYzb6wsjR@Uq^|A(DdT3(;$8x4 zav2M|gnF!Xjjs`?cPCIA;e&2MqEc5JHT)(TdStj*j&N}X{bUG{YY(4qY{eKGt0Yd7 z^I|>%&xoqwYh7W|o`wFY7QB_zr?|a;b#eou!q?p^#O9xrfhihiWPrI-vKZPtPo+Ep zDu@96dlpi_eS|5=v&c$uGc=|(j&nE@p}4hD39GVf(#8Y+&f@UY)h=wYkyoC98jqJ2 zPF0&rJAqz=eTiE|i!@d5F;5P!Y(P|j6kS==+i`DEk$x4eG2m5pH|;tDmyRhW3EVok zmmM^lD+U$~x~Gc68hH#BeBqL*$V^n=nmukEU0A!^Q*%9%+{bEmD@tc1<vz$NE^@Ya zpkF2b+7&Gx9BWqln15}pMViJtmB)>EHM6QI-beTUb;gJ2QDc41toV$dc0RCXV63E^ zl|+3-CrZd1da|Ih)I8^0d_g~#gyN)*OQ+}WN~kZ^>IWiwo_n>V5aERTde6_7d#19n zu30H)TeE`3*}RK()PN$hmPmtQyywn%BN*L4U(G|eb7p>iArGky{rsim^e{X5BryX0 zS~sSZkVXn0gc8`_N=wFoD8;It$uq9bl9w)+`!RxCvHAL!Bhc8JFG~CBBUZ_7(;JZe z3$9vE!}n{StPoip5z%prvL*I1mTEUGstv^5$U&R)`Q4X$BSRXTU1a&d^Ga50tN(Ex zga5#z_DYwwX<GQhF&4k4%0kg5ljYG}+QRqB%(GlK&>MU*st26M*OX#s6|{JvVVakR z&=q6G*ONmk%-NQ6aison9x_mut|%!jfUkTUm)Q6|A-L3#<~dgr8QOi9GxHVAsJmzQ zO*(ET9Q*x*LSoc@E-TWd`{e|oH3GpX#F*uT3rw>r94@#W&K4H_k@dZ#X0mihGAY6| z2Mtx`O%5#sHp<fV)~j>a(>yGwj+C~IPZqdD&>B}(Vp%vMa^F-m*C4hqa|lgqf5@y) z*4EWV>N$yqtBDC^k&>zM=Q&WjGY-z<_v;PMCz4B4l9I;MwXalMnVXt4s&-Uup0I4+ z!&!$7uhARBeedqh|JHH?l7^$&HpUYXX((rxI>7IK4@;VHLnvZiW7LfqL<<&c85<A} z?O249NU^~2d5$o@TRK%~JSdz*ogg4fGG{TfV&mBbxJ#HloMVSGHtBd(YVywFXh|PS zWVNq0Qa16fG@JBL$}ZB(U*=9P+Q*8m#n1d1?^jGe6pt>=C(&BP#!7=GqJpNfabw^! zi{OT8iJgcbFuBfzhnM=DEEnHwqWg4VWfy(okK|jsy~|(rX|)|oi*_xhV%VM)L!uXw z=>^SO_t6!i#cRyj`2IbUq=!k(*Sy=x%g5)a_p1bJwaoqj{CytNmf3uRd7*V--qE_T zwbj#4k>*gQo<V61X%<LjlDi*I0`o6j@M6;}njcO{Ni{JuiJzdMN6v1nT#IVnfK-xS zVMk$K%w98Jq%<e<$a+bFc7yyb9_0eu`=muOPtOG*T;O}GahNscT}vVr8y+uDN6)u< zVJ<5xKR!NQabML2#K`7Aj6{|y^a*;!dgWDH7m}4ZV*cc*8LbWFlnn^((QGxLQ@tFG zx>1YVo#NG__XH!kN1w}#hZ%VIxzX(Y^u#V^iZ{aTL$wV*q)>!%8%2C{(2wh+HTpPl zeYFu2OO+dtuMh{~8>r=r!Qn0GebIq)YH%cnCSt+SW;vWa=mPxk`_a*u5;w-&fQWV1 z&l4QDo?2O9g(Ly|E^Yk_oC5TrY;gga_JkO@*XAZk{UVpFZQwPXm>*xCtT*9qvvY4= z4GUKT7Z-S+38b~QKdjhY0B>!7$a32~^2}{)as$#E8_9nZZSp8`Z|+V%HnvV!HY{-0 zAh>>6`q4@~y=`K#u@#Qs>6&(LlT3D&Pg=C}E?TZgEPyPIc@El}7hZU;BwuZIjE!Dx zl=vJCG0*WvP)e0)E+TJ1xQNz<)bq7+%e&;;L1-TGKhl91?{mZU#@%b_pC7{16d+6Z z8sR1C(P9!tmDN$r&&*1kPm4gsF!ING&jj`&nFjfvHMV*nYa{bb%**lPw9qbH+cB`d zR|a4!FcV%DLh{o>r#z(PxL0Nx>NclobCP|wcyAUp<&NgGPnF@K?RYNjHtoXOd1P#z zRmaU(`~HPjS5pbb<E69K=IigIJZJPz*?@AGj~B(&d~8~F?T~Z>@{&kCdJf7w#Vjd{ zi%Lo?=j`rc(#Azg@r|Me*(94Ul>sHrgx|RqH{Z=Lnc{~f>XDSU16P|(i^XP%{J{?$ zRm^vE#H*iXOp<%_mDE}>iem+hw7Ry5Op{;>AM6MMKQCRCaITU)k_L^TtP{S0YYj0% zpp`(1YPvjFX{b|-N+mt756eVFy&>4<pO<CTW_yGen<aBzmrdUl5{=4%)(B+rZ2Ty+ z#=+Xd%HG~>z=ZbHPauKzGs3WoS6aaRHm#xM-WZy=;dyE!Au)xYus_3}wdnWCIpW5o zX`vtDA=8$a_ttZ+{n|rbrwL7LVlrMJLyYW=bjeo-pnUHk9>z3_r;T{P_cLyxP!(V` zb`0nrQ^MHbIUn5?0B@}13~xopE?k=bn3dfc#)!y_l#=S(a-kgx{?ndrLyNh*mBo%8 zBJ~)vZq8h&9)Ha%a;eN?k#e4gaxu#wO9Zm`IBrfAD*JtLpgyJa5#4qaYu!}mjd@=g z0+TGiL!`}npYf1>Tz;h8o$noC-&FPn*t=34F;<U<4FbInVlv3Dnz3brxjCfa;8F&A z88PRsafTgE^;+fnMl6voMw@F;#2$IoGnC`AOxwJRv}ixGe9i3H*$3tukazt9lNv>^ z(21k0%qSnM^>e;bVf|gMBIeS3*5HlIq?x!lGXcHd%CD{AdWn!k7ffOpy=&FiWl;rf zSV<~y@5bsuP0_2PX>|iCH+U7zUga2LrSaE+;m+~bTs38aDAoSKClX78?yG5mMpwI# zb;eDWaP(Ij5Y@>8Z8atSIbuIUAzmHYQ8Jo1neQ|*j$Jfp4U2g^d7X1tyZTb*P@pLV zix}J|m7*}r^fvx|*3*<{-JA<cp-DUx4+)?;uSz@66LwZi;jb;=&aKhz=9BMrbIwnX zGb}?hGceVQ&<+w+u5L2=dB*)-?+5);fjWH_wU3yqg7z}=Os<PIlw$W7b!!JhAcm9N zeGpk$iPYUCtlGGtI5j(wgetRPVP6K*eRMelvm{z;TWpv^d2Jxq#F-a=z{k^9uX{GL z3kglpW*h%&>z!aff6q;CD-zjxt$Ob0DWO&KTK1%YcRzQ@BfE9|^E*=yxhki?78P&5 z_~s1=8z=SK)fX}+(T$#r>?w0>ddq`dVt!aE!t%|DM?EDY@7l(}y{l-I^5G|_8L79K zGos!%VkRvx-q_mhV;rUD$cpTWv2bRHF(a@o_JO-C0B!<C_2SXGftkKB!wzillGIk= zBp4OTd7>X2|BeS7$<v132wBd4u<pUk)9smQbj$~7<I{;*8C^uPq09=wI*)6I;PDE^ zwT^U!U$QlF=;7XeUj$WWDIi6WOX3jspp1DL&8jflo3ym1i_~+XlBuSR*V$DZl{6z~ z2Y`Bbr06v)GJ<01NxCyx+XQ7-u*nM@42HHr%5ev{d(rNsCslB_-CU=nD4C&Qr+R5Z zm^8jKz9p8M)4=wAck-vxSiA>aIh)&soh%na>4o{fw(}{t1n8KG`b8H5B@-=%d15|P z-A-HQ%@>QFXo=9b<9geR2Ag23#{@Lcppt`lB066#N)mb1@6Mi08U|a()jFC__l_+i zu@$qPw^!mEY9_apPFcm@yf?#MSt_)>h$|}i7pc}b+af1%)x7N{pLcRrtQG7WRg2_L z+EFn@8YM@)`@!gJI0;mQ?M`sKO7Y6mg(}UvnO54CbhOqI9=>XyUw2c`xCPv&)G~`s z+_FPY)MacyZb`+37sidv7QMC2C~oH;Anht}ZOQKpxcBebVqV9huJXw&OYxvd2j!=Z z-kPz%sU<O`TC!dk8_wf%%<@a}l^Nq9o{4F?fq^Ku{jLL1Q<@hCSBXsoKj+klj^^uy zzUhZ)=fXUp=aYjt%9N|k06Mv?5E*ann%F-eB!*9&ac!zqZMacfjYQJb&5|hRMQ=<q z+DU5?jf9{E#$;{IDbAHg$g<+t$G%3C6K2`1<4sJmk!migZ^%!ct41sv%%ZG$I~SF2 zKss<RhJW`Si_rqHMC0}bWIGV6)PH9KG90C~7Aaa2u!xj(KY%*QT`1OMZ$NUJHz4BS z^@*?C4ojFm^~WRE>Q9s|MJ(GY)hFiZhIY|0O=Z)(veV#X)oeh|^*R_wIS*>>Kn<_M zPhcNL#Sizruh1W*#V6%K`<*-=vhIwzjtrm5i~2RHn3J~R=JyKCw%J$SuigKlM1yI2 zF*sU$;gVSn;7T`H{gvGEj_4r7x;;(KBJ^wX81sx`lXk8-FS;XR*I@IBnn}Bw1C@&! z^-x|`V3~O_jux84^<J`XoX*oGg?DSr4k-3V*B_jLjpe_}p>|L;tp+V@Qm?$qmceS3 z7L6{j5kCDWz7t<;nBSIzw#jR^tF!ie)Y)x1Vh-e4M$aU2eJx|p`j5I{BsRDZM2iqT zZ#<g+eDEW$yt!M$-B(*%yI1dlD~s#OzgmCC;%%~QbOZ8hVqvz}giJDx=2%DNY(O4r zm3a7VK&*-T2ZZ&DK1--lg8JQ%B=+~B*`_I#0UU{E(}g*VN3e@$uk&CA7)|<_g~@$@ zbgyp>)Y;D(Nmu0LcI--=%gR^W<<>%5nwL~*cbX*@h)W*=MFLvYx}$>57}*V1-n>{g za}A0K33Gg{7ge3bSzRc33LW_AZO>4S16bhL_j&SEMafuS6+x7TK0NDCFJO7Y><gjc zf=P><QuP3VWU9Jtr3BiU{2)ho0caIlJ9a5T2b#SDJIpf^SD0fn5BOt-7rNG-VXYl1 ztyVoKE<+W}A!3mkxZ}l4Tx6Fqs=uFpD0jJ7QutNtD%M(D)Y&m$VL67Uzfvl3zWy<h zOfn;zOjBTHRDp~Zjjm;koo61Q#UY~sH_y?I!&BqGBd6l(cBKmK_%MK#R!1)m<L=BX z)})@yZUuJaKzDH;^%lZ>Mxk$8z@1}JRUB*hB=m_MPn)h)s0#BNl;)Hko1b)xq4qT4 ztFT~pM~0WIGV($0lGu86E*8$=o;!=T5><?_Ddd|G2#TH2YrQppSh8$tT}Za;?vbsl zZ9p0(Er+?UjkEv@L*FBh42%agKl8yg2hD2b#N8Q)GS8K1R$xL`HAW*!Kc4ZK!WsEz zGzDg_s~P0j6-N@)ZDOap%2tlKw^iqh`lD=~u9}teU_}`c4<I?fX3R2Vf%OhCS{*+s zbjF*@qB=4(oqC9jMRZ)H82#k2*OEhZ++a%~uO=zQ8_-@Po8{>}vvO=P(PYKMG?vsD zg-twvN$%;zI|N&|m5tvhx!_XiQ{<J&Fc4iO17V#ii&x)zKzd9=82suX`1^HY@U z8i9f%wh|xjZ4*tRtygsszIK7%5$m`;2tvv}W44LEj|axu+jNF|J5+{v<u|33QTMJt zGF1lT-6>8mKRmKz<O|$PFBmsg8S^#GoKE00tgaC)wzU&X6J^A_!qLiN#RBijshjLa zFbxfj$@Bs&Cf+>tAz$>!c{U@evR7K%wy0F%B@{68z1xro|BCE_nGFbs1xR}~Aia0e zHz3Jc*3ya%2z8xQU$eWEs^^O0fb+dT@CIb$b-e_bJ_BR{eEp)aQ{(j#>Z*U=?Xi}; z#ozP%3nQR+2Kz6>^2V}quZ&i)E|(9>daxxT0w|H;?xTJ6FUTIj?i~@xLO2oC9kr9n zsp%<gCsjq>9+n>3dbcsQ$Z#GqrrJ(MDniubQZt9%wjD~!S~am4=`Lt018ghXvuE+v z9eYNqBSLz9m)0N0)l~R$q?r0XoO!vht->rxX8H7{tPtUX48#?XpdqWEa5_q(&eqGA ze_}`w-e}+GXf;@X9&GXV-(G8j3TP89`V=z-<~gh@iM(`P6~4n-V45^&i?~{D1*@QL zK)xFVW~&Y?^I{hd*Z~#GjP-JhVa}RS)Vd#T>djHnI*fRPm?jF!=&2o<ZR+YI3y|eJ zoeQz?X#R)1=IlIojf=B$q88EcFEaNND7{b`9CKtWAvNwrX8dT`=%5Z~%_qu>(~h%X znV+iJ2S9CPbqh~#tnkXjS|<PjuVhRm?rk1kcw&@3Xso1LST;VQUq4!RGvr0&s^ypu z|HB4kq}&^@ueMl!Sf5J!oF5X_oxZhIIx1pa5(w&6ybZ2ZE^r5&Im~YU+RfGmkKijU z<hK<k(==*pfQ+DOb`{&&U*l2dOcLK|KHvSr$OK-fr&HJ9Ok8A^4-hDWi=;Vo8H2Jg zisUY}@>hO6bu>%h181FlZ2+sWeU4r~YHtr;@;0M3CM=FNXnj8gTN~|%tpi4p`On?% z4iMgS*HP~>^ObBLh35sDWjxLtu_1Fy!*cz<>y<EN?H87cB5uW4lnj{R;jNx}!ld$X ztgg<q^YwRwZI$f&)fsWoKHw1AI>t30_Dk?Y-T*oQTPd8xx6PoETfITWo8EL997BV< zoun9EN(m?L$$cLkoGCK`O#FZsvsQB<%cON{S6ju5Q!9ZDK5)TF@;&7eddbgI_1urk z`doh_$`L9v`q@!vPeqTbm#}eum^F}UkIyq3R2whJ?$9I{CZxwb`6IG-;Ombp1!eHw zM6Vr!JS2@s&FIL$*HqNUu$cEG#oCPdg)V(Dv@UUfo6sVii3OT`<^?^vSYOL?+SV9< zsJGAard}&uz_>;sltW=mntP^JhPqwRyUl)@u6>3lz$eif(G4TaYVpAe>w3l4_*H+S z;nFWcFb&ZykGrCL6TlYeo5`1f6q0###CqPWYj$It{%XMEx<y+?_CzFLJ_q}ZGwJ#8 z<-i*T*?V0dKr5E27N;VL>q`6%6&;!3#p$?dB~Xks{HfN!$+l%xdKAnuGVKXdJ>$Mf zS06EnMZ}f8X9}9Q>iiXYbQX&v`kX2Z#s`~MGNbGFe>Gm3yVSbUIzzo|@2@M4%81FB zxjv}aaiQs+qSAD7Q=PFFRr%r7WC1gqJw#VBr2==#mtCozRcQhIt6hQNN!-^lq&kZE z2BaCNsx3A6eX4pOW)QV=b_H8D73p3wfOESLSb$)o6BAbi-ziG=H(QFG-+vsR;dPpr zh)h({;)glW0-{?@2r8=TonKCheT0w3W2Y`{OL4&xhSs5_X?vx@gunWDc#_MJQY@AM z1+5$GMkJ?Fv{Iq<(>rtXj$5)EWS!Guf92TRIc@E_sjI6f=~3SdoN#Sl{$aNN{2WyS z88?<}LadNT+1I?#F;8M5+UW&hNjx6k_1ci>;A6&caRo40<9f6hZ?zO}^eh;$BTAUZ zjyh7chmBKdwiLUCSk6;gXd4h!DA0jQ*?Fx8i8XJr9)GQEIwIn9ADdLqt7l11`PQ3W z=VT}&^>5A#=o~K|y?|qAeIY6V99i-$I+jy9Bt(veVb5TfHXuCj1>w0_Vjvcju!{@q z-3sCai^8uapL%<96;)C~(@-O#qFYf+SqW5Fy^?j(;z^kRR5Vt4@)&SIcxCcTM_{qF zAL0(62BXwBAO?a(p~iqwdq~~<kf>~g!{m_53OujTC$p%&zRM!b3*q)|@FuXdw^SmH zHrMDdoI`-eNzS|(zA}$ls;Q)8Y&?@Vn{gJ~vfT0OY);+=ghGVvb80IU^oI$9v*;qq zL(HKkby_w=1{HX9q;jIRKH_d=h2_`@{gzxfsm!>vPqTXNs$BzAIJJx*)V~wd<eQjt z%(55UY&;B}Jg3cMv&(1C5mBn6>k>wxX5X*|1v^}ox-=J=-%!_(on;)ziI!q3*O&&z zA`Uzv&5lbGAcK0!dV-}9E5tZFWv^q4ccY^w0pkkLO-x{q*@}Hq-yEQ4EXcHlatgz} zuWO*BCiY_BteZeuyp3x<bWclJ2pylV-4`O|Dp3(2K3FN5SNHK!cvfO2f9YlddjoQ{ zu3mO=WyGS7F2qfgK2=o74q}bl7G0RloTVyzmd)x-J_g5+8Y-pE8tuDvXVg6UaYR)c z@UqUJO`L94?qXg!<LTyWM@RFZCWfhgf{Dz<i<Rr%dM8j``6dM`_5y^zSK@r<wTT*k z%mze1A&S{EEEsJj({Fb5d5t2?s2SdF@Q&NFb8*!c_H1tCDpMTOGCI-sxGX4*6C^pB z&DZqhdGm!AxEg@rDKGK(1;>JKae!e+RhrHP&X<@vTRhQ^(G{G(T%SLYtFWvOyF6Sr zquxHJ+pts9QTMYDga*!JvMWpb?E=LGNiXX3n(&FUnhr4@DZOHFf5sT5<&-o%M@f#F zgT*i!s7!7Ivt$gHUimaGa**bh>UQUGuIv3<i>|mui{Z5N{S^Y+C!Ekc0HrLMY-UTs zd`RBjc68~Z1<u`y%=r`<5>xU5l=y<>kz%3lK9+;C185t)f-ylS&hy<Y^k#h%(B!x8 z0^2ThO!#%)<h%}yb}NO8hwm*IJ}DDlQ{faxl)#STS-QKWBAV;9du00Z>_|lul9z`? zFSXXtCv~1bn^Wwz24e8Dw=X-`nk5c;i&s!9Bf7IEUMx*DEZhFrN-PVrc{AF~udLw< ztzHaKLr&dO62pjQLl3FBj*n`~dL71UM>q*-#$9Fi5tI(wz<M=)>S~-yytwc20S1Pm zchudWn2g8^L^wO-dyfPA)#g0>&WK}TD=rLHN`}|kJqbPl&WbfB4$f&CUhAcsK<Udg zI;!4xG|r0j289-q_Avqx&TdDRIud#YKjh7lT3T7YmZS=bjfGYtKKERhU#`O(W{M3G z?hD#|ggy7Uum*b-02kTUel08N@X8c;J}WQUKH8rByl8w)-w!=u#|cQl^h#luLfZ;6 z3L3ou>vHO0>f!0kxxp_FL=1002$~+EnTU4TNFGJGThzBwT)&528)c;rcC8D8lDpEg z#frG#R?LS9iEl=Eq)@0U#40!6;9ku`4bocM^K)~r^hjL_^$|UY7Uc@dT1Hx&Xf!h| zF5VA{j#6^jfH;1PSvsH<9O-2eC_wb!0k6fy7MozN=WF_Ycy=k#Z6zpA+Er5{Vmiaa zeV*SYPz~db=}6+om=Z#I2HTvSq23jX)JFJg8XLnx66?>3SyS7Z!l<LZlU!o!oDEA@ z+{d(>MF<foD<0)Cx;gdyLRRO%{q7u$Z}`HM$hGHKdQ0WHAD?N<7n3U!fpUx*JTxn5 zK3{7mk=aonMIL*Nt00nf(#Bc)W3LObWqf?j{TBFTDbD~c9ZJet8h@U`44w&|7Thzz zcq0YVi9D3Q)%zE+rnUNdPfR*O*Pv-XrH^62RdbsZn90H;ta_&2#b}focP*!-YxEBY zCGWzbB^emi(zUUXVqlcJURr<=8yO3w(vk~)W`%BSO<=!q(fEAliR#HbdbLy#OswM( zJP(C;Eo6TD!1pQ^-^do|!|q0V+x8n`%Hl_eNLyk4;Bbghb{$uJNKA6n95CnJ7P`8@ zb8<V$Wf|sPH2X_-`u-ky6oiDhCjxug!3Mr6UG*q;{0d+fn-oO1++uz&mA=Ueb;o6V z@T>M5?Rv{(4e4U94mKn>?#G`TyS=n;1L7^V%}{(ZIXzW%ifGW}vOb1$M!d2jcw=vH zRI@6WX7k;g$s<Y30at&Ik_|{pNl!{Z0&q*YI2fODyiuTS@T3ssl$e!<=(@tWG>e*4 zNa~jgfM{{WOq?GFUC$iAzU-eE(%FGIpOrn#AunUivlg;g_Hn;-_tw@5D)=drq30xp zU<Wxr)>~&HyMujJx<IP!Md3l>OGZ?5*nCs4`FM`KLs_>{QJW?nSJpfj>v&_B2y8$) zZHt8U?W78Y{td`Z!5};MT9g)+vsi_1vUXy^t8kj&{W+RrL9DKJsHov^C?Xk=nAm0e z_yJm7+fIr223vaHfJ}c9<5IPXG|Pup&&=NW_3c~m80<@6zoUNBNWX(YJ14>x(5Lev zZ9cBnG0Nk_FgKZ=1Ge@IVXUR&_FNL>F!k`7I~&#`8^+>;1R<e(LRp7ePy^6_+y87` zB6=N%xGipQk*>SEkM!WYn621W^?tUIZ5-KmN6(OJ)P+?}5x{ziaX6_?=k5&%Z;Hu^ z%t$H#fSNkG*LqtOe~_eYD`}I1W!R*u4NL1*vZP$jvP<jy2xrxDs`N1VqGGqEw=NOt z_R40$xS9eD?e#mtzeZeHr<kHQAPMOU^>aK;RMn#Qbp8OwZQ74XsZ+NQ$TD_RM`=7Z z!)hAaU6BpJo~jMR+>#b?E9g1okt!Gzh;o7UcN8!5pIO3>F0;=}j_Q)KS4qr-s#lZP ziSTpA6J^l?X=*yfyQ}_`o3zNDye}i7*=^06q#ie_+X=(%L+Z&c)7+*wX2hNf&GU1M z1`V_Q{ymb|1aft^7<>|~msalDu<xlg*XUU6`ZYeE-y>FAjZcd27DSQ?Gk{d3;H+67 zDSNJX3Z}J-vMWtrQ*91qreEOh_ba7lWdm|;MbOKGHFVi&LqGqBxxRJqayzPibc)q+ zx#-fkbjUo%rDGu94QP&kv~1QwvkxphoH(Df+>*1uML8<6*Bgn%D0i8TjFr^Cr7~rR z>WL^x&a>e(EIOqN0|SyxMLy`3q48-}+>EWGDqCpr(SY-weYa<*?j1`+vu|~v7uK`8 zO=!=A8Z<2P-E`xEgEc#X>k^)3#wAmUPmF1Bl2>>uW*010usAs*s9wL;vlMSq7<yzn zh@H&nMGnvMaY_a7j*3HYp=dtA0@pJn5Y+}Ed9{W8ih!cYV0-k5+5s?N-~|@BnS2Hw zyEWYOc?5KqW3)8v+_M(4GA?}O56tOBiCIy{>=a1lqL|v%!4enV+@T<Luw}7%E<p*N zpU$LqFYDMO+z{f%wB{7ei*-@1*6>y|$B8yQofmx~(yAtiDa<Rv3jyPb4zHxd%oGod zHNbvOgWr5w)vxdddRdZ-L(Nelg;E#ljtosv^2glxQ<==D-obUTE^%a)mkOwLl_~SP zb%fFy!#?JUjjb`+ay=h7LbVc&l_u<8#0gh06x<O#jTi?fUifrU{&P%Gf}y$!$o+b2 z+=NC(?=168GRdV0sEq94(`$JEqe9y3Tda+m^X^R6og1G{#D_>td)uKk@N)(#gKFZU z1k27q=~#4waCUU%Eo1zz<>N3<S8wo@{0BQ?{(E!vCo=OzbnR$N-lz-jW2EIQLLf?U zcvu`i(Kgm)7jb@sfgCWbj(v7CgwO05>viqtGi@t2SC8`juG#Q7x-k@Nc%R3p**uVR zGURaix#u^%wYynxZ@O4XX*P2^&Imr<Gi60sFf=lEjuoC*TB|KKSw&{ouKBFbugywI z3H=_Xsmt1SM!5N!qnZ}vp&3_A6UwWm!HVJ+l4<Tf)Dm0!*eH)t)!ITejH^Oj%gAw~ zwXRn%?*8jPPU4=1sclo(=mEb`P*W3g{yJq0f$TYp3keBAgrjjGgo8~W{?;L-ze;uB ze@R(=!Z!<NHle@q??2(2RW1L4Cw#&;tM0e(zZ8~y!Z+*oxA4Cdc7MV*tN6F@zZ9;1 z!Z+(w{zH!rXRDu^RUiL>`*6TNZXeqBS2YEEtH5REwz9>~90+8y%xLqU6v&-*mxn+g zZr}Y~tFTo*vZ=^@lisH)1($%(iceNH&*X1e`Acp87JlZhBkq5z`H!aa`#+aEE(c(O R2r9pWu6Hhi|GJa<e*lLC-TMFl diff --git a/interface/resources/qml/hifi/AssetServer.qml b/interface/resources/qml/hifi/AssetServer.qml index dd0aba9ec5..84f73b347c 100644 --- a/interface/resources/qml/hifi/AssetServer.qml +++ b/interface/resources/qml/hifi/AssetServer.qml @@ -187,9 +187,10 @@ Windows.ScrollingWindow { var textures = JSON.stringify({ "tex.picture": defaultURL}); var shapeType = "box"; var dynamic = false; + var collisionless = true; var position = Vec3.sum(MyAvatar.position, Vec3.multiply(2, Quat.getForward(MyAvatar.orientation))); var gravity = Vec3.multiply(Vec3.fromPolar(Math.PI / 2, 0), 0); - Entities.addModelEntity(name, modelURL, textures, shapeType, dynamic, position, gravity); + Entities.addModelEntity(name, modelURL, textures, shapeType, dynamic, collisionless, position, gravity); } else { var SHAPE_TYPE_NONE = 0; var SHAPE_TYPE_SIMPLE_HULL = 1; @@ -234,6 +235,7 @@ Windows.ScrollingWindow { var result = JSON.parse(jsonResult); var url = result.textInput.trim(); var shapeType; + var collisionless = false; switch (result.comboBox) { case SHAPE_TYPE_SIMPLE_HULL: shapeType = "simple-hull"; @@ -252,6 +254,7 @@ Windows.ScrollingWindow { break; default: shapeType = "none"; + collisionless = true; } var dynamic = result.checkBox !== null ? result.checkBox : DYNAMIC_DEFAULT; @@ -273,7 +276,7 @@ Windows.ScrollingWindow { print("Asset browser - adding asset " + url + " (" + name + ") to world."); // Entities.addEntity doesn't work from QML, so we use this. - Entities.addModelEntity(name, url, "", shapeType, dynamic, addPosition, gravity); + Entities.addModelEntity(name, url, "", shapeType, dynamic, collisionless, addPosition, gravity); } } }); diff --git a/interface/resources/qml/hifi/dialogs/TabletAssetServer.qml b/interface/resources/qml/hifi/dialogs/TabletAssetServer.qml index bbecb9e85b..8294dfee9d 100644 --- a/interface/resources/qml/hifi/dialogs/TabletAssetServer.qml +++ b/interface/resources/qml/hifi/dialogs/TabletAssetServer.qml @@ -144,7 +144,7 @@ Rectangle { } function canAddToWorld(path) { - var supportedExtensions = [/\.fbx\b/i, /\.obj\b/i]; + var supportedExtensions = [/\.fbx\b/i, /\.obj\b/i, /\.jpg\b/i, /\.png\b/i]; if (selectedItemCount > 1) { return false; @@ -188,9 +188,10 @@ Rectangle { var textures = JSON.stringify({ "tex.picture": defaultURL}); var shapeType = "box"; var dynamic = false; + var collisionless = true; var position = Vec3.sum(MyAvatar.position, Vec3.multiply(2, Quat.getForward(MyAvatar.orientation))); var gravity = Vec3.multiply(Vec3.fromPolar(Math.PI / 2, 0), 0); - Entities.addModelEntity(name, modelURL, textures, shapeType, dynamic, position, gravity); + Entities.addModelEntity(name, modelURL, textures, shapeType, dynamic, collisionless, position, gravity); } else { var SHAPE_TYPE_NONE = 0; var SHAPE_TYPE_SIMPLE_HULL = 1; @@ -235,6 +236,7 @@ Rectangle { var result = JSON.parse(jsonResult); var url = result.textInput.trim(); var shapeType; + var collisionless = false; switch (result.comboBox) { case SHAPE_TYPE_SIMPLE_HULL: shapeType = "simple-hull"; @@ -253,6 +255,7 @@ Rectangle { break; default: shapeType = "none"; + collisionless = true; } var dynamic = result.checkBox !== null ? result.checkBox : DYNAMIC_DEFAULT; @@ -274,7 +277,7 @@ Rectangle { print("Asset browser - adding asset " + url + " (" + name + ") to world."); // Entities.addEntity doesn't work from QML, so we use this. - Entities.addModelEntity(name, url, "", shapeType, dynamic, addPosition, gravity); + Entities.addModelEntity(name, url, "", shapeType, dynamic, collisionless, addPosition, gravity); } } }); diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index d2593dfa18..e18980d24f 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -6605,8 +6605,8 @@ void Application::addAssetToWorldSetMapping(QString filePath, QString mapping, Q addAssetToWorldError(filenameFromPath(filePath), errorInfo); } else { // to prevent files that aren't models from being loaded into world automatically - if (filePath.endsWith(OBJ_EXTENSION) || filePath.endsWith(FBX_EXTENSION) || - filePath.endsWith(JPG_EXTENSION) || filePath.endsWith(PNG_EXTENSION)) { + if (filePath.toLower().endsWith(OBJ_EXTENSION) || filePath.toLower().endsWith(FBX_EXTENSION) || + filePath.toLower().endsWith(JPG_EXTENSION) || filePath.toLower().endsWith(PNG_EXTENSION)) { addAssetToWorldAddEntity(filePath, mapping); } else { qCDebug(interfaceapp) << "Zipped contents are not supported entity files"; @@ -6623,7 +6623,7 @@ void Application::addAssetToWorldAddEntity(QString filePath, QString mapping) { EntityItemProperties properties; properties.setType(EntityTypes::Model); properties.setName(mapping.right(mapping.length() - 1)); - if (filePath.endsWith(PNG_EXTENSION) || filePath.endsWith(JPG_EXTENSION)) { + if (filePath.toLower().endsWith(PNG_EXTENSION) || filePath.toLower().endsWith(JPG_EXTENSION)) { QJsonObject textures { {"tex.picture", QString("atp:" + mapping) } }; @@ -6719,7 +6719,9 @@ void Application::addAssetToWorldCheckModelSize() { EntityItemProperties properties; properties.setDimensions(dimensions); properties.setVisible(true); - properties.setCollisionless(false); + if (!name.toLower().endsWith(PNG_EXTENSION) && !name.toLower().endsWith(JPG_EXTENSION)) { + properties.setCollisionless(false); + } properties.setUserData(GRABBABLE_USER_DATA); properties.setLastEdited(usecTimestampNow()); entityScriptingInterface->editEntity(entityID, properties); diff --git a/libraries/entities/src/EntityScriptingInterface.cpp b/libraries/entities/src/EntityScriptingInterface.cpp index 2b44b47128..f126537957 100644 --- a/libraries/entities/src/EntityScriptingInterface.cpp +++ b/libraries/entities/src/EntityScriptingInterface.cpp @@ -305,7 +305,7 @@ QUuid EntityScriptingInterface::addEntity(const EntityItemProperties& properties } QUuid EntityScriptingInterface::addModelEntity(const QString& name, const QString& modelUrl, const QString& textures, const QString& shapeType, - bool dynamic, const glm::vec3& position, const glm::vec3& gravity) { + bool dynamic, bool collisionless, const glm::vec3& position, const glm::vec3& gravity) { _activityTracking.addedEntityCount++; EntityItemProperties properties; @@ -314,6 +314,7 @@ QUuid EntityScriptingInterface::addModelEntity(const QString& name, const QStrin properties.setModelURL(modelUrl); properties.setShapeTypeFromString(shapeType); properties.setDynamic(dynamic); + properties.setCollisionless(collisionless); properties.setPosition(position); properties.setGravity(gravity); if (!textures.isEmpty()) { diff --git a/libraries/entities/src/EntityScriptingInterface.h b/libraries/entities/src/EntityScriptingInterface.h index cdb784ffa8..6b4cd81e44 100644 --- a/libraries/entities/src/EntityScriptingInterface.h +++ b/libraries/entities/src/EntityScriptingInterface.h @@ -165,7 +165,7 @@ public slots: /// temporary method until addEntity can be used from QJSEngine /// Deliberately not adding jsdoc, only used internally. Q_INVOKABLE QUuid addModelEntity(const QString& name, const QString& modelUrl, const QString& textures, const QString& shapeType, bool dynamic, - const glm::vec3& position, const glm::vec3& gravity); + bool collisionless, const glm::vec3& position, const glm::vec3& gravity); /**jsdoc * Return the properties for the specified {EntityID}. diff --git a/scripts/system/edit.js b/scripts/system/edit.js index 2853355c5a..414be2d836 100644 --- a/scripts/system/edit.js +++ b/scripts/system/edit.js @@ -565,11 +565,12 @@ var toolBar = (function () { createNewEntity({ type: "Model", dimensions: { - x: 4.16, - y: 0.02, - z: 2.58 + x: 0.5385, + y: 0.2819, + z: 0.0092 }, shapeType: "box", + collisionless: true, modelURL: IMAGE_MODEL, textures: JSON.stringify({ "tex.picture": DEFAULT_IMAGE }) });