From e43fae88e8c6fcfd77eb0fdda3dda2063b2c39f1 Mon Sep 17 00:00:00 2001 From: Wellinator Date: Wed, 7 Apr 2021 08:17:10 -0300 Subject: [PATCH] Setup initial cube sample --- src/samples/cube/Makefile | 5 +- src/samples/cube/bin/AUDSRV.IRX | Bin 0 -> 22089 bytes src/samples/cube/bin/meshes/cube/Material.png | Bin 0 -> 266 bytes src/samples/cube/bin/meshes/cube/cube.mtl | 13 ++++ src/samples/cube/bin/meshes/cube/cube.obj | 46 ++++++++++++++ src/samples/cube/cube.cpp | 32 ---------- src/samples/cube/cube.hpp | 28 --------- src/samples/cube/cubes.cpp | 37 +++++++++++ src/samples/cube/cubes.hpp | 32 ++++++++++ src/samples/cube/main.cpp | 5 +- src/samples/cube/objects/cube.cpp | 58 ++++++++++++++++++ src/samples/cube/objects/cube.hpp | 26 ++++++++ 12 files changed, 218 insertions(+), 64 deletions(-) create mode 100644 src/samples/cube/bin/AUDSRV.IRX create mode 100644 src/samples/cube/bin/meshes/cube/Material.png create mode 100644 src/samples/cube/bin/meshes/cube/cube.mtl create mode 100644 src/samples/cube/bin/meshes/cube/cube.obj delete mode 100644 src/samples/cube/cube.cpp delete mode 100644 src/samples/cube/cube.hpp create mode 100644 src/samples/cube/cubes.cpp create mode 100644 src/samples/cube/cubes.hpp create mode 100644 src/samples/cube/objects/cube.cpp create mode 100644 src/samples/cube/objects/cube.hpp diff --git a/src/samples/cube/Makefile b/src/samples/cube/Makefile index 7d1b17f..09c7d18 100644 --- a/src/samples/cube/Makefile +++ b/src/samples/cube/Makefile @@ -3,9 +3,10 @@ EE_BIN = cube.elf TYRA_DIR = ./../../engine EE_OBJS = \ - managers/light_manager.o \ + managers/light_manager.o \ + objects/cube.o \ camera.o \ - cube.o \ + cubes.o \ main.o EE_LIBS = -ltyra diff --git a/src/samples/cube/bin/AUDSRV.IRX b/src/samples/cube/bin/AUDSRV.IRX new file mode 100644 index 0000000000000000000000000000000000000000..8699022a069ae2e0c95039b69342dc202a4fff9e GIT binary patch literal 22089 zcmb7s4}6qYmG-%BCSky|9n!Q;F}3f&04b(8ZPOZXT&E$l=}OmBQE|m3e)WF7=D3RgM(&0i5oRpY4;XzAsW@f*(JSJa1@b;*bQ;zpxBSA7M(;f^+qHUOXT?$OGj75cJXa?Hg*fj1l02|bj-a&M}B@m zPkuq+{b7~QzPdE|u*&%k+lFD+aIxKN7kVwdK%_ie6;7~i3ENR7T?_uwypNO=`ru`; zKz#af^g*>ebs#BUI1r-kHPD;L=Or;XCTpNOF)}47wC{JbCCLX$gLGz5On!DSl|Tt8STKdiF84d+&it*?%A| zpRxV19sQkLwHWC^l4a}go`{Q}UBhVSFxokccA~GEZ6BoI2OP_|j-`=$TdqSS8ZXkr z_sx*89n4>a{8Q+=H2SL!{Z>XFKt14x!O!W>K>s7KDG{RC=%)en(;bqD7>On0GIpQ} zPlzW89j?vcT-)wPxwwqOJ_CPVJTWtyiA1C%Sq)h=%GBUV;bFd7lxMyqbk`tn9mb9| zij<~B_9Y)h9wU*Y#O5W9l%+c!I|7U(V^W&@2-0HElmBX@mi%i_HjuJpBE|BNbZyx{ z@^D1Tmm`h*ezbvgRihsEccMCD^YQ(-rd46gK8gNfpRf$$aSPJPQOOUGE2Ze$CDmDQK{|Du^O5h%>Y~29X|BKg+_ZRN zxym>`lG#zixeH@j$#HS>R`c9^M8D#k7G0H`xF6-5|G0Lt{4+NM=&v=h26M#!WUSeL zGw@C4uUM8)Pc3{juXQk%nJ0SVK(ZF&TL&9c7~>j@aW%%*mc!Vx59@TUDA&GbxpMdn zV=cC7AFwQ4x$4M}pK}wV8IKZkOxIkv72&a1S;#U%ZlbI}#R5cP6S_&EIr z>s@ed0KW=?sU0ypA9p+kd-5r~SHPCnElY$F&_9hVOm}?Z=4IntV}i1z1d(Nl>M)q& zBavkiti@B7w6d}o-j~|)J`d_1z6$lyMjs=Id+*gMa~j+G5%o{bKOG;l>zHI%K2m1q zq>fKqEc>?RpN7xG;U|8s{rNm+|F`Blq;Af;>`T4}m_IqECQ!i7xwNlZ?L%D06JbWG z=WLH4ZD45e9M3s7ocI9j_HE_7%J)*q$BBN9rN5=r-)dAp`pD`p&QpUtXoKB5a8D2- zmWkA5;}v}pA|@EKe!gZOx6-C1Tn8fQMx;mK%UlP19{8(`ZR+uR4c{*H_$KG+i&(1!F_h-fftY?(}dUm=hkRx_K$8u451by+Ip@{4p zdI#4XhwW=i{%rOe(96EXctogoP}>K+W*+kH z9blj25eM8qiL6oG&q7B%-dX34@n6nLC-*v`>sUnF63ZY+Soeo z`mQbcE8E86zP`LIi5R8>sn6T;i`-l-c~i@I%(eL$*fx;-g|(?z-+N)xqv*5uplwlY zTXdM zI6j<{60tnaU(~U7D2jONVZR3R+}sl_)WdZov#KpwF0IHbvS4oQc6?MC?7k_6x_qAV zx=zq1I6pfv#zX-S5~5*ovAXM2ahCYXM^NCc?Rc%3{v*O z*Y`nYV|3!Tv(HvyzHsgH1r@o@ERr2H+;4Kd;eK-i=Ubf7a3)1AlTJhzOa8XSwr!Y; zZOKvH-}Yd>b!%zrN$xc{-}^lrZRMPgP%USnBPE!N^DIA({#>>THV&;(J(o-4S)sUG zM8+{@`-ZMD7t5*d!X^0c{X3BT<$WmF% z)P-|=a(&swdEa~qPrKPqZ@Z+9m6zySatZI(LvM3bK85jfx|Zo4;wWrj|9bgumHRSY ze)bYM&nbyeBnf|cE!JwD?YUNSeV(~(0Q;I)dIjF6W@6Z@W#sjENB*EE%JX7b`uLSR zAI?kn?0qhI&)~jV?u|~)4B*T<3I7{Aa4+�^gwJP|q;W)$}Kx2N<8+>#)wqLbrc7 z3_q;aGi3C3zZcJlI|CH<3AEkqAI6vSd{u=#F6(4{?o7-*ut_&Q&vU*>H#{Fs&~Dlo zK0jdXeG~0M{W$+c&S75R{<-1#dh{>%N^bubA`kg@M@5nvl zKt+ABxL4~=5dDb$Lmz2^kI)y`cAhCY*2U*n`de{-IzJn;cPi^vFP`}M>>Ux_S|RCEgRo(lbAbE#n;r zF8b_vER@Ixj9iI!erIWLT?Fewi9IKC|8$iMq!PFn!P@%yrCc|fF_s;8Hca6bH%MRc z<9hV}J+SRA^#9rsBX^Djca%zScbNqD&V#NfP8Ybt4HwvbW+L7xiSRLKqV9dEOuPhm zB$Wvxz~@lcTI|s_BhRC_zwLS)>*nL7()M_nWFLnO?=v#AbVY23Ss)Qx@Fv$ANFLC!rpBZ=K4d2faa;47e5qV;yRK`bSVTrvTaK6(3AEsZl3gu-;=iLE)!1c%a4dQ_@(tsG@ zKD}|Zzx!Q-yMRn(!$hPOI)rWHF(tdA=K!-eE(fX5YMQAUGw{oD_}3bZ=gNJ z_kxJy^EBer#eXyU1oy0(2R>%kHlL>u zd-$FLKI6-9J;XWGo@ebI5pzDrnK3nkHgg_hyzo0kzm70%3D$*Z-9Xa&Fl9C18Ox2U z-FJkU)$Th(mT$1{k#z350nFj0$-_Jkr(iPjrxEwKca3mwM?Fo@W9!7+;OD(s!+o)D55Eg!*?AH!!j22$SiGj) z%kvAqzY17(u5R`p>-Bp|?h9yZ65qAH2*`8n>}(Rg5C(kbI$y>;d@3Umt&i)a9jEFk z)Q&yDT)QRs657E!d7e$cclaGRzYFJg+0^B~2e;pk7ky{#zsu%#*3`i>0`^~awc!5Z zd$X+?7tXIIQKzqqHn1N#u9UGoeh={~J#W*G(&}Tlzlp%tFS;vFV?XZi%DHa(@pXHR z;{Dk49cVOzQaZQhdbhM}wLZBJ$7S{{Ha{rqKQ1qS?vU$fZRu-wdN61I=$E*wC9UzxV9P8VNSs(v`8t?$K(FZq3C zJ2$s&$-4S{S>GR5YuRfRuTsRoUe=DT?v`v@cW*oUlI`|ADN^Y7Tt{E~mX;pd?-AAK z+vodgp2{!RUXEQ~F5B4+<*bJ~F0ChmJm`>(Go1ma<)WdJ&c@2xls&69^d>Py+PzS-kYw6@8cPO6FrTm3C^Cy zvmdg9X#5bKs^usLOPZF6OyQj$+DYVm$a6Q(KHN|6{8Pm}4(8xnIj4l!{^;7w`Gxa_ zKNnF4=eo=3u=6!yo^_OARw9aw4BZBue7i6!*CsH3Q8(v;Cf)yDh4l4!zqAgnS53P2 zoG;DzJ_|MI9d9Y_hp~o2tJ|CYX12MK>9mi(L5Sc!w@f}Y5?~Jzl_&7MPkkyTJFq|A ziD$Z`T;4OmyB@B+ybDQ$Qy91}q91stJBja@c~3GWSK=OzXNiSeL(v!53+}>xa~Hmh z+=V>DC^HNl!zhQlkjY`L7x_)~$%w2$Jq;7(vUWlwW9#(4ZE4au^LjlWo!0)L{)pT= zfvXp+FTs;%XIpWn5Il)SKFNN&p0?ooUDtQ138d|U95(HR&GUA#{Y+br_4Py08IwDg zG5w=>$2l!|>wI(tKE?IHE0Mo`==J$ux;rh3*5AyeSuFoQ{o&EKNl(&_8FK=r??WFA2+E1*L zA3sMrTpe!iZGU^XG#j>d=K6?j9W7h8ws+b0-p;M}wQk$IsqdXk+1%cq-PG6l&UP|= z9i5wVc)`-{bwXE5XIFbR%yoyITRU@|EnUoP7o`PS@9MCptK~tc4Ram6?Je0b)xWeq z?8~+E=GrgTb$@5u{g;!swRCm0wzS=E74&sgyoJy)tx>`I{ilb}9(Y4~~#W)L+;!4+vr$xA(BE3YZ3O9L< zt`|oy6-PISr%)Uv@atDci^b6rag@ZG;Ap8hS|*N`i>GS*qLy@{(hBkPGI3NRj&2f9 zE5*^v@q0{CYL0FeN4MbDXpU|bN45AJ8|k(=x?LQ-LLAkJr&aiQE@`#WE5%b9zlbEg zO6iZp)2qc%MjYKCp6bOBe&waqAdc3GqdUdZUE-)w9NjIR{#YEnMjWjZPxpwUKM_Z- z6;Dm#=w9*kI&t)RakO4My+ItkQ5?NVJZ%t1Zx%;?DxTgVjy8&;w~D7f6GxlGQL}hz z5l5}!sZAVZ#ZkL>+ANOl6Gt85sZ$)iO&r}Xp1Q=*7ICyyJavns9&z+`@zg7h`ovRC z9Bq?rMX}GQ_t9R6az;2Kn^Db(F2pk9nDJYPTpzKFRYoZz)J3O{OGc!R#6koz_851J zxI(Nk${1gaEyk6LDIZOYBSsLT$3+gK#>Wfeq!1xKG8hqz1{VoF2I&3X>z%*T*Xif< zaeBA&Y9h1!daCnMdMLeAJPZuee^u%b@VuT z8$FFaM*niYMZcm?(VOT=&Wq?l^d5Q+eTM$xe1(2OAEAHHGw2o0Bj^qE1o{9y-~mhT zkatKw=t0msL4OX~Zs}d}E_pZTAy6LlFldLRow8E~K#zdl1A5fbpbW};L63p{0yG4A zpQT;0ONK!sp!b750Q#V%-LhLg1o|-OBcM@BAC-^F$3Pzk?E(EI=o6MciQgrUfgT6# z1wCPDT*hS|=u@CigZ6_yW9hTtvzG>-*9FcE0sRB$IOrcOeOJCK{{%V#`e)F;So&A_S2+p#9_W98{x|59rGJxulm7$ychEHG z`=I}8=?C%yISu+D=s!TuS(=dp55I@*gBl06y+qt4M)?J))t!8}3>`Kg-cJa(L zmT~+NtfJT3*mZHc*hVa)b-7*h7@;mY8JQ^?legMcigCy&TZ}6gQ;a9Z(s~<1j2{;}j2p%bSUv+*;AEkdjVf~Um>HLwtNI#?x z();Ln^gH?-{f)jxFQbP!@1keXtG;QyiJs)Vh#o}mq36(N=r8mZdJ4US9zx%sUpSwj zKhPJRvp(=6`LUdlpMZWU|0!qXXYzCTg`AUL%CF?tavt;>`7imcT#(<%|C3p`iZOw~ zUxI*2O_`ZzqGrBXU|wX(%@yWKa}_9N7McokwW&1Mm}||8P25~(7J*)3s?7D~rRD|` znuJ+wmYAejYL3wn!C*(o7b3i<{tAW=C!8D+-qKEUJqJt-eBHn-efkI zH=92-Z!sIqTg{(=HkoGAVp>g`$(nYv+1zJ3Oeg4V=6=&Xn_kmra%LOo z0rL*iZyq%7G=FZkn|GOan}@%M-pEmo=XUu2K=gfrp zJm^Vtz)YGin5WDa&C}*f=F8@<%t7cn0x|;@OYqAf6L=&fu9lpWxWUb4=LV(-!u%_u?RP z(HX2DzWfo3nU|(+=?^(^;p6pg?%uXF%adKM7pJQ}t8?xY$NJi`*%nCG_qIIvIvg2$ z+jHA`x3;s$MfGPp``W_XgFWr;ST?7BYj-Yeu}VT_;gM@Djj9VrMl=rxv$pOnJzecM z6^4D=+S=Ot`ZjOt>Uwa2Fz=?G-tM;c?6%%^e{>Ar(V6RjDK*v{f5z-eyN+v~ndf70$Hwyjsv;Q*ke=bue}1%5ZDn7wX3_k$M)eRb=|DS+B82-ZP`t1-X^V=y=>d;)91#l9cOv= zt5bTh4(~%Q1J3n@1G5$Vp2In=3bwWP<#@n%r);{4t-Uaoom(HkxnJEV?B2W?y}=Q1 zBU8wCsjh5GuEqJDHI=SuKdxPyTCzQDTQ;$A)pqE7vi&m@-}T{Uq@fA zH`mfCD?7V;wsdD@Wp8`e%3OPY&b{?^bL`x^du#3MD^~jl-|-y)_6pci=qCqEcm^2J zcU;BWF(^}h44A4`2Eabz2j5d*|5f-LO=CV~VSLyp)W`8=9UODYsOLBzuLLsxifjLi z^fj+XKFIi?F0bzJ7NV)I4mP*LN%4X(#nHug3rI zcgFl1VE^&@=IZnb$XDmzfrS$ICLa}0e;JVF`Odt=2E``Djfz9D$lBXgmTm~N;zKkP!2pu9(Elf51dl|u<}QNEO(r8*mr_* z;8~TQS2-Pw@(7Um%Ymgx!%r%u3|Oi1kaE<6FBEKjDV1jw*D)RWo0tw5~u<}QhKcW0d9I*`5X`` zWjhh}4=^3&hL{cR&|&A*XyJk6Bj=}|tXe82MBmCq|bp!^_^_3l>rsLJ;!Kc@Ua@)(ap zVhJMdWxg9Zwn$?QFoqa_fMUH{qdt10Kqoi73~je7|B|aY%7o5nuk=`X_<3 zYf9xuRent6$5nn(<)>6Wt@0U_pHcY*l}E5xvwcw@^_MFjQ$7UJ?rN3SsC*rHBs7r+ zZUEZ$QI7l_lmoLW@1h(TdMF2OSNW*onBsoLNh10wEO+ISK$fckQr@WYbt+%4@*b7v zRK8v1qblE{@^O_n2OSs(a$L@mM}6nX19>h7NKBDubnZpHqH7`61;; zl^;`{=X>g#RQ{0ihm}9B{7L0cD}P3Ldmn)E7nJAS0QKRA1=c>^6OgY`o_7Z1Ym~23 zKBGME5^TFvzCrnBwA3>rxzI zI?9bO9XP7;G0Kr~oO0lPm7h{P&2;FWVLI@P@@JJlulxn&Blw{d>#YQ`TpVcIqjLTm zK6ZRGeZ8h{)by;%J5=7K@&T0(s(iP~532l-$`7mjxXMqce40GkeVRP*Jdk!a;Gjg@ zsJI`<{+I-^KMpBBrTk$a^Pg2bPlP^PYTG!B02zld@@Ri0d0+#O<~gE!_&0h#Y<xrm$qhbe;<-33^-$NdD_mcjg>`JD3o%5PUbulyi+C>$aWoB&e))0D%$gOmdgDL$U|XB9$2I4wVIv+vc5XX@sg$-m{EBn<)q+(+8N2@`FqV4v|NO5%R!MO&` zT@R$aS>-#F=WlYE-mmb*c7h_7oc9|4k&Dj!q69LRbqDMvkV%7LNEt0_mh8p?rnsYx*IkV?3sq4xG_+{7l5^FIP+fsizi5J#{M25K&K~@*5Ph ziamiYI|=|0y8be};1O%Q=;wSNR2% zM?;st9LW5YOWfTq|Jf9nB~^-{Vp6eMu|_eaSgTm4h(E-!dNPU)ij9iv6q^*+D{fHS zsMxHSRqRmgQtVO8DfTOFSIjH!0kS_P6b~v+E6xDfe`kQ~5Bw0w=C1@&9tTohrF>HP z5Ew!BI+f!e*|Yf$QI3v0Lpl8EEakxRrA}WANPQvD`i)|frmxrZF6Dca&jBN-FRwUA zL_H&ldw{fe3`qS)ReoIMCsck?saRW3=+W~SDaQnt9YJB2U+g0QZWS5kCQ<9 zaV_P@)~ML5*rPZAq@9C6+Br!%^d3~i9~Rp3amA2`^!#n`E8u|QpyH6?h~jR=QN=xq zV~XR7`xPe?Cl#MoJg9g`aZ2&9;!(w8ipLdCD4tY2r8up4T9My<1n8)BM6_$8Vwd7} z#UaH#iW7>56ptyMQaq!0L9u+b(_f{Cq4~WZ{7w`V=NDEI+d2EruJ8Nt`?O29*Y((K z=DVK`tGLh7MTtz%ds&v@Ga&DZ$;xQ1!Z)iihj}Hm*4l8eo1~Im3;+ie&}VWdpbDk0 z+*Vd{tJH?~A!2frcub(;r0KIVImhR2X8sP4PM&T#KQlJngXEsPNu_c;# zj2A0tbfmyB_f1S^g6x^QT2YWaZ|9A0rZL;l$|NdG{#j@PkULscreen) -{ - return; -} - -Cube::~Cube() -{ - return; -} - -void Cube::onInit(){ - setBgColorAndAmbientColor(); - engine->renderer->setCameraDefinitions(&camera.view, &camera.unitCirclePosition, camera.planes); -} - -void Cube::onUpdate(){ - lightManager.update(); -} - -void Cube::setBgColorAndAmbientColor() -{ - color_t bgColor; - bgColor.r = 0x20; - bgColor.g = 0x20; - bgColor.b = 0x20; - engine->renderer->setWorldColor(bgColor); - Vector3 ambient = Vector3(0.003F, 0.003F, 0.003F); - engine->renderer->setAmbientLight(ambient); -} \ No newline at end of file diff --git a/src/samples/cube/cube.hpp b/src/samples/cube/cube.hpp deleted file mode 100644 index b46c0bc..0000000 --- a/src/samples/cube/cube.hpp +++ /dev/null @@ -1,28 +0,0 @@ -#ifndef _CUBE_ -#define _CUBE_ - -#include -#include -#include -#include "managers/light_manager.hpp" -#include "./camera.hpp" - -class Cube : public Game -{ - -public: - Cube(Engine *t_engine); - ~Cube(); - - void onInit(); - void onUpdate(); - - Engine *engine; - -private: - void setBgColorAndAmbientColor(); - LightManager lightManager; - Camera camera; -}; - -#endif \ No newline at end of file diff --git a/src/samples/cube/cubes.cpp b/src/samples/cube/cubes.cpp new file mode 100644 index 0000000..3e61895 --- /dev/null +++ b/src/samples/cube/cubes.cpp @@ -0,0 +1,37 @@ +#include "cubes.hpp" + +Cubes::Cubes(Engine *t_engine) + : engine(t_engine), camera(&t_engine->screen) +{ + PRINT_LOG("Initing cubes sample"); +} + +Cubes::~Cubes() +{ + return; +} + +void Cubes::onInit(){ + texRepo = engine->renderer->getTextureRepository(); + cube = new Cube(texRepo); + setBgColorAndAmbientColor(); + engine->renderer->setCameraDefinitions(&camera.view, &camera.unitCirclePosition, camera.planes); +} + +void Cubes::onUpdate(){ + lightManager.update(); + camera.update(engine->pad, cube->mesh); + cube->update(engine->pad, camera); + engine->renderer->draw(cube->mesh); +} + +void Cubes::setBgColorAndAmbientColor() +{ + color_t bgColor; + bgColor.r = 0x50; + bgColor.g = 0x50; + bgColor.b = 0x50; + engine->renderer->setWorldColor(bgColor); + Vector3 ambient = Vector3(0.2F, 0.2F, 0.2F); + engine->renderer->setAmbientLight(ambient); +} \ No newline at end of file diff --git a/src/samples/cube/cubes.hpp b/src/samples/cube/cubes.hpp new file mode 100644 index 0000000..0a14eb6 --- /dev/null +++ b/src/samples/cube/cubes.hpp @@ -0,0 +1,32 @@ +#ifndef _CUBES_ +#define _CUBES_ + +#include +#include +#include +#include "managers/light_manager.hpp" +#include "modules/texture_repository.hpp" +#include "camera.hpp" +#include "objects/cube.hpp" + +class Cubes : public Game +{ + + public: + Cubes(Engine *t_engine); + ~Cubes(); + + void onInit(); + void onUpdate(); + + Engine *engine; + + private: + void setBgColorAndAmbientColor(); + TextureRepository *texRepo; + Cube *cube; + LightManager lightManager; + Camera camera; +}; + +#endif \ No newline at end of file diff --git a/src/samples/cube/main.cpp b/src/samples/cube/main.cpp index 1b62314..dc03ec4 100644 --- a/src/samples/cube/main.cpp +++ b/src/samples/cube/main.cpp @@ -1,9 +1,10 @@ -#include "cube.hpp" +#include "cubes.hpp" int main() { + PRINT_LOG("INIT"); Engine engine = Engine(); - Cube game = Cube(&engine); + Cubes game = Cubes(&engine); game.engine->init(&game, 128); SleepThread(); return 0; diff --git a/src/samples/cube/objects/cube.cpp b/src/samples/cube/objects/cube.cpp new file mode 100644 index 0000000..60a660b --- /dev/null +++ b/src/samples/cube/objects/cube.cpp @@ -0,0 +1,58 @@ +#include "cube.hpp" +#include +#include +#include + +// ---- +// Constructors/Destructors +// ---- + +Cube::Cube( TextureRepository *t_texRepo ) +{ + PRINT_LOG("Creating cube"); + texRepo = t_texRepo; + speed = 1.5F; + + mesh.loadObj("meshes/cube/", "cube", 6.0F, true); + mesh.position.set(20.00F, 40.00F, 10.00F); + mesh.rotation.x = -1.566F; + mesh.rotation.z = 1.566F; + + texRepo->addByMesh("meshes/cube/", mesh, PNG); + + PRINT_LOG("Cube object created!"); +} + +void Cube::update(const Pad &t_pad, const Camera &t_camera) +{ + Vector3 *nextPos = getNextPosition(t_pad, t_camera); +} + +Vector3 *Cube::getNextPosition(const Pad &t_pad, const Camera &t_camera) +{ + Vector3 *result = new Vector3(mesh.position); + Vector3 normalizedCamera = Vector3(t_camera.unitCirclePosition); + normalizedCamera.normalize(); + normalizedCamera *= speed; + if (t_pad.lJoyV <= 100) + { + result->x += -normalizedCamera.x; + result->z += -normalizedCamera.z; + } + else if (t_pad.lJoyV >= 200) + { + result->x += normalizedCamera.x; + result->z += normalizedCamera.z; + } + if (t_pad.lJoyH <= 100) + { + result->x += -normalizedCamera.z; + result->z += normalizedCamera.x; + } + else if (t_pad.lJoyH >= 200) + { + result->x += normalizedCamera.z; + result->z += -normalizedCamera.x; + } + return result; +} \ No newline at end of file diff --git a/src/samples/cube/objects/cube.hpp b/src/samples/cube/objects/cube.hpp new file mode 100644 index 0000000..22abe35 --- /dev/null +++ b/src/samples/cube/objects/cube.hpp @@ -0,0 +1,26 @@ +#ifndef _CUBE_ +#define _CUBE_ + +#include "../camera.hpp" +#include +#include +#include +#include "modules/texture_repository.hpp" + +/** Cube 3D object class */ +class Cube +{ + public: + Mesh mesh; + Cube( TextureRepository *t_texRepo ); + ~Cube(); + + void update(const Pad &t_pad, const Camera &t_camera); + + private: + TextureRepository *texRepo; + Vector3 *getNextPosition(const Pad &t_pad, const Camera &t_camera); + float speed; +}; + +#endif