From 83f8eb5bc60b9bfe5751b325800a5fdc54591206 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9au?= <theau.baton@etu.univ-amu.fr> Date: Tue, 22 Oct 2024 01:09:13 +0200 Subject: [PATCH] Resolve texture Bug --- assets/shaders/Image-Instanced-Animated.vert | 20 ++++++++ assets/textures/Cube_Air.png | Bin 0 -> 134 bytes assets/textures/Cube_Amber.png | Bin 1834 -> 0 bytes assets/textures/Cube_Blue.png | Bin 314 -> 282 bytes assets/textures/Cube_Brown.png | Bin 314 -> 0 bytes assets/textures/Cube_Cyan.png | Bin 314 -> 282 bytes assets/textures/Cube_Dark_Green.png | Bin 314 -> 0 bytes assets/textures/Cube_Grass.png | Bin 775 -> 450 bytes assets/textures/Cube_Gray.png | Bin 314 -> 282 bytes assets/textures/Cube_Grayy.png | Bin 1028 -> 0 bytes assets/textures/Cube_Green.png | Bin 314 -> 282 bytes assets/textures/Cube_Greeny.png | Bin 1468 -> 0 bytes assets/textures/Cube_Inverted.png | Bin 314 -> 0 bytes assets/textures/Cube_Inverted_2.png | Bin 314 -> 0 bytes assets/textures/Cube_Lava.png | Bin 0 -> 776 bytes assets/textures/Cube_Magenta.png | Bin 314 -> 0 bytes assets/textures/Cube_Orange.png | Bin 314 -> 282 bytes assets/textures/Cube_Pink.png | Bin 314 -> 282 bytes assets/textures/Cube_Purple.png | Bin 314 -> 282 bytes assets/textures/Cube_Red.png | Bin 314 -> 282 bytes assets/textures/Cube_Redy.png | Bin 1198 -> 0 bytes assets/textures/Cube_Saumon.png | Bin 314 -> 0 bytes assets/textures/Cube_Sepia.png | Bin 0 -> 282 bytes assets/textures/Cube_Void.png | Bin 0 -> 307 bytes assets/textures/Cube_Yellow.png | Bin 314 -> 282 bytes assets/textures/Cube_Yellowy.png | Bin 1393 -> 0 bytes .../engine/graphics/back/textures/Texture.cpp | 7 +++ .../engine/graphics/back/textures/Texture.hpp | 2 +- .../graphics/back/textures/TextureBuffer.hpp | 2 +- .../engine/graphics/front/group/DrawGroup.hpp | 3 +- .../graphics/front/group/ImageGroup.cpp | 8 +-- .../graphics/front/group/ImageGroup.hpp | 2 +- .../graphics/front/group/isometric_sorter.cpp | 2 +- source/engine/graphics/front/object/Image.cpp | 11 ++++- source/engine/graphics/front/object/Image.hpp | 3 +- source/main.cpp | 46 +++++++----------- 36 files changed, 66 insertions(+), 40 deletions(-) create mode 100644 assets/shaders/Image-Instanced-Animated.vert create mode 100644 assets/textures/Cube_Air.png delete mode 100644 assets/textures/Cube_Amber.png delete mode 100644 assets/textures/Cube_Brown.png delete mode 100644 assets/textures/Cube_Dark_Green.png delete mode 100644 assets/textures/Cube_Grayy.png delete mode 100644 assets/textures/Cube_Greeny.png delete mode 100644 assets/textures/Cube_Inverted.png delete mode 100644 assets/textures/Cube_Inverted_2.png create mode 100644 assets/textures/Cube_Lava.png delete mode 100644 assets/textures/Cube_Magenta.png delete mode 100644 assets/textures/Cube_Redy.png delete mode 100644 assets/textures/Cube_Saumon.png create mode 100644 assets/textures/Cube_Sepia.png create mode 100644 assets/textures/Cube_Void.png delete mode 100644 assets/textures/Cube_Yellowy.png diff --git a/assets/shaders/Image-Instanced-Animated.vert b/assets/shaders/Image-Instanced-Animated.vert new file mode 100644 index 0000000..feb6172 --- /dev/null +++ b/assets/shaders/Image-Instanced-Animated.vert @@ -0,0 +1,20 @@ +#version 330 core +layout (location = 0) in vec2 aPos; +layout (location = 1) in vec2 aTex; + +uniform mat4 uProj; +uniform mat4 uView; +uniform mat4 uModel[128]; + +uniform float uTime; + +out vec2 Texture; + +float process(vec2 pos, mat4 model, float time, int id) { + return pos.y + sin(time + id * 0.01); +} + +void main() { + Texture = aTex; + gl_Position = uProj * uView * uModel[gl_InstanceID] * vec4(aPos.x, process(aPos, uModel[gl_InstanceID], uTime, gl_InstanceID), 0.0, 1.0); +} \ No newline at end of file diff --git a/assets/textures/Cube_Air.png b/assets/textures/Cube_Air.png new file mode 100644 index 0000000000000000000000000000000000000000..ed6b8e0766c45ad7800bcd2a972db9bd9ce8e979 GIT binary patch literal 134 zcmeAS@N?(olHy`uVBq!ia0y~yU{GLSU{K^>V_;y|p|&!Rfq{XsILO_JVcj{ImkbOH zEa{HEjtmSN`?>!lvNA9*a29w(7BevL9RguSQ4OyK1_lOcPZ!6K2=})K4H+327!ED? j>YvLa4>Gr5y_CR021dT=_o^5e7#KWV{an^LB{Ts5Is6{= literal 0 HcmV?d00001 diff --git a/assets/textures/Cube_Amber.png b/assets/textures/Cube_Amber.png deleted file mode 100644 index 2818dc1c2e2ce58ac8d1c13f1ea554e000ea450c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1834 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 HoD!M<TG3bk diff --git a/assets/textures/Cube_Blue.png b/assets/textures/Cube_Blue.png index 660ea2bcf6a491b02d8245636432892a96cac429..507f300138b6411b10e78bad4cc2a83b3aaba7da 100644 GIT binary patch delta 239 zcmdnRG>d71IF|wkGXn#I%aX2R6BQNec>;VwT&-O%>zFJEjlIagz>vIZ`f~;b29}Z_ zzu^D>|1&sft^C5kz`$AH5n0T@z;_UY8Fx&~e#^kX(C+Et7-Hf7c9N%9g96V{iFfts z)+|r7f7vude#n@d>Mh=NP&}pNtpVHV2HptC&)qXO$T3DU3ZG|Y@rl0o);;U#=BTBn z-18=<xoq%{IsahZk~k*c4abD$aOzD^5ax+#in{6lPhsQYLk!gqG71^h9%RU_X*9kh sFo#oYFN<=ZuA|y2{YLdw)%FZG)mayY?dIRbz`(%Z>FVdQ&MBb@0L3s@&;S4c delta 271 zcmbQmw2NtiIF}*^GXn!d|BuMziHZvKLIFM@t_%zesiFUu@BSBMeWteMKLZ0phR&Ka z1_lPUk|4j}{~*AydH<6A3=9mM1s;*b3=DjSL74G){)!X^28Q{bE{-7<{%<dN3LRG9 zaS3cX`**#})+@6N_BB>dbojfyP&9cfuVjDB?!J$cOM~>LZS;CHL(=<@^Z6N7!hfsN z&UE~lW6Y*B|LE<)A8$^6E(|_k8h>(*`GK!aD)(8`7g-+ko1wizrHI|n>mH-WX@7;5 z*53`j2h^-4^n@Q@w%TF!-mI|5ri!b-#E&#SW$@&w&^y5C@QkhJf#T;?+2RxCUH`@W ZYa#dBb^C5EWnf@n@O1TaS?83{1OSqJb=3d> diff --git a/assets/textures/Cube_Brown.png b/assets/textures/Cube_Brown.png deleted file mode 100644 index 6625a70ebf229d0bd2531ebd3723c97dcac377d0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 314 zcmeAS@N?(olHy`uVBq!ia0y~yU{GLSU{K^>W?*3G{}GwYz`(#*9OUlAu<o49O9lo8 zmUKs7M+SzC{oH>NSs54@gaUj*Tp5|T^24m!Gwss@EIP9t7#J9i7X;KWFfg!{1o;L3 z2LXo7`<LuzU|`@Z@Q5sCVBk9p!i>lBSEMj7FwFOKaSXBWe|yPO=&%BhOJLL4zw2eT zUYTXEud#Zf!{6<NqRCr%CHrG`_kEmP8l*REqt~MulHP}$&(9G4Tb*{M<IfypHl_JT zZx{Y}bMkXx@B!2KlXJ`ue05T}&!WD_@}S=g?G-9T?0#PN7(Gt=E3~x!Zty*zW;LNF z{P?of4y*TOg+(@1T>T|}r12?(Cr^dm0ZxZ!Y&{PYKd;IbpD^$GFXmqhx!<nacXKHN P0|SGntDnm{r-UW|06BT~ diff --git a/assets/textures/Cube_Cyan.png b/assets/textures/Cube_Cyan.png index e154c1b9291be5f26b3735e77279271177ba376a..13773ab71faba09930bdb840951eaa60571b0f9d 100644 GIT binary patch delta 239 zcmdnRG>d71IF|wkGXn#I%aX2R6BQNec>;VwTy>5diNAbVZ`CRW28K({Yr+^97+6Yz z{DS}g|Igr{wekxC0|RG)M`SSr1K&XqX529``z-?lL%XMoV~B<S+ew~c4GKI*CEnGi zTeCdT{$<k;`5|L+s<(L8LGhH5w+3vd8+aomKX=dEAjcTZD14ro#V7jSTlcJ|o1>PR za?hKb=CZ**=KO<sOX8S(Hyjh1!>KnxL6|3|De9*GKZT8p4>43f$S7n~dypZ!rqTG4 sz#LAoy)4Rsx{hkA^c&SzRogS%RA*fnwwr$!0|Nttr>mdKI;Vst0Fbs=!2kdN delta 271 zcmbQmw2NtiIF}*^GXn!d|BuMziHZvKLIFM@u3TJP-g_S`djH09-i@+bFBljY4Aa-j zGB7Z(l?3?({|5nv&HI<^XJBC9EbxddW?<ku48n}Z^H-!WFfh#bba4!^@PB*BQ|Pb) zk4s?F*}v;$wqBWKu&=RtqQl?qg`&w@c_sT}cK3apTpFY|ZKKzt8Is<IoX^jw68>AA zcBbRc9Ah@6`A2UT{&;ipb7AlS)A*Bf%ny8ZQn}BfzR2>R-wf>)Dn;ymUiTP1PWvmg zwEk}JJ)mYap(p(Kvegc&_hyAfHdS2xC4QvwDT60Zh28;9hi7a(4-`MI$`+q6@A@z1 ZUkkb4uG@EWDFXuogQu&X%Q~loCIB?~c7Xr@ diff --git a/assets/textures/Cube_Dark_Green.png b/assets/textures/Cube_Dark_Green.png deleted file mode 100644 index e2e446677e0be7233a32d5f4436d2b1b7df8d14d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 314 zcmeAS@N?(olHy`uVBq!ia0y~yU{GLSU{K^>W?*3G{}GwYz`(#*9OUlAu<o49O9lo8 zmUKs7M+SzC{oH>NSs54@gaUj*Tm=~zmAj(lR~4z$hsdujWnf^)J(n?wfq{XoB*-uL zKL{{v-oIo&0|NtRfk$L90|Vb-5N14{zaoW!fnmO<i(`m||JzHRLWdQ2TmqZU{#`G# z^~x-ReT~%<9sX`F6iwdBE7>2jyYJ)V(jdKQ8@(RQkn}#}e13-T-|Dn89e?H+vnkC# zdb{w)o0FdlgAbU-pPXZU;H#6$eHQgamIwW2Xs=KyV)yg9$LMj|U!kS-cZ2T%HLD3d z;m4P)c38bPD=f09;_5H)BaKfPJb5bg4sbd=W9xaK_<2>f_=I`ae=+}B$o+QRzMD%K Q7#J8lUHx3vIVCg!095vRR{#J2 diff --git a/assets/textures/Cube_Grass.png b/assets/textures/Cube_Grass.png index bf967e698b61604ff8428348c9ad2d9d3b0e8538..cdf1c247f553a7bac65b41a60a90ba387e72e327 100644 GIT binary patch delta 409 zcmZo?JH$LeoJ)a&nSp`9Wl7huiHZvKDgizrt|?7^$ql}#&HgEkzG*G~N%cO-4L+&O ze(9|NAx1LwzS;~743nRR6)`X{@RS7k1^-6?2BG`s&M`1Ba29w(7BevL9Ry*<9TT(P zGB7amd%8G=Sopu4#JH*1fWxJ6Lco`Q-~aY|M8B2%cg{lVcf_Q6pC>gQF7?`f?`?W` zd3xmkyt@sGNmCWP^RAv>eo<3-kwV~Qz5R^8Qg{rnE}G(g>}d|e^;9=O?KX|W5~h0Z zZKmH4*tGnzSHp_zfC#gA2Jbz8q9lW7Jl5t==`>yWS<+edkm7MZ{#V9LouZmE&$Mj) zt3G*$l>F2cMKTOCw=D^K;a%TZ>+9xV@XkT{gv#yC6!9?W))^)D879<r8C$$wu{8D@ z?+KMKONH{Q8RB;ve9G)!Zu_=P&OvSV4e#Ht*iXFq<^KPG>be-~wd=P3y0mTk)pKF- zw}N)Bur0CVt(jPMdmm%|lT7;t?#f&C4vPN2ZT>TCoF`wsDrU)91_lNOPgg$|mUT`E FO#lemwO0TD delta 736 zcmX@a+|D*ZoJ)~|nSp_!|3_r<L`8-As{uYCt_%zeEo*}sR|Irz4QW~x(6ueJcClaE z`k?w{{;lhR8kYNaYzl7Q7~HWrxOr7z^XkCrMZRqtf;%>cw5$#6*c8&ZDxhgqVE4Ar z&MhG|3w;|__&2WbZ(1E#Imf$uTS)B^zxEBmU0Xuxm-<gS7+JsEzj;ky=jM=_MZO(d z>O;D>hc>PZ=-nAsy}-9;M_Aj2pz=B1iS?Fk>w}wC229u&(Z46WWldn9oqqTBu*T*7 zU0Xw2)&$ir^{a|?Ygrdmzs#>|TS&vofX0>nbxZtO*9K+xIZP`GXJBCHl8tL(U|?`B z3Gxg6j|0@>5XT|RaC}Z!J_7>-XMsm#F#`kNVGw3Kp1&f6fq^l@)5S5w!vE~0n?cP6 z46P4aE(kG2P2SQ_%9wmmFKlDh-B)?P|MjOZC3^0CJ@xsbmY@4y^3)qMN+&z`$$#w$ zXIRjhGkHrK!-j<AuNB^G^Q>iQ*dg~#cGLFz)(dzqvNISw4yzYvnI<i(lwJ`s@eyM~ z{hN7nj-8ZTxbMaMevYq;5<Q>vpV8d5=uJ}2Pe%bEiSIU3xNgkXP_pmd*|K1Qzo*ge zIo+$@%<@Ypx1U*%Q~dSjPlr1S^}7z_9iJ&wC!Jnyu&+FzX}L+tPL|U)%U3?&=drux z|IgU(rAg-=aVF(y&$U^nO)^-ozUEA`(ud28U*hfuebf8w#q4T#V@BPhly@!bI4oz1 z?quw`p{!ogq~9cV|JC`^rVfJl<(3sc`e-%VLGXw`&ePll9TWdEd6rzf&G_fVqV3Gy z5w910_dhVrpz+MBYcIpr@ODMr%Zhy}6>$I6qrk~rQ+BfPYC2AhUZBKfa+5(dQo52` fBk9@MXX2G?2i3IH4+S$YFfe$!`njxgN@xNAMa6X+ diff --git a/assets/textures/Cube_Gray.png b/assets/textures/Cube_Gray.png index a2057bc9e04b33cb9e494f72a35d2693da1e0047..d1f106c214c46328ab91ca74b87a8561286239bb 100644 GIT binary patch delta 239 zcmdnRG>d71IF|wkGXn#I%aX2R6BQNec>;VwTr)B<{Qdo_s;U?m7;<GMu4iCiU?~am z3;zHAKZAqT$}bEI44efXk;M!Qd<Q|8amU2$w+svn?Vc`<Ar}5`CwYoBDDWJWcvqip z&GJP1mrX<Dhm6Uo-r`*c#ZyY&8nB&i;Ej;{+&y!H9Ah-2@OfqypXhsU-Lsx<j#_HU zJ#TWF%Lf0L^AF}NiDUBJa7<_pr``kwVV;<#sGI)(6gDnC#8CYpqmWVUL5A#_M&nBY rb2!EJvM2}YI;ySGZ&Y7ZZO?F1opoW@ZvI^i3=9mOu6{1-oD!M<_|#U* delta 271 zcmbQmw2NtiIF}*^GXn!d|BuMziHZvKLIFM@u3TJP^XJdMapOi?Tid>U`xqD)0(O>V zGB7Z(l?3?({|5nv&HI<^XJBC9EbxddW?<ku48n}Z^H-!WFfh#bba4!^@PB*BQ|Pb) zk4s?F*}v;$wqBWKu&=RtqQl?qg`&w@c_sT}cK3apTpFY|ZKKzt8Is<IoX^jw68>AA zcBbRc9Ah@6`A2UT{&;ipb7AlS)A*Bf%ny8ZQn}BfzR2>R-wf>)Dn;ymUiTP1PWvmg zwEk}JJ)mYap(p(Kvegc&_hyAfHdS2xC4QvwDT60Zh28;9hi7a(4-`MI$`+q6@A@z1 ZUkkb4uG@EWDFXuogQu&X%Q~loCIFNJcI*HE diff --git a/assets/textures/Cube_Grayy.png b/assets/textures/Cube_Grayy.png deleted file mode 100644 index 405cb6f9309a3775a9d9cfc8137688ac33152514..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1028 zcmeAS@N?(olHy`uVBq!ia0y~yU{GLSU{K^>V_;y|p|&!Rfq{XsILO_JVcj{ImkbOH zEa{HEjtmSN`?>!lvNA9*a29w(7BevL9R^{><M}I67#Nsmdb&7<M7YnLep;{8QK0pE zp>%~z@b_vL9v%VyL<K=1MIl3j<fMcIk0T8WC8~M-AN`uY{>QdUZ)E;W4Oz8o_pWQJ z?$wrk%MAVBxo_XT?fnKHe*E|mzxCf9&qs?FFP7;3`t|FFdeKj>pZNUw^eJfX-o5e; z;o;#uz2;_SO8?eQ=<`fHe*XM<Q_G6l+P@ukjT6qEJ=<Z;nHe+X$B!Qt9IDeUteef! z5VkrrH$UI~j>?nUOOB|kt6#l*Ie5Y&#io!$K^~p&-o5+Kb@T3B-gvH+>_YSB&2!uC z`{Y<d=@~;=V=-G>TSGUNrVmReOgoaEp6<xQcu#^+z~ET$1PP;SjZR)SY~z?aZr;A# zZILD?C%34<)i}{}o@)X}&Ze^IiO**B@87@wzequ8X=rb6Z|LL4j};H}b%?6$Y%)mV z(D0gb(mVLflP4)3F6eZ)7Zel-uqsAJMt1&q_fF5u%Vm!Ba)!@u7?0Q=JZ)iZEnWTV z_wU1>E!^DQ@3X#n|Ni=2uPs})h!{F4sHDxk5u?+6f!pJSn4p01H=`tBVd4A!2lBq2 zK7Cs7{=Iw01b=C4VmK~o6I7&n>_=z<gQBsq@%!=z>Jc9vJz8XCZ@+%ovSq7YzI>_g zWW3YN!a{;AF+V?l?(3?1{8Fq_9F9DFni{ic;>3x&6pk6o%E|F1c^Dfmf1#`+FaP5s z-;J5Gbsku`@7}OMAo<#fsV2?A7k+bCRM{kFxwLg2kiNxfZf<_{>(|nbOmo2}_xO7) zdv~o7t`=G#wm_@L<$&5n6)vUEx>^y!Tt?To9t-<?ere~Ob6y7PC3YXnj`XNynz8(W zzv^M-Gf5q~Dk@@6cesQsj&=-u@0j^y<1z`Gq>qPU9(r~K6|A`tIa4FD&9W<TjlT5B z4Pu{XESHJ&+cn|%O@$Ll#Rqi`t^4|PUXMUPp20bm%6nUD(m%z0{_teyantWtnRFBq z?OKb9=Y_KreoK|p*UWw%wY6dE)~&l5y8BM|iYT9J+0)Te+;{KqIm3DL=kqguWqvrd z=lSQ`;p^oE|4fniot5@RyP~kru*=GAgQWmtYwDx2yAS?VDc=e>@$g~d1nss*zjT`3 zv$1SAHfP#L;f+7k95h<;Sz9y~h%_=-Jy~XbeAkTGv$^Aiy4@I^6s@hT18wGWe0=pP z%O?8R8fBLA*ZDG(#AI1HT61!9Sv#42w4GsUYim>5FTC-`R)&QF|9(53QqDLZ%FN8X q@n3Y($8<&~#YgLpykD`Z-f`p0rH}sdr7<utFnGH9xvX<aXaWFgl-V5s diff --git a/assets/textures/Cube_Green.png b/assets/textures/Cube_Green.png index e863145c801b80978785b3f2a1949f24fc31f2e4..fcf9d95475e3f448c86c6bf73678eee864e84000 100644 GIT binary patch delta 239 zcmdnRG>d71IF|wkGXn#I%aX2R6BQNec>;VwTs<yZn=R0ZzZlBEz~FyYzKel@fu$tK zFZloe{|pXVE59%>FmM)lL>4nJ@ErtU#vK#0-!d>Tw0pWZhFJK&o#ZLjpulrf;$3~Z zHOmw2Up5VqA2KGVdW&}*6i+F6YruB8fj2_(bN9>*a*WZ8!snS;e4_8Yb<cXbIcljX z_q@qzE*tz~&Oey9B#y~<!!e;boO%-!gn43`qHg;CQ`orp5JUBYj6z1W2N|+!8jUXr s%;6N<%c2~p>!`L$zfpZvwLQa4b=HMpyZLu9FfcH9y85}Sb4q9e05bts5dZ)H delta 271 zcmbQmw2NtiIF}*^GXn!d|BuMziHZvKLIFM@t_%ze8((L>`LeNQx6h^by$lQtp978@ zWME)mD+%%o{tp5SoA)o-&%nUIS>O>_%)r2R7=#&*=dVa%U|^W<>Eak-;s5rMr_f;q z9+$wTvwzpiY`rqeU|(bPM2ElI3q_N+@=Er{?C$$Gxim;`+D5NOGbFtaIiH_VCH%KK z?M%m?ImT>C^N-#x{PE`G=fdCvrtv4|m>>A+q;j7{eUarszZu#qREpUByzVi2oc32} zY5m>cdqB-<LQnYdWvd-l@68H}Y^u2WOZ-UVQwC3-3cUlI4$s(n9w>fZl`TGD-t}M1 ZzZP=8UAOP%QU(SF22WQ%mvv4FO#pB>cjN#7 diff --git a/assets/textures/Cube_Greeny.png b/assets/textures/Cube_Greeny.png deleted file mode 100644 index 7adbb641868ecf1fe99512d0dda3302e63b14abd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1468 zcmeAS@N?(olHy`uVBq!ia0y~yU{GLSU{K^>V_;y|p|&!Rfq{XsILO_JVcj{ImkbOH zEa{HEjtmSN`?>!lvNA9*a29w(7BevL9R^{><M}I67#LUsJzX3_BHZVOdw0jW3aooq z{h8gTM#b=)!OSxgI{BHDx)fLx7d$$)UqHl#MU+QKpfpvC(LC$hIu=1@uC7TsBD{7? zN)kPfPR%_czDTk7{mXB^_r0?EF4#WPGxb$jX=!<FeCT(}+DUJ$Qr*vOojEB`^SWsE z?QW(Y%f#i5=3kuuG-v<3n)&Z?g>Qa(!m#h-&-S&~vQ`#pUet`-ZyLJ0=9Tl!Xw^+G zmoVJ>ddHbbEkm_}^F!wnmi;?Ye!tz?|KxVhiMD3OJ)dtb4%?meCtcRImtphu9?ifl zJW4a>PJTM;?f2{U7caQEtSj_Ok2#jCE$YCqZt3Ss%6^`%Z&SFPj2g5X4CPrO1U28- z-?LaQ`Pt={U;U0gd!`3UA8wU~?Q&aS#hCUs+Oae1443wTy$1rkn2rCW%3PVk{_Xkf zbW`<?B@FleUP`{!>lSuxqUk|*zPRHW>Ib=_!wy7qo;+f=#qE-XV)<(3^-cmF&NrIx zguA$>J!}>}6(;)hp;UG7hr^d9bL1wc&U*XgRs{Q@4b`lbS?x0trwa<bzIM0Y(tM7c zTZVeU*T>vuHhYo|@18bgu951(mzRVC%tS&H=FhqD?TFOO3te47r#Z4+nbOn0hP|*$ zd9EtV$P{B+eel}(+U#cQ@6r2`FFM|4^r_);VVb;j4Nr~Dj5Ptuk3<{l{an*Z*DsxF z+qF1g1&1q3MD@I^C%LcZ*QGB$zmL6B_4IcAM@P2TKASIQz42aNOWL;VU0kQP&yeMK zuq0PAIjoJlnc-2(k;kV0{w(U<za!)DR@T$)Vo$ge7bqCScAk`Ua`N7NcEtpjqB~9h zd=hw11V*uLSU2}hrR4nmDR+O$=M)rNymTw~)I5JDjq@$c!qN^5YflHn-)k`BU-IXI zRYjw3Arr&*baCzvA+M(1a;Ymh9v{1j$#;cE)NS*X4#BtkgPb4B25ePbx1xHp;k7q2 zoo{?TkhIV4aG6p?-ARW@YioWkE{*@6@^XRvsx6zY^GGIdnzE5oNx@Ebt<hfnbNy;& zDQUgiTXrRW4)uz8Z*2B$?oHEEcg^ji8?~zU<k)DiD@EV<u(WCKvxs266Jb-t`XXOT zGI*@`y@&Too9@Tg61ojvti)zm@m*LwnYmi?cMP-hYthY27dE#E>z=k>$<leT@8x9^ ziQ|pwj_IK)g<hH4L)YeBOxhp2amD_Vch=iwFWINxS7!Xts`7M%$o;tO(u^@eOmjl# z	Sk&HKqZF#oSO~^R?rs6Hvb-A3WdCuKWSqeHbSXZz~FZiuCvv{|SftX7|r_;)- z7J2(6)D@0CcDl{$c~OhqNwgsL(|oqV_TBPQ(Lzruwi-#ZtlRYR`x}=nj4hwMwly9< zTic__v}<*=D9f4Z+1(edCOXDThR+dZE&L$qaAbnM$uW`H9}^seqmzE?e~VPv!^M(n zf5PSd>MIS>4_$Vz<lWi!*^qzRl;n)R%}1_olrpKWtNhx-RHQKFK%V)Bm02vDKUqz3 zxa1EQZ+>>@S^8_U#`bCL%)fvCxUJOSq4zO!o4fpC)_C0=Mx~Vpo@H;@@3SoG$K{8q zYaY$*Z;#D){PJVZ>kCy(jw<g@e0$&hUMTI8?}~d<SSHS%Z`ZZp-^!;8-X2a`ceY&q z!md7+O5;b{nib_$w>>zeoqpy1ht(Bvzt%rlF84-zLB0)xv|W@n(?Z|xYclq&3y(Yh zcI^sgj-8)ARcCGg^S`N*Q)%}+n@{^gCGPBAb)GSg{XcUvqu`I{N33JEDHfbq#^O|^ z<S#RG!U5mu@1rkQT%D=$?YeRP%KefBC#G?>uuPoWZ_l7~l<m8`lm6|e$;)5fGb%W- j4J0w)Ez|B9f7yAq-`kMT%y@=@fq}u()z4*}Q$iB}N&TrS diff --git a/assets/textures/Cube_Inverted.png b/assets/textures/Cube_Inverted.png deleted file mode 100644 index c88966e2a81981d7e9ad95375909d70e89289569..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 314 zcmeAS@N?(olHy`uVBq!ia0y~yU{GLSU{K^>W?*3G{}GwYz`(#*9OUlAu<o49O9lo8 zmUKs7M+SzC{oH>NSs54@gaUj*T)%$(dTz1Gre=Z5GX+<bFfcGMEUa{CXJBApD+%%o z{tp5SoA)o-&%nUIS>O>_%)r2R7=#&*=dVa%U|^W<>Eak-;s5rMr_f;q9+$wTvwzpi zY`rqeU|(bPM2ElI3q_N+@=Er{?C$$Gxim;`+D5NOGbFtaIiH^){I@#oOvj%&#%xOS zkKQi)@#f^`!r%j@@h9h)ANcB|a-T(gk>x?Z8QLpUirD?U?lF3t_E%_W{oUYuK+S4G zPx$d=s~uMF%?gWbs<`?~{7B<d22Y*}y#t&M&)9k%D1Kg*Ek0r1^<T`t7IME`x9{ds Pkk33_{an^LB{Ts5qw0Om diff --git a/assets/textures/Cube_Inverted_2.png b/assets/textures/Cube_Inverted_2.png deleted file mode 100644 index 8da98f7caf655f6813524717d75e8f8ca23d257c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 314 zcmeAS@N?(olHy`uVBq!ia0y~yU{GLSU{K^>W?*3G{}GwYz`(#*9OUlAu<o49O9lo8 zmUKs7M+SzC{oH>NSs54@gaUj*T)%$(%CYSg!{W0Hhd(ncJjTGlkht!33<CoLTS<^# z@P80s*t~zqeg*~x&H|6fVg?4j!ywFfJby(B0|Uc+PZ!4!3;(y5JcSM`@VEpvo&CFB zX6uz%2KySTCp!GyUMQNpl~=MqW_RDm$)!Ph(>8iNnjz_Z$oc#X;lI^sXFC4OF=kVm zfAn_Yk2fbj7X}|NjXycZ{J>WymHRB}i!2ZN&Cp(<QpE1(b&t{Gw7)`2>+c5N18P<i zdcuz{TkWuVZ&p}jQ^nO^;zt^vGI;V-=pEp6c*fTAK=JdcZ1D;6uK!~GwUGPmx_vj7 RGB7YOc)I$ztaD0e0sycve*XXf diff --git a/assets/textures/Cube_Lava.png b/assets/textures/Cube_Lava.png new file mode 100644 index 0000000000000000000000000000000000000000..064c841716d1f8629cd93615e4bc81c8a6e7749e GIT binary patch literal 776 zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4rT@h2A3sW#~2tG7>k44ofy`glX=O&z`&C3 z=<CS9u(6-}Pa-P=14C?pPl)Rj0fq_u43qg8Ch;>&6JVIa&oGgnVX6Q_A3sAsKSKf+ zLn0T$1ZClVCE;W)hAuva2};5fm4%bI7^Wx-_bLg+b1_U-7Vc9Lnxrf|MMXG;i=jtJ zD3yyL4&*Eb{g&4+7#JAjOM?7@|KkM=XC=!77#J8h3p^r=85sBuf-vKbiP>)%7??Oc zT^vI!{6i--RxMHBY2maiP(8@J>d@BmegBio4&8cfR&#&dtobuJU#*jWdg60!<#ql8 z|C6|$Jg&8V&D!D3Bl6?n-_@t;6&CoP@ww+3wP?S5J)^c&-;K3zlmncmM5i*Hx%lyw zbBY_6PT9kQd1;ISGp0=qFJoa4`*UD^uA>5j%*n~Bk572VC_AeQuv%F1U%B{*spjDA zPdCJ7{7w2iOMIuwmyV7vQ+N#Z?3{$U7VJ&it~&8W{o^);v)!4;rY=0?t!KJh?b4E& z%wHr9-|+j^|Dx;F>~|X+WTR)D%watEt>W6c$|tXU9D=eY8L$+7(bhk5&H8noSdkB} zXAy_>ekJ+W8nSHH^!esaJFum!K}jZcU9H1{>#ICo_OU(EWGL_!xGrmZw%#jDc3FdI z?xa1-7f-vz{VnYEv~_076q0TWT)DC7`ogXAEc^QdCn%~e@!_>^+qNt<!)@OlWyJu7 zro7*~efy_u$ea=-B6O?xrC#m}=UTVS*-tJOzhljv@c3+>)W?kuiGCB;gc?4*q1fPk z)Kku2dpMggN2We2dq}oi>4D>kOslKUUGuYfXH|AoLNe*clQ*^vhdj5{PqI?#E7A&@ zw(-9FT3#;B(>IGQ@-Mm4#PHocyY$5Go{AG19TjP^e{b$=d|fr`L?h$#p6`$I86w{( z+}e=w;omCp2fJ9@6WJ^8pZmqgAn5%s_WD;&olQ0d*A}x~WME)m@O1TaS?83{1OSiz BO^*No literal 0 HcmV?d00001 diff --git a/assets/textures/Cube_Magenta.png b/assets/textures/Cube_Magenta.png deleted file mode 100644 index d6c445d966448805ceb5301a6b7701676c0e31e9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 314 zcmeAS@N?(olHy`uVBq!ia0y~yU{GLSU{K^>W?*3G{}GwYz`(#*9OUlAu<o49O9lo8 zmUKs7M+SzC{oH>NSs54@gaUj*Tp1V`7H7WRx$#T4&+b*d?->{vzP78eGcYi)l?3?( z{|5nv&HI<^XJBC9EbxddW?<ku48n}Z^H-!WFfh#bba4!^@PB*BQ|Pb)k4s?F*}v;$ zwqBWKu&=RtqQl?qg`&w@c_sT}cK3apTpFY|ZKKzt8Is<IoX^h?{#%`PrsK~XV>YGv zM{gJYcysb|VekRd_>*(Y4}5h}xzD1$$nv1y4DA&vMeKfF_ZU4+`zy4x{%-I+pk_6p zC;a%b)efuoW`#vIRb2fgex&g!gC|dg-T_XBXKXzW6hE)Z7N0Qh`Y+~R3%TE}+jny* Q0|Nttr>mdKI;Vst02H!)O8@`> diff --git a/assets/textures/Cube_Orange.png b/assets/textures/Cube_Orange.png index af4c2ecb3a372c602cd3a570464906733dbd230a..3507d1817b1ce103382da1a2c0fc64aa0d84ae0b 100644 GIT binary patch delta 239 zcmdnRG>d71IF|wkGXn#I%aX2R6BQNec>;VwTrVeEFYwm6SQg5_z|hlNyp4f@fu$tK zFZloe{|pXVE59%>FmM)lL>4nJ@ErtU#vK#0-!d>Tw0pWZhFJK&o#ZLjpulrf;$3~Z zHOmw2Up5VqA2KGVdW&}*6i+F6YruB8fj2_(bN9>*a*WZ8!snS;e4_8Yb<cXbIcljX z_q@qzE*tz~&Oey9B#y~<!!e;boO%-!gn43`qHg;CQ`orp5JUBYj6z1W2N|+!8jUXr s%;6N<%c2~p>!`L$zfpZvwLQa4b=HMpyZLu9FfcH9y85}Sb4q9e0LRo<%K!iX delta 271 zcmbQmw2NtiIF}*^GXn!d|BuMziHZvKLIFM@u3TJP|KoK2Pn!NSOX7b~JOcy6qAOjx z3=9lxB|(0{|3QFZ^Zq6K85kHi3p^r=85sBugD~Uq{1qt-3=H!<T^vI!{NG;k6gsTH z;}Y0(_V0R`tyg9l>}#x^=<s)Yp=k0}UdjHL-F+V?mj>xg+vxRZhNSl)=kqhFg#T8j zo$2^9$CyoN{?XfoKi-`DTo`=7H2&lq^8;U<RPM8=FS0!7H$!`cN)fxC*F8p$)BXxA zt-l+552#s9=m|f*Y_-Gcy;)(AO%+#vi63cv%HYXUp?84O;Tc=c1I5p)vc)INyZ(#$ Z*Fx^M>-ODT%D}+D;OXk;vd$@?2>`awb^HJT diff --git a/assets/textures/Cube_Pink.png b/assets/textures/Cube_Pink.png index 5a7ea7ef1b519bb8751293c66699de4ec76c6155..ba27564cbc49fd9b80963fe86a3e7b60035718d5 100644 GIT binary patch delta 239 zcmdnRG>d71IF|wkGXn#I%aX2R6BQNec>;VwTrXR%TA<T-F?0h11H*6D;7be)3@jx< ze!>6$|7UQ}TKR>6fq}EYBeIx*f$ty)Gwzs}{g#1&q21HPF~q|E?IcgJ1_hp@67TBM zty!LE|FUU_{E#s@)myylpm<8jTLZS!4ZIPOpSx#nkYkKy6h6<);uC%Et$Wtf%~4BD zx#vwzbJ^e@bN<1+C2>r?8;%Lh;nbU;Aj}if6m`@8pTfq)hZw3KWE3*0J;;z<(`bB2 sU=F9)UKZs*T}QQ5`i<(Vs_hwWs<SQ(+s(g=fq{X+)78&qol`;+08P<YZvX%Q delta 271 zcmbQmw2NtiIF}*^GXn!d|BuMziHZvKLIFM@uB@!A|NY;7TJry@`Re~w{}~t<YW3$m zWnf@nD+%%o{tp5SoA)o-&%nUIS>O>_%)r2R7=#&*=dVa%U|^W<>Eak-;s5rMr_f;q z9+$wTvwzpiY`rqeU|(bPM2ElI3q_N+@=Er{?C$$Gxim;`+D5NOGbFtaIiH_VCH%KK z?M%m?ImT>C^N-#x{PE`G=fdCvrtv4|m>>A+q;j7{eUarszZu#qREpUByzVi2oc32} zY5m>cdqB-<LQnYdWvd-l@68H}Y^u2WOZ-UVQwC3-3cUlI4$s(n9w>fZl`TGD-t}M1 ZzZP=8UAOP%QU(SF22WQ%mvv4FO#p&xck%!L diff --git a/assets/textures/Cube_Purple.png b/assets/textures/Cube_Purple.png index 10e017c1f432c1d9eab0a939a311bba880ee7b30..ee44d1c36dc3d41ddcc29ae14f87b7a0ac54346e 100644 GIT binary patch delta 239 zcmdnRG>d71IF|wkGXn#I%aX2R6BQNec>;VwTvu3MuGd+xF7zS;14F&E_X!3D29}Z_ zzu^D>|1&sft^C5kz`$AH5n0T@z;_UY8Fx&~e#^kX(C+Et7-Hf7c9N%9g96V{iFfts z)+|r7f7vude#n@d>Mh=NP&}pNtpVHV2HptC&)qXO$T3DU3ZG|Y@rl0o);;U#=BTBn z-18=<xoq%{IsahZk~k*c4abD$aOzD^5ax+#in{6lPhsQYLk!gqG71^h9%RU_X*9kh sFo#oYFN<=ZuA|y2{YLdw)%FZG)mayY?dIRbz`(%Z>FVdQ&MBb@0O{mc@c;k- delta 271 zcmbQmw2NtiIF}*^GXn!d|BuMziHZvKLIFM@u8d4F(P8uQGgpTO%qYxW%fP_!`{Lqv z3=9lxB|(0{|3QFZ^Zq6K85kHi3p^r=85sBugD~Uq{1qt-3=H!<T^vI!{NG;k6gsTH z;}Y0(_V0R`tyg9l>}#x^=<s)Yp=k0}UdjHL-F+V?mj>xg+vxRZhNSl)=kqhFg#T8j zo$2^9$CyoN{?XfoKi-`DTo`=7H2&lq^8;U<RPM8=FS0!7H$!`cN)fxC*F8p$)BXxA zt-l+552#s9=m|f*Y_-Gcy;)(AO%+#vi63cv%HYXUp?84O;Tc=c1I5p)vc)INyZ(#$ Z*Fx^M>-ODT%D}+D;OXk;vd$@?2>^A<b;$q# diff --git a/assets/textures/Cube_Red.png b/assets/textures/Cube_Red.png index fa5264076cdce558b91dc109cc21cc587bbc3495..0a74973acf3f347737254a42611fadb532695d1f 100644 GIT binary patch delta 239 zcmdnRG>d71IF|wkGXn#I%aX2R6BQNec>;VwTrXQ&FVNAs7#hmJz#z17^Fjs&29}Z_ zzu^D>|1&sft^C5kz`$AH5n0T@z;_UY8Fx&~e#^kX(C+Et7-Hf7c9N%9g96V{iFfts z)+|r7f7vude#n@d>Mh=NP&}pNtpVHV2HptC&)qXO$T3DU3ZG|Y@rl0o);;U#=BTBn z-18=<xoq%{IsahZk~k*c4abD$aOzD^5ax+#in{6lPhsQYLk!gqG71^h9%RU_X*9kh sFo#oYFN<=ZuA|y2{YLdw)%FZG)mayY?dIRbz`(%Z>FVdQ&MBb@09b!lLI3~& delta 271 zcmbQmw2NtiIF}*^GXn!d|BuMziHZvKLIFM@t_%ze|3eG@Ex&li+TnlgQU(Tw+QiR^ z3=9lxB|(0{|3QFZ^Zq6K85kHi3p^r=85sBugD~Uq{1qt-3=H!<T^vI!{NG;k6gsTH z;}Y0(_V0R`tyg9l>}#x^=<s)Yp=k0}UdjHL-F+V?mj>xg+vxRZhNSl)=kqhFg#T8j zo$2^9$CyoN{?XfoKi-`DTo`=7H2&lq^8;U<RPM8=FS0!7H$!`cN)fxC*F8p$)BXxA zt-l+552#s9=m|f*Y_-Gcy;)(AO%+#vi63cv%HYXUp?84O;Tc=c1I5p)vc)INyZ(#$ X*Fx^M>-OCQ`HaES)z4*}Q$iB}Hd}Uy diff --git a/assets/textures/Cube_Redy.png b/assets/textures/Cube_Redy.png deleted file mode 100644 index a2e2022e42869b30ec3a07e20a981daac7ada6a2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1198 zcmeAS@N?(olHy`uVBq!ia0y~yU{GLSU{K^>V_;y|p|&!Rfq{XsILO_JVcj{ImkbOH zEa{HEjtmSN`?>!lvNA9*a29w(7BevL9R^{><M}I67#LWbJzX3_BHZUr_wJ4f6>0Sk zeH0Sy+v8O-Cow5*(hB9N9Tvq&AKW{b+1ca;dK5VR@pDQEe*CC@q*KAlv*}{Ph0k9O ze_gx#`r6CeS5I1}Q+54b`uy5&QP1y0Z_hh_>u}P(jnNky=ALbTwe{a3rG4Mdq}_fS z7XPz4nd6#B(T7J$|K8m6o%mvX*rT!{vCr4+;(|{!cdJ>q<!tAuWfI!VFZAi;+-A;5 z+sGsHvyT_F+z4}WIPzsi==Gh??DkgIEB>DB`se7!v)j%FY9DjnvR2~!$MZ9iO^dyw zl$jWJTk-z6D(WQGtn}}brJ(b*iR~74yZdIuu(h1Y;yYuS*5Q6Z@o2E(W`X*ze;j<) z%X*|9`98&1(6U!{^5UH~3(oln&zP~tPm#%JUzn4~wr{U1?<TNZ6=6EzcBoH=f1!Wd z#u^s?+|@lZX6ar{K4R|o;<ie}f$Q6&s-LdB7B|gN=yb1me&CN&J2M3<^a|4jZcU$C zyJ)Mikso^mL$uS8ud|ywruSLx7FhhKV?(EI)0UD#r61?^+@59q`A0$w8_&lBOj>3a zzusP3TfBU0w@~3n&$Cxk4<4I*L5pKjbAz18-Q-hqFD<pxO)BeoYE+QV$bI6wn8lS- z`KphO*{_YgP`Fn^ao@`+{Sw@gUhT5lC(do0tYrH&<8DP%b^p&RC*E5&E?v>|{$K9f zYEDai#pit*u}^~K9o6Nf&$zFBw?*-NRMH7;_Au@l57;|@1SXyHJP|2)VS=C9bw0~i z;#(fOi#WfTn<Q}R(O2_xjNAprjqfvBwU_=a*}irD|I56g*S~E!@?%A)d{XzUhz`Mt zG6ufqk0wucnU^6~p0NFac&7u0`OC!n*PPF&cFx?f=elaR(t!hO&s#1LS*s+kb$q8_ z*0J|ZoKG6_ZwMvNx16~@RFXT-`?87LNzEj)L(?36mjx$(R^r&{@7@;CZ!66xqIpX5 ziRM-A&-$~O`Pntry=1)<*&*@UNuGIobAgJs;OR5`!mlJw3r~KmZl0j06zi<JlcA4K z&$Lq1?Sx0bwd;}`y7Ga4PrAAod{aC>Yu5JU!g&$xDPo(B?76*4T1@ZSSJRuNe>7y0 zl4gmxF;<J6Sk~*__(_6WushxSr2p#<<*ulHQ32*^IfZ!vZ;l$(h<*3{y{C9;e@C3p zwF~nvd)Yc)V}4Zj^w}|uq?m|}*S}S&&UwGL>ByDkX=_xEZK+$v@ac3tZ@vo`_t&hl zQ2oU}Pu{t<S@?F4==q}m`%XWf*j4Yle@d}ws-6EHo0kGS0@Hk3Dn9yIxN`pVSpRs> z!3#P^#Fp-iJMy}!F>(2sNQSLHUd_orvb+ABD&IG54zCmKzuHxtin#W6cvlrVHncs~ z{K9lE(otrOn81_?{C!>>tCUrg?p5q!3DIM^_wVt)BL|yVSyZ3=RX$wrrFPk!MWO3Y z^nUps3yU2M3tINH3%KUXO>Q{6cJHs-RYwl~VrmjHO7eZgxb`o<FVDmrxt_IO85kHC NJYD@<);T3K0RYmfDenLP diff --git a/assets/textures/Cube_Saumon.png b/assets/textures/Cube_Saumon.png deleted file mode 100644 index e370b7ab8ddd84fbdf284149415e35ea06cdf66b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 314 zcmeAS@N?(olHy`uVBq!ia0y~yU{GLSU{K^>W?*3G{}GwYz`(#*9OUlAu<o49O9lo8 zmUKs7M+SzC{oH>NSs54@gaUj*T)DWowuPmhDQG$pmh-4)A_D`1=aQ0F3=9lxB|(0{ z|3QFZ^Zq6K85kHi3p^r=85sBugD~Uq{1qt-3=H!<T^vI!{NG;k6gsTH;}Y0(_V0R` ztyg9l>}#x^=<s)Yp=k0}UdjHL-F+V?mj>xg+vxRZhNSl)=kqg!|5m4+>G(6pm`!Q^ z(c6VT-kkhg7<|Aq{^T6<17Dp~?z5;bvOMTFLwkiv5xbw)Jw}hy{t7LvzZ-lHs98<u z2|vDUwZrPYSz(b)6<2?WA8CBb;K@^=cYxF38C%Z-#m}p<#V5?W{)_q7LhiTg_T5~{ O0P>lupUXO@geCxRqI{wN diff --git a/assets/textures/Cube_Sepia.png b/assets/textures/Cube_Sepia.png new file mode 100644 index 0000000000000000000000000000000000000000..6c1088662450d67d9c75dcffb3b13b81bd70e372 GIT binary patch literal 282 zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4rT@h2A3sW#~2tG7>k44ofy`glX=O&z`&C3 z=<CS9u(6-}Pa-P=0|QThPl#)6MtHKnU2jz;NWs39d?2bM$S?T+|NjgQS}VUWFfecy zctjR6Fz_7&Va6R3v)?i>FtmHRIEGmGzn$bM)}X+1RN`HIx;4ua?O!$xksmT9r+SNb z9TZO~d27ISx`8)B@^kmh4RVapjKb%cS$v}Jy>-uex_PN7_q@qzE*tz~&Oey9B#y~< z!!e;boO%-!gn43`qHg;CQ`orp5JUBYj6z1W2N|+!8jUXr%;6N<%c2~p>!`L$zfpZv cwLQa4b=HMpyZLu9FfcH9y85}Sb4q9e0POW$ga7~l literal 0 HcmV?d00001 diff --git a/assets/textures/Cube_Void.png b/assets/textures/Cube_Void.png new file mode 100644 index 0000000000000000000000000000000000000000..9743f77ea12dda6388eb70707aa02019ad0a7f89 GIT binary patch literal 307 zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4rT@h2A3sW#~2tG7>k44ofy`glX=O&z`&C3 z=<CS9u(6-}Pa-P=0|Q%tPlzi67%WZSd7goRfvF_OFZe&h)9nUc3=9mM1s;*b3=Dh+ zK$tP>S|=w11H%eW7sn6_|JDi7LahcoPPhN&-?HI8()US_Q^xrE?rj+}PfbhtT6DA} z<K!WB<>O^D_!VT&JH+ppx8@4lb)J;Ze<S1i>lnlz6*&sVE&9?Rcw?0j!=+~;${G!i z%4B~{5U}h1xLCB~ujrKGzcC)KoezD>{p9$OgUiB`X$51*D~9VlEJ+PlxQ;Z&EAUOM z=-lSZZFc!q<Cd2!tt{`weJnbo8g%yk6TkfD&0hISN0@!GW=ng6{O9TF=d#Wzp$Py{ C9&bAU literal 0 HcmV?d00001 diff --git a/assets/textures/Cube_Yellow.png b/assets/textures/Cube_Yellow.png index 0f055da0c20cc1b2f3da0d12ef895ab2402b308e..0101f31b955bc6fac43581e556bbeea94b9f03a9 100644 GIT binary patch delta 239 zcmdnRG>d71IF|wkGXn#I%aX2R6BQNec>;VwT#sG0p0+^e_{C5L28PS4wr*o!U|=Z; z@(cd||38C+*2*so3=EtF9+AZi415Pcm~qF%?6(XI4DFsSjv*HQZzp+*H7M{Lm3UX5 zZq4#U`<G2a<cEyOsovsU2gOrL-Wsr-Zs3iO{M<crgB)WtqwslV7N6*QZ{4$=ZjM@N z$~|v#n#%_NnDY<jEs10D-Ed534yWD(1!10;rl_0#{}eVZKEzP{Afu2`?Lmg@nnvSG s0&_UU_Od7k>N={e(r;8>Rc+63Q=N5T*lzw^3=9kmp00i_>zopr03o|sdH?_b delta 271 zcmbQmw2NtiIF}*^GXn!d|BuMziHZvKLIFM@u3TJPM~=DOzL9wCqRZ!Z*$fN}es2%x zFfcH%l?3?({|5nv&HI<^XJBC9EbxddW?<ku48n}Z^H-!WFfh#bba4!^@PB*BQ|Pb) zk4s?F*}v;$wqBWKu&=RtqQl?qg`&w@c_sT}cK3apTpFY|ZKKzt8Is<IoX^jw68>AA zcBbRc9Ah@6`A2UT{&;ipb7AlS)A*Bf%ny8ZQn}BfzR2>R-wf>)Dn;ymUiTP1PWvmg zwEk}JJ)mYap(p(Kvegc&_hyAfHdS2xC4QvwDT60Zh28;9hi7a(4-`MI$`+q6@A@z1 ZUkkb4uG@EWDFXuogQu&X%Q~loCIGk3cNG8t diff --git a/assets/textures/Cube_Yellowy.png b/assets/textures/Cube_Yellowy.png deleted file mode 100644 index 0b29e005f793fc7f11c13b4b1c35904720274cac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1393 zcmeAS@N?(olHy`uVBq!ia0y~yU{GLSU{K^>V_;y|p|&!Rfq{XsILO_JVcj{ImkbOH zEa{HEjtmSN`?>!lvNA9*a29w(7BevL9R^{><M}I67#LXDJY5_^BHZUr_wSBz6*;<k zclx5V3%yM#`x-eScM5*wZ*misRb3!>B*Ww)$1b75bhF4Vy-gQc6uFO1m~n6_n~V6a zg2$K6U%0Q3m9}iR?f&4>Tju)4Crk81w!gZzw%YIRukZI3+*$ZWfA!|Dt$$*Vm5XFQ zbY%SZ^mO6OGB^9r_f~yf<nrx}%!B#+rKWERJ$2+-P+OOQXY$G^&+o_goXDN~%Xl6~ zjag~<*@j!@ogFei6Y^ck-tv4{|NMCBqNs-Dv)=M3<zCx-W}k9%;8o?`>W7P?g?FBm zcyM38@AR{_hAX!wu~m4pFwDug!qBUHq>O`?v*OH!u8*INTMN%LXZmy8{PCux3t|fz zoDWDEY<iW|&SE63wIFBW#A!*(B$OvMT-fyMw+kENzt5A>);RcmPh*{@afA0N<5u5W z3(iCxbZRkN$}D4OP^)A#!Jg$(-P6flF3W<}o!@dW>a?aB^QGBF-ww`YWo=YwnXCEA zdP=YK)(TG1Waod<myYcIH{CC|Rp;rgok4PTVW%8L9d6`&=Dp6rdgt`wrd|gI1~y0i z@Z~dFYIdbu<D35JQ880$v&SBmaQpQy*>m1HNB-A+y8ZpXbnk*DgW}(s7ecN~7G-g= z=KP(oqR>5l)#(kJl$0+|t9|+)OSRyqv2G*N#%BiUzWsA2UAABP=SQuwqP66QPae+K zk`+|;KAx*EVXJfL+wb?anR1mEwNI#ABDmvI>p82<ssTaQuKhd`&82et*RCl>k0)O| zP^`6#$xltmeV*uqoHG&*&D|F+*)^W_OM6%SC5&YW;|ZfVc5$!6*M$k)W4^@rJuXm; z&pwv(PI38MRfi=toxe75?GoJee<LeLMdp>d=cZSuc7C1zL_45nM+cv6q$dN9V2i1^ zpDGjQSvjFNrm5`m@82>qu^4z?P-n1At9z7j^~O!%(_DND*D)N@onb0}QhnxuvIi@# zR`Dc?PrN(3eQvkF0_~k;`Z0P>|ENw3sGXlSSA3GW($VscE^{4;+(|why&)NlZK6Ck zR8E)`7*F=^7dYU|pm43p$%ubie88_K>66y#s~=;zv36!5!wn6AVlykrTWVZJ3K8zl z4oWvzGTwP*layyJ)1J0=66<>D141XxaIP#6oEhR$DmOd#QiI^+%*c)#*93(>Z1fNl znR0jbT(5<GjS{Dw+}@mzxVh|AcZH<1=LzB4!aZA__Re7FV^iAjD(|%51`(E~&k0Nq zi+OrEcTe|yw8m6OaMzvQxrV3Af;d;SKXw$z)1LfNR9-oATH`kVzOLgd9qd%*1a391 zPWR4bHs0sUanOeSjKeEVANf|ZZ>e3cl+V_6He8yMpYvnE$Nu@953bkrF24EvMfA_Q zFn5OCkqsdS)<)mm9DMit?h+4yIc3KZ9#3LAX{gXN|5eATU(4!?OZ}7-EUY#}%%1X! zjc0<%U*|1)O24<wJj%Xz$;NZjZXJ=iw{%+$zfIu&jw_+9+LE<zoA&YU=qjC4@ps4f z?XjmX)lCb1&Sm#?6;l_(-+v8(NA8rIk!XzAB>3Q``NC*f&WZBpdjGOME@ynOjQ5`6 z$9K}D%f6hAKYH%w`HRmUI+p#_dgtBoA;@XTf3LP9nSvTh0Z(kFo@JS0d;hP{yqJ{p z|5<A}C+45e$_y!fHJS0{Wc90@j8|(<2Dmh=mrXH$a3Yt}#p%hTnZK4lId7EutfK$G zDd%eDzBe-+R9yD`3vrq9?)v?08`sE0@K|gzX!PiC5o28!bgF*u%wx&_r4%19FfcH9 My85}Sb4q9e0Q4_~Qvd(} diff --git a/source/engine/graphics/back/textures/Texture.cpp b/source/engine/graphics/back/textures/Texture.cpp index e913a04..ccc5e95 100644 --- a/source/engine/graphics/back/textures/Texture.cpp +++ b/source/engine/graphics/back/textures/Texture.cpp @@ -17,6 +17,13 @@ namespace megu { Texture::Texture(const Texture & texture) : _id(texture._id), _type(texture._type), _slot(texture._slot) {} + Texture & Texture::operator=(const Texture & texture) { + this->_id = texture._id; + this->_slot = texture._slot; + this->_type = texture._type; + return *this; + } + Texture::~Texture() { glDeleteTextures(1, &this->_id); } diff --git a/source/engine/graphics/back/textures/Texture.hpp b/source/engine/graphics/back/textures/Texture.hpp index aeb75f8..39345b1 100644 --- a/source/engine/graphics/back/textures/Texture.hpp +++ b/source/engine/graphics/back/textures/Texture.hpp @@ -11,7 +11,7 @@ namespace megu { Texture(GLuint = 0, GLuint = GL_TEXTURE_2D); Texture(const std::filesystem::path &, GLuint = 0); Texture(const Texture &); - Texture & operator=(const Texture &) = delete; + Texture & operator=(const Texture &); ~Texture(); enum Wraping { diff --git a/source/engine/graphics/back/textures/TextureBuffer.hpp b/source/engine/graphics/back/textures/TextureBuffer.hpp index 489e72e..4bdde6a 100644 --- a/source/engine/graphics/back/textures/TextureBuffer.hpp +++ b/source/engine/graphics/back/textures/TextureBuffer.hpp @@ -9,7 +9,7 @@ namespace megu { public: TextureBuffer(); TextureBuffer(GLuint, GLuint, GLubyte *, GLenum); - TextureBuffer(const std::filesystem::path &, bool = false); + TextureBuffer(const std::filesystem::path &, bool = true); TextureBuffer(const TextureBuffer &); TextureBuffer & operator=(const TextureBuffer & src); ~TextureBuffer() = default; diff --git a/source/engine/graphics/front/group/DrawGroup.hpp b/source/engine/graphics/front/group/DrawGroup.hpp index d9a4855..3c57018 100644 --- a/source/engine/graphics/front/group/DrawGroup.hpp +++ b/source/engine/graphics/front/group/DrawGroup.hpp @@ -1,10 +1,11 @@ #pragma once #include <engine/graphics/back/cameras/Camera.hpp> +#include <engine/io/Window.hpp> namespace megu { class DrawGroup { public: - virtual void draw(const Camera &) const = 0; + virtual void draw(const Window &, const Camera &) const = 0; }; } \ No newline at end of file diff --git a/source/engine/graphics/front/group/ImageGroup.cpp b/source/engine/graphics/front/group/ImageGroup.cpp index 5239d8e..d40ae5f 100644 --- a/source/engine/graphics/front/group/ImageGroup.cpp +++ b/source/engine/graphics/front/group/ImageGroup.cpp @@ -32,18 +32,18 @@ namespace megu { } } - void ImageGroup::draw(const Camera & camera) const { + void ImageGroup::draw(const Window & window, const Camera & camera) const { this->_vao.bind(); this->_program.use(); - std::map<std::reference_wrapper<const Texture>, std::vector<std::reference_wrapper<const glm::mat4>>> data; + std::map<std::reference_wrapper<const Texture>, std::vector<glm::mat4>, std::greater<megu::Texture>> data; for(auto & image : this->_images) { data[image.get().texture()].push_back(image.get().transformation().model()); } - + for(auto &[texture, models] : data) { - texture.get().bind(); + texture.get().bind(0); this->_program.setUniform("uProj", camera.projection()); this->_program.setUniform("uView", camera.view()); diff --git a/source/engine/graphics/front/group/ImageGroup.hpp b/source/engine/graphics/front/group/ImageGroup.hpp index 8bad28b..ed674ee 100644 --- a/source/engine/graphics/front/group/ImageGroup.hpp +++ b/source/engine/graphics/front/group/ImageGroup.hpp @@ -20,7 +20,7 @@ namespace megu { ImageGroup(); ~ImageGroup() = default; - void draw(const Camera & camera) const override; + void draw(const Window &, const Camera &) const override; void add(const Image &); void update(); diff --git a/source/engine/graphics/front/group/isometric_sorter.cpp b/source/engine/graphics/front/group/isometric_sorter.cpp index b1eb926..94ae8d0 100644 --- a/source/engine/graphics/front/group/isometric_sorter.cpp +++ b/source/engine/graphics/front/group/isometric_sorter.cpp @@ -9,7 +9,7 @@ namespace megu { } if(img1.transformation().y() != img2.transformation().y()) { - return img1.transformation().y() < img2.transformation().y(); + return img1.transformation().y() > img2.transformation().y(); } if(img1.transformation().x() != img2.transformation().x()) { diff --git a/source/engine/graphics/front/object/Image.cpp b/source/engine/graphics/front/object/Image.cpp index dce4a42..aa830c8 100644 --- a/source/engine/graphics/front/object/Image.cpp +++ b/source/engine/graphics/front/object/Image.cpp @@ -14,9 +14,11 @@ namespace megu { } Image::Image(const Texture & texture) - : _texture(texture), + : _texture(), _geometry(), - _transformation() {} + _transformation() { + this->load(texture); + } Image::Image(const Image & src) : _texture(src._texture), @@ -34,4 +36,9 @@ namespace megu { this->setSize(static_cast<float>(buffer.width()), static_cast<float>(buffer.height())); this->_texture.store(buffer); } + + void Image::load(const Texture & texture) { + this->setSize(static_cast<float>(texture.width()), static_cast<float>(texture.height())); + this->_texture = texture; + } } \ No newline at end of file diff --git a/source/engine/graphics/front/object/Image.hpp b/source/engine/graphics/front/object/Image.hpp index 485d703..ea098a3 100644 --- a/source/engine/graphics/front/object/Image.hpp +++ b/source/engine/graphics/front/object/Image.hpp @@ -26,8 +26,9 @@ namespace megu { inline void setRotation(float a) {this->_transformation.setRotation(a, Transformable::Axis::Z);} inline void setLayer(float l) {this->_transformation.setZ(l);} - void load(const std::filesystem::path &, bool = true); + void load(const std::filesystem::path &, bool = false); void load(const TextureBuffer &); + void load(const Texture &); inline const Texture & texture() const {return this->_texture;} inline const Quads & geometry() const {return this->_geometry;} diff --git a/source/main.cpp b/source/main.cpp index 853f72d..ecd068c 100644 --- a/source/main.cpp +++ b/source/main.cpp @@ -50,29 +50,16 @@ int main(int argc, const char * argv[]) { //? Image std::vector<int> map = { - 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, - 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, - 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, - 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, - 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, - 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, - 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, - 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, - 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, - 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, - }; - - std::vector<std::string> textures = { - "assets/textures/Cube_Red.png", - "assets/textures/Cube_Blue.png", - "assets/textures/Cube_Green.png", - "assets/textures/Cube_Cyan.png", - "assets/textures/Cube_Pink.png", - "assets/textures/Cube_Yellow.png", - "assets/textures/Cube_Magenta.png", - "assets/textures/Cube_Purple.png", - "assets/textures/Cube_Gray.png", - "assets/textures/Cube_Orange.png" + 0, 0, 0, 0, 1, 2, 3, 0, 0, 3, + 0, 0, 0, 2, 0, 3, 0, 0, 3, 1, + 0, 0, 1, 3, 3, 0, 0, 0, 2, 2, + 0, 2, 1, 0, 0, 1, 0, 2, 0, 0, + 2, 1, 3, 1, 0, 0, 3, 0, 1, 0, + 1, 3, 0, 2, 3, 0, 0, 1, 0, 0, + 0, 1, 0, 0, 1, 2, 3, 1, 0, 0, + 0, 0, 0, 0, 2, 0, 1, 0, 1, 0, + 0, 0, 0, 2, 0, 0, 0, 1, 3, 0, + 0, 0, 3, 1, 2, 0, 0, 0, 2, 3, }; size_t x = 0; @@ -80,13 +67,16 @@ int main(int argc, const char * argv[]) { std::vector<std::unique_ptr<megu::Image>> images; + megu::Texture texture; + texture.store(megu::TextureBuffer("assets/textures/Cube_Grass.png")); + for(auto id : map) { if(x == 10) { x = 0; ++y; } - images.push_back(std::make_unique<megu::Image>(textures.at(3))); + images.push_back(std::make_unique<megu::Image>(texture)); glm::vec2 pos = to_screen_coordinate({x, y}, 32.f, 32.f); images.back()->setPosition(pos.x + 160, pos.y); @@ -106,7 +96,7 @@ int main(int argc, const char * argv[]) { ImGui_ImplGlfw_InitForOpenGL(window.ptr(), true); //? Render Loop - glClearColor(NORMALIZE(110), NORMALIZE(110), NORMALIZE(255), 0.f); + glClearColor(1.f, 1.f, 1.f, 1.f); double lastTime = glfwGetTime(); int nbFrames = 0; @@ -130,9 +120,9 @@ int main(int argc, const char * argv[]) { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); window.pollEvents(); - group.draw(view); + group.draw(window, view); - ImGui_ImplOpenGL3_NewFrame(); + /*ImGui_ImplOpenGL3_NewFrame(); ImGui_ImplGlfw_NewFrame(); ImGui::NewFrame(); @@ -184,7 +174,7 @@ int main(int argc, const char * argv[]) { ImGui::End(); ImGui::Render(); - ImGui_ImplOpenGL3_RenderDrawData(ImGui::GetDrawData()); + ImGui_ImplOpenGL3_RenderDrawData(ImGui::GetDrawData());*/ window.swapBuffers(); } -- GitLab