6f8NR{Nls5-kp+;?mjHCpMFRR?h!0Wak!w^zu>U+^xG2| z9o;!%%G$-a-@`KZbiL8$994xYN99EkYUT`$8$nO5Jk;BkkjYT$5pd^ zc1HICWuASVYkC(j7YmlO9MX{8D^Q%`d_j=Q(OsWK_NG8d%c0bA--~+N_aDF0^Oy6Z zU`dP91yjM21iPlbf{tDDUO4t|d2>Lpsjq-z*E|o$^pd_c99D-COP01TVE!yv(sD#2 zmfMm2neq#c&IPYKz63iZ^_}6ca(c9BH(wK9hQbSu?!aAb8jkn7ch3A*#JrWm>QK^@ zb&U&{r8uk(DZP+VVvntz*(k;$n^@R%O+fKQ&$*3EO??+6mYx@VTFt{EtF7>Yqj$l1 z*9(lYEV2s=Z`Q8ka8!R5!RqK<(R1m!;)@2proImnOV2xl6+9IDQhBAhPNdlQ>{Hfx z3NJhwProa6;obFU6O+GS$&v#awR<@77jamHIbE2@ ^I$*C-|F9k~Kp`z1c{<`w)I%UKZ z$6 +r=D~{bQ=E$w+j=6)XVL=9Menq z1WHuguG9*YI0!qsN3q;xcVssaELq}u;dk(#O^Sx>bqX&$dRKgRy}%gDBD+%X%RUaP z1>FmjP5r*ru4MiD>Z|Ev(_>Z~R+o~e-1FbE;PbB}RhHUB`TP58*A*O6e(_hJ#6jFK z{tj2*^CkEDgD&j6!?#E2MR&B~i?p6g)d9EL_5?D=36|&xmiqlWugN<1qU8rs$M%^| z`>h=7`xY?Y;;=gN<~yg+XU_>M?42(#=Ca7{PXWofslGTObHn|@N2Sk8%bWi7oHD<| zX| zyw&N^n@sO6js%xI$R*#p?ZT4U&%T zi}y~>ell5e;|??97kgeZy%H=jIW1D!RG0Vdo8k)x+ory>)vR}Q-u<$5z0hdEVU-uD z`zrAI+m$nKx6NSA<*>>-EmV4_u;=`Fu%xxsLpSS#LVd|BvK`F}9#5RQNG^A7)eO;+ zB)%=mFDg=&E|`5Zdi`<^D*<-L X7+l*|b7X^nkZ1tM@Y@eDwGQHq(;h|R6mGJ)4 zFV3IeskNwo#%tvl1>%OUR !O-Pd z;I2oT>`jectd8dmbUTx*_(DSIkw)#)3mR;;x6Q)7{hPJnZL-1(3AN%YSEv2%y!d+0 zBeO8KGmn*CNN7b}371*g&-141cDSTrfA50i6&a4^(fKSZCBEp~4wE$O?_ZF-BO@?g z*NUaq_J|F8Q=g`iYwgz4hZZaCzEu{w<-62|wU3ov%uu>@Lg&^eJI4#x9nO4Kd@(~U zNJUxqb#RvB`3=5T1wPN=uv*qx;uN20V)^Rv1dsLgYVNn^zLk-8JRUO9@72U Ks*eM`~nQWQ7*Zd9YaL zd93oa{8n=}t&X2j99AhV9jV_WG+AvQeG7IvbKUuZqOy~Yvd&{+7F+hDeQMtq)Yts~ zc9O3pO0a3BrN_P3Vh_LezRCK%$+uYA%t_x`%35UI3U=e-DIraAxw|zLo=Mc5oV($1 zSCzrl>F+t4<@+qo3)k zRi{g*r)zWs$mh7vnaEw`cq4F2%Vi(qSAySSo7VN_c4%*MG=Cge|HHS`WX?+!?+c|H z{{}c)y ux%R-?!T=P<(|;@JrK%^}b&(RZkOMcfBg*rk(MIw-=N` zE^r^(r+0Kky5v&f64}UanmwXMFVgM=B&K$$@8-GqX_wBt#M?bfcGN4kZE)1*_+6#c ze`)G>_x=UxH}sSRi){q$Ua-dRitLWMvUq;S&O3JTUuro%FXh}NsosBe#assE_w_8b zdRuEH4VQ9N9rR4$4Rn9m^?UB|P44&Plm&~wOfq`Gsy^k ~yD$~v-NnwoX_TNiBCX+KqW#rVL*Yj>rei}yHPFt_+n6wpz%Wrbjg z{G4C|A; kI`as3CCS7|b9j9ojbzE{@O{JHss{r_+K|KXp{SFzfD z{^)SVP}niw;l|@mfiKpdbNjwYHvPMCx7hhuZeu0KFWwg0X)^=g3w~Mm@m{d-m->Id zv)|j-*VX;o`1ijy+uRw>td8{!8;&oO`}+3J9p-=U94|yKpPV~i{aJw11^FteQe(b% zf@yWzB5mK#%BWI!v0b2e#YDbe$G_*#4=k%Yw9dbFir R($r;CF{&g0Z099?2~@AslVBk<`VmB)9(ih#03xg zo%!5xWpdQQrno)wA*=M=)~}fTa$T~Ea`V4WtlQ(JZ>ydy@ )L`E^;M zJWhS<2I0>$7V-S3@)G>==*@xPDn-uSebcTlI(;_&N|T hC%9@5znF7M~Z|2?TGBxzK&H|LPv68^@)kN~Z=^ z9au2?YrmD@b*B^WBh6kMJ=0!xMd3}dY3_T`COwJIYvmHvpGjR=KhJGL%?0kK=g(HT z-|b<3)Z=r7vudh(p!&1omGPRrZ434X+8yBhEpb?HuXfKRVV1jZ;;u~X|9a-i`Yt!O z3;rwQKD6AuZ?w2%{R00Tt-0P;Li^vYnX (^g-Vm| z&3`3&daB?TJ`wp%j|59M*RUsCU%o_i;-WhBGmoa<-k(wV)@;+;*S0J8l0GmyzW336 z*YY>w`|>5C+U#>@EO$APtnk9`%DWH8Qh$VRms|Hp@~fny|DT^bX9|99zrv=z!|lS{ zm8~JUm1za_K~WctUuik^7ww!o dQikid-P*XHsmX3)(4BCL9lMX-IrILKwd4N&8SzmME#f5| z#UF^4ZT{A*` 9f}38nsVSzhAQu{=8w6-1Q3A3#}Dxch~%52-#J1q1pRP_r*Z< z7x8y{cK-c*Ki+oU@^xCb3wyFzVy7HhVS9LY)%6+Tdl$>;zHm&A` }J;QP9@G4D%rg6y!m%I z(d{l)MHjTE2im@9kqPIhVp2YoS5|Xib!% `S0JbH^;mbEbZTL zk9Swp8QJN}!>@2!x+%Oc*lfA@+q%y^a-~gmcITDPo&IF 5+!>o9 -Y%eWk3o`~J^A zH5X@y&!0cPUZ7Az`9(#}lM{Qnr*8P(Q}up9zr +93?Fu?0>+E;LP}s4Z=jIM=m%ZOL_L{v=PVzg^sK;TY;(4sL ztRl XLN=#mgrM7p_ozF=1QIjlGNQlwNF3erKxmf9IXO^QQ8Bak?OQ==kyD z^OftuuB5n4aAUJgIx|;!pX-H%Z3~oJ`uqFs gQ@KY#Yj;OD7y zgecH=ydTu@`-I@~@C(&3dGfNw{nz&uNpf0U5hyuf-TO1_+J F^FGu!yXee1a$ z+l89=D*K!FnJT}V7r0yc>-YNd@{)J5pX1g~zg#W@*68tC>T|jBV>^)h>Wg;XHGcL; z@xIcl0LKf8XH8#3FMjmSFw0hI>3z TpSvx$d*pWQQm;P0;CsiMsxy5(!33&JWoiG<-S_S@+5evN=arjL`96*7n{qq_OV7AnP|V!9VE^lnOE)d{ ze*LsQzBX}P=}xhpA7YNjb68|2P2>M{ZSv_`)gSG+s@|T>$a=P0p$U{JRRq5 Y3-7@-)GBXlwQo}UEnO_`2NWYH{ 2e~VGNB{f#*Y3UC(^U5L_vi2R#bRIgzU&pS_y+b#$;O%`-+Q_)-!#9z z{vAvC*No7m+A5DAIv ;&=c3*$Wg>1Jo3mX=wyRFF&;`}~u+6?)>+xPCztbG) 8nxj z4f~YEdzU}8d{I6xx9&^9v|Gz}d^P+1`S-EE%?q3v9mU T)Ie&||^R-}hG=*)H86&d3xm0P14% z3%sqGr@rut bBY`ERFg`^Q1q7-dK>% zZ_fT8f8pYPDh#@evVvchf3B=zeV8$8abC`5^^6B+Esm$C$bWh9@Y#Y&y_5^{=e=-0 z{wE`9@8Y_z-vgO`7R!EnCm{ZF&e5M*W-Ax0mgRVJN9qu3tmd<|r!OnNF#Y`Ir&>z> zE#~_YF>}?goXcKo!GFw9^~F4E3+s5h#HM$WpBBHYX1`m#Z{Fgsocrz9TmE<9-y``v zGIX7z{jI{Ak{7(JUfDJks!!Ou{YdSv>hIU?&)$CScJY>fcKrvZf5|>y>LO?B5nIIG z=fSo&T;^R{VaNsdGyA_!ZCm}*=f|3TrWG!7YdNf(CU93xnIZr8@7z?WkIRxuZdCiO zzc}|oD#sqliQio=2sZg#sGj#{{*lwhFWfKJ@6xede9vg_w4bb<)s9a#x?T`Gc4ftP zyNmXn)5_1Be`Z)zDaO4!a{h+Y4x7gP?F*E9G9CM+J}=I^^5Uz*H04!`zwWK{`;%L< zeuLmoQ-P8eLz@@({D1E lBWN(LDCDVUVM|Tb9Mej;4$;p1+ zoO$)d*Oslua)J4C^B(UxefMD++ePiPiOT*DIIWrrd4Ii`5U< aN7*L!;wuM3!S zCjM>N`g@AXp9%#^S{{jg=`pmQ9oKuW-^cdy>*b|;m(@Si5t;co&ZW2J+X3N{mdmEE z7SCT_n^vY0{oJ~`GCg;)`Re1f+DR{rUFR)Oo}=gZ{a;b=`5R{>=3YOuyZplXWjBlC znh)n~i@VdEF|l8!qN#6!oNI0CjQPHsTd#jUzrIIe?fseltWP)0&Sc5{W|pyV!`>{x zl9m$f7s_=-SE{#ISicBA{o#w@%5*o^zvuR7xm0|b6}2WUzh5frc24&KpuA?)0`22>dKO%lko~&*^PUSukJR6l zhB(`2OAD2>lu3M@SpFrb=jYWg(O)W S%KR2KC(K~P5FNf>=JT3^{%)7Ao_@9#{ z*~{<0da1EDO)A_bFFE?*=g*({*E_gWxm8`+k-xI#-dn$V7TJq`yQ*3y%>H?NPnz6X z5x19HKfkni|9$tNl`VT`2(I8stT(s*a#!w<^98}XADS-~FR?VPO0QzsTV`d-)_d)H z-sh}k;$_B<-l<+HQ+>gq8+xYNXMdSpxsKS^#WV6X+wSUwwJeg_*}J-4)A54f#VOt? zfk|=3>#eJ74}~P!YEN6J_M$cG#@UYFJoj$@$@nc)(lXiTneDTSR{O(j=X {yme57cB8{J|nBacDHAR`6;n)i@sM0eh+7nJ^YpD=i8TO{}|os zax}ku!%p{fVZ(;+7mM$vt?%Y)>RTApcdGm5;?K8IUnmw`IP2uP_r$-OCGX9DX)C>u za7qfvGyA{!wT`1XxAfPyb05rmGkx=+iMDT!Uj7;qJztQ+>dwj|e?Gsjx3{yi`}by} zjy{XhSMO;H?$51j{T{vBjrX`#qQ26;pHjUG4)-2c-J)*z-?aB$VEB$JaVyyG=Dd<# zu=w{D_ugGMcimTcU#NGYZNcHzQ!8q$d)MX##+R1Fu}CeAw=GdEx^ng!@9vv>OZzwF z>2g@@3X+<--~ajD$1Ajt-qG>9aJJ2T?^Dh!Nxir0{(atX?Q8$GI(H7MT`voTD(yGy z(O-SHZ`XnJgYg1iV$0>)rE0gtth-sLa|Wc7M}?$A;_Y&+hrv^Cs-dRk!D98=LaX zR9^Yd%blnCDy`*j?AdP}JNj5;`!#w`eP0&3TJu$xq4{j#662dI>^mzbYJ$|9xLMY@ zrH@5+`wEbntE;qLbxps;-Sp49e}?$YMR5how lEe^XypoMOFIZhv#O`I}RVi#I=Qekb~A?V3Py z@9&ka*K7I~JQlw? zqrJlB>6sa`pK|VsJP}wWSZH70wc)kGivoKE<#|t>j^4?+xnTB7R>epE?wvmMdR@Z; z{k|FRxkXD_XNbGpJtML8)0$6~9KR0PBuoEnxwh%e{(0B$z5e;CJcVah =pR7k>gj>9)F|NNB=y1pWd?9{lfpB@7L#Du3Yg)MEA7u+VK9W!gTADsQ-c-zmldT zuPgXq$NOvj%O0NHK^IPM$-D8}w{rdU <#&uf(jn~iW%4w4o3<9)iVNrS z_$H@Li7Vjz6}s(uxmnXbhWC>_o_N1${oZ-h^o?V4T=n$rIqH93 =ZJVcJ%L? zab2?1sgSdJ!-D%eW3#sj+XdQ(?atkl-)_xO6{M{9R`7HC=eMHeTNg}!nQOE6dDXVS zs)MROl3Vu5I{IfEneG?XvvcPCqWgW-=L1WhFZf lKx;=d>lDzM^$%n
Hw@cFg zWme(VwPAPkSZo=;2L8NTS=A-i7C%v5<_oBJneq2#+7$Doa>J 2vfM4Uv=RJT-M8(w*6r2>?4pX#R zQ~1JFb^65a)LFL6 zw@-b_ds9^J;Qh^6H#n;t4%Zp`o=LsF_=V(`d6#edUFHt77pttTzJ0qcay!2xzlzg| z`R8s2Z<{guEa$F6&tIfj#-BG{y*58zyJhYIcEeXJvrM0*{q*aQTl~_)(L6eRN?gkA z_Vk;1$9-;hEMONZq*0>8{7} zclFi9+kX98-?xBUqEbI8X`lY3U7~UE39oJMzTL7{Q|~fQSN^sK{R{j}el4s}G_PY| z;J5=?3&6Dc$eo;C;ool-T>p3b?SA>h*6aJ)9%VDfv(!$y_+2XQWg>sixq9Un&z1Il zTPqT;{6pb|aL+zgMMHbBLfNy=*#ExU;;#5=eMr3e7uO5yT}E2w-PH-}i Mh&Awh=K^c#+Ryb#b-KTH%@X_~_Ug3x ^`%U4t7 z7rJ59o3D4Rc =R{qET$oyA;-H*TIyTMma=ZUj=)1rdhmN28;O5YGfy~HIfznzQ+m6uv4Bzs; z&X_IuC2mLbE!)NU$-Px9whT%Cq#e~?>~)EbQ+0_Ib`(FR`Yrs(pZ37}4(hM$SLm!> zbn*Pk1C~vCU4cKfL2BQ3udsK%QYuj5c;t_E(?4m)_uUJ=8$O-}8dp3j@Ogd5&wOR& z-Ch^Yc2w#2Tzjtc!inShz7-QcERg%6UT-e#FZ;Uv;x8GNSQf+k$IB{RFZ?y|df&aG z-~9rsz}niJ>FYUm>ASuBd$ywB>MD+3DHHwc?%gnp7c8lF*=xVZj?Hm?%f;uG+s^O1 z7$5SvXV d#rp57#<;bh3FM;!>`#9RqTF&J5vaVy7e3PAo;eIh&ws{=C zEL>zS3Vdlan)77O$F}El!Y}l1dwR;z+&Z5BYwGbTj$aCqeg*e#_&tAjq|)ue{Bz-~ zi%VRbF0h{{NRn=x5r10j%jU|}2~+wsICdE)#r5Zw_AWT@ctw!WvD{_Bt5mC>)k-gl z1xj2TF3kOKGkUL&dY%8~I^lPJ+Z0Z{_PVmLZ$bIAmn>#nx7YL)UFcsn@$FXIsQDhR z8}@Kix!?4QQ#P<#Ki%|2_~&rvD+{|8lpj+4R$U<+qMvl3`b<2pW4l( bE=Z zNjqM5yt1%kfxXL__a`eReSh}zsY%nly!^dN>)1ajyx{+^_WJKl^PboWmgx3eTG$3k zBJWREHGMbJegSGDybm?>Y8Ps%V>YaB>(_jz_+nOvRfxbBx0tkQwa=Y*r5&%kTv*t& zz+B htd}Ww+%2vrw5T?pJNUF)`qP)^waF4q@7Av= zzV`KS&1u%TGkz;QvkT*@I{nGz&`$Py)3~hIr>qxsk6m2Bw)g2)#TVxdyxNziHl1sH z(tmNM{CWMYXE}ad-D33Kcux0&)XoLP3_q2h?c=D@1C^?2@$Nm-?Oq(I;c0s34RZ6- zEUTN}rO$bPm|*o{54T+NjNhOB-Kh$@uzuOp+W!y#wA{PIHn%xdMlR!V_k!m~E4gf! z@>(5Jc=m6PexdM}N)D?kr58JTz27Fga98!G?%Es^C|LT%=|Z9O;?IUg?0cUVF|JmA zv7>cHzw-sgD+(`mw7Q?`TP*fv-suuk-EZ0p ^8dQ|<;MDkDi+zZ5_9`q z!D=&{&K&<-w}H!%y-4B33b!-Q6<#o836z8=zbIZK@MUr4rhdk+99F9YK39q~-z(m^ zZrSmDY*!Rttk`6Gv#3dSb-G1$UlXU*g4P9(g$(CsPhBAIJGqu`h4Y2N&IRX14PTTm z_rB2ho5RXa@bgcb{b#;CF;#uhAlB69d?e5JzR#AMAnVvZQ?NMn z-t^6!RukAkoRUy&_P@2a-poH>*~FKmr&DyH+GqX(=C2%93OY^~?l0fzdZDq9 yy>LMQ0L>5}{Zqu&QwIkJBfEOC% TLL%_-b4)Fb1;xt&n4p{n536d65#^UZ3jU|2eG;*c{ni1iyT)6exWl>d5ZW z%dwcfiSLZ#1;)TYc@L)xjg}l%3SA4BGe9CNvJTu$d>vg <;}(w z999ZiMIy@j)&d|yT `Zu!KPu)96zl7$&{Q z_iFIKlu~-Z5G7FJAmYe=p=km0A`YttF&5c|)jat=4WLzl;ViNe%?p?dTrV^la#%4y zxlKl{2A6j+oZ_%zD0h+l;C_K|hw_UC`zF2vvX1P31WOp+aacX*U%*`8eu1%`MYh4Z qiSLK<3kC)i2k7EMh6xA$Ge1c(R4lF2wP0XiVDNPHb6Mw<&;$Tb>~og@ literal 0 HcmV?d00001 From 559a8efc1918989e04396a31ecf0bd465b52072b Mon Sep 17 00:00:00 2001 From: Frederic Leger <57264593+freeedleger@users.noreply.github.com> Date: Mon, 30 Oct 2023 14:32:20 -0400 Subject: [PATCH 3/4] ajout texture --- SQCSim-common/define.h | 2 +- SQCSim2021/engine.cpp | 9 +++++++++ SQCSim2021/engine.h | 2 ++ 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/SQCSim-common/define.h b/SQCSim-common/define.h index 337a9be..5ed4b13 100644 --- a/SQCSim-common/define.h +++ b/SQCSim-common/define.h @@ -37,7 +37,7 @@ typedef uint8_t BlockType; typedef uint8_t BoostType; enum BLOCK_TYPE { BTYPE_AIR, BTYPE_DIRT, BTYPE_GRASS, BTYPE_METAL, BTYPE_ICE, BTYPE_LAST }; -enum BOOST_TYPE { BTYPE_SPEED, BTYPE_HEAL, BTYPE_DAMAGE, BTYPE_INVINCIBLE }; +enum BOOST_TYPE { BTYPE_SPEED, BTYPE_HEAL, BTYPE_DAMAGE, BTYPE_INVINCIBLE, BTYPE_BOOST_LAST }; typedef uint64_t Timestamp; #ifdef _WIN32 diff --git a/SQCSim2021/engine.cpp b/SQCSim2021/engine.cpp index bacea3b..018c5e5 100644 --- a/SQCSim2021/engine.cpp +++ b/SQCSim2021/engine.cpp @@ -378,6 +378,15 @@ void Engine::LoadResource() { m_blockinfo[BTYPE_METAL] = new BlockInfo(BTYPE_METAL, "Metal", u, v, s, 1); m_textureAtlas.TextureIndexToCoord(texIceIndex, u, v, s, s); m_blockinfo[BTYPE_ICE] = new BlockInfo(BTYPE_ICE, "Ice", u, v, s, 1); + m_textureAtlas.TextureIndexToCoord(texBoostHeal, u, v, s, s); + m_boostinfo[BTYPE_HEAL] = new BoostInfo(BTYPE_HEAL, "Heal", u, v, s, 1); + m_textureAtlas.TextureIndexToCoord(texBoostDmg, u, v, s, s); + m_boostinfo[BTYPE_DAMAGE] = new BoostInfo(BTYPE_DAMAGE, "Dmg", u, v, s, 1); + m_textureAtlas.TextureIndexToCoord(texBoostSpd, u, v, s, s); + m_boostinfo[BTYPE_SPEED] = new BoostInfo(BTYPE_SPEED, "Spd", u, v, s, 1); + m_textureAtlas.TextureIndexToCoord(texIceIndex, u, v, s, s); + m_boostinfo[BTYPE_INVINCIBLE] = new BoostInfo(BTYPE_INVINCIBLE, "Inv", u, v, s, 1); + std::cout << " Loading and compiling shaders ..." << std::endl; if (!m_shader01.Load(SHADER_PATH "shader01.vert", SHADER_PATH "shader01.frag", true)) { diff --git a/SQCSim2021/engine.h b/SQCSim2021/engine.h index 0ed8b39..4f4f67f 100644 --- a/SQCSim2021/engine.h +++ b/SQCSim2021/engine.h @@ -5,6 +5,7 @@ #include #include "../SQCSim-common/array2d.h" #include "../SQCSim-common/blockinfo.h" +#include "../SQCSim-common/boostinfo.h" #include "../SQCSim-common/bullet.h" #include "../SQCSim-common/chunk.h" #include "../SQCSim-common/world.h" @@ -61,6 +62,7 @@ private: Connector m_conn; Shader m_shader01; BlockInfo* m_blockinfo[BTYPE_LAST]; + BoostInfo* m_boostinfo[BTYPE_BOOST_LAST]; TextureAtlas m_textureAtlas = TextureAtlas(BTYPE_LAST); World m_world = World(); From 8769aa9e38a7e150e10fbd675831a3a7ad00c90e Mon Sep 17 00:00:00 2001 From: Frederic Leger <57264593+freeedleger@users.noreply.github.com> Date: Mon, 20 Nov 2023 15:40:43 -0500 Subject: [PATCH 4/4] booster affiche affiche simplement un carre rouge pour l'instant et ne se ramasse pas encore --- SQCSim2021/SQCSim2021.vcxproj | 2 ++ SQCSim2021/SQCSim2021.vcxproj.filters | 6 ++++ SQCSim2021/booster.cpp | 46 +++++++++++++++++++++++++++ SQCSim2021/booster.h | 14 ++++++++ SQCSim2021/define.h | 2 +- SQCSim2021/engine.cpp | 3 +- SQCSim2021/engine.h | 4 +++ SQCSim2021/remoteplayer.h | 1 - SQCSim2021/renderer.cpp | 32 ++++++++++++++++++- SQCSim2021/renderer.h | 6 ++++ 10 files changed, 112 insertions(+), 4 deletions(-) create mode 100644 SQCSim2021/booster.cpp create mode 100644 SQCSim2021/booster.h diff --git a/SQCSim2021/SQCSim2021.vcxproj b/SQCSim2021/SQCSim2021.vcxproj index 7f1334e..3aec273 100644 --- a/SQCSim2021/SQCSim2021.vcxproj +++ b/SQCSim2021/SQCSim2021.vcxproj @@ -20,6 +20,7 @@ + @@ -36,6 +37,7 @@ + diff --git a/SQCSim2021/SQCSim2021.vcxproj.filters b/SQCSim2021/SQCSim2021.vcxproj.filters index 5c8a864..8246b5c 100644 --- a/SQCSim2021/SQCSim2021.vcxproj.filters +++ b/SQCSim2021/SQCSim2021.vcxproj.filters @@ -53,6 +53,9 @@ + Fichiers d%27en-tête + Fichiers d%27en-tête +\ No newline at end of file diff --git a/SQCSim2021/booster.cpp b/SQCSim2021/booster.cpp new file mode 100644 index 0000000..cfef393 --- /dev/null +++ b/SQCSim2021/booster.cpp @@ -0,0 +1,46 @@ +#include "booster.h"; + +void Booster::RenderBillboard(const Vector3f pos, TextureAtlas& textureAtlas, TextureAtlas::TextureIndex idx, Shader& shader, Transformation tran) +{ + // + //Vector3f playerToQuad = m_player.GetPosition() - m_position; + //playerToQuad.Normalize(); + //Vector3f targetPosition = m_player.GetPosition() + playerToQuad * 10.0f; + //Matrix4f rotationMatrix; + //rotationMatrix.SetLookAt(m_position, targetPosition, Vector3f(0, 1, 0)); + //glMultMatrixf(rotationMatrix.GetInternalValues()); + float x = pos.x; + float y = pos.y; + float z = pos.z; + float width = 1.0f; + float height = 1.0f; + //Pt override les collisions.. a ce point la je sais pas quoi faire + + //Matrix4 mat4 = tran.GetMatrix(); + //mat4 VP = pMatrix * vMatrix; + //Vector3f CameraRight = Vector3f(mat4.Get11(), mat4.Get21(), mat4.Get31()); + //Vector3f CameraUp = Vector3f(mat4.Get12(), mat4.Get22(), mat4.Get32()); + + //Vector3f v1 = (m_position + CameraRight * 0.5 * width + CameraUp * -0.5 * width); + //Vector3f v2 = (m_position + CameraRight * 0.5 * width + CameraUp * 0.5 * width); + //Vector3f v4 = (m_position + CameraRight * -0.5 * width + CameraUp * -0.5 * width); + //Vector3f v3 = (m_position + CameraRight * -0.5 * width + CameraUp * 0.5 * width); + + //tran.ApplyTranslation(m_position); + float u, v, w, h; + //glDisable(GL_DEPTH_TEST); + shader.Use(); + textureAtlas.Bind(); + textureAtlas.TextureIndexToCoord(idx, u, v, w, h); + //glLoadIdentity(); + glLoadMatrixf(tran.GetMatrix().GetInternalValues()); + glBegin(GL_QUADS); + glTexCoord2f(u, v); glVertex3f(x - width / 2., y - height, z); //glVertex3f(v4.x, v4.y, v4.z);//glVertex3f(0, 50, 0); + glTexCoord2f(u + w, v); glVertex3f(x + width / 2., y - height, z); //glVertex3f(v3.x, v3.y, v3.z); //glVertex3f(50,50, 0); + glTexCoord2f(u + w, v + h); glVertex3f(x + width / 2., y, z); //glVertex3f(v2.x, v2.y, v2.z); //glVertex3f(50, 0, 0); + glTexCoord2f(u, v + h); glVertex3f(x - width / 2., y, z); //glVertex3f(v1.x, v1.y, v1.z);// glVertex3f(0, 0, 0); + glEnd(); + shader.Disable(); + //tran.ApplyTranslation(-m_position); + //glEnable(GL_DEPTH_TEST); +} \ No newline at end of file diff --git a/SQCSim2021/booster.h b/SQCSim2021/booster.h new file mode 100644 index 0000000..b9ff3b6 --- /dev/null +++ b/SQCSim2021/booster.h @@ -0,0 +1,14 @@ +#ifndef BOOSTER_H__ +#define BOOSTER_H__ +#include "define.h" +#include "textureatlas.h" +#include "shader.h" +#include "../SQCSim-common/vector3.h" +#include "../SQCSim-common/transformation.h" + + +class Booster { +public: + void RenderBillboard(const Vector3f pos, TextureAtlas& textureAtlas, TextureAtlas::TextureIndex idx, Shader& shader, Transformation tran); +}; +#endif diff --git a/SQCSim2021/define.h b/SQCSim2021/define.h index 9ce9bd2..4d67655 100644 --- a/SQCSim2021/define.h +++ b/SQCSim2021/define.h @@ -34,6 +34,6 @@ #define AUDIO_PATH "./media/audio/" #define CHUNK_PATH "./media/chunks/" #define MENU_ITEM_PATH "./media/menu_items/" -#define BOOSTER_TEXTURE_PATH "./media/textures/Booster" +#define BOOSTER_TEXTURE_PATH "./media/textures/Booster/" #endif // DEFINE_H__ diff --git a/SQCSim2021/engine.cpp b/SQCSim2021/engine.cpp index 6d3cc95..9c8b201 100644 --- a/SQCSim2021/engine.cpp +++ b/SQCSim2021/engine.cpp @@ -448,7 +448,7 @@ void Engine::LoadResource() { TextureAtlas::TextureIndex texIceIndex = m_textureAtlas.AddTexture(TEXTURE_PATH "metal2.png"); TextureAtlas::TextureIndex texGrassIndex = m_textureAtlas.AddTexture(TEXTURE_PATH "grass.png"); TextureAtlas::TextureIndex texMetalIndex = m_textureAtlas.AddTexture(TEXTURE_PATH "dirt.png"); - TextureAtlas::TextureIndex texBoostHeal = m_textureAtlas.AddTexture(BOOSTER_TEXTURE_PATH "BoosterMauve.png"); + TextureAtlas::TextureIndex texBoostHeal = m_textureAtlas.AddTexture(BOOSTER_TEXTURE_PATH "BoosterVert.png"); TextureAtlas::TextureIndex texBoostDmg = m_textureAtlas.AddTexture(BOOSTER_TEXTURE_PATH "BoosterRouge.png"); TextureAtlas::TextureIndex texBoostSpd = m_textureAtlas.AddTexture(BOOSTER_TEXTURE_PATH "BoosterBleu.png"); TextureAtlas::TextureIndex texBoostInv = m_textureAtlas.AddTexture(BOOSTER_TEXTURE_PATH "BoosterJaune.png"); @@ -1160,6 +1160,7 @@ void Engine::Render(float elapsedTime) { m_renderer.UpdateMesh(&m_world, m_player.GetPosition(), m_blockinfo); glClear(GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT); m_remotePlayer.Render(m_textureAtlas, m_shader01, all, elapsedTime); + m_booster.RenderBillboard({ 120,20,120 }, m_textureAtlas, texBoostHeal, m_shader01, all); if (m_isSkybox) m_renderer.RenderWorld(&m_world, m_renderCount, m_player.GetPosition(), m_player.GetDirection(), all, m_shader01, m_textureAtlas); diff --git a/SQCSim2021/engine.h b/SQCSim2021/engine.h index 23b62da..f5754aa 100644 --- a/SQCSim2021/engine.h +++ b/SQCSim2021/engine.h @@ -23,6 +23,7 @@ #include "connector.h" #include "renderer.h" #include "remoteplayer.h" +#include "booster.h" class Engine : public OpenglContext { @@ -74,6 +75,7 @@ private: World m_world = World(); Renderer m_renderer = Renderer(); + Booster m_booster = Booster(); Texture m_textureCrosshair; Texture m_textureFont; @@ -85,6 +87,8 @@ private: Texture m_textureMultiText; Texture m_textureTitle; + TextureAtlas::TextureIndex texBoostHeal; + Skybox m_skybox; Audio m_audio = Audio(AUDIO_PATH "start.wav"); diff --git a/SQCSim2021/remoteplayer.h b/SQCSim2021/remoteplayer.h index 6050356..36eb275 100644 --- a/SQCSim2021/remoteplayer.h +++ b/SQCSim2021/remoteplayer.h @@ -8,7 +8,6 @@ #include "texture.h" #include "openglcontext.h" #include "vertexbuffer.h" -#include "texture.h" #include "../SQCSim-common/matrix4.h" class RemotePlayer : public Player { diff --git a/SQCSim2021/renderer.cpp b/SQCSim2021/renderer.cpp index d2b9b30..3e5fc97 100644 --- a/SQCSim2021/renderer.cpp +++ b/SQCSim2021/renderer.cpp @@ -1,4 +1,9 @@ #include "renderer.h" +#include @@ -97,5 +100,8 @@ + Fichiers sources + Fichiers sources ++#include + +#include +#include Renderer::Renderer() { m_meshes.Reset(nullptr); @@ -131,7 +136,8 @@ void Renderer::RenderWorld(World* origin, int& rendercount, const Vector3f& play } shader.Disable(); glStencilFunc(GL_GREATER, 1, 0xFF); -}; +} + void Renderer::UpdateMesh(World* origin, const Vector3f& player, BlockInfo* blockinfo[BTYPE_LAST]) { int cx = player.x; @@ -238,6 +244,30 @@ void Renderer::UpdateMesh(World* origin, const Vector3f& player, BlockInfo* bloc } } +void Renderer::RenderBillboard(const Vector3f pos, TextureAtlas textureAtlas, TextureAtlas::TextureIndex idx, Shader& shader, Transformation tran) +{ + //float x = pos.x; + //float y = pos.y; + //float z = pos.z; + //float width = 1.0f; + //float height = 1.0f; + + //float u, v, w, h; + //shader.Use(); + //textureAtlas.Bind(); + //textureAtlas.TextureIndexToCoord(idx, u, v, w, h); + + //glLoadMatrixf(tran.GetMatrix().GetInternalValues()); + //glBegin(GL_QUADS); + //glTexCoord2f(u, v); glVertex3f(x - width / 2., y - height, z); //glVertex3f(v4.x, v4.y, v4.z);//glVertex3f(0, 50, 0); + //glTexCoord2f(u + w, v); glVertex3f(x + width / 2., y - height, z); //glVertex3f(v3.x, v3.y, v3.z); //glVertex3f(50,50, 0); + //glTexCoord2f(u + w, v + h); glVertex3f(x + width / 2., y, z); //glVertex3f(v2.x, v2.y, v2.z); //glVertex3f(50, 0, 0); + //glTexCoord2f(u, v + h); glVertex3f(x - width / 2., y, z); //glVertex3f(v1.x, v1.y, v1.z);// glVertex3f(0, 0, 0); + //glEnd(); + //shader.Disable(); +} + + void Renderer::RenderPlayer(Player* player, Transformation tran) const { } diff --git a/SQCSim2021/renderer.h b/SQCSim2021/renderer.h index 0289baf..5a13709 100644 --- a/SQCSim2021/renderer.h +++ b/SQCSim2021/renderer.h @@ -9,6 +9,9 @@ #include "textureatlas.h" #include "shader.h" #include "remoteplayer.h" +#include "openglcontext.h" +#include "vertexbuffer.h" +#include "../SQCSim-common/matrix4.h" class Renderer { private: @@ -16,6 +19,7 @@ private: TextureAtlas* m_playertext = nullptr; Shader* m_playershader = nullptr; + bool test = true; public: Renderer(); @@ -25,6 +29,8 @@ public: void UpdateMesh(World* origin, const Vector3f& player, BlockInfo* blockinfo[BTYPE_LAST]); + void RenderBillboard(const Vector3f pos, TextureAtlas textureAtlas, TextureAtlas::TextureIndex idx, Shader& shader, Transformation tran); + void RenderWorld(World* origin, int& rendercount, const Vector3f& player_pos, const Vector3f& player_dir, Transformation world, Shader& shader, TextureAtlas& atlas) const; void RenderPlayer(Player* player, Transformation tran) const; void RenderPlayer(RemotePlayer* rplayer, const Vector3f& player_pos, const Vector3f& player_dir) const;