From a89b8ce142192df2f02dc7263b2a63641e6ef353 Mon Sep 17 00:00:00 2001 From: Anselme Date: Fri, 20 May 2016 15:04:24 +0200 Subject: [PATCH] added README, renamed teams in behaviors, fixed one of the joints graphical bug --- README.md | 48 +++++++++++++++++++++++++++++++++ {teams => behaviors}/hello.cpp | 0 behaviors/hello.dll | Bin 0 -> 43078 bytes behaviors/hello1.dll | Bin 0 -> 43078 bytes behaviors/hello2.dll | Bin 0 -> 43078 bytes shaders/pixel.vert.glsl | 2 +- shaders/world.frag.glsl | 4 ++- src/simulationdialog.cpp | 23 +++++++++------- src/simulationdialog.h | 1 + 9 files changed, 67 insertions(+), 11 deletions(-) create mode 100644 README.md rename {teams => behaviors}/hello.cpp (100%) create mode 100644 behaviors/hello.dll create mode 100644 behaviors/hello1.dll create mode 100644 behaviors/hello2.dll diff --git a/README.md b/README.md new file mode 100644 index 0000000..89affff --- /dev/null +++ b/README.md @@ -0,0 +1,48 @@ +Pixel Wars is a programming game where two minimalistic civilizations +will grow and try to annihilate each other to conquer the Pixel World. +But you don't have any real-time control over the action of your units. +To be victorious, you'll have to code their behaviour in C/C++, +and pray for a good result. + +This repository is the application project, it has severay dependencies : +Qt5 modules: core gui widgets opengl, glm, SparrowRenderer, and cmake for the compilation + +### How to Use it from the precompiled builds (not available yet) : +- download the latest build (insert links here) +- unzip it anywhere +- the PixelWars executable is located in the bin folder +- you can now code your own Dude's behavior or map generator by +placing in the respective "behaviors" and "generators" folder your compiled code +in the form of a shared library, you can find an example in each folder named hello.cpp, +containing the minimal code, the necessary includes, +and the command line needed to compile it. + +### How to Build it from sources : + +download and install git, cmake, Qt5, and a c++ compiler (gcc on Unix or MinGW on Windows) + +get all required repositories : +git clone https://git.epicsparrow.com/epicsparrow/CMakeTemplate.git +git clone https://git.epicsparrow.com/epicsparrow/SparrowRenderer.git +git clone https://git.epicsparrow.com/epicsparrow/PixelWars.git + +get all required dependencies, +unzip this archive where you cloned the repositories : +https://epicsparrow.com/media/libs/glm.zip + +you can now compile the sparrow renderer : +- go in the SparrowRenderer folder +- mkdir build +- cd build +- cmake .. +- make + +after that, you'll be able to compile PixelWars : +(same procedure) +- go in the PixelWars folder +- mkdir build +- cd build +- cmake .. +- make + +That's it ! The PixelWars executable should have been generated in the build folder diff --git a/teams/hello.cpp b/behaviors/hello.cpp similarity index 100% rename from teams/hello.cpp rename to behaviors/hello.cpp diff --git a/behaviors/hello.dll b/behaviors/hello.dll new file mode 100644 index 0000000000000000000000000000000000000000..d3f0b3ad26d9c0207291bbdb886abcb04509e910 GIT binary patch literal 43078 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 a_Rsg2w_w48t;frnU3ur9K7fhe*8UqELe2gF literal 0 HcmV?d00001 diff --git a/behaviors/hello1.dll b/behaviors/hello1.dll new file mode 100644 index 0000000000000000000000000000000000000000..d3f0b3ad26d9c0207291bbdb886abcb04509e910 GIT binary patch literal 43078 zcmeHw4_sW;mH!(Uk}(iK4Hh-7qa`iTgv`J|fIu<>3}KW2GLU~pUxr~wF#MU$4EeXQ zO`M>aW$B0AT6Md&o2=sFd(Yr0yS?xrp&sZDEZvud6Fo_p_m zZ{9pWP1*LhU2k%E@11+@`FGDf_r5#ty}N4tkd!J(k{LN3m!!iuQgX7t)Bo9x;>_#6 zmMJ}P*}vRy*i`>7H?(Z-3|oVt-c2E2x7F|K>FJGF+XB{5Uyrr3$6C|qwRZQm2MXrS zos%a>H@PLL-jv0!S|n*dggGP4x*^?^k}F*Wa5*xBv(CdY8`*{|IosHI3YXgi2+7Y< zHm-2-$=^y$FVy7qr~=hTVuzq4Rnf(6NvfGeCsU+DUgn-52rUaz24<$Rx`(bfG1uWE(CBal{tV#ffY|W|eRh z33$#W4t_B_8^03e&Eiru~T}(bJf%hX5UMX@yVtAoISFc~B0xvua6U83R5r7l$$AOjf{P${(kcUA4qvXP5WU z-!sTWuK_tBF}&hp2FWquZ~>X{nixp^!|+O$vTLp)kO{9@MPVnThaU3YSKjFP++*gv z-M}1|;EOSHUTkFi`|ytbmmhh-?`(VIIQ~TD9wR@HqNBO?;oC=WI85^1J~GrA`^lQs zATocTHKYGz-{u3-MrT|9aMq`10Uj}kQEBpD;u476q+tI0D{1H@YLECa2U*u1>>SoC~GG>x?6f@z}KhtJi-mqsck8S5Fc-MKjsV(30*f^$pgd@%Aci8RR`a<;)# z7CJCOgg!n8+|K>t-FRGSg>#n!aE1V=W9D@v9LCR}fLA1&oclIVVs8#U`*B=IgGuudv);bv$~}w5^Cp#Wv)biOik9jmJR-4cq@bXbf(Z>?bF_9(~)C z)&DlX9)IRC&RwbUayH|Pra97g55wF6Udi%(m18A?zdSkkrFY_S`$=*TXwzRP=qVg` zXq5yg<~}?A2hOAOn&Dgm(nKnVc<%+Ob{T~NaChj#xafzN+rFZUWK}Gdq zSn4c>U}o@he}+;RO0*yK?3TQ|V`(;cHi?0bhb~Z`mp@RGXC1!|$kEaH=#Ya?e2j|G zBQnPCLvTl}jER>hK2Uhb9=NUvT@$V(p%=x!7dwhBdHC>0(WBmsEL6Zbn}LIZM@Hep zB;A!jMmxrHT3CSv-S2YdeGmqf&NhM8*nwO)1WHN)S;(k^ME~&DNSw%3guax>m^Cu7 zBj{U~0i9~bPYwny-hSsDBdk9_ULFydoH-;kr*;Uka%#6uMU9Db@&E}BaWWXk3Qpj} z$PiD0K7?uq8Hn%-5XO5TD$b>=Am?-AL0p09i4lfud3ydvpkNG>1SB_lx5dO@93&ul3@danZaZDUfi{mMFMBC-7 zG3#*E#guiR*52K*|8=tkxoOJf%h9>ZGXa)hYJvZykCqTf7|KjduN^EUmB{Ab6|Kq^E@ z!DupK=D@z6C1R7l`P8DY2^rafYo?qTGEMwl$B=zk@igvlC^wH#pcnG7YvGG@AbAfw z4BLUIx)RKN#Z^6I^%= zMgQpeiUXzaW11RFfXzTo1+FkVxW!!di*0iTc3M&!EoI*c^+iWa(IXjUBYi)i0RA(m zg;0DfYwr(9HplG)*HOLaUQ02(5v#WFS;_cQh~cR#Gh)@|LH7$xGD0GaXa+n`V>3g< zc+Ng@5gH95;Q{xV=tXDW< zM1KHmB6+-r?`2f8F?;z+Jg1&433E8nk%2e3rEr8t_S=P65()5t+Q=$1^z@Y&d&PuUsIKf=~m3Jd7G$*Jp<_jXpFy*Bw##Ee`BqqSxt-EyI`z>JtNDb9BTq@Bq;o zyqEr_dN0OWUl{*1YM^a6UW}E5PBOoyHgD{dcjd>sl( zrV9hv7#3a~T=jzDIk9>)wKK_i_|$aJeH;y(!5h_l80QvvisBpOZNe`m2DzPz`rpjz zUj{!IxYgW$B5Usmn)uw!xXyYC_I0*pJvG)5bC1Tx5ZvPNj_BQ^QdZqq?83rt?fEH{ zo8BS?{}H2j)>G~mI%2a_YiHf_X`+=ww4R)m_2gLWyL(Q6MttvZR^4}F7jAAH<&}d} z`APQ+`({lXx%uwV*oD;PvAbUwUk7k(`NZP`bICnSzZh_tnK~}ZfK%tCV{ZcyUXAw2 zruG@e^#Kb)-2nP%4O2w~yFgo=Ay}3|5;4=JgXIZZj@S92H^yfD||`veTG%&!evq4nWDb4_E(Gg zPN7aw-`Jja8I#=Dh2MuKs4tHyRAo)P7qQ-6d(m%nC#^2 z=GXBYCr&8P6J;joTwQpGJpGRIN}+%!0F*$bx2vcEf;@^aT-y|+Oae;FHul=Ie5cNd`qB5uH;DMfPzp5-OqFJHwx^R z$4?*#PkdJR!}v3F^`Pocsm_W$rL^c5NyAj7W2j@#_S|$6CS{nBjiCPzz#}{Ml&)GY z$|t^~pU?5=8CMRLbI}-s+!mT=3q@qZsc0~$)SO|jItkWo1I!`Df@OP zBYMOX9nLTNWoR7B7IzZ;)-~Ln<`3+`#IXYR;aH8pK))@$V^1Z;S#VCr{Es{gca}rA z^+GJFg(D!y{O5rRTn!HKc)fcbF0!7wYu4a~l-&NG^<_>R!~Ef>DLRs0_ImhZG>Bke zrdwNb{P7epLW93b#9tNUfj>Im{^sqm3&f24*=v6}dfuYRGCMkIp@}Y+;~NO{kYfT? z%7*1hj>YtcqVo8UQApS$Y+@|T26`GXvqmYxDZS1#%6jUdSwsbVU>z0T3o~a#(nwap ze>t!9Gj4}{33eE4G391G<(bugBJ!er_|2-1TO+g4>*qx$&;ppz<(C}~owL8mXvMzI z4s3osm3*h*HvPj)>nsFhNXEU~KCFrtNu~MPc?&nqBdkJX0Zfx&FwIe3c*TG-?>A%5 zjb9Hlsq`j(nb?2U*yD7+surPFmPx$jEDQ!e-l$UGRwG^ zqa59Hlr_*V`_d=A2LB^_9GQn%Z~uwD*#lKH8J*w%@~6fJc4mOb?RV}u#?UXyLOuZP zan73cq4NV3pB9!U6L$^0-HL+kw8f9!0&hgxwEIES7L~FEw&eNoLjca z%>t{s%NGs@!l>6Cn5?E$7wGEhwXW$6b+ub>fI*r*f?>9^XVbRD+e#et<6xw-J7Deb zb$0cI0_AfgS9^OX5Dr@x1g)EWVQWvXwX@r|DX=&k@JBj(dnBuMb!RBj=j*zyFA&bW~(1RN?L8(7i=fI)}Adr zz1w=M!Em6jz1PZqKk^Y@`e8HD>+kKdZViOO1X$2sFo)5ex=veX#2W708BlPYm}PC; z=xjSa@o>t@>gsZ9erHK($>LydxO4mB_HDjU$Kp_6t8J0Bs;{#PKc4Qe!cr^OEM5ak zf&X0)eWBG+P+CwVNmJLizgPXTg2MmF`oF9EAJ+ff+W$lQ{bB9*yY|07bo;$O`6;ea zq8q|j_DIs69QL#YgMIkte}@I|lRrzQoz0SIm&J5#hS|Ii4Vn)qEuNqGW<0)vFkG3I zXi9aawR=vcrFtaO>`JfBwAA7R&+nkP4*6HW{RmAWf!m)_H8-vHzSMio(X^D#IU}y4 zu4As}LA*LW<%{~uUAjwDw;?}-Jo;Qb{vkn4XE=aoU44?_ohb8Df>xi5}E8k6XLVLTbGEJ(n`fs(x-Zq zGe+Za+@@>vJ6SbWRsrzUD94ZOT6u$3z5(F$Y3lDnc`nL{k1GFKUVkdRmA1`8y|0LR z)V8*i2Swvnr8i|-T-3NkgWC2maIYg=*tJE#=`z`GNDj)60>7FNfZvLCs7v2SuEL({ zslf3x%0EfvieI&ZHMvuDdO)1jP`lzjR_a2|e?A_^0t!o0=|#B2I|H~_24sm~SQbT6;23XRHQwQ=Pz&$vsvQqz~mIF=FeJ%1Uz#$rxrs7k9 zGQt@H?qh_g^f}Ro13GbaJ-SNie;ZKEc_JRaFR?z(r{byj;lrr&iNrce+-TRr2I)$E zcmcT4L|oUsskKpaBNLC@-kqMZPQ7rkcGyjIzZH+)pIEOZn%X?)`4QAunVzz8&Ir|o z%}Az0$cKUdU?RS64#!BTV<*+q#1*nT*>c{uMW4Yr!EDG@z*t|Wb7YDuivYvgBeVIv zDXz?nXzGp;wBk{;b34G~M|Hq?Sm5*%&V8w_%xnb1%z4o?bX|E)<~)SuY*fl{9Yf{k zGtE`$Dd>9h+)3bSL~e##oq$Vvk0I{{AF?y|CwFFcg9r((^t&=GAcanBMe#ex2Z2jE zaonak%I9*^8k@4=SokxMLP#=t}>&)0d>!!?oG+`*KqpO zS9b&F0&rRg$D5h46>(-I+J&wkMw#PC<`e9O3(Y!-#ha+~L5X2V<=FqZ}9 zLd&Pz2@pCC19<>i2{UCwC>3W)Kc=>&_C5%H7UG9Aj~@*2QNi7pfIA&N(WQJE_*WC6 z(l7bYLy#Fug+V@-gXtv7`M6$$Y(oxWZdZXLypita*&;w>b7v20TLOQW{#RO{eYYm| z+J3b89<+4=Y!omDU@s)Vvhl3AM+%RL-o#jzB*3HeUs5b{3c zFCc#z`3UkU}GKt6~(jC>NA(!b+)0r_3zIeR7P3gl~$ z^Nt20be_SQfdn7*ZaZ|cPP{wlB68EUe(*)*A=Mq^|W^dT$1D_7!eoC zhLZHB1o7^`3TAf;Ru*01+Rm;3ok2PFtxtd*Df>!|IehdWyq#L2rH1?z8-&o5f6lD}aX^hv}@x z-yM{GY~I=t40ZNIIwa{QW_f*sx3??oZmMne_IhPE`eHi4BBh3nOnvu;=Y!9s=I-!Te<;E!Re;W98M=id?f#o@UR$Kfx8?wD<`?>8co5h}E zzuDes|Ac+7{VVoo?Z@pW?Z32}3)2fPFDxxwQFu#XxNv9TKNl`^+~xR$<8H@3$EO_+ zIKJTcJI9lbuRBH^FFJnWc-`@?R)=#(tS%mzcj7XT3T7!Rl2kEE2S@$o-Z|( zeXOjitg&o$*_N`q%l@M5K-n{8uav!B_D0#ovaIs?vt+?MnGt9B&*sirLur0Aw+dQ_p_8aU=?8Wv9`(N4r-u`v_5&LWQ zH|(ZDOW{?83k#PPRuB1itURz`@T2bUKYANy;{bkWtioRBK zh2t8>jgFffg^qGZmE#sivtzxZ4J{Nx>l}1E>Ht$4?%i;(;3zry+Em0Av`6f?9^%&- zwp`nMD&Nnq%{GfI!{wYt34!h%AFWZL~B#4i5Bl-Wcj)p#BTQdt*wNBVjKm74-Rfl#L(m%fmHb0x`O zUA#&8-v~Sd*!^|ow@RT$z2FaA#xxKVRrbfXkLwhGyec8W0W`~%k&uDMiSC1U6zFAs&7qTCC$-_ zo82z2x3OCGG+pLSGCr=THJDDYs<<;Ps2*t)eJf2 zYB){JjrENyTitT2mx^IBx0I{ah}p-#32Y-;t^$*Y*HrOP!i(XU67 zqg1*=1J^XRRw>{sHL!x+*d)!=r8k<|>+SZ2Z7Efb?bd|oe+1=9G z+~AcyqJe80Tbt!uTG80`o>iU}DOW2(bG58-HAB{BcdZ+qLYAp=H@Is()$nQQY7Mo% zx=FavH5w3&R|8Adcxu;4*J@xgmZzb*#$7GV*Pv)&_eyuOTvLl0Zq@)^={l{vv8hFN zt!$P4L<6~2H+pKw?s9Eov+Sy=X_l_nO1<@sYh(}F9e-986;ew`)+vfhr5m&oP8R5L zV-x(JXje0TxKYCq&EjoohE324AJvM`tz7kFUa8roL7t6LhIJ?q^vcRgv5R<;rzfo{nHlT6Xfi_TInE!Hpy*xI02 zrM?kvf#&qAf)5o;h2;f5^jCqlM32_ws=gKW6|LZD@HVKJHa%v`x+ZtM+v`O$fSy;f z>x)Sin_RU{Zd%*eEEQ^n^qtZor@6!71UQ~lsUfsBARO0I*Qs|mNXxYXZ=I*M z#V)PTAnV=KvDUU=WR*Fuh8k%&aRf%IG$Qnio1S-8c8T+U3-;XUhQ$o@SM?vqK3v6n7GO1X?7u^OV1}1DPuLw2KcCZG_h1jdK>Gw z(y>X3>O6e>Kb}w~6eBxIClcV?vFaPeaORc1l~72&w6?l#WtH^pBq%hq;rTPo!lVy( zI|?<@za$j#P$_&80iDXfV<@k6)q@*mKP;A3t@21OCg6zq1;&^f4;!@5QWSm05^%Uh zn5#(NO@Je)vbMcVnB`n3Z~}#aN~Y@J(mMKj{Bkf7 zl2UK_3^bo*{ww^QZHeOVKOkRLhnp#rG)Ia`y;sX$dl63m*WzRZw6j^ zdU^V?G!wqbWX_jTE%WihdfHVu0W{qM=&UT@)5+`{>En22#bPpft|au!Zjd}zF2U@7 zj)SA8d9GY>HNNxqVfuqvAPmkaQX~GFOmAn-#a|Px1CaZ^pZnf~B>+iM*8tc`LRt!~ zC8YkX$#mn5>u$Aes$93uwq*H@H>Q}tpo zhFzKF=l*Zl=Kq401s!-c28z-;@4I-jc9RJ||Ko8HtYqm@lejX$J5u2zlcfy+I*|#7 zccZ%m8jUKc?EFvhcOwcJ9R?Y~Un>@uc`fC;m{de;QcW_-is({J$~Q3yKzt^XNBMpw z;V|x|$=9#{AIdQ%v(HhcG906Fhfux?VA3Gf#NLL$nLa%uE{RL3=`8;0`6+f@h!SDv z9h+#Gb204QhBqmDxW%7Gxl%h-l6%{j35k|w!yn*^22G|rj*|4B$QyygY-m(~;rteV zvq3~}XI_hBz6|yBL-7Z(vnruUPlK_>AF_|CmuVxeNO~;dYkA!>vKZVv|@^mgR`QL$-Zh;BXIL z0L;gAkkx>^qCyl8=ak9v`@j{mqJ;E8EU(IJGK#2JwH>s%RWlQ~@Y4b|^5JPpgaD#2 zT`zbC2%OH;y`Tm-tGpreC0a+4t? z$3b4;i0|ndDccN`>04EL%GP8^$vjBNahx3iU!=fh0}4h;CZXUZfigi=nU^jy@H&%B z*)cyEQgTYwVrpI%1F!i8USr9W9T~}xl3nkESGIvyo`KitWXg_t$&ixA-UqK-123zA z*QsR64*JNmt_4emrsE~XIC{r~M*v@hKia4t<+?zXxK9;DWjvxu&rqIGa3sZ_c`bN? z>4)H^Y zCzY9S27%Kga8mGWth~Kl_OVZ3ll&NS8DuAW6Np2o)_&9)Q)?OR^F838I3X$aAsW;I zliE;xW!s8!Zl7$N=@WesJ8x}$4aIpT&m^-Hfm2Om@02*=3*iyqaQ`6>A%kg&)2UgX z50FMjE2lGo#q#W~Wo)fLGr7_3Oz#oR^*t z!04yIak*S{J{1m?vDw8men>bplPLubaY;4pqQA&mQhfEF0ph;ur)R7K+XI@nD*khZ zc@)vn>MLg-#D8q4G*$oNcCKDe@=j?(=3~{&KGWlP){}?62ab!%r@}!Iv-3OC*jcgR z5#VwgvL^y$%-n+b_J(T6e}vt*4Xs!cB+AD04ZtrLdah=9yx5eKF3s{ruOqVLQ5A3y z-s7g8H9etvloK^@k&qN?yaX7x2LCn*9-_cA_^L6a7s&!JJB?qHc@&ZS5pXstI0TU1 z1f=06OQ3icH`$Xr17qvNoVk>TV6;!trEf9BlDpPev={xka@#HuP~6WyEXlQO5> z4luXsn|cIsMV8<7J}mz$Xu|vQ{eq%KPOL>$QH-$89A;WR517l6Rq zD}owOD3*8BeqNqNV zUW&}uC(0bz9BNOHnFwZr0GHW1smz441UQc>@(@5;jw@9{23bWArn^;GZwnv?b+tZ) zD;vJ5ulX3!7*ioe8?Hn{e3a2w{wOxod|oNhjz$|=wZeomvLW65K?vwR^+?nX9BQdl z(`o#rGc750UZ~oc%Dze@)uiYZgwXHh8}CQ2VNmD3q4!gTA?fw(GYTq~uoFS%{((V@lIi!PFAj<_EmZJHl3Lb; zkQ_1zFL9TBC+P4|ufw+`01`>*88QqKjS#6Ox@Qmo0*Z7@fG}VIhsHKz`d5KNYY(X= zdSDcc6O!T^!;0>vn-WU-=}h{@kA*z6u9<4G;;*syUJy74iNK*bs2)e@xiso=8*0DW z0huL5uk)&2N{M!yNxi7OsFiqo{Ra+035^}Tpv-3=yuHE+CE6+3$BIjCpIn^j+lw%% zO{pb$n|^^nhD6bi`qxx_P_f}BRU6{Rok?b}zXh)g%!Y_;Mp4w+4#%PPq8W%j&7_@4 zuU*sVMV#qQd=WYzM29?!@K-OmqWiBCb;q0Np&k0ze;N4Dl##_=JqZ-h>H*)YjpO`& zbbt1J=)QJ3-G$8AOfT{eL+hxsFE!4qu~#yz!9EMS=%SzFA}phWlr*Cu1VnJpy(I3Z zp}UT9@%;wwV+QUtr`2<}UJ`fu1wqgK2?O^F2JTLS?)jI*{S^cEhYZ|L8Mwb|(A{=P z+{X>v4;r|iF>t@ep!=n9KWpH=-@yG91NSQo+)FP>_frP$Lk8|I7`Xqt!Sc>a;(p%1 z{ZRw=vj*;Y2Hoo}iTfD?_lFJK>25&RFG}Xj5chWs+z%VL|H{C<&cMCtl6227#Jb}K z?&f4jNzlN3?Im%)V9@=sWL}POgYE?e?i(+O`>zb#4;i?hH*ha8aNm4M+|35d4;#3@ zW8l8Qz&&_L-02rpoj(_k8o1MhLWfh*p>Y>8d|EA?YKFhL2j9;Up|fQ z%B<=4sF%Z{ST$*FkhD{@c;UTqmeMca+&=o}G8i49`}Nc4uC#j)6}bN>?e0*xtFy}A zqkRhDV(;1Rn#_vD5@Z&-FP=vCKSaA9SM@^oOiGFtf38@5YTsBos>DMR-Mi_NayK!d z>W=4Kl_$9Hts&)};#$zyi$*6&c+a{C5W2%dMFCj~$Zpo(t+;d1^P#KXrwxf8-ASo3 zo9MS6y-|-%z52gCx-5lBJY zY~X&-z`byWbf?|9bXF~HF>oI;a6d9bx;=b3wz23lmpMm=qX2|kG2JUMO-0wGVKQ%+#cNw_X7`X2?a1YH8 z_uU5Wbq4Nx4czz55cm5H+&37wKV;zk`V4VDXyD#u;QpwAd({m2{G$f$K?C>44BR)& z5ck6d?z;`#pEYnlI78gG8@M|S+;KWyOszzpgBuz`EKf%|>~_iJW|dzXQG!kr7h^K}^RZc3~(Wch~- z+&3C@f7qb=yBc@#d?xuS48k(r#{ty}+>LUGn6DP1Sn(FF*ZcWxw2UuLBb3J zq{~ptmW;D>ZL;o;ykwl>@npzShjN!q>PS)0phVBu!zf4(knY${T7!JmfHNi_RD;+0 zkpbs*Kn{sJ4*tY%r|e_TCt6r7Y;zU};EexXfZxAxE=j*dEoF|xAy+|ON}4={fE*Nh zaU9w_SDD*z$Qnbft$-+VKaMj9$RZt`e*i>zyMg0;P0*p|S2^SaAY*V0QkX;N$#kW^ zbI7j&QT&iYa>)gdG%f6aC_ct<+<-i$%0o{?cgcQs56dk^^_vZJ?jlHbBIPKr*VH85Ht>J56=DDfDj*z*AD@?UzG<%($96ZxP&_;tFBfYIFvXqdViZfV(es| zptN!pm~`nV+lZ}Ni_YkA)_fc_JFf@iVO^~bK=`{13gu4$LP^u~Gk}chYW*!B{AmQ# zGF<~~6ep#psg|ylj{=gfqw^C$C}|SD0Z0qlp5g|#>Q&@8y4EQGm0wfPOBs#Bk4v^D2?iM^OqT$Fv_9Qj? z?VZh=I;PrPHc-|iybq9kHEzh_1v?oXt#!T$9P(A}&$5gqQ_*ut0xt6j;56wZ{0~4% zb#}f0$bJ6)IKKssHsTZgbb5#eNweYg2FOxC9#Sb2cAWv|PCzcQ=%?uZ zAj8Q{pnM1rEou>+BMc`olDr5AI#WWe9|AJ0<30h%Ar&I?Pwz`>b(;Pcqs;BcZFmJe zPQ{W{>SSxMAd!?l4xF_rWh$%#Bv(hd1rYKCqRJ_E17gLM7Lj%WLWx_I+PzcW$)3>G z+WoUS9K!wwL5KG*S!@ju)NwyzsP!WQWHuu46FM!f1SF_~lmfz^Ekt{ov;g_i(cI7~h4g+1 zK1zz&MFbxx-5h8qKuuTID!elSG%vlt*%y?IAgasX0rR+A;!T3QojZ3Xhz&~aI=Qyl zwaSf86|VF&ATR@VOSSsxB3$9km!yrM35TG`+dc!1y*TPiWo#%yufEZ>!!E-mv5zv> zjcvKYc2$4E;RVUpRXZB!$qz+cnKmTiJ15ol zhLnwpCMo6n5+xCLZx4`spwZ-3g#*A7Zs_e%eA3e+_E};W8s|VyU$@-Z&3qbjZLOYlb{fV_K2vVI37r@e%}JJEbsud*fa?yzarkcZVh1M1f2s|e7!6iQ*<4A`K;x?WTshHC zrr9}4qaheGZMelbX&7b`ygCr#!xFkmM=vz%>4sg@U6OE4u~XF)Cfz%WP$u0rjMar`44@q zTJG&20sUJjjCFUiHj?!PA-vubf*#~@-M+heLo|ql*>+&^R=hooEx5Ql;+-~H*h;Vf zgLEc9xIMKUvtTrV!*5@xQ|j7{Ych?08QP2wYBXMTMZ)d)?6{15#QYRHICI*R3(Yq9 zrdY&Zw;!6;I$~Olx|6%Z=I-8hgxxlb;3_Y}P_DQRo-IqT$~2uz>FY|9Y!3K>iA^Qk z9@bNsLIeE{apeA7E*V4nwnEv?JOVqUv54ByXVbeeGZUzw|0#RGIkD-P0aCCn;M-Dw zy2JC%`;>UMObH`*M7 z58L^SyF4E>WDHH4dT7WdXyX2JT6-r)Dvzs0m1WvssD%OYm82km&VfzcL{t<$uluMa zs_+RJ`-l}V$yF3YRozS3ObwKirZh=Y7uFN~Dl>{^7?T6rnHdq6CowLdQ+6d58X@^5 zY#IluLKrQW!1G!EqOH7=et~UN|350qAT{!naYB55TJv{B? zC_HNTfFj7?(IRPTeiy0Vggd#!Ni9Nx_OiX3rN0?XLMpT4CWdemI0p0vbbA`ly zHR*hI>M3jTK!h=PlD%QIer*_`llM8D?*2rXLaECeq#FCpf!)0FX?tH7D?o~OPBy_y a_Rsg2w_w48t;frnU3ur9K7fhe*8UqELe2gF literal 0 HcmV?d00001 diff --git a/behaviors/hello2.dll b/behaviors/hello2.dll new file mode 100644 index 0000000000000000000000000000000000000000..d3f0b3ad26d9c0207291bbdb886abcb04509e910 GIT binary patch literal 43078 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 a_Rsg2w_w48t;frnU3ur9K7fhe*8UqELe2gF literal 0 HcmV?d00001 diff --git a/shaders/pixel.vert.glsl b/shaders/pixel.vert.glsl index 79b97b0..39dfd04 100644 --- a/shaders/pixel.vert.glsl +++ b/shaders/pixel.vert.glsl @@ -10,5 +10,5 @@ out vec3 color; void main(void) { color = inColor; - gl_Position = vec4(inTexPosition.x*texRatio.x -1, inTexPosition.y*texRatio.y -1, 0.0, 1.0); + gl_Position = vec4(inTexPosition*texRatio -1, 0.0, 1.0); } diff --git a/shaders/world.frag.glsl b/shaders/world.frag.glsl index aeea090..84b6ef7 100644 --- a/shaders/world.frag.glsl +++ b/shaders/world.frag.glsl @@ -21,6 +21,7 @@ vec3 phongLighting(in vec3 kd, in vec3 ks, in float ns, in vec3 color, in vec3 n void main() { + // looping the world in the shape of a toreiller (infinite flat surface) vec2 worldCoord = texCoord*worldSize + camera.xy*worldSize.y; ivec2 nbRevolutions = ivec2(floor(worldCoord / worldSize)); if(abs(mod(nbRevolutions.y, 2)) > 0.5) @@ -29,8 +30,9 @@ void main() nbRevolutions.x = int(floor(worldCoord.x / worldSize.x)); } worldCoord = worldCoord - nbRevolutions*worldSize; - vec3 texColor = texelFetch(colorMap, ivec2(worldCoord)-1).xyz; + vec3 texColor = texelFetch(colorMap, ivec2(worldCoord)).xyz; + // computing lighting vec3 lighting = phongLighting(texColor, vec3(0.5), 50, vec3(1), normalize(normal), lightDir, normalize(lightDir+vec3(0, 0, -1))); outColor = vec4(texColor*0.2 + 0.8*lighting, 1.0); } diff --git a/src/simulationdialog.cpp b/src/simulationdialog.cpp index e7f5571..aef131d 100644 --- a/src/simulationdialog.cpp +++ b/src/simulationdialog.cpp @@ -16,17 +16,17 @@ SimulationDialog::SimulationDialog(QWidget *parent) : QDialog(parent), ui(new Ui::SimulationDialog), - m_map(NULL) + m_map(NULL), + m_availableGenerators(true) { ui->setupUi(this); connect(ui->behaviorsRefreshButton, SIGNAL(pressed()), this, SLOT(refreshBehaviors())); connect(ui->generatorsRefreshButton, SIGNAL(pressed()), this, SLOT(refreshGenerators())); connect(ui->generateButton, SIGNAL(pressed()), this, SLOT(generateMap())); connect(ui->behaviorsList, SIGNAL(clicked(QModelIndex)), this, SLOT(selectBehavior(QModelIndex))); + updatePreview(); refreshBehaviors(); refreshGenerators(); - ui->generatorsList->setCurrentRow(0); - updatePreview(); } SimulationDialog::~SimulationDialog() @@ -48,7 +48,7 @@ void SimulationDialog::refreshBehaviors() m_selectedBehaviors.clear(); ui->selectedBehaviors->clear(); QDir teamDir(QCoreApplication::applicationDirPath()); - if(teamDir.cd("../teams")) + if(teamDir.cd("../behaviors")) { for(const QFileInfo &info : teamDir.entryInfoList()) { @@ -100,15 +100,17 @@ void SimulationDialog::refreshGenerators() } else emit sendError(QString("ERROR : can't open the generators folder.\n"), 5000); - if(!m_genList.empty()) - ui->generatorsList->item(0)->setSelected(true); + bool canGenerate = !m_genList.empty(); + if(canGenerate) + { + ui->generatorsList->setCurrentRow(0); + generateMap(); + } + ui->generateButton->setEnabled(canGenerate); } void SimulationDialog::generateMap() { - if(m_map != NULL) - delete m_map; - m_map = NULL; QString path = m_genList[ui->generatorsList->currentRow()]; QLibrary lib(path); if(lib.load()) @@ -116,6 +118,9 @@ void SimulationDialog::generateMap() GenerateFunction func = (GenerateFunction)lib.resolve("generate"); if(func) { + if(m_map != NULL) + delete m_map; + m_map = NULL; m_map = new MapScene(m_selectedBehaviors.size(), ui->mapSizeSpinBox->value()); func((Map*)m_map); updatePreview(); diff --git a/src/simulationdialog.h b/src/simulationdialog.h index 058e7e0..920b77a 100644 --- a/src/simulationdialog.h +++ b/src/simulationdialog.h @@ -41,6 +41,7 @@ private: std::vector m_selectedBehaviors; MapScene *m_map; QLibrary *m_currentGeneratorLib; + bool m_availableGenerators; signals: void sendError(QString, int);