From 8817f90ed12a673dbfd28101fdac54efbd980b57 Mon Sep 17 00:00:00 2001 From: JimmyBinoculars Date: Sun, 22 Feb 2026 15:56:57 +0000 Subject: [PATCH] Rot + Scale! --- VulkanTest | Bin 112328 -> 116472 bytes build/first_app.o | Bin 38560 -> 39488 bytes cve_game_object.hpp | 12 +++++++++++- first_app.cpp | 5 +++++ 4 files changed, 16 insertions(+), 1 deletion(-) diff --git a/VulkanTest b/VulkanTest index ead6bc10c5b2196739bdef44a6fd45f3e9b7a61f..6c769c1029b398bb5231aac4a803dbc6ccfc231d 100755 GIT binary patch delta 17612 zcmZ`>2|!fU-oIx60Rv`65gY{>a5NCvEEP-?TyREFaY1n*G0oI8vCwCwfr{lcPNJte z+S3>I%(Sx5u^?AWO)53otu%4T23Opvr_T2~_na&9_`dJd%>SO>e?9-R-a8j-F1KiO z`j@qBRXambONJmy)!tQIHnq%46V<%5Rlg>-Oy4JJ>HBCal9*Z5LsT`Y7(|_bw7{n% zi(mb3S{|svN-AAU!lMNzwnGhZ5x8OkwRw>_BkfKb=;Mm*vY;b++(^p5Q8{1Mt zi?(Dw&1?}){)O*-(>Q;%QjP7q0Zc+w`7Ml?a zFB=0CC0c2#6w+(pnkBbHev=J~2^(MxnUeQBHw^T}G-Ci6AdjZNyS^xgyr~MSPdcCaARpot^&B(vn;(4k; zAEi>(i{e&eIO&vwsPm#tB!FtEm?`LTIfXU6P~vNv;k8yVSj(H?#np|%(B@{0I*C^_ z!y6=C)eJBAOW3Jyh8rYa+YEP$fQpsl%@`HZL0vPvR^skvc!hM(&Rs8Xrzi z#0LczdZE7bB+#I)LBSws2xp+R&#&?7*r zz0eSP6zE-`wO*)!-UHe-At<=c3vERc62j?3pbcJVD9uj@H?{FS(EQ|ZQ%^7Z%Fw2Kr&1?$c0_CkBp%RnPikZ&)v4~ip=vJU7 zfEIe8S@a~(pl-;w7iy)!-H>mfWnSnInhtap&~h(yD4h*-9ncCdbU0lP^a#*uFLVSw z3iK|}S}$}Iy$7`GBgnHCnoAQNL7ss&c%fry{v+Y0JnuXYYs&LD>V(d2=oq}v33Lz8 zOF+$DXg<9RG~!X@*$bUSBOgVcfo6E2lj%^P3xVc%p;PE0pdSJ)@It52tw2uzE%ZXC z)004hx+BkC=u8^i9eD;?=7r9p=|E=zE%!p7p|gRm16tvQ7Si=Vj{vRqLZ78af!+mL z>xCB4dqBJPK%TwO`81&i@(i@W3td3-dxV>w_s+B26!;qX0(C-XH*^eM=t8;&I*Yt? z%wF7LdKo$qJ&|uObTN(WiF^ai@Isf;p+FY`&GAB)(M3JOO)q=dFYw|nr(23W z=&ST3(4bW0-3whogHyvzPA^MkUfh*5Jr((fPPrGlip~bQ4rqlJO6hu7dfm%XwHKGs zqp9I!t?OE#Nu6qq z_w5u5p?P6eM;j*;A=u+K7d+*@Py3GC81&`G57ZLr)sbNVm3LLC0vbGOaPYh)?#|n^ zVPu=Y{(^n!CS5Yh797{a&$>+wqeFu-;ONMIR1@=Pl}ywSvd^_B>GK~vc6VXd{0-%YoTeqrRL_a9h0e^ZECABgLhp=kRy_!7-Z*Hq6dEqNbId)mj8=`c2c7*uMsdhpONZvQ3(UQv zTD^aj7UqR_nXR!8xL>^{n%cI>W-iZ+kVj_nZU()r1%1dpi*6g&A>i^Y)!Li%=W*FV zbkhT0S7_3BQ$Ug6M$(+|ZG-M^k=z6BE#S5Z9s}!1LgM&k`sVlp!MmD7s;;ObA@inc z|H36&I$>>K>bu;;Rd*%rJh2m5MYAU+cg*1VcXqG8s3_TBZ9^`z?RVUNAxSpJKsS8s zrEgCRZ`I=h7w}l^rIutQ&fViOEtuGbo}3s%GFRs(kU2ClzZdy|&dBdbc2H-2Y|zh} zWx$8r6Y2hZQ^1*Psw)RQlfN>!zs5b_F26{P7ej;jsO&66zNx2gKfXO^!aLH!0e3ac zpJWQmYEUg)b<^TW*$JKv4;*A&5Pcf(Uwz6a)RC*I3dZ@QSAz1j3?Fc>rk;YZfcAoW zkZvg$9CWk%fx8YW_q{8sZVru{jA^DOPo2B(yJ_-x5pc2)`QKH+-ki6YW|56;?hJy?C7%eRTYr1F0_N8g%~)P*+jttx+jrD-OqgZx|c z8@lfWdSlAQ;K+>+%)Rgj&uPj8m{f$wmb09B%02gzHqn0m11_E2H#a%yu4)DG8NCbr z4dzrD_+&}&s3wu+=lH-1Fbeig>U#2{VP7}(Q^i@)?0}|OkOymN^{TZqr$r3!qr1dp zH=I*rnA~LH8T#?Guz)*mRiT_7owk*1rY}B~jPDPhiq*MS(Vw2$W&GeY^stgT6i<%9 z>P-KQzB4_R^rK%-kJ0sAO0Q0z8T!a;!r4W;qNH5rP2azS&Ym%K$k{&><>s_ReN-t{ zBJL*LbeBvJ#`(Wbv?eNr(f*q8oi*KAKB!3Ws%K~Om%&` zew4xwa4Sx$scbD5Vab2dRI`Xya**En*{*TQ>k~?pwBi4q}b!#K=xbU;JKN5es@-0)a?=)_5fCcM| z-)8#BTb0C3XaDmSR;(%O29klUE$bHgkY8M#%g+-M02Aq3<>#xnpB=qU=XmM-N;(KFw!_&)Y`upceCbfJpT6Z(w^}+`)6H-LU z*5`@N_2Sl>x`&6Z#oFpf_?=-qewlI`1MX?u>GQ6eW?x}3;Ng_j5nRLQo48rpPR~}% zAjx#-wqj#BLoSw8>r1hfz>!}SJ-Mx&?TSwv~MhVlUD9~C*V0d*I8Oi zGppN@QS^oCugOoYto@^O16DTHv1u~ zbAZL1jlmJYECU~35W4aWgDQ=d1q>kYjjGA5cIcMa*c!|+5_AG`mC{&BxQ z!}w*be)RYH#J}f5tZOX>@ONCy0C9cp@f-Rs-|1t|+|Yks*Frz~&l~!QKj_DNuaEuw zhJKviW~gV|Z(|hNmL5t4uST_N%(eu%eJAsAntP5R#9E)nK_TSz1 z>Za>_Tn|mVq+hoCK2JTmp=tBeTbCZ3&PQ@)e&*wulMc9R(cLtserU^mPk20-)XRFj zK;Ns+)}=+!TlIOm;;D4_g{O6ArqJCN+NLjuM-12iwS}jwjz`_@H|{n;j^1u}_x%5^ z|M8?S`^o|w0L;3Jlj$QD6Lbropif-viQie?x)`l1oI>|pH2J2wZ=R#SUhGmly@0o6 zw?%cc%u{5rId)jua-VVc-9uF7Itw3b)@8q8Z^YU@A8Y$wGasj@#7T(;Z;98xg+waG z9GCFt5*Tx-?(`)d&xCCIpE4o!TXEK>OE2wf`TpY~>^}dX*_Zq3Qi7=Sa-{CrN%X_Z zkA>$>1oLvywSmiS7hSSCc9p}EyL>#of4QCR(Z^}KD{<`tp>N~ofi`paym2g5qj7eh zfrk`VVs)De=qpzq(akNOyRW3_dKAz*SGwt3r)d1uINi^a=$NbB^iz*Li1@1e=ZTbE z9U0Ld;pwAb&b5X&PI$KN|J%p?%Xm7>ZK53-BEniBI{O8y^SRXQ!0TAPZ1#ihk51B@ zhDd$!Q7@alR;{`64`kCnwqZ*eA&V^raK% zwHsmGc>{|qy{-1F<5*Bqr|D-M(i^jCc&hAKb%3(<#`)*$SvPT+!ws12S&cOQX1n4; zh^{34UpSw@7=Ie?=pW$B@z_TNENvwE(oK9$;;>-FL=Uz)ijXbL@`|y11c(lOuz2a0 zz08FdALQMytzieSTa==%C=I-c*^XJ3*rCfV>r3k~q_Nx%4zM|g23YycHGc4edfMmu zQvNGWN%})PrXpLWV;~PG)1IqFv}~I?7p}UUzhN$HL`8G3`c`|xV;GucRrvBW==YP0 zl{EgAnfyqzZ$)%}ZX7q4BCKh~{tbP8uDJ6njJ=7uUDtbEUwCkRpk7}{Gj5x7|7uAm+)hbXF7pWL zcjoc)oc+{ZGheKJyU6p~+mfC3XHf{>B5==ANZeC%0Xv^g#g4**_S;CmyxrN9k4GVV zS`Jh#opR^j7WG^ja3`wsyU^i>Q7kj{xiSiVz0)hAV{_=xI|)kKL3jPo zMaPEIKYy5}OBzmx|2SCJdIbIFk4eTQ2;SzHZ^({2j}69sBZvO>qp98Nm{aai!yYu$ z`dQ`d-#+F4)5rhQso1vK!vEJ<(`xjkiE58sv)S+Ah?O08+J-&7^cw_ibv}w#f1zLU zDz7ZNtzUK;7nxP5NZP;@&%l)1Hm5JTb+CcYPt4pHd}c=IjXJB{YH$p0t2dhM*0zqp zT^%En^~UKDc57FAPI7iy@mYQ8LKw-m*JazUmsuSFP_#x^msY1*mwt|6F}TL+u-590 zgU{i*7T3o?k2|b&_Q7=y>rMOMn+|KEeQ={S?ZCYK)}69#!B%Jgn(Vkb>wdS7RsZql z)}4F;p+s4uYpu>uzC>Vi|9oh%bHGo9*0hU7|FGJRXWKuA0|O#3XaV3lk9+1G^~RAk z!mHjm{+yTRL-T69Jjb21ItSML-=3FN6L0TMUs6jq+zr+F52uxPGm76uH}UPy>cH}C zvwvYDhqIj-sr7m4nlJz%!@#qjTlY5gT7y+T=!8@2l5|Z_u1pOM797&Vc-oPkc$X4ii|Z z9IhiT`iGSC<+~Z`oZA;~p@gyD14%ana$5}KL8&yiBo>{q<`Ivl&`(indV4%;K#y1E z29eezEht)124J%*h`|rbphrL>#(O;Gj`+!718iZUF>i_M^opbIKD1e185 z;(*^hp5tawXa*Aar6t?p445*|7 z!cnbUEm5&^4g7pqoL@fmVTbjl$3JSdp@$l+H?9ToeGv16>Zf9CQ`}S#ZVU zsRGSw@ObjrTqEh*A}0|k4rHGiNlavHPmf34`emZ{JzWt#X5bB#w~XX-Lef}OYZ6J~ z*-x#>Q{*t~6H1auIeR9QwAYnIusIQ=J=+vY9wEcnuc4$P>BjDdl2N3QjckM32{ykC zN$RkpJ>KrgS?cq$PT|`%zqekFL+CDC`)+K{`gSE@?3Xqql}u!pO0t~|YX{~+_F6mg zG-=EJZbt@@v#eixGDr7fm~M`tgEJ=#I`w;retoGMv z^idg3O=~uJJVy!o%gy@5k+I}0_EsEHJD#11L&7?+m@cGm^re>2%UJ67vhNBXr%u6H zO{v8ZGZqV80`Kb|*peNoGg)Fp}- z16NGM-?yCjY-TyJ81Yxz6Teo;5G+J+v3oq8Ke(Y{7M4Idci9N659Z-@@O?)Iz;PYn zo-#8H{N&@w~)VC1Hf_7fCyoL|PR0Mgu>D+I1de3QT5&7+%x$3u){0 z=@(*N;hPx}`?8-6ep(Dd+I%|dT81P8%M39?reBDmUr4}U3~|Mb&vMvmiA1l)wJ(3? zlP9{x%YG|-oj$K&q3R9%L&)?#jGpE)=ls~HWRj3zM&%M1sZid<8M`rnLkb>@en4tY z43Suf*_LDy@0Wqgw<~{1CTV_Qi~P>}D_;@6U;ULv;&;qnx#Z{fxj&2TK{7}Qo6!U7 z>r@kd9@YE5ljgrYZ5JulUTD)^VB-#W(cXE|-c!@wOVi#%)80GN-ZK+g*ly*^LE7tN z+UsN5>tfpLVe)k_*X`78q*!|eOf#ar`lY?7rQs#`J(m~lMJ)}lYlaIcJZIyx8AYof zZdT{-BBFG8Ai!T<#EUBbd7l?Io7;;Fk6zPRR52{@l$;M9QLxvlbt^mFi#+9n zcY<*+X;WG77%BAC8Eo`gY9AJmK`KnuGljydQgH#O4y#%Y`!<7wo0M4sA1B!_A~?=2 zU?dal9NY%;@}*2bA4JXBW|qR)ua6Y$BtevSB>Nzn%-Odkn=b*pgkUCd?U`&9Xa7D* zz|RY!td{INwx6^6>6he7%SjGf+*W1dj*T`2lh{r{gPyN#k}F# zquB_~o+umqt7N|+**(}|ut_hrwjW6{&6*(CS_6h*=5ix->@=6EVSjO{(#M6A)(!{y zkW1ZXnf>8v>ZJc>yCwT~HWzH$>Vp6FF%U}=*KRTSzw!AJe?j7!w=ELC$-d>@ravLn zmI$J>!gj*VU0`GY#^NlNG60dUW;WDJ4d;Z^zooDVdnOk?!B#=alrvS}<0X5JWWUe$ zgKb;)q`ilF)1^plq4@m z;bgXr3m394xs>+WttR`El&WCHEJ&5GxGXYA7m>oA%_4~;k8J>Idhi0h)JhBD6TF?0 z!M@ERNh!)cftO)8^0FB07=&5!y{JbEqI@LrI+ijBzRH+w5E*2uxGUH%VJh%476*w| z&@N%oQpd_ZwWQ_yDAgy7o$de0Ns(!zK(|jqn43 zXdPFt;a3FC&sDtWaR%e^=6{I#n}R5h0_U-6n{XG2Z&l?L)^iv!l07VC7@BuPCEd?~ z#s8{8+iKBTwM5|H#a-0BAnKn>JfGvdtBW^Di89H0Oa}K2a2|wqlF(Ao3CA67vEVgf zDhTt8mx&UuxFPENT*ga@#B*eKej{LIi@?#l%_j5#&CneoDK~HBxWvtS1pc$^XI-Rh zO7}MWiialiKTf)`0q4olUbQZf_!3Psa-Gzy{!p-9k-?wWBvO2E5{*Wm8)TnjSyxLG zaGs{Je~J2D8P!^rnS<`BR!PdQkm8Y56bh+iL6k?M1YWJ478K>E#0RqtT>C{vMqpHK zlu~tP1^YWGbyZ~(J(~@vVnl<>cM7SoQfjfvChJvV+XpG` zqxqtCPU6iMu6xpIfwbCN7*}%HV(xT#N8z-rQsB!Z+oiH?HIm&RhbF(p3Q8Vq3Mhvp=;7cvng%s8uu457;LnXz-I|;`n zTZF7!*pxSctLw1*6O1@%>wuJRK0ZP^3p+WNgdo3H zk<+D2^POwj!?4L0j>rZ43RaXOLi;P7p#Rn+Cf|?}g>p&gDFl?3u|l)pb*t|K~y^o({9~11~G^>XN{=CeBKikH&&B!9xu6tLo z+sS6Ut+L4{f*e%I8CFVYENm$dR}KOE;IVJ|}<#iH`%W_CUD+ zv^{GLn>z->;XOevswCx}6mH(WQSrifjvRp9Rd z!1?jP-0b+UP&J3Ac-$%pVBd0L6l9nnlLeVC$O@IDtWOq$PrLoblvGPCaPB|j9Z~m_ zBRiPw9}mj~DoJ@JMds>NAr&qgw^`yDO9g(og`k&JHIvd!sMQq;ST3zf9J>bNrcBAM zmRqq+Na1FJv&lRmwN^@1+!1VTtN%zyon(tAz?KJ6MkPYg{#3~zBW%OAflX}eG$+rf z#J1)UG3vBu55uM7i@?> zuKinRXkOYRwm};O@d)$sD1UE{O61aBi+ZF3iyqXN=^NaHCtQm47JkHY_tA zPcGtF3b-i)ur~2ENPDEC&9@5R1_h_NX2T5!NT`{Psq6@)YNSl7^!dH8+6cBfh<*^b z*1|+A=4w7m1pb`Vp3R~kN8XABd0mh#g6vj_=@+Q-K+EKx9HvT-UD;`hXlS*Hg*EX)ze3nlqhoxiCQUfO_MPBWe6K)Imt!|L1hgyK7oi`DlvTp zsSQY=HAoo12vN%|mF?FeQ#vf}%&(BU+Id1?g%lhLoHs3}Sx%poc=NfuQrc;rqQHK_ zj=7ng?!eK%%zp}Q`UW#H1s%0o#jvuU7eVk}A9(phW#gWZOX2QaC5nzoM$c1hKR5m&*y=z#E{tk@Ql+v}zLDC^Z`*H3wdV0hu@O@dOgELJEE^zv zm(LZ(zmt)FD)BNIQ-okEr&Tq-fPqls!TWWiKd>c4# zM)Mo~TFn%G666M+yeAFR)(B0DkD&2c!f?flqJCN$wgczeQTYfFyFoVLZQy)D7s^NK zW-0$Ox5FcjIV~m1q=Ys*e6YmvPz(O5y#6Fv6xLe)g9jOdvTgnPPwJM~EwOv$GYiT1 zZnRqGTUqlFDIj=k9alk;LKn0aZZukJ#8{~d#BX}Ffw<{fUO@~-YbPP2(ZOsBR3o*A z*BaFpE`Lb-vRf6TW1#zCq3LGP+eps`Pr^+ zcX<5}p#30F&Eh`6uhTi~iBIrjXAXM@K&@l&1 z3(d+>6Wvns1o14*qeIM0&7(z8F)u82|G#-N4_^HL|M&Um@6Gpj%*=0&H~W0mXmvYw z+qE>vw_=(gUCB%cOTJzn{kca&0xLEoEdMRmW9B|qnz;}AqS%xr@vJCILCeYrge&|h zi>G%W`~O!iahI^5$M2%R@SsGd4NCj3G^&`D5r2mc_#}8TZIi@i)uizMuZF3-hN;-y zX|`W{pNg82`dj)BuLZvUyQ%g39?J*4g-e_wLsvr$G%RhbP`*7gPMDNT*~heKJLA+_ zg(F>q&@AlZ8i-cWzj3bXCbUkvGrG-1Dbih)+a@$ex+_$dqK!5m_fsllv|VWhVzX_# zH$i9!sDo@-+AxH*u0goWrxq>7dA@;YG&cK&snjC=$~RWGN#rS@?Sbo_mmq`-K|&C| z=NqV7!nJxyCkVqmm^J~2w+_@9*D>tIwI(&wR@#QP7PWYNy92iA1`pI5L2q55*Dmk} z2`cGtT9!-n-VL~m^alxQu5*{92mZEwyU$%3 z(hAN}BxfiO>7Wbrfs(Tnr8$zT;EfA9_!m&Gi!iC^ywby;^bT*g5(FRNVber&5pHpP zCg^u8Uj;+yEj;7QZ`w4-pr@erVKG)pdJn;um%ow9Y9W-D=LAoKiQ_6nLK&_CsNO^P zkq4usPa}a@sTI0$hpAFoBlP9vEUD}z4CCdu&uoJRw-U1CvZQwxX7RGQAPVBS2@84o zr)@J_1W3I_Di;Vsp5)*xtl|c9q<~JsXS|#rwF1UjCG3DQz2v0^P`XN|Gg;1;pv==b zuV}&Te2!I84)w$Evn%s4lT|Go3OPU4f|qiBx&;>+S)AGyyn@@?6`a;D2z*;;P$(!) z=MIf6crNF{0JfIo4y5yn)h&2Ax7W7d+D0Lk)*~F_DUkyeda%H?Ew~;pj|$XPaoW&A zn~AHV0^?50ly^#wS=EZg)VAQK@%gAQFF7W)iN>MPfpL@Jj;{eh9x|#`ayfAl$AhB- zb#!Z!ui7E3M!NOI;)S3UWfe%fLTklaLHnUX+o;eId@(w(;C+QQD4j*7f3H+>o?w{Z z(grK55)`~#h9D~ye1n3kc@Aluj~I`Z#1e(#6NSSj1z(5Pbqv(4QD_T!b7{Cw@yU*X zXf1x$F%UoP=;<|e5bFxvQ&l*oQy}it$d#z&`JgM#Gx^PI3&i?>zIOiwvBWDk^AOd=lsh zpcx9P$IpO11v*thBXCS-$a81Nvw|A%1fb)AE>X}9*b1}+XqkdW;(b8(0^Ovb9r10T z^*}2XGzNzn19hDh`8cM~8u4Hws@sf)2r< zU145#g?X)@L-AmsCZM$nIvg(qx&WwMK}X`PK(_#GRM64*V%I=jhBD7DH|Kc__UZBK=;Ub*sBNRxd-G~K^Nep z9)Y@d6h4s(Z2_JMJ~`l%prG&KbwJkw6&17yp9FdWXoi9=!p|W7VnzI^3hfdclK^>7 zfV?Z{Qal0Zc%VxZv;5AZ(l*$Y0K6m&Vh4YVF;rGjD{ni!~CrHFJ) zp)K209go_$tw@e=i*AJkNBd5;sN`GfZjSalU6GKj2}>1(`hiT&<;L;I+(VuUN zy&rRMy^pI#21bwns;QFc|ErQYNl<|kvpKXbF*N!%O-k1Aw*nSz$%m{X$1E*1FU3>#B%?ONMD64DiYwoeG1~tbV zNi)OjAu|~dJh#b>K5Sor&x~oS_JU+Uv>)-~F(%J1K5uH{b3A0MPQCJ>q#cQK#|C+N z%Dy%B??CJCH435+VHVmuc<0y}uOGhT0cz~W?npBs>wy#@;x^tmZneAVGpfI9KZ^U0 zZ;#gFobkqXnKb{_?&0-4$fe2r*!~2PlxFE?hdLhN1LFgIXWgU*4$)j}Fhb(& z{cq#K@&5SP_y{x->nFsZ0{rrX7tu9rp3n{*!&@grdj7SEH|MZD2Va?>Q>*@#>Z-x2 zi63|km$fzaid#6m-p`9p%l`Ky6StfAz{DM%v*B3D*U4$TaFWhFyFpUFP=`O6WQu7m zs}I{p-DHER{?DM&l~jLMa)F7Sx!7~2oZ=e$1{{_Zpzg`EPx0~0fu8F1P1VIp+M{0!+1M0r>2;dZ zxN#6t&rGgdrOHe8yn1=1ox2WITDw;^SJF@N@}x`p0t`4P*W##G3%w>co0MInGfN%E z)PLijUj6#z3-UnJ*sHFxZmXM@K?Xz{Qzu0W{*$%gD;O@e+O^lDHsm!&cn6=#4p0X& zhgy6)dn+o#AH8OTzfZgtsoGSEAHBB6XU`SzgDun|IMTJEHR)e`aB3tPhHp)cPz`wx zYo<;2yI;a8`*(>T#NDP{Kl3iOPMb2w>4qRY$d1*76-(Pccqal8tu9@tNNmja7cDM# zuEYJJs(g3HWldNiHLT$h?A;~%?y4KO*Yq}MAI_NGHfp3DZ02+vDHbJ72Vcnb^?Xm! zlC%m6_SJtl9QG*=hvSG#jO~-@$B|DZrY67a_65`7qBS%Xzn#-v<$WDj7znDaQy7CDrbyW%s!2};K{io&`DgGJ0mQs3_@5wNp=$8k#x68v~CmOR^yXu z@Pm=-XzP>b?565}2BQU?Z25D$xS*Z3FBYb`pt-ht@11u>D{Mb3zJyR8yxH6iwY8lx z+mKiAVL{mKO5pE+zgqTt9oy${?53|UfZxRHOCr%v`1_J*B-$R9%v6QG zSPgFUM+>N9^FTndkL;&2!6mF3zq`COUhzSIZsm8hbT(KSV#+USF{Wp-h|C%3>9|U|X?D-6S{5dUw#82y)9;gMy1kDu)VZ#8A92%lb`i=@-nV>IOyXZCY*hQP4}e{`OO~- zJ#Ni<>@%8nJgEXt`0554ic>d_P&rSut=arOLd7_I>)XiJ_R-b{suw1#hRxLy69B^& zcRcP9Ot??s078c@+gxJMsvwHRODMxTD@^DncG^A-CF7af3w$aF`SeLFJQnLkyxlDax9ox%I<{X2O?%@`%EXmj8Yy|7; zICF=;Y8R3A^O7B_P#;@6TRViN;{o49ph33j-;7ly)V>Ve?Zmo!Y9I}tlr#iVUa=D9 z^&ncm)$1E-6U%HiGn+iy)1CeZ&9M1a9#Dn+0PT`zNo{}H`n&egn6}-e0^i;p+bw(< z6d=c|OC1i2)3^yK<7=`@MQhA7>gdNJmvG02DET?a~~X^pRu5`wxws6I-vxc|F5uCGHegeftYLi9a<^)SA{0ETzv&oRcrtZ|U2hiE=i8Cer@ht2B}GYen-N`@-tx`=M|T_03t^;z;Wy z79C2atj?o zlkw~IJy0b6sy!S-YvS%nA^-}gO*>&8aL1|HZ7Az8w)NcFZOsD{sXM#PZ$l(}gGXKRB zQ@8Gs!-4Vb10HK8v1Z54#pCbvR$Xa@*WC$Ky^@Ld-su_GZvrT9=ilqM=uv*XXxUQ^ zHQCF@Veh-aD#IikeK#uj38W#7J{|pMw}DD6MN(_5-Ir(JnRg>qJF_sk+g0^$7Cvz| zQPn>SyESxCeR>)9Y=~0*m5H+(x@bn6YHBeY7$@K_8is{*h309(Ae^m?c8=97R{!H< zKRyo6vg>f{y^sJEw9b4}w7!vGa{n6^bDH^({o_Ay=DkqO>>m{|{~V7??tM38@nwgj zuIqDp>U7xW(ZX>$q-IZpJqJpn#nVtX4~YHi@$w#AQ}#x`V`??TUB_1s{6v7?7 zG*PLBbTAzbrhwrf0#{*giZcP50ER z7S8sfxvv_w`%c5@EOfH(-3fcFOYkIUPtqsjAuw%7By9-2=|yj>=?GSPs@ea+M0)to zG3YhL7l9Y`RU>HqQiv^@#~UI=%eS!643v6c6nlPagvFvM?nS4&CDmZOuXzWyk8Dvh z>y}t_1ooExcEAbQnw-NLpZ>Mx{teWu7w`ulQ_cOK;)M@`3wA+Gg-H$LKxm3zgkYAw zYHPZ~JX~GWh&07zQutm55tgWzXvv5D3fAYJ8FcK}P&A!DHH+p_<9830L#(D<2xf8v z?TN{fV~8BQ=(eWV4+cKXGE$vp9Sr~87xKuP{+Ne0Or~wfPf4-#qYX$gkCa-l=yz$> z-nAe89cJw*DB#RTZM10+q_h(Lax`eF(X9j6@<@-a;w_Ity8i@c1|dI=g^{Cd2S@rK z>_MY!ghDp=PSI358|n_=XOE013&%cwVbHIz4&*Z^%+tyX;4uz7?9WHb>)~)+NM7@O zl;S?R>At3JNFFYKtW*8n3h#Lwmy~>mwxDiz20eh7FYVXU{iMxpn#f)TQ{rFw-gJE6 zke!R{8%F`Q&PWi=f6zwv`wT}lcF=8wAMbSKERrH!vTucrf|ftSQyarNTn8U|dV-yx z?!(;X`+xX7%-K5cJiN6rX7ZmSY5%G5emd9d&Nh|BqNCcnqV3WKBM|2f z2yl{~q!km7&Xb_lWpMbWN^RV2 zs`j#fF&dL69kugd=b)LOJNCG``Vsi-lOg&@`XEgaEi=?2?7nwI7)H@LQf*3X$RA#q zG=4Nr`G-D5s%r7Xe>$iVM&S4VxvJ_q9AEf3T6HcRyZw@_nw^ek|1wZDd>G#IOJ|>h z(D*dVn_5%U4R{9FyAH$u{-O)EyFm8wkfx4`-<>?cF1-I~`+~0QauO4dX^N}pv^L*M zGd~l}_f1h((h}=6#j`22c7u)`(YzN;3yU6U7R`g3luEk3`^7o>#XU;1I>WFI)Y1(H z_7Y!>k4iL)TFby7jgQtW27xZbGRy!h#GDSZ;A;Lbllii#!2Gu+EE(3dS}dxH6pIeR zavoSKTExpBFN3s$v|Gdm^FUbD;sYo>u!v911D}eCHFJ)M*1ol-sLNu}<;KC*RM&Jd z@m9V`G}oHU2c>sv;G%`rD1*~r8lQo+ETH~B5f9HfB}QEot^I1nYP%Cetct{0&;3+i zq~o`qC%@1y9flDeAfjc2L7iqkl7^0&tjUpem9S=5bwyR^^@I42PjpeYwu_a`xjiCk z1~izgy>_Nm|K)UR6`XeW&_z)=7#6wFaoU!dcp9xl&fjX0Nwq6eh32{8ohm=_+#Pj+ zy}YnDq?uoZy>}&hAcM-s-qqpAg|V&e<#3eIG2S)D6SYQ(@cn?03Oo0R2>2H@kX0Z< zVDtBD2mhos&f&NQawSO7AP7U?8CV9g5#-ce)n2HhQ$f&0hvS4E{vG&|!w~|p=E76c z05RrXf%-sZz>oZEAR})$97c#W6=WI6AovNchFC$j9FD@apa;1UWCF-dAVrXSL1utF z4RR{TYar)>>;%WuV<1goLI@?bB`yA9`Ezvj}iFgUH-o4AVOnEZEF;Y+K@-B(Q9ZIndpZ)qf)ZW z54BMhhL8_JKy}0qbww|cfBaB86hYehqv6O-UiXL639`x`b#A*6PC(x2MNaR-PXdTf ze`YPobU60Fz4OX8WKt&-K%V%c1Y{yz0>G^s85MwfAZM~H0EMX5I)f;Cmn*&C3Kaz>Y%=jyT<&de z(L(Yl6osKVB%m$yc@!Dg7D_LX>21*|^agn`3`(QP*f7XZXRE9j^g!EY ztS1*bpf0LLuU(oK&{CwD>q#!PhtRf2)B*J&zeR$(FA0c3okQze!FcJV@frbRR0^*Z z%072EP9hkuTJlO18jY5c-BFO*fkYJz`SvD#K!pG90e;CvF7G>+I9XK!-Re%m2_WGq6sVB&?j;L)wzQP;UqF{jEe7Psc!H%edYRL(5vm=bgRN~tS z(vs{B?ar0bk`9(7@cgU)4o(>~Ek-i26B@31tR}WjC`OYEdK1k0O?w=UUj>28*P}L_ zQoVCkJ3PFNDc+GO-ugb?L4CZneZ18vtpp>OPk|<;?sYh>({S@ipBU63x(wJrSdH-3 zR&Y*NL-m&ttv?yc-+=DgK8Ir(wI4)Q#GrUrLx><;{+|38gZjJX!hP`%WMX?X%a^`3 z*b5yq?RPky!@ctWvL+TqbgTzvk9RoUpiB?{Jf&ErYG}T20GjUvI;|U>LJ`EhGYadH z0h$KznoPYexk^cKd*8Lh#p=Aw=>wHOYg+&|IR_n%YHCwM#&$*#5nE_P=*doSr1@ebGasWO2(;L0y&ue6!$+`Toj?Cqc zbY#xF;j1&cSmBb((wk>RnSMY9S8$U7{iKavvcoMhCJlx8WIkh9&RrQX1BQpemuax) zW|H%?w4XeIl8?y0>3|WIu5^+(5JHr9WJUUqvGgh<(*~j;;Zr-XB1{2z|0xJCzoe^y zm)nx_1K|l6v@2y0TI`HRCngYeI;zl>PiJ;Zx&2&_D%hKh}AaPWkKa8n6bMFmYy^&;5^{-q_moL4%q0!WPAX!e;`{8#c zz20U*Si#i^q?)SRj$}NG*PZOlybH-asy2*f>H*w)2Uq8i@L{0d$<^<0bthOGwC-+X zC{_339sZ50Kji8F@-C=RFj+keb=H~2F}2)*mtj+&L8{0VYPE?xp;l8SGAp?s78p8e z^#@5A4ppU2`mfr~)%!^vsMB80{BIroU>l|0H(KyFIUk$#-*8`Y{xdm4YZG5#>i3us zeBq%$!+lTC2$+H<5;p=`{yIs6lJ4|1X7wpI*1?mH8t)~`!AfVG!uVLOp3T)uNj0d` z7QD*1oSpBvx`Fe_-0dOfBeEH|!FeETfV8$3N%%-;(+QF|5?Z*JOar02JdIm%F^?N- z$#!a-PL5M6`I|`D_E&CIN_<9vRT+sIg$AhVjpX%FC>AA<^+0vt;cL#TNZe?sE0?5=Mgw%||1vc_MABC zJDq$v8X6qLzlhUIN_eJlwVvDqHL4=v86a}W&L%yt9Jwao^sq``FG8UY2Nfs2*WwLxMBtmazPV|*C zy(Yp5I~-c8C)L!dg50CRNW#aVz~F`!-Tw+sU9@8jUy)(sP=DCmR*yp+{b{C>>5Cb- zw4_aFkC&a0{TUJ~6e!pVzPCU418nU9bb$kLt5yCMgf3EUTNSG5jZOz)r?BcCF# zbI%glBCCR1XxB1T7-I5g&M(u)C0zZP5OnZ}rx7da8F`F6?9Fb9^-KP)=u7917)4<7pqm42AB% zX=dc_Tnjm$MXpSOb+m-Lm2Y8uF>m=adf5Ju<9zaILi$$ zNNV)2BnE5s5KiSI$R`+XBm@AbqX^$pOIJ^>DCfN8u6Po-l+0Iea*NUy8;4&wpObtc zz>`n6MBEavq7zE~Ok18%<-los8vf+bxHlX`sP`Qv zT*!J_>LiJRp6!`W=9kR)Cii&{xU@aCZlTX*#eTwft{e zqJjIuIr6nB$VWGV8?}6j4I|5^zzm-90&C;tA6U%qRZM;$sb9Us)tP+b=)ttYBhD*+ zWFVgN){!ink?&{4ocHBi&r{Kj^9;(RC(jhPqf;oe#nj#1WO0N92$%sXQtS6+o-ShDO_V9 zhVy=~@zY9;Fr>=9ESjxl^Nfg`yAKI6~1(5Lrh`{NL zZQwIjetb>g_J!A(;c9Mgv0PifJ>s(G4xc799){4Al*0;uR+5N+Qk-j~P0_X15cA={xIe(6K;|1P=^cZDnC8DlPdtwSV^Q61E-Tq zez7owwNN+*oKD8ldkj=_{(#%dFDzh`r0WHemjh9|OCs(a*kYvRI-6-va;ufVX_j-J zFdz@=PmX`Ae{3e;Oq(dGrgk|m7iezxrGzSnu!95 zI1>fwjIbBcDIveKk=NH+vK(yaS(1v~q?(EYQYr2l_(;>`XBJTINHFZtQhkMtzrlxL z3<;kF-ZPjeWa2|6Hc3Kv7+h&HHu3*xEP*#Qh-?Q}U1uoM8s%3_1Gu_eQp0Z=YK4w7 zQOm?*NffvxvPR|d=?4cd>52wULzX{gWpBF)4D{w}B=JQSKYb13 z`*^1(0M`m3zpj)WQYMsKmlSjW+u77tAn; zSJs0p&xI8_1Wq$_09qbQRspAORX;Jea9&N7Gl@mE{xfy%{f@+7d%nRMLErt; zYrUjKl}y09ATUPPB;oP^eDu;oN86Y6B%MF(Ai8u7r(Cjl4eq2_b&hG|(byiR zTK@FD#64T~q7@mM4{d2HiMYH})`G%37XK`7{|3%;dCNkWS~$tPA28uTu0Sl87y9uI z#l^!No#n}IGW$K;%>tZuqvbF5y(DE01US_cppFNqIL15;PD}>&XMs!Sv+@-lcn(<) z0dy8n)5W@k|7VMOuC5_xKpkNqjdJ8STjZP=4t5Jap{%JP&Ac}R@rZHpfsyDAD_+5iJz1@lWXxfd;G7I4 zJk+N(*>o61p=5IQFzT(Q5Uv=Ed|MN(2mI@=@dyf+aRnK31oiL~vYFKocM5plB`} diff --git a/build/first_app.o b/build/first_app.o index ae714a19685ba0d8234c5e197c320dbd03957155..83d46c560d82193948ea93c93f271f6064953cf0 100644 GIT binary patch delta 11336 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 delta 10608 zcmZ{p3s@9amdC4FFpvOEAWLY_ zuWsG?|IRu0S+}aIJAP(4cG}XCq8+PK`cj@K)EnPQp=hya z*!{0IAucO$I{fo`tf^s6Bq^d6-T!o_?)!XD8SC5elJ3Xmtk)+SjoT5eH@=;>VwGp5 zXO(C5Tf(I(of_2s+3-?}ngX*UbJdjgCnMv+ELq>Q`=j5t)E~o|Wjk3fo1AT^yE^pW zG&#LkqGU}iaF$6^l$(XDeJ$%4w<%_tE@LWs4qrCthFW1vMOusV&@t?P?me1 z#-Yj@SG&@=`73Mfdgn8`FU(mI*f9&fh+S0gog>0iz!WM`A(sk)G8M$*Bjr(iJ0F_ zLs@0r_>R>!zta~tzlZE{5qyp30^j^w5FIzx@e8a;HqF{J8>9K>MFh%veGf-8eyduW z+Tg*s_?a|xeUoC{y^|_!c>5TteRE??P1H-rnApvzYbvScB^I^Du6NL;Vxvj&M27 zpbf4y!{HUYsFH>rYcR}t?K}iVWU7_$>k$)2eRR9G*P7tPM&j!H#PC=Fe;@IzCGYe0 zT_az)M{R?o@tI-NIryKk@$K8kZ&yb@72bM}5>&&Vzel;LhTj>kyc8b(<7`OJZP} zqG!KreRdLE?Ec2O`zb7V&eD1)boCaxz9|ZX#pwRxSXyYfhT^O?i|*57{l#OfwpgD& z2HAN3A}4C&ePzy)>_2T^RO0I@srP+pO~}KA5TQ4Ar09)r;`|qP>VCZo&s})##&fq{ z@9`DmD$u{itFQg~Eno31J^QU4ztsctI!jW!^v14lO9KVN%k=E)+e>s`XNm7kYeE4w z)vw25Yj|)9X0;V}8UY;xBEGZZLp}A19w_Y8gWbb0Vn+&GO4|5P%C)mNVMfHp4t49B z`mg)Ptw*;$_-;uc*IN|)zhT$U=x6)UyNG%a{am0{Js|F+ZfHmz*?!FFwc!2folDbf zB=20vn^@6)YGSLUC=aCqi=lr+r};6ldo6`AV*^m@)Y=vH39(p8FKBy}_YLS?V+J-lTDACww|7$$m>l-9b?;1u>3wF%fxK z{5>R2o~JH@4U-qBufUnfPpTh7>XZyM3YJe9hbw5ul!w%v@XnMZ^(DB5`uku{8<%Ws ztBNv{q7}x(Hd<<8BCx3AQ6RQlMTv#wX%FDq_NI-GEW?|h(vRTBX-S0_)nQlF!EGB}<7AXDS=%J!o)g_78+Anr;Gd{tr0g(jq&hZyS8^{0R78*U0QY3T2rh_EqN5 zE%fC~F^Zo{dk3gfH9JiQPk)y*4_s46ja#Oaafs#NVxnd$F;F>m6b#Rbv)hD{r7RPk z{pK3DvNU_Vq}~vk1eHirC4Du7X25==(*^bPhm@rp2xe)+PFWOaI6NA@$kNmdNSvmr zFN-`H7GilF<@R6V{7g`i`Xa>0QVKL6&BUcJK}jA&pMx_P;m^Y6J7JSL$Ywj(rfce1 zk)Id&Met15?4ElR<+!r6&)%Gsjj(097T%0B7VoqX>OMG*);IBbf|Ai^og+)%hf7FL z;F_JFxccZMSxNwPhUUtSRFpU+UU^Nbhvj)K>WLP5fiV&-d`i2>ORX09A(8)!$lnwB zCnEn=)pUQgwUD$Mq{I4P(4wo>(XpyH< zZqJRTk((vzp{zuf_7QcR5Oj7Q6`KxTT}PdIx_P*Ps%4D|1hX}DjL6d|hmLHcFQJyp zA#t{*HdAi@1unJ;O8-uJMMnEZ#JMfW;l@s}q96vu% z^@zxS0=67Y)xd-KYRc^gaN$v3I&c&z1&x#PQ(<#i*d*XvCE2uKzbTn}&J4JOaSACf zT7fnblzhVg^H_0DD$0k__oDRuk!;mhs3$6m`s~d)m=CU8&E<=uyJJZol~b#9piV9E zqBo^p|RAFd@FQGM<|753(IJYI%6v zqIWt>EwH6hgNVgZcA6(sO_b}6tiK0oi?so?ozdm63MuUvrtb|&X|m%Xfb@PWjm3kK zTdo0$yaLW4rG3lv-Na}P+(5dL(bfSpzI>qXCz8@B0ZPlYXb1EC5Gkq@UaQUbHJ%JoQ*9B>8wJ}!?^$HAFu4aO{qDqq8FKajQ*X)V+L#$qHfJ&O!6 z(P`h-@$fYA+%Ze@Bt(=RanQKl#1lZO)Zz=?-hOP$oo?J=hR#n9_Tv#J>g zliL|NJkE5D>6J{M$n+ zLxAb;Gkp{4<{tJL)49C`f-AN9r}52=67`#Vosv3rkFT%@`O*?eSFlc*wm&xy0=E@teGx0p8=kF};OVkbv)l zl&C?^<6-uABGXHlp276KC7*(eX(j`Fw^+*be3^k(qV42@at>nL8BRLzY~@XptnQl4o34K zt$JW&AEULf3Mroxb2p_{0NCkb2F1muNo3Kd#y7LxMSy z{Ksq#lp^Inq878rxc?&M`{0fN^fc0~Eb?wfx4{*pd?bI&=xT_5Vjz8!QM^Bq@;Qpd zS}4){Zh{)5o3LcQlx-n|i9*!C(GW_%-6$FK0#ZKC=0{Yb6=EOUi6wKa(%2oi6Vf&g z{AhBD(eJ}5q&)KPC8ajIAh1!Ze~Lxkz96?B`v8e~>V>Ecv!_*fbzD83I!D-APL~Rpl>p&HrsfmKKHBsTM6d4k066i|J zhB=$G=v>ldazJpC20J%JML%dtc+P}MR8!F7MG<`_`PpYP3x_OIn~R|at#dI(CR6pk z7CqEnSeu}#rLbZ1cdk8baH!~|(ZFplk{T>2kTIq%Lx=y|W-GcDVsp_jQOplx z6ps$`>vJ@F<)@gP(!Ky(+cmYcy=eQyD5&$kh5zb>t9!uHFwtI#CRupMvFJPRfd)yZ z4M~HN(tognebr};$a9CJ9!cj7NgE`kdv0*#prrbcRBbfsEgq73B&`{eHb`1KBn?VB zeMqV{8TCFnB=ty2KXnK9s6o;LL(-t6FeFuX8}-sJfWeVHk`@k08zen6Bn?VRd*tBA z>T^cDZ9`Izr1VT0?Asveks)bN(iexM>JN;1>6^&l$R0_(L(&FG14GiFqy6T15u?g(xtmu)_1+B2&2eyKuiMf+9xmf4HXg?AbK4>wGfewOrg|TCAs&t( zbV%6WkZTCL(6hyDE0a(+0$~5DTQV%c`{787+tPJETt=HVY17eXle#~{a?Sx2``wXU z4nvKF9Ym5_yyN0Gp5{y0Iwqzzj#R0eNthDKG&&dNgQ%P_cZ8oDRxGl%f z6i=N=a0J}8Zt2nA$ZLR6oiO&G+fwF)ii0@Cj~i9?+nhX@VevZQGTL;b=^?jm=OCNv zLl`F+jv(xiu%*B02xle3*j5~-Ck(Y8R<~wYHlt@NwmBIt+n z(9ot??tehuK(XrM5JV#feUioG0IKF$P!DU7c~V;giH8%^I`ACUMtv)*jtw{L>4tp- uY7S2xb!>{E9HXx}nAYMk15O{Fd~Y7Tvtqh63jTO_Mr4G11qVnxlJNh-=9fJH diff --git a/cve_game_object.hpp b/cve_game_object.hpp index fcc4e0c..2836ba6 100644 --- a/cve_game_object.hpp +++ b/cve_game_object.hpp @@ -8,7 +8,17 @@ namespace cve { struct Transform2dComponent { glm::vec2 translation{}; // Position offset - glm::mat2 mat2() { return glm::mat2{1.f}; }; + glm::vec2 scale{1.f, 1.f}; + float rotation; + + glm::mat2 mat2() { + const float s = glm::sin(rotation); + const float c = glm::cos(rotation); + glm::mat2 rotMatrix{{c, s}, {-s, c}}; + + glm::mat2 scaleMat{{scale.x, .0f}, {.0f, scale.y}}; + return rotMatrix*scaleMat; + }; }; class CveGameObject { diff --git a/first_app.cpp b/first_app.cpp index 7c3fa18..19acd31 100644 --- a/first_app.cpp +++ b/first_app.cpp @@ -6,6 +6,7 @@ #define GLM_FORCE_RADIANS #define GLM_FORCE_DEPTH_ZERO_TO_ONE #include +#include namespace cve { struct SimplePushConstantData{ @@ -47,6 +48,8 @@ namespace cve { triangle.model = cveModel; triangle.color = {0.1f, 0.8f, 0.1f}; triangle.transform2d.translation.x = .2f; + triangle.transform2d.scale = {2.f, .5f}; + triangle.transform2d.rotation = .25f * glm::two_pi(); gameObjects.push_back(std::move(triangle)); } @@ -179,6 +182,8 @@ namespace cve { cvePipeline->bind(commandBuffer); for (auto& obj: gameObjects) { + obj.transform2d.rotation = glm::mod(obj.transform2d.rotation + 0.001f, glm::two_pi()); + SimplePushConstantData push{}; push.offset = obj.transform2d.translation; push.color = obj.color;