From 97171b7bfecfe2450187be1ce54a0852bf7ae86e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Th=C3=A9au?= <theau.baton@etu.univ-amu.fr>
Date: Sun, 2 Feb 2025 03:26:49 +0100
Subject: [PATCH] Refactoring code

---
 assets/game/objects/mimik.png                 | Bin 0 -> 529 bytes
 assets/player.png                             | Bin 1386 -> 0 bytes
 assets/textures/Cube_Air.png                  | Bin 134 -> 0 bytes
 assets/textures/Cube_Black.png                | Bin 282 -> 0 bytes
 assets/textures/Cube_Blue.png                 | Bin 282 -> 0 bytes
 assets/textures/Cube_Blue_Outlined.png        | Bin 329 -> 0 bytes
 assets/textures/Cube_Brown.png                | Bin 282 -> 0 bytes
 assets/textures/Cube_Cyan.png                 | Bin 282 -> 0 bytes
 assets/textures/Cube_GLab_1.png               | Bin 282 -> 0 bytes
 assets/textures/Cube_GLab_2.png               | Bin 282 -> 0 bytes
 assets/textures/Cube_GLab_3.png               | Bin 282 -> 0 bytes
 assets/textures/Cube_Grass.png                | Bin 450 -> 0 bytes
 assets/textures/Cube_Gray.png                 | Bin 282 -> 0 bytes
 assets/textures/Cube_Green.png                | Bin 282 -> 0 bytes
 assets/textures/Cube_Lava.png                 | Bin 776 -> 0 bytes
 assets/textures/Cube_Light_Red.png            | Bin 282 -> 0 bytes
 assets/textures/Cube_Orange.png               | Bin 282 -> 0 bytes
 assets/textures/Cube_Pink.png                 | Bin 282 -> 0 bytes
 assets/textures/Cube_Purple.png               | Bin 282 -> 0 bytes
 assets/textures/Cube_Red.png                  | Bin 282 -> 0 bytes
 assets/textures/Cube_Red2.png                 | Bin 282 -> 0 bytes
 assets/textures/Cube_Sepia.png                | Bin 282 -> 0 bytes
 assets/textures/Cube_Test.png                 | Bin 359 -> 0 bytes
 assets/textures/Cube_Void.png                 | Bin 307 -> 0 bytes
 assets/textures/Cube_White.png                | Bin 282 -> 0 bytes
 assets/textures/Cube_Yellow.png               | Bin 282 -> 0 bytes
 assets/textures/Image_Test.png                | Bin 1396 -> 0 bytes
 assets/textures/Neera.png                     | Bin 8304 -> 0 bytes
 assets/textures/Tile_Test.png                 | Bin 460 -> 0 bytes
 assets/textures/Tile_Test_2.png               | Bin 2079 -> 0 bytes
 assets/textures/Tile_Test_3.png               | Bin 604 -> 0 bytes
 assets/textures/Tile_Test_4.png               | Bin 246 -> 0 bytes
 assets/textures/letters.png                   | Bin 1029 -> 0 bytes
 assets/tilemap.png                            | Bin 4985 -> 0 bytes
 .../engine/graphics/back/textures/Texture.hpp |   2 +-
 source/engine/graphics/front.hpp              |  16 +++++
 .../engine/graphics/front/engine/Engine.hpp   |   4 --
 .../graphics/front/module/Quad_Module.hpp     |   3 +-
 .../graphics/front/module/Sprite_Module.cpp   |   4 +-
 .../graphics/front/module/Text_Module.cpp     |  34 ----------
 .../graphics/front/module/Text_Module.hpp     |  24 -------
 .../front/module/TileArray_Module.cpp         |   8 +--
 source/engine/graphics/front/object/Image.cpp |   4 +-
 source/engine/graphics/front/object/Image.hpp |  16 ++---
 .../engine/graphics/front/object/Sprite.cpp   |   7 +-
 .../engine/graphics/front/object/Sprite.hpp   |  39 ++++++------
 source/engine/graphics/front/object/Text.cpp  |  28 --------
 source/engine/graphics/front/object/Text.hpp  |  60 ------------------
 .../graphics/front/object/TileArray.cpp       |   8 +--
 .../graphics/front/object/TileArray.hpp       |  32 ++++++----
 source/engine/physic/back/Position.cpp        |   4 --
 source/engine/physic/back/Position.hpp        |   7 +-
 source/engine/physic/back/SquareBox.cpp       |  22 ++-----
 source/engine/physic/back/SquareBox.hpp       |  19 ++++--
 source/engine/physic/front/engine/Engine.cpp  |   8 +--
 source/engine/physic/front/engine/Engine.hpp  |   2 +-
 .../engine/physic/front/object/Tangible.cpp   |  13 +++-
 .../engine/physic/front/object/Tangible.hpp   |  16 +++--
 .../physic/front/object/TangibleMovable.cpp   |   2 +-
 .../physic/front/object/TangibleMovable.hpp   |   2 +-
 .../physic/front/object/TangibleStatic.cpp    |   2 +-
 .../physic/front/object/TangibleStatic.hpp    |   2 +-
 source/game/Game.cpp                          |   9 +--
 source/game/back/GameObject.cpp               |   6 ++
 source/game/back/GameObject.hpp               |   9 +--
 source/game/back/object/Damagable.cpp         |  18 ++++++
 source/game/back/object/Damagable.hpp         |  27 ++++++++
 source/game/back/object/Enemy.cpp             |  28 ++++----
 source/game/back/object/Enemy.hpp             |   7 +-
 source/game/back/object/Level.cpp             |   6 +-
 source/game/back/object/Player.cpp            |  10 +--
 source/game/back/object/Player.hpp            |  13 ++--
 source/game/back/object/Terrain.cpp           |   6 +-
 source/game/back/object/Terrain.hpp           |  13 ++--
 source/game/front/object/Klinck.cpp           |  35 +++++-----
 source/game/front/object/Klinck.hpp           |   4 +-
 source/game/front/profile/KlinckKeys.cpp      |   8 +--
 source/game/object/Test.cpp                   |  46 --------------
 source/game/object/Test.hpp                   |  21 ------
 source/kernel/back/component/Component.hpp    |   4 +-
 source/kernel/back/component/Graphical.hpp    |  11 ++--
 source/kernel/back/component/Graphical.tpp    |   7 ++
 source/kernel/back/component/Physical.hpp     |  19 +++---
 source/kernel/back/component/Physical.tpp     |   7 ++
 source/kernel/back/engine/Engine.hpp          |  10 +--
 source/kernel/back/engine/GraphicEngine.cpp   |  14 ++--
 source/kernel/back/engine/GraphicEngine.hpp   |  10 +--
 source/kernel/back/engine/PhysicEngine.cpp    |  14 ++--
 source/kernel/back/engine/PhysicEngine.hpp    |  12 ++--
 source/kernel/front/Kernel.cpp                |  40 ++++++------
 source/kernel/front/Kernel.hpp                |   7 +-
 .../kernel/front/component/graphic/Sprite.cpp |  37 +++++------
 .../kernel/front/component/graphic/Sprite.hpp |  29 +++++----
 .../front/component/graphic/TileMap.cpp       |  30 ++++-----
 .../front/component/graphic/TileMap.hpp       |  22 +++----
 .../kernel/front/component/physic/Fixed.cpp   |   8 +--
 .../kernel/front/component/physic/Fixed.hpp   |  10 +--
 .../kernel/front/component/physic/Movable.cpp |   8 +--
 .../kernel/front/component/physic/Movable.hpp |  10 +--
 source/kernel/front/component/physic/Tile.cpp |   3 +
 source/kernel/front/component/physic/Tile.hpp |   2 +
 .../front/component/physic/TileArray.cpp      |  14 ++--
 .../front/component/physic/TileArray.hpp      |  12 ++--
 source/kernel/front/props/Props.hpp           |   6 +-
 source/kernel/front/props/PropsDynamic.hpp    |   2 +
 source/kernel/front/props/PropsPlayable.hpp   |   6 +-
 source/kernel/front/props/PropsStatic.hpp     |   2 +
 source/kernel/front/props/PropsTileMap.hpp    |   2 +
 .../kernel/front/resolver/PhysicResolver.cpp  |   2 +-
 source/kernel/front/resolver/Resolver.hpp     |   2 +-
 source/kernel/front/resolver/Resolver.tpp     |   2 +-
 111 files changed, 450 insertions(+), 568 deletions(-)
 create mode 100644 assets/game/objects/mimik.png
 delete mode 100644 assets/player.png
 delete mode 100644 assets/textures/Cube_Air.png
 delete mode 100644 assets/textures/Cube_Black.png
 delete mode 100644 assets/textures/Cube_Blue.png
 delete mode 100644 assets/textures/Cube_Blue_Outlined.png
 delete mode 100644 assets/textures/Cube_Brown.png
 delete mode 100644 assets/textures/Cube_Cyan.png
 delete mode 100644 assets/textures/Cube_GLab_1.png
 delete mode 100644 assets/textures/Cube_GLab_2.png
 delete mode 100644 assets/textures/Cube_GLab_3.png
 delete mode 100644 assets/textures/Cube_Grass.png
 delete mode 100644 assets/textures/Cube_Gray.png
 delete mode 100644 assets/textures/Cube_Green.png
 delete mode 100644 assets/textures/Cube_Lava.png
 delete mode 100644 assets/textures/Cube_Light_Red.png
 delete mode 100644 assets/textures/Cube_Orange.png
 delete mode 100644 assets/textures/Cube_Pink.png
 delete mode 100644 assets/textures/Cube_Purple.png
 delete mode 100644 assets/textures/Cube_Red.png
 delete mode 100644 assets/textures/Cube_Red2.png
 delete mode 100644 assets/textures/Cube_Sepia.png
 delete mode 100644 assets/textures/Cube_Test.png
 delete mode 100644 assets/textures/Cube_Void.png
 delete mode 100644 assets/textures/Cube_White.png
 delete mode 100644 assets/textures/Cube_Yellow.png
 delete mode 100644 assets/textures/Image_Test.png
 delete mode 100644 assets/textures/Neera.png
 delete mode 100644 assets/textures/Tile_Test.png
 delete mode 100644 assets/textures/Tile_Test_2.png
 delete mode 100644 assets/textures/Tile_Test_3.png
 delete mode 100644 assets/textures/Tile_Test_4.png
 delete mode 100644 assets/textures/letters.png
 delete mode 100644 assets/tilemap.png
 create mode 100644 source/engine/graphics/front.hpp
 delete mode 100644 source/engine/graphics/front/module/Text_Module.cpp
 delete mode 100644 source/engine/graphics/front/module/Text_Module.hpp
 delete mode 100644 source/engine/graphics/front/object/Text.cpp
 delete mode 100644 source/engine/graphics/front/object/Text.hpp
 create mode 100644 source/game/back/GameObject.cpp
 create mode 100644 source/game/back/object/Damagable.cpp
 create mode 100644 source/game/back/object/Damagable.hpp
 delete mode 100644 source/game/object/Test.cpp
 delete mode 100644 source/game/object/Test.hpp
 create mode 100644 source/kernel/back/component/Graphical.tpp
 create mode 100644 source/kernel/back/component/Physical.tpp

diff --git a/assets/game/objects/mimik.png b/assets/game/objects/mimik.png
new file mode 100644
index 0000000000000000000000000000000000000000..c5e50d7b9498a04315051951bd3796330c502e6b
GIT binary patch
literal 529
zcmeAS@N?(olHy`uVBq!ia0y~yU~phyU=ZM7V_;xd_PkP)fq{XsILO_JVcj{ImkbOH
zEa{HEjtmSN`?>!lvNA9*a29w(7BevL9R^{><M}I67#J9rdAc};M7STFb}{gX0gsEY
z)I!#O8jb#^7P3h#;7R+jgyr8lR;>js6GU&GahsU?^URsOlCgT}>veM9oH-jjGj;c*
zTX#C5UkBgG4L|?sQ_akMcKdZd$nL-C(HH%i@mY4u1%|mP-PKaAJ+Gz)+ImQHFy|DR
zy!`w2_@aX=_H|spE+rVnmL=2gpz<a$<o|saeg;#cFfro?UmqW2+Q4~_*?ik>amQL0
zH~*5_1*UP#TW(1g&t$aGp2<4FMe60Uh5Xy~1!P|sT`)gickm%ciZ8=dwIG&XNuRl%
zg<M-V_y68XR<<+!{@?4%o766`@FZTVHowOEbywY#VrhTr4w+kju6;fuD=>>;V*H%j
z$N%Q3DMY!ZeE2+JbNFlCo>|A+<rs|@USl|xG3CCO_SyO@+un*5S2Z3Uk1%((+{3)d
zW6|n=^Sqd2t12xn7zR0<4ybAR>+`eIVUDh@&6@s_C5f{#ce-izuYZ`ruzlNot-d6|
z<|=``cRjtX8{F^HFW;bcr(3;MZPwYzezulR8Fg;tos%)SxU2P6A6rhi|LO#zRqR`r
l^LMf3T$j5RbNLH*{<R=Bh8<h_7#J8BJYD@<);T3K0RVA#;hq2h

literal 0
HcmV?d00001

diff --git a/assets/player.png b/assets/player.png
deleted file mode 100644
index c84d047f428c2c2dadeff99120314ec06d313048..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1386
zcmeAS@N?(olHy`uVBq!ia0y~yU~phyU@+idV_;xd=v^bvz`(#*9OUlAu<o49O9lo8
zmUKs7M+SzC{oH>NSs54@I14-?iy0XB4uCLY*0oMf1_qY@o-U3d8O~>CoW3YyD$<(X
z!NBgoFo9Wm)t<!HAso#ids3Z6rHc+QS}>e=;QsuVT;Z=*uP$EB5|0m!mfHI6^$Ww#
zzkh~R#5{=nkmvIE+q0e%pQ65Q&dFx_b8l_pncs_I-5XAytpELS`SJVr|Np7@{?c5U
z<$ui&=CfzcOXqOb?$EWkabNAg?fCsw-?`7r*KIsz_hn_-41Ym}))^fE-Qm_ZR>Yfp
zTeu;bA=;MZv%^#aG3INsi(P|R8kDxgXViRow&}+P;RD6X8MamF1aV(HV3Z!o;;_4q
zqy3R-f8fU-&!u1IwVl+s8Nt9A8RQ|tT5wzchS>!+y9eG~>kAL)GBL2EFm@-fU$JJ;
zo%}3M!7i>_!)B>NvzbKr{ER<_+qe!i32xb*r5rdzqjSDvkWHowgYkT8RuAETz$L!i
z54N4>5`SnEo%G&l;zQxbb><=RxBDHoebT7<C^NgmV+y~+?9SWGb`8Hy9l8Hc_ke?r
z#WzFsbxsTB`Lo(>ViI~Ieeijj%$x1+8N_;~)i!u{{*|1=zVVC2j|!~`#Xm$>eA{~?
z`aQ!M9j1j5Z0_>>+n=O-<-Pa7`sL3(Pp2m=E4wjial>X^o~mzm?<(5yZ@bO<VA|)Y
z>smf8WVjb5y=hZ5mnpkYQ6}q$f8H#N2hQ9N`Y2pw=XZO4p^2AG^7j7doXz58Y?YZG
zKAk#uzM)Eb_596tdqTI}KIUkA#k-@GVdsph&XDRwbz*Nk-^=K8f9SI9323l=@j94m
z#bZ15p!<pIZgus3Gk!GZSIb7Zn|E?_mikFqPAH$4`>i6xrAz*qOWY>^dXCohyvowA
z3$N}|d9(NbiDOlBHrjJEbZ3chysywqi`ja9!s*W<8zMWGGTn$z+OhSt*+#}Kw~kx;
ztL^q#cdJ~utsu`_r|Z4J_U!@}_gOM&GrGlWSpR>%fmWHq1MmOx3z;5l+Q4b>=oI4@
z!?yBuIeT4NbiXy!Db?63%~md){X>Ld`{MHb5)Uq2QukhQ{LH=NRHcwAC7v99Q-L25
zf`0qu-efz=?>m0@{L{`G*5@9l*BZ3BCuv@7E4<S7w@=sNi0f%PxnEBzDtT<Z%_7vU
z&R@@>9U*hYPU`oCCWmW*(ua~Cq}WYZQkul)@MibN&3_nk9JloMtuksj+2HxeOLS6)
z?n|);xw~@3i!zcXPjJ?9*vwqB)p!}J#vRVdvI*M~mw&Yol~<`d>pts9OI$(G(c|I$
z^~dWw{>Y!m^7?GTxbOFe<@GklpZDAMvAp2?{fcWHSFC<e!($t(Dr;7UM=zootEPWo
zW7}-4pvFImNkaQlP4@+}JB(M$wllOlL>e98UbSuSA;%zw4yF+K8S86ru_+$h{4@H2
zmXDO9Bv10>=)Vll(vBAEJPfc&c8`Acct(RYt3f-5kZXdHVx!31({>!JN3P~CP}tDC
z;NZ4f@9!~&vc$UHy?0>pMWtE$pQy3ANL9-z_XNA-7lypu(KMH7Ml$cQB{R-QhH(pA
zvTx7ye)N2;b%GdA#U$_59APzF&!$`ZH_Da=FFba?ioM`=x~ErA<i{r^jFJMA>@Ivd
zd1U|N_JD1+QxiY6p8mGOe$(A2GH=S`n+`A~9Ni&2VM0vHVy3rq&xPB!E`8*AM)5Hp
zV_SvOOpdQidz<gM*8CP+@afJZjZMXUz6|x(Z*VS-y>K`7!*|nn4QZm00uOdiWKh_w
zC>xzR!+D|Tf#3RqtRKomZ|%zxkNo=hTmSL>*EGL2_3u<~VPIfj@O1TaS?83{1OTJI
Be#Za+

diff --git a/assets/textures/Cube_Air.png b/assets/textures/Cube_Air.png
deleted file mode 100644
index ed6b8e0766c45ad7800bcd2a972db9bd9ce8e979..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

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{=

diff --git a/assets/textures/Cube_Black.png b/assets/textures/Cube_Black.png
deleted file mode 100644
index c16e826571abf5b30be7c3365d62b1b8c8538ab0..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 282
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4rT@h2A3sW#~2tG7>k44ofy`glX=O&z`&C3
z=<CS9u(6-}Pa-P=0|QThPl&6WoE!rKgRZVF0|UcRnY%F{btOT5!T<mNXK>J3`GtXj
zfwRCPvY3H^?*IrhW?k##WME)u_jGX#vG9L8$y2OBf#;~iyZUr%mM7Z3Y#JgzWK2%=
z7VkPJo>KDGfbDbxZ-nIM?wK3p7^4}5&oi_5MBjVsp7nI|Qd91Elha%__{W@oFmFj5
zlkbLOLUTCvCMXE=#56_S^#7-@aq%IB>IWHxjA{=uWY;trUlN$ZDYlnIIZ)S8ZIynb
e`l@PshMVfF3&VEv?_ywJVDNPHb6Mw<&;$UkwOW|~

diff --git a/assets/textures/Cube_Blue.png b/assets/textures/Cube_Blue.png
deleted file mode 100644
index 507f300138b6411b10e78bad4cc2a83b3aaba7da..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 282
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4rT@h2A3sW#~2tG7>k44ofy`glX=O&z`&C3
z=<CS9u(6-}Pa-P=0|QThPl&6v>t!921);GQ85kInS51EoQdbh>7ySSKe+CDwm0uVb
z7&r?&B8wRq_zr?F<Bo~hZy6XE+C5zyLoEE?PVy9MP~bT#@vc7In&pZ1FPnzQ4;hnF
zy~Vo@il>ykHDEj4z#Ad?xqIdYImT#4;q%NaKGFByx@SGzywsF?-sCiw4gN9bAIw`4
z$K<==n9v+fy$K4!JTXmCH~s%9Y+QVZq545aA*0%Z4B0h}#+L-<aEk3^Q4Z8~R9mIr
fsJ^P&p5dlC>%y?z{JR(!7#KWV{an^LB{Ts5?e<>K

diff --git a/assets/textures/Cube_Blue_Outlined.png b/assets/textures/Cube_Blue_Outlined.png
deleted file mode 100644
index 7b9880a482b09a1df76a7df636e288472e224130..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 329
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4rT@h2A3sW#~2tG7>k44ofy`glX=O&z`&C3
z=<CS9u(6-}Pa-P=1A}ycPlzi60|PS)ueIxC21aHkCJr5w1);GQ85kHD7#PIw_PH=H
zFmRRx`33)n0)}A!3L%hSfk$L90|VcF5N5Ps4OU@bU|8ho;uvD#e|M6n&|w1(mcmD_
z|LY4SBvdABul|*As$}|U_9dbzk<WOSD}D;xS9*Nq4z}!jMQXe$Z!EjmCf=~fe$Z*R
z&eTEayVQ!hFYj6ZeEY(0-Sk#1aIf(WFQ0yg$<4<WoOAr=b=|Z><)x)V&=<=KEp2~%
z4Ma@?dKWJ;E=su8KP^ns(LPGrw(~$KzuP0n7a}fA2`_{ynv9>U4vd=+a`zU0wu<2X
T2ebcxT+86;>gTe~DWM4f3Ji6C

diff --git a/assets/textures/Cube_Brown.png b/assets/textures/Cube_Brown.png
deleted file mode 100644
index 020f8148945580c16561cc7b2b95e763ff718ffa..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 282
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4rT@h2A3sW#~2tG7>k44ofy`glX=O&z`&C3
z=<CS9u(6-}Pa-P=0|QThPl#({kV&qc^3)6u1_p+2W^>nq)RhGJ1^@s5pTR+E<rfA9
z2F?PH$YKTtz5^i4n02j_lYxPu-P6S}#KQmWBu}vh1)if4@9NX7S)OSBvT2C?kTE&c
zTfFO_cuL7z1Gdu*yb+S0yJv2YV~l1LKF`eJ6MgTkd)Cv<OHH}wO-^&!;2(4T!Mr7L
zOuieA3C-cuo1h@f6VnuR)Bm5s#>Iyisvl$&GO9hukX_Sgd`Vyqr`TQ=<v?9WwN?6!
e>Z_{l8E&exE)3hvzl(u^fx*+&&t;ucLK6VRCtWT8

diff --git a/assets/textures/Cube_Cyan.png b/assets/textures/Cube_Cyan.png
deleted file mode 100644
index 13773ab71faba09930bdb840951eaa60571b0f9d..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 282
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4rT@h2A3sW#~2tG7>k44ofy`glX=O&z`&C3
z=<CS9u(6-}Pa-P=0|QThPl&6|kt6Y!FYB#Z#lXOD$$3o}NL@*gU-19`{}~*#R(@e%
zVBjq9h%9Dc;5!Jyj5{V~zhz)xX!mq+46*QkJIPb5L4oI}#Jl=*YnCV4zib*JKV(c!
z^%n0sD4tUC)`0DF18;=n=kA#s<QStFh0imy_(b1(>z?&=^HNjpd6UyzHu%S!e=u)J
z9Fy;cV?uK{^(H6?^Taeo-Sq#buyOGrhUy0yg^X$sGGx~@8ebBa!zs3xMLAH{QEioe
fqx!09dxo3ptP8_-^Y3C{U|{fc^>bP0l+XkKxQk!G

diff --git a/assets/textures/Cube_GLab_1.png b/assets/textures/Cube_GLab_1.png
deleted file mode 100644
index dde2eea7829efe08f4841cd5e0c2f832fb243d6c..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 282
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4rT@h2A3sW#~2tG7>k44ofy`glX=O&z`&C3
z=<CS9u(6-}Pa-P=0|QThPl)SNOVgQZD*prh85kHU?0@8d)RhGJ1^@s5pTR+E<rfA9
z2F?PH$YKTtz5^i4n02j_lYxPu-P6S}#KQmWBu}vh1)if4@9NX7S)OSBvT2C?kTE&c
zTfFO_cuL7z1Gdu*yb+S0yJv2YV~l1LKF`eJ6MgTkd)Cv<OHH}wO-^&!;2(4T!Mr7L
zOuieA3C-cuo1h@f6VnuR)Bm5s#>Iyisvl$&GO9hukX_Sgd`Vyqr`TQ=<v?9WwN?6!
e>Z_{l8E&exE)3hvzl(u^fx*+&&t;ucLK6TM*<FqR

diff --git a/assets/textures/Cube_GLab_2.png b/assets/textures/Cube_GLab_2.png
deleted file mode 100644
index 5529901db2254ea4a144a954502f548275c7c47e..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 282
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4rT@h2A3sW#~2tG7>k44ofy`glX=O&z`&C3
z=<CS9u(6-}Pa-P=0|QThPl)UP0_Pj?R{uNG7#J8HzG`FvsVfQc3;zHAKZAqT$}bEI
z44efXk;M!Qd<Q_7G3#0<Cj$dRyQhm|h=u>#NuFX23Oq+8-qojDvpmuMWz!J(A!Bl?
zw|Lh<@syIc25hGrcq1e~chB4)#~95he4d%bC;Hx7_pGOzmzr|Vo1Esd!9V8wgLzBh
zn0z-J6Pm-RH$g#|C#EUtrvE>Mjf)R4R6oclWK?^QA-ks0_>#aJPO-f#%7MC$YOC}c
e)mK&9Gu%{XT^P2Te-{G-1B0ilpUXO@geCw&*<Swu

diff --git a/assets/textures/Cube_GLab_3.png b/assets/textures/Cube_GLab_3.png
deleted file mode 100644
index 5d5da902f3a75d14435bc76d5c0cb9fc7d2a4fdc..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 282
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4rT@h2A3sW#~2tG7>k44ofy`glX=O&z`&C3
z=<CS9u(6-}Pa-P=0|QThPl)UP<!Z+oWdHApV_;yAwO;oTq^=~$FZloe{|pXVE59%>
zFmM)lL>4nJ@ErhQ#;j|doD2*M?Vc`<Ar}5`CwYoBDDWJWcvqip&GJP1mrX<Dhm6Uo
z-r`*c#ZyY&8nB&i;Ej;{+&y!H9Ah-2@OfqypXhsU-Lsx<UTVrcZ*rQ;2LG7z59Te2
zWAfc_OlS_L-UJ0<o|vYnoBsb4HZDHIQ2ijIkWuYHhU}U~<4Xc_IK}p|C<p2~s;$y*
eR9{tX&u~+nbz#_U{#^_V3=E#GelF{r5}E)fj9%RU

diff --git a/assets/textures/Cube_Grass.png b/assets/textures/Cube_Grass.png
deleted file mode 100644
index cdf1c247f553a7bac65b41a60a90ba387e72e327..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 450
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4rT@h2A3sW#~2tG7>k44ofy`glX=O&z`&C3
z=<CS9u(6-}Pa-P=1A|I{Pl#(ulV5U!Z)&rDN~3RDi+@tRPjZ7#YO`N@Ye0yROuer*
z0|Ue4r(s153=BLaL4Lvi5r9GH{<(7u3=EtF9+AZi415Pcm~qF%?6(XIjQpN1jv*HQ
zZznNsYBu0-X`B%7<=^+e{T|V8CI6kX(E1%Q$>&LphfBTo-+P-LUY;KLKksgXV$xIv
z@4Tz$mtWLWUZfCsS#Lk%uM{4`tBa<%AA6d^a6Q#cP`gdzu!O1Jdz<Mu1U4<d?A5R$
zJ0QX=p22(1pD4-T8IQF&R60#pewK8WJ*0S?kN=f%Q>Uor%rh-p|Ef>kAtgU`MUf1{
z%xz1;UU+xb`now7ymOE~p>n%3MLbNpbw<g3h6%M@#ul$vERFrfdqO45Qlb26hWOnE
zpECQG+rDj+b5NUo!~6Fu_7iV@x&J?)x-Q0g?Yiy1E^XU>^;}r|t)Sg2Y)dS8YbKW6
s-p82#B-6fuyYiO3gQEX$oBs?O=gC*Eidk}&fq{X+)78&qol`;+06hb{wEzGB

diff --git a/assets/textures/Cube_Gray.png b/assets/textures/Cube_Gray.png
deleted file mode 100644
index d1f106c214c46328ab91ca74b87a8561286239bb..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 282
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4rT@h2A3sW#~2tG7>k44ofy`glX=O&z`&C3
z=<CS9u(6-}Pa-P=0|QThPl#(qMuxw?e^pf#0|P^@%*6E|btOT5!T<mNXK>J3`GtXj
zfwRCPvY3H^?;r>>?wFYUmVtqx-P6S}#KQmWBu}vh1)if4@9NX7S)OSBvT2C?kTE&c
zTfFO_cuL7z1Gdu*yb+S0yJv2YV~l1LKF`eJ6MgTkd)Cv<OHH}wO-^&!;2(4T!Mr7L
zOuieA3C-cuo1h@f6VnuR)Bm5s#>Iyisvl$&GO9hukX_Sgd`Vyqr`TQ=<v?9WwN?6!
e>Z_{l8E&exE)3hvzl(u^fx*+&&t;ucLK6TYu3gIj

diff --git a/assets/textures/Cube_Green.png b/assets/textures/Cube_Green.png
deleted file mode 100644
index fcf9d95475e3f448c86c6bf73678eee864e84000..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 282
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4rT@h2A3sW#~2tG7>k44ofy`glX=O&z`&C3
z=<CS9u(6-}Pa-P=0|QThPl&6>WoxqqI`J1n85kJ+&&qd!)RhGJ1^@s5pTR+E<rfA9
z2F?PH$YKTtzJnmlxMO1WTLuP(c25__5DWjelRU*56nKtGysJ;QW_hCh%cddnL&oG(
zZ}F~!;wdF>4cJaM@J2{}?w+|pjxm~1_&hU<PxQUF?paSaFE!<!H#yB^gMZBV2lJN1
zG5KydCNzgrZ-Rm_PfSzPP5*xi8y6p9sD6-9$f))pLv~H0@g;#doML-flmm4g)mG^@
es;{cHXSk`(x-e`v|1Jgw1_n=8KbLh*2~7Z8hF%c>

diff --git a/assets/textures/Cube_Lava.png b/assets/textures/Cube_Lava.png
deleted file mode 100644
index 064c841716d1f8629cd93615e4bc81c8a6e7749e..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

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

diff --git a/assets/textures/Cube_Light_Red.png b/assets/textures/Cube_Light_Red.png
deleted file mode 100644
index 19358f477e5c40c303c41af9a48e25a12bfe1616..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 282
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4rT@h2A3sW#~2tG7>k44ofy`glX=O&z`&C3
z=<CS9u(6-}Pa-P=0|QThPl)Sc6VFy<+e0293=9lP_on89)RhGJ1^@s5pTR+E<rfA9
z2F?PH$YKTtz5^i4n02j_lYxPu-P6S}#KQmWBu}vh1)if4@9NX7S)OSBvT2C?kTE&c
zTfFO_cuL7z1Gdu*yb+S0yJv2YV~l1LKF`eJ6MgTkd)Cv<OHH}wO-^&!;2(4T!Mr7L
zOuieA3C-cuo1h@f6VnuR)Bm5s#>Iyisvl$&GO9hukX_Sgd`Vyqr`TQ=<v?9WwN?6!
e>Z_{l8E&exE)3hvzl(u^fx*+&&t;ucLK6U|wOs`O

diff --git a/assets/textures/Cube_Orange.png b/assets/textures/Cube_Orange.png
deleted file mode 100644
index 3507d1817b1ce103382da1a2c0fc64aa0d84ae0b..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 282
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4rT@h2A3sW#~2tG7>k44ofy`glX=O&z`&C3
z=<CS9u(6-}Pa-P=0|QThPl)T~Wa|aqIv2}A85kIPnv1uA)RhGJ1^@s5pTR+E<rfA9
z2F?PH$YKTtzJnmlxMO1WTLuP(c25__5DWjelRU*56nKtGysJ;QW_hCh%cddnL&oG(
zZ}F~!;wdF>4cJaM@J2{}?w+|pjxm~1_&hU<PxQUF?paSaFE!<!H#yB^gMZBV2lJN1
zG5KydCNzgrZ-Rm_PfSzPP5*xi8y6p9sD6-9$f))pLv~H0@g;#doML-flmm4g)mG^@
es;{cHXSk`(x-e`v|1Jgw1_n=8KbLh*2~7a-pI*xV

diff --git a/assets/textures/Cube_Pink.png b/assets/textures/Cube_Pink.png
deleted file mode 100644
index ba27564cbc49fd9b80963fe86a3e7b60035718d5..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 282
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4rT@h2A3sW#~2tG7>k44ofy`glX=O&z`&C3
z=<CS9u(6-}Pa-P=0|QThPl)Sf>s1SM8ZU-!U|?YQ%^G|Oq^=~$FZloe{|pXVE59%>
zFmM)lL>4nJ@ErtU#vK#0-!d>Tw0pWZhFJK&o#ZLjpulrf;$3~ZHOmw2Up5VqA2KGV
zdW&}*6i+F6YruB8fj2_(bN9>*a*WZ8!snS;e4_8Yb<cXbd8sM)yvb=U8~kI=KbW^9
zj>&h!F`+q}dJ`0cd19KPZu<XI*tqx*L-m7<LPoU*8M12{jV}qz;S}4;q8zB}sJ2SK
fQGHdlJ;P0P)`ela`FAleFfe$!`njxgN@xNAb@*Rz

diff --git a/assets/textures/Cube_Purple.png b/assets/textures/Cube_Purple.png
deleted file mode 100644
index ee44d1c36dc3d41ddcc29ae14f87b7a0ac54346e..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 282
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4rT@h2A3sW#~2tG7>k44ofy`glX=O&z`&C3
z=<CS9u(6-}Pa-P=0|QThPl)RZ>&x{z3)Y2RWME*Zm-apZQdbh>7ySSKe+CDwm0uVb
z7&r?&B8wRq_zr?F<Bo~hZy6XE+C5zyLoEE?PVy9MP~bT#@vc7In&pZ1FPnzQ4;hnF
zy~Vo@il>ykHDEj4z#Ad?xqIdYImT#4;q%NaKGFByx@SGzywsF?-sCiw4gN9bAIw`4
z$K<==n9v+fy$K4!JTXmCH~s%9Y+QVZq545aA*0%Z4B0h}#+L-<aEk3^Q4Z8~R9mIr
fsJ^P&p5dlC>%y?z{JR(!7#KWV{an^LB{Ts55}01`

diff --git a/assets/textures/Cube_Red.png b/assets/textures/Cube_Red.png
deleted file mode 100644
index 0a74973acf3f347737254a42611fadb532695d1f..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 282
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4rT@h2A3sW#~2tG7>k44ofy`glX=O&z`&C3
z=<CS9u(6-}Pa-P=0|QThPl)SfYwHC%Iu}Dj85kIZHf~-BQdbh>7ySSKe+CDwm0uVb
z7&r?&B8wRq_zr?F<Bo~hZy6XE+C5zyLoEE?PVy9MP~bT#@vc7In&pZ1FPnzQ4;hnF
zy~Vo@il>ykHDEj4z#Ad?xqIdYImT#4;q%NaKGFByx@SGzywsF?-sCiw4gN9bAIw`4
z$K<==n9v+fy$K4!JTXmCH~s%9Y+QVZq545aA*0%Z4B0h}#+L-<aEk3^Q4Z8~R9mIr
fsJ^P&p5dlC>%y?z{JR(!7#KWV{an^LB{Ts5fzw_>

diff --git a/assets/textures/Cube_Red2.png b/assets/textures/Cube_Red2.png
deleted file mode 100644
index 56f33155d5b904a8d0f2fec48a951ee55433a741..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 282
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4rT@h2A3sW#~2tG7>k44ofy`glX=O&z`&C3
z=<CS9u(6-}Pa-P=0|QThPl)Sc6SG!j-9rH$3=9k$vX3u-)RhGJ1^@s5pTR+E<rfA9
z2F?PH$YKTtz5^i4n02j_lYxPu-P6S}#KQmWBu}vh1)if4@9NX7S)OSBvT2C?kTE&c
zTfFO_cuL7z1Gdu*yb+S0yJv2YV~l1LKF`eJ6MgTkd)Cv<OHH}wO-^&!;2(4T!Mr7L
zOuieA3C-cuo1h@f6VnuR)Bm5s#>Iyisvl$&GO9hukX_Sgd`Vyqr`TQ=<v?9WwN?6!
e>Z_{l8E&exE)3hvzl(u^fx*+&&t;ucLK6UFsa&!E

diff --git a/assets/textures/Cube_Sepia.png b/assets/textures/Cube_Sepia.png
deleted file mode 100644
index 6c1088662450d67d9c75dcffb3b13b81bd70e372..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

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

diff --git a/assets/textures/Cube_Test.png b/assets/textures/Cube_Test.png
deleted file mode 100644
index 673ea5b784babacfdb93ea407c2db77aed95f6ac..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 359
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4rT@h2A3sW#~2tG7>k44ofy`glX=O&z`&C3
z=<CS9u(6-}Pa-P=1A}ycPlzi>HxKhwI|gPZ1`ZCUplyl_Q~onDGB7YO+*`Dqmw|zS
zvn0qb_&*dd1p8MAfdmUYB8wRq`1XS^qXlcQ3IhYf0Z$jl5DWjKlTPzB8}P9BMqm2#
zUwrb{Uy>?SZ@i8iGgg#Q+U(kwJU`-U$DXizwP~fT5<jo3yxJsqa;NCgXB)~Fd8<aA
z5PHufx-$Je)0A)d<%!1cn11~H!q0q2@>Ey~kFe9lt5FX`rhR%kW7R{gCyuPsm3Mr*
z>mj~CU~!f60_{U@TPpr(C|oO8qdh79hvpB#Qvqw4xe|E`S2EbRMnt?%3GbM&V@s4%
yVWUM$$fw6XChHtL?yzX>X#2J*Q$N6J-e;y|jRKo$*D?EoeDCS%=d#Wzp$Pynj)pn_

diff --git a/assets/textures/Cube_Void.png b/assets/textures/Cube_Void.png
deleted file mode 100644
index 9743f77ea12dda6388eb70707aa02019ad0a7f89..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

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

diff --git a/assets/textures/Cube_White.png b/assets/textures/Cube_White.png
deleted file mode 100644
index 7a051769c27b4638b734fbf8271301b351245541..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 282
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4rT@h2A3sW#~2tG7>k44ofy`glX=O&z`&C3
z=<CS9u(6-}Pa-P=0|QThPl)T&r%(U?|G$6#eg+1H#c`{;K<Y|@{DS}g|Igr{wekxC
z0|RG)M`SSr1K$A<X3V<Q$;rUL(C+Et7-Hf7c9N%9g96V{iFfts)+|r7f7vude#n@d
z>Mh=NP&}pNtpVHV2HptC&)qXO$T3DU3ZG|Y@rl0o);;U#=B1|G^CqXcZ19gc|6tyd
zI40i>$Aso^>P=7(=80*Fy6OK<VdLUM4Al=Z3K`WNWXP^*G`=J-hf{1Xi*lf@quMI{
fM)g(I_6#@GSr>-w=HJD@z`)??>gTe~DWM4fd>&!E

diff --git a/assets/textures/Cube_Yellow.png b/assets/textures/Cube_Yellow.png
deleted file mode 100644
index 0101f31b955bc6fac43581e556bbeea94b9f03a9..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 282
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4rT@h2A3sW#~2tG7>k44ofy`glX=O&z`&C3
z=<CS9u(6-}Pa-P=0|QThPl)TW%huBt=p4To%D}*IdDYf!Aax}{e!>6$|7UQ}TKR>6
zfq}EYBeIx*f$ty)Gwzs}{g#1&q21HPF~q|E?IcgJ1_hp@67TBMty!LE|FUU_{E#s@
z)myylpm<8jTLZS!4ZIPOpSx#nkYkKy6h6<);uC%Et$Wtf%}Y(W=S@y?+29{@{=vK@
zaZJ7&jtR}-)SI9n%oEcTb<_W!!p6mi7^)v+6f&wk$dFyrXnaXv4yV{&7Ue))N3~V@
fjq0na?HO*Wvn~wV&A*F*fq}u()z4*}Q$iB}NY`L`

diff --git a/assets/textures/Image_Test.png b/assets/textures/Image_Test.png
deleted file mode 100644
index 428fbc85ff234275126068eed22a3f0536537b91..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1396
zcmeAS@N?(olHy`uVBq!ia0y~yV9;V<V36lvV_;yISQ78bz`(#*9OUlAu<o49O9lo8
zmUKs7M+SzC{oH>NSs54@I14-?iy0XB4ude`@%$Aj3=FKCo-U3d5$=1ZYZpBB5NNZm
zW@F=KVFE!OCLU&1W<Cii83Pj&3xOBOjcsh)JiL4oEG#S>G8_>K8ypnC@W26u(0xB|
zWnH~7O@8*R-TSjn&6-*F=kn#t#?zcnxL&)aCbVYt!+5@&-}_cQw5?fLm;FZ5ht0@C
z-0Gh;r?g|v<HH-C?>{6KIHmp4v{sg@9fvd2QjI1n_-@JO+wz(72lp|xZ66a4n9E2t
zA9^r%%XYOFw_k1XW&72gvv{I$;;((a*}gJorn_xXU%H1SckTlIc`2nEr6c7f*4dpu
zHt(FD%E!pksoZlOu)SKlUpL%0W%c_1a{Kg^In@t~bFZDf<|NxeHPLU2UMcz(X<oip
zHSvkMayQSW7bXW6b^6yxds;ABWVr~c9B~tqNUUFK`Z80guv|&V^;dO|PVqjST~_Z{
z8RXprBs?u<-nq8&zG^i`VESSiSK~^lbE<r9xAK{aPbhHvd>5#hWH&`a+vpjGPi+00
zCp`wmbu6FG_&%GRD`U4-MKg8@UxQ_eh@X3@_K&iUtsr}!<+y*HGLf0bWbG05ue_2e
zyT5aDE)MA0GoihG_pdEx5C8qk%-!_TdHpuVmCgo}PV_C=b3-{RBTBTbH%IDwY0fmC
z{z)c0j}|^FG@p50Wh3i`=f91AxRk#BnQ(xEQKaX|s>@Ri<gT<i#w`(Q*)FB~OJ^EW
z+_FxyeQOsfH0xNg<s=H<{$WthHecoM+QTU+y&ERJDQg$H_if4L`L8TIHcju|RI#!u
zk6mr=+0xs+TR*N%7M<X_{M9PmoTS?)m_GB1%U9n{3p8-;aY+ncY(8(72HWH)^>=sH
z6<#U(X<oBqwcB>Xz2(zRoGsbqx<$wR^~VjXxfL$G%@NL3&X{QOM$q&}%V&cr1{|ed
zKN?JnlUXTu+j>Tt72m`~Iuh#=t<IcnlkIdfzPfmu+PZnO{6a+7Ii>i7?z*b?TzeLw
zEOD;1+H|{>tSS@J^m2!IS3aF3({~<AEIhw6^Wu7Co|9`%oPShc7RY@2?EBn&orli<
zGb}$JZ0h>GbC1rkTi-7~kojX0=n&=O94^@9d-1z}ws4MNd7{eUMK(M39{-TJ=-<gR
zzlA#=t*g5&nrR*|Z;8-Z^YAq<|LD7{?0hoAl3k?U%U8H-daGC^bGOoQ|GR0sEi`@n
zg68#b^l64#FvoO;iMj=UcX-(PWWo~VnLNM0u6%ZiRcF$qC$|^d%sq8;@#MO>B@;zn
z$=#RXSiSa3;lC+64nIBdtKmtk&AQYzX+;7rgQv%)yw)n{d2{XT7VZ-dTG&}t4BG-Z
z9ta%&!l*Lw`)tAQo{O@NZ0O9bQK;wHAG*K#fuQ4&b-S+rdX>o<|8&#c!1lHB|4&4F
zKY9B%bXw}OzT@pF`77_-`J?!DeR!$&X7}Znr@i?a_<Z{6rOO;&e+pXkdY(|sG;h`2
zRr#LJjbxVp{Jvj{D>_4k%QLKh@oJ509DCBwPpbK^cHVxT{<@{6@AU1T)JAGO?C)PX
zX-C;6ySUFT&vpDSR+e`EvMzt$^1Vc6jop&3f-h44?)VX$`grzz>62#9SX?~IZY#;W
zy{EA5%!mD6`&X_M_$aTdFq{ADf<SA=rzf}STJJWOYhV5H<&7DOU5X8FYa}h;w79b9
z{Tyk*v!>zxnKjJMCag@6W=>Z5*!h05qf4ab{VTrJU*woJ9gkAI#*uS-w%E<!ecK!&
zKgss|+B})ho;fFJ_p7Y?_k_|Hc3$yc`^CrPW)5G+iTz)0MSYqX-|fx7z`)??>gTe~
HDWM4f`XPe8

diff --git a/assets/textures/Neera.png b/assets/textures/Neera.png
deleted file mode 100644
index 01d777dca4146f5ff1d41da072aa59c744c5cc5b..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 8304
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

diff --git a/assets/textures/Tile_Test.png b/assets/textures/Tile_Test.png
deleted file mode 100644
index c113642b3f04ce076c806252f8a3f93109b54b5a..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 460
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4mJh`hT^KKFANL}jKx9jP7LeL$-HD>U|>mi
z^mSxl*x1kgCy|wbfq}EYBeIx*f$uN~Gak=hk;1^hnCR)^7!u+BbXs=NVFjL+UjE77
z4BqAz&+yZGoRvFe;#n>h;ZN%KTMC;5cXxzeQp)+gT%PmZ<LS4}ME2VRdFg(1KA1lx
z@5x!`#XM`~Zg`f?xJ%*gl|}<$cE8%h16<+3!OV-dx+<#O;o<3wXB7>buF13D<%Ay!
zd2IKNR`a~LGkN8Y2A&W%{%2Ad9nF<&Opg-!8W&hp>}}*L42W^F+|$Kt5$mRP@6eGo
zLP9-SH<O=wowfgcu(ap-H}kSz%ibUUbKXp>-oN{gyuzbPg^gPl|EYVb&!_asrAKUz
zm}1LJix01|BMSL<aT`QMPZ1Q>^<!Jt#I-tm;o|hn?LL+riykSYI0V~I>J+=upy#Hm
zpmoo<N?;z7sgR-;-wMXqo^1`&I!|odEp*P|v`hXg(JG;;4PO_iC!T+?_GAHDTHz^&
z+@rUzZ05PL!q-1Ty6VyTgsJD|Z*D(l%lM6NqtUL$t@Q=|-oMy$EE`(=DpT_r7#J8l
MUHx3vIVCg!0N!@H)&Kwi

diff --git a/assets/textures/Tile_Test_2.png b/assets/textures/Tile_Test_2.png
deleted file mode 100644
index 6193471ba9f044adff524fb9b3afa01ee664c806..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 2079
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
FngB(@+Qa|=

diff --git a/assets/textures/Tile_Test_3.png b/assets/textures/Tile_Test_3.png
deleted file mode 100644
index 5b6bb5cbd73647990fa99bac0513a38665b877c3..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 604
zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4mJh`hT^KKFANL}jKx9jP7LeL$-HD>U|>mi
z^mSxl*x1kgCy|wbfq}EYBeIx*f$tCqGm2_>H83zRe)M#442f`mJJm3c$xy&m+;769
zqSLlcr>0DiQB+k`bziV#$r(Y7;Aaw=+n1c-?bv_)ehvRN))PT0Q`94Of1CBU{+RLU
zoXUuKyX{lt)}6Jeo&RUUlxwr4BY3#$Lk;hJo_XmA!{XDf85^r-OI$ed;Ze+zh~VZs
zm)~%#S#d7={Jizt@19ojWTal-@OzfT1Mb|7PanwrTlQ1Xz^T`0yW1>DhZL;^H!oDb
zxmYR8{L3lf`GPIa|65N;Nsy`E_3i~*<X)ff&DXvs?q$5laP+tDdwG>Kmy$dEuEMXc
zs@*BQ`)~(;xv)+^H1|J_Ju?!XFWBbZD!Oj^k%Kum_RX6t!aV!eoxp|(oLsdsc7H|p
zte^g`%V!1S?N!Cg?k<;ek`OqgaprN|8q007YuHL`)%lXdRW#csFkd{nnJ-(R+(p3o
zicDC{#h*D6Z7aE54m@7e%__;Iujq2#HsMdvZ>GPuQ}?><W8-kuKEG93&N$$t!y#VD
z3YK{0aQ%fAF5HnCoQp4Pxgk=*&EDxM5xnxzkr@}ZL`NiKIkAeaiSIiQ<gt@==7zUN
zEze$XcxP?6zsux|>8T~6Z|mB(i5@BC%evpWlDnZ>;NlOt^i_u~f19!R38Zb&y}F`z
z&IaqU->3gG`~I|77Tr5D;h9`f?yP^(Q5jyB<#vS2#7Mu`6(6c$?Dx9;TLl9H1B0il
KpUXO@geCwG!3CKB

diff --git a/assets/textures/Tile_Test_4.png b/assets/textures/Tile_Test_4.png
deleted file mode 100644
index b5db7d7c8c3da0f2ec9178caf6403d59193535d8..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 246
zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s77>k44ofy`glX=O&z`&C3
z=<CS9u(6-}Pa-P=0|RG)M`SSr1K(i~W;~w1B87p0q1)5NF~q|E=%jAm1_d6Mi<%M#
z17$8=lxfs8$+ao6<m#MwWV%E~b<EElZ;sb3<zI6?LNooN|I4S+&3jViBYP~fdZZ87
zzFM&28t;vpT!HGR3z;)s36=;RUwrFNc*SWO=6yE>R~0j>eA%S5;NYxh94`*UE|OWn
x_UsJPJ>K)ahc`+W9J+AhMdrVM{6V`I#r}j}t_%A2j)8%J!PC{xWt~$(699i5UE%-$

diff --git a/assets/textures/letters.png b/assets/textures/letters.png
deleted file mode 100644
index 7ae52871e931f300419edcd0971ee378ddd0c9f0..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1029
zcmeAS@N?(olHy`uVBq!ia0y~yVDx2RVBqFpV_;zT-FBamfq{XsILO_JVcj{ImkbOH
zEa{HEjtmSN`?>!lvNA9*a29w(7BevL9R^{><M}I67#NsmdAc};WH?`)*_|t6$m62F
z^1-PhPCZ4{B`s4X2*os=E@J0<wtzEZmWccO*!A)XDgH7a)#v6-zT;L=U0uEX@ynOj
ztBq|xeDh$|>fOFtif48A8;Pmw&z$?|!(L_9f88zns%7^kw~GSjRzsAyO9f=^nS1!v
zpF4WIABwx!e(aogjDI!b)VV9Z&GWlB!6*6p?ZB6PpO}r#o^KCj=)U#1J}&Oxoka;^
z>u)|y7vKDIj^mWuH)C?|uiq0N?)Wyabf1X5^6$W-t0g+GCU4dIc}eB``Tg>XkB4Ve
z-4Z+-x?y(Pp1An`|1#uLH=JBh9<g#|z^`J_-tAwv+~>Wv=t@ZDyYIV8mX#d|S~!26
z{n2ZeCq$n8u#|I({)d}V*0;W}hxk_i33}t&#v6Tdb$OzYEAteabC))_+gu6jPv37h
z%Ub%W`<kZG1P%KNZPVM_%H64^dn1%hZ%Y}^pRs*oXKea;kMsW3J|AbT^xn*La+BxY
z7RQhu96hZQ_b$_xx^(*ZwNkdw_hp+FuZ#Wra<2UEG8S2j)$XE^Z_UzIpZpg7a`B^d
z(H}<=<~R1In%<lzcqaS;zuVW^w79@Ea(DPu(^o4Vo}Tt3h1INf%LnBLZUx5stZkO;
zJ-kZhiR32d9nAHGVfHQQ2aGp=y4&$@m(16T$1FCTPjFvzbDl<Z^_73_)sB3XmtBet
z9YRH<x(uT&k`3cp76nFpHH>=Q$J|)6x_RF%@k9SY3|H$5);6qR58q>9oU?Zgw@c;i
zU5o6h;@#tBOw$s3vqtwe{~6)+5363QJ73)3e<9U&OWmS5nakUJ{<;Ue7gI~mRddkk
zGyBTvT0C{v8?{vS0N0b^QuPLDE30^>M9k!uso?qIa&x_G0{@#-(Z*S;b|u`un*A$F
zo`2yg$pZTidnWN$^)QOq@6I~^XTdU^`G^1e8YgdWOa9grnDo}EbLk$>o43OC!UALu
z#r|!S?+Gn?Hu-0#-qU-jt(8xm)>N%Mu*b6M`QqA`L&v0hTjv!_SmW<?ZuhHMy`?9X
zW_~;?Y1`p)@r=Rj^E`_;D*e6r=9T|5_V%Kd#h*Xct?}zLo^@RC&8vw`Lfq$Na$hz6
z?J<>m|NP9}_nA);zFlYK{+s@1=H9nI7VTNLiP_b8QO%#K(;jvkzWxa_tlqe3>zwCv
zzB?*an=Q|{^>}&3HMUKq^G@(T+w^1R{S*Gxe;l^W>-n{^=EA$@BEHo%3vStjy)M1S
rZ)q$h(JB5jF!}4FhMy7JZ`<E_%yoT(@9+H#3=9mOu6{1-oD!M<nj!V0

diff --git a/assets/tilemap.png b/assets/tilemap.png
deleted file mode 100644
index 49ffb3925e40fe5195012608f088696ccd8bd4de..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 4985
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

diff --git a/source/engine/graphics/back/textures/Texture.hpp b/source/engine/graphics/back/textures/Texture.hpp
index c58c013..aabf735 100644
--- a/source/engine/graphics/back/textures/Texture.hpp
+++ b/source/engine/graphics/back/textures/Texture.hpp
@@ -39,7 +39,7 @@ namespace megu {
             void bind() const;
             void bind(GLuint) const;
 
-            inline  GLint width() const {return this->_width;}
+            inline GLint width() const {return this->_width;}
             inline GLint height() const {return this->_height;}
 
             inline GLuint slot() const {return this->_slot;}
diff --git a/source/engine/graphics/front.hpp b/source/engine/graphics/front.hpp
new file mode 100644
index 0000000..85ac870
--- /dev/null
+++ b/source/engine/graphics/front.hpp
@@ -0,0 +1,16 @@
+#pragma once
+
+#include "front/engine/Engine.hpp"
+#include "front/engine/FrameBufferMerger.hpp"
+#include "front/engine/Layer.hpp"
+#include "front/engine/Renderer.hpp"
+#include "front/engine/TextureArray.hpp"
+
+#include "front/geometry/Quads.hpp"
+#include "front/geometry/Plane.hpp"
+
+#include "front/module/Quad_Module.hpp"
+
+#include "front/object/Image.hpp"
+#include "front/object/Sprite.hpp"
+#include "front/object/TileArray.hpp"
\ No newline at end of file
diff --git a/source/engine/graphics/front/engine/Engine.hpp b/source/engine/graphics/front/engine/Engine.hpp
index 38dce9f..5a3b753 100644
--- a/source/engine/graphics/front/engine/Engine.hpp
+++ b/source/engine/graphics/front/engine/Engine.hpp
@@ -23,10 +23,6 @@ namespace megu {
                 return this->_layers[layer_priority].get()->push<T>(object_priority, object, modul);
             }
 
-            /*void push(Priority layer_priority, Priority object_priority, Renderable & renderable) {
-                this->_layers[layer_priority].get()->push(object_priority, renderable);
-            }*/
-
             void remove(Priority);
             void remove(const Identifiable &);
 
diff --git a/source/engine/graphics/front/module/Quad_Module.hpp b/source/engine/graphics/front/module/Quad_Module.hpp
index 5822de0..5ec48d8 100644
--- a/source/engine/graphics/front/module/Quad_Module.hpp
+++ b/source/engine/graphics/front/module/Quad_Module.hpp
@@ -2,11 +2,10 @@
 
 #include "Image_Module.hpp"
 #include "Sprite_Module.hpp"
-#include "Text_Module.hpp"
 #include "TileArray_Module.hpp"
 
 namespace megu {
-    class Quad_Module : public Image_Module, public Sprite_Module, public Text_Module, public TileArray_Module {
+    class Quad_Module : public Image_Module, public Sprite_Module, public TileArray_Module {
         // ...
     };
 }
\ No newline at end of file
diff --git a/source/engine/graphics/front/module/Sprite_Module.cpp b/source/engine/graphics/front/module/Sprite_Module.cpp
index e95ba8d..b63d536 100644
--- a/source/engine/graphics/front/module/Sprite_Module.cpp
+++ b/source/engine/graphics/front/module/Sprite_Module.cpp
@@ -38,7 +38,7 @@ namespace megu {
             std::vector<std::reference_wrapper<const Texture>>::iterator it = std::find(textures.begin(), textures.end(), image.get().texture());
             if(it != textures.end()) {
                 uModels.push_back(image.get().transformation().model());
-                uFrames.push_back(image.get().frame());
+                uFrames.push_back(image.get().getFrame());
                 uSizes.push_back({it->get().width(), it->get().height()});
                 
                 uTextures.push_back(static_cast<GLint>(it - textures.begin()));
@@ -63,7 +63,7 @@ namespace megu {
                 uTextures.push_back(static_cast<GLint>(textures.size()-1)); 
                 
                 uModels.push_back(image.get().transformation().model());
-                uFrames.push_back(image.get().frame());
+                uFrames.push_back(image.get().getFrame());
                 uSizes.push_back({image.get().texture().width(), image.get().texture().height()});
             }
         }
diff --git a/source/engine/graphics/front/module/Text_Module.cpp b/source/engine/graphics/front/module/Text_Module.cpp
deleted file mode 100644
index 9ccf73b..0000000
--- a/source/engine/graphics/front/module/Text_Module.cpp
+++ /dev/null
@@ -1,34 +0,0 @@
-#include "Text_Module.hpp"
-
-#include <engine/graphics/back/cameras/Camera.hpp>
-#include <engine/utility/array_generator.hpp>
-
-namespace megu {
-    Text_Module::Text_Module()
-    : _vbo(this->_vao, Text::Layout(), Text::Vertices(), EditMode::STATIC) {
-        Source vert_source("assets/shaders/Text.vert", Source::Categorie::VERTEX);
-        this->_program << vert_source;
-
-        Source frag_source("assets/shaders/Text.frag", Source::Categorie::FRAGMENT);
-        this->_program << frag_source;
-
-        this->_program.link();
-        vert_source.release();
-        frag_source.release();
-    }
-
-    void Text_Module::draw(const Text & text, const Camera & camera, const Window &) const {
-        this->_vao.bind();
-        this->_program.use();
-
-        text.texture().bind();
-        this->_program.setUniform("uSampler", 0);
-
-        glm::vec4 glyphFrame = text['w'];
-
-        this->_program.setUniform("uSize", glm::vec2{text.texture().width(), text.texture().height()});
-        this->_program.setUniform("uGlyphFrame", glyphFrame);
-
-        glDrawArrays(Quads::Primitive(), 0, static_cast<GLsizei>(this->_vbo.size()));
-    }
-}
\ No newline at end of file
diff --git a/source/engine/graphics/front/module/Text_Module.hpp b/source/engine/graphics/front/module/Text_Module.hpp
deleted file mode 100644
index 71aacd0..0000000
--- a/source/engine/graphics/front/module/Text_Module.hpp
+++ /dev/null
@@ -1,24 +0,0 @@
-#pragma once
-
-#include "Module.hpp"
-
-#include <engine/graphics/back/buffers/VertexArray.hpp>
-#include <engine/graphics/back/buffers/VerticeBuffer.hpp>
-#include <engine/graphics/back/shaders/Program.hpp>
-
-#include <engine/graphics/front/object/Text.hpp>
-#include <engine/utility/ref_set.hpp>
-
-namespace megu {
-    class Text_Module : public Module<Text> {
-        public:
-            Text_Module();
-
-            virtual void draw(const Text &, const Camera &, const Window &) const override;
-
-        private:
-            VertexArray _vao;
-            VerticeBuffer _vbo;
-            Program _program;
-    };
-}
\ No newline at end of file
diff --git a/source/engine/graphics/front/module/TileArray_Module.cpp b/source/engine/graphics/front/module/TileArray_Module.cpp
index cdc258f..efb6e0b 100644
--- a/source/engine/graphics/front/module/TileArray_Module.cpp
+++ b/source/engine/graphics/front/module/TileArray_Module.cpp
@@ -34,15 +34,15 @@ namespace megu {
 
         size_t count = 0;
 
-        for(size_t x = 0; x < vertexArray.width(); ++x) {
-            for(size_t y = 0; y < vertexArray.height(); ++y) {
+        for(size_t x = 0; x < vertexArray.row(); ++x) {
+            for(size_t y = 0; y < vertexArray.collumn(); ++y) {
                 uOffsets.push_back(glm::translate(glm::mat4(1.f), {x, y, 0.f}));
                 uUvs.push_back(vertexArray.uvs()[x][y]);
 
                 if(count > 128) {
                     this->_program.setUniform("uOffsets", uOffsets);
                     this->_program.setUniform("uUvs", uUvs);
-                    glDrawArraysInstanced(TileArray::Primitive(), 0, static_cast<GLsizei>(this->_vbo.size()), static_cast<GLsizei>(vertexArray.width() * vertexArray.height()));
+                    glDrawArraysInstanced(TileArray::Primitive(), 0, static_cast<GLsizei>(this->_vbo.size()), static_cast<GLsizei>(vertexArray.row() * vertexArray.collumn()));
                     
                     uOffsets.clear();
                     uUvs.clear();
@@ -56,7 +56,7 @@ namespace megu {
             this->_program.setUniform("uOffsets", uOffsets);
             this->_program.setUniform("uUvs", uUvs);
             //glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
-            glDrawArraysInstanced(TileArray::Primitive(), 0, static_cast<GLsizei>(this->_vbo.size()), static_cast<GLsizei>(vertexArray.width() * vertexArray.height()));
+            glDrawArraysInstanced(TileArray::Primitive(), 0, static_cast<GLsizei>(this->_vbo.size()), static_cast<GLsizei>(vertexArray.row() * vertexArray.collumn()));
             //glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
         }
     }
diff --git a/source/engine/graphics/front/object/Image.cpp b/source/engine/graphics/front/object/Image.cpp
index 1dc1619..0570661 100644
--- a/source/engine/graphics/front/object/Image.cpp
+++ b/source/engine/graphics/front/object/Image.cpp
@@ -30,12 +30,12 @@ namespace megu {
     }
 
     void Image::load(const TextureBuffer & buffer) {
-        this->setSize({buffer.width(), buffer.height()});
+        this->setSize(static_cast<float>(buffer.width()), static_cast<float>(buffer.height()));
         this->_texture.store(buffer);
     }
 
     void Image::link(const Texture & texture) {
-        this->setSize({texture.width(), texture.height()});
+        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 715408d..95c5b6f 100644
--- a/source/engine/graphics/front/object/Image.hpp
+++ b/source/engine/graphics/front/object/Image.hpp
@@ -19,26 +19,24 @@ namespace megu {
             Image(const Image &) = default;
             Image operator=(const Image &);
             Image operator=(const Image &&);
-           ~Image() = default;
+   virtual ~Image() = default;
 
             inline Vec2  getPosition()  const {return Vec2(this->_transformation.x(), this->_transformation.y());}
             inline Vec2  getOrigine()   const {return Vec2(this->_transformation.origine().x, this->_transformation.origine().y);}
             inline Vec2  getSize()      const {return Vec2(this->_transformation.scaling().x, this->_transformation.scaling().y);}
             inline float getRotation()  const {return this->_transformation.roll();}
-            inline float getLayer()     const {return this->_transformation.z();} 
 
             inline const Texture        & texture()         const {return this->_texture;}
             inline const Transformable  & transformation()  const {return this->_transformation;}   
            
-            inline void setPosition(const Vec2 & pos)   {this->_transformation.setPosition(pos.x, pos.y);}
-            inline void setOrigine(const Vec2 & pos)    {this->_transformation.setOrigine(pos.x, pos.y);}
-            inline void setSize(const Vec2 & size)      {this->_transformation.setScaling(size.x, size.y);}
+            inline void setPosition(float x, float y)   {this->_transformation.setPosition(x, y);}
+            inline void setOrigine(float x, float y)    {this->_transformation.setOrigine(x, y);}
+            inline void setSize(float w, float h)       {this->_transformation.setScaling(w, h);}
             inline void setRotation(float a)            {this->_transformation.setRotation(a, Transformable::Axis::Z);}
-            inline void setLayer(float l)               {this->_transformation.setZ(l);}
 
-            inline void move(const Vec2 & pos)          {this->_transformation.move({pos.x, pos.y, 0.f});}
-            inline void scale(const Vec2 & size)        {this->_transformation.scale({size.x, size.y, 0.f});}
-            inline void rotate(float a)                 {this->_transformation.rotate(a, Transformable::Axis::Z);}
+            inline void move(float x, float y)  {this->_transformation.move({x, y, 0.f});}
+            inline void scale(float w, float h) {this->_transformation.scale({w, h, 0.f});}
+            inline void rotate(float a)         {this->_transformation.rotate(a, Transformable::Axis::Z);}
 
             void load(const std::filesystem::path &, bool = false);
             void load(const TextureBuffer &);
diff --git a/source/engine/graphics/front/object/Sprite.cpp b/source/engine/graphics/front/object/Sprite.cpp
index d9dd26c..ef85ab7 100644
--- a/source/engine/graphics/front/object/Sprite.cpp
+++ b/source/engine/graphics/front/object/Sprite.cpp
@@ -1,6 +1,9 @@
 #include "Sprite.hpp"
 
 namespace megu {
+    Sprite::Sprite()
+    : _frame(0, 0, 0, 0) {}
+
     Sprite::Sprite(const std::filesystem::path & path, bool flip)
     : _frame(0, 0, 0, 0) {
         this->load(path, flip);
@@ -18,12 +21,12 @@ namespace megu {
     }
 
     void Sprite::load(const TextureBuffer & buffer) {
-        this->setSize({buffer.width(), buffer.height()});
+        this->setSize(static_cast<float>(buffer.width()), static_cast<float>(buffer.height()));
         this->_texture.store(buffer);
     }
 
     void Sprite::link(const Texture & texture) {
-        this->setSize({texture.width(), texture.height()});
+        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/Sprite.hpp b/source/engine/graphics/front/object/Sprite.hpp
index a0b5b23..777eef3 100644
--- a/source/engine/graphics/front/object/Sprite.hpp
+++ b/source/engine/graphics/front/object/Sprite.hpp
@@ -13,34 +13,31 @@ namespace megu {
         public:
             using Frame =  glm::vec4;
 
+            Sprite();
             Sprite(const std::filesystem::path &, bool = true);
             Sprite(const std::filesystem::path &, const Frame &, bool = true);
+   virtual ~Sprite() = default;
 
-            inline void setFrame(const Frame & frame) {this->_frame = frame;}
+            inline const Vec2 & getPosition()   const {return Vec2(this->_transformation.x(), this->_transformation.y());}
+            inline const Vec2 & getOrigine()    const {return Vec2(this->_transformation.origine().x, this->_transformation.origine().y);}
+            inline const Vec2 & getSize()       const {return Vec2(this->_transformation.scaling().x, this->_transformation.scaling().y);}
+            inline const Frame & getFrame()     const {return this->_frame;} 
+            inline float getrotation()          const {return this->_transformation.rotation().z;}
 
-            inline void setPosition(const Vec2 & pos)   {this->_transformation.setPosition(pos.x, pos.y);}
-            inline void setOrigine(const Vec2 & pos)    {this->_transformation.setOrigine(pos.x, pos.y);}
-            inline void setSize(const Vec2 & size)      {this->_transformation.setScaling(size.x, size.y);}
+            inline const Texture        & texture()         const {return this->_texture;}
+            inline const Transformable  & transformation()  const {return this->_transformation;} 
+
+            inline void setPosition(float x, float y)   {this->_transformation.setPosition(x, y);}
+            inline void setOrigine(float x, float y)    {this->_transformation.setOrigine(x, y);}
+            inline void setSize(float w, float h)       {this->_transformation.setScaling(w, h);}
             inline void setRotation(float a)            {this->_transformation.setRotation(a, Transformable::Axis::Z);}
+            inline void setFrame(const Frame & frame)   {this->_frame = frame;}
 
-            inline const Vec3 & position()  const        {return this->_transformation.position();}
-            inline const Vec3 & origine()   const        {return this->_transformation.origine();}
-            inline const Vec3 & rotation()  const        {return this->_transformation.rotation();}
-            inline const Vec2 & size()      const        {return Vec2(this->_transformation.scaling().x, this->_transformation.scaling().y);}
+            inline void setFrame(float x, float y, float w, float h) {this->_frame = Frame(x, y, w ,h);}
             
-            inline float x() const {return this->_transformation.x();}
-            inline float y() const {return this->_transformation.y();}
-            inline float z() const {return this->_transformation.z();}
-
-            inline void move(const Vec2 & pos)          {this->_transformation.move({pos.x, pos.y, 0.f});}
-            inline void scale(const Vec2 & size)        {this->_transformation.scale({size.x, size.y, 0.f});}
-            inline void rotate(float a)                 {this->_transformation.rotate(a, Transformable::Axis::Z);}
-
-            inline void setSize(float w, float h) {this->_transformation.setScaling(w, h);}
-
-            inline const Frame          & frame()           const {return this->_frame;}
-            inline const Texture        & texture()         const {return this->_texture;}
-            inline const Transformable  & transformation()  const {return this->_transformation;}
+            inline void move(float x, float y)  {this->_transformation.move({x, y, 0.f});}
+            inline void scale(float w, float h) {this->_transformation.scale({w, h, 0.f});}
+            inline void rotate(float a)         {this->_transformation.rotate(a, Transformable::Axis::Z);}
 
             void load(const std::filesystem::path &, bool = false);
             void load(const TextureBuffer &);
diff --git a/source/engine/graphics/front/object/Text.cpp b/source/engine/graphics/front/object/Text.cpp
deleted file mode 100644
index 6b16ea6..0000000
--- a/source/engine/graphics/front/object/Text.cpp
+++ /dev/null
@@ -1,28 +0,0 @@
-#include "Text.hpp"
-
-#include <exception>
-#include <iostream>
-
-namespace megu {
-    Text::Text(const std::string & text)
-    : _text(text) {}
-
-    Text::Text(const Text & src) 
-    : _text(src._text), _characters(src._characters), _transformation(src._transformation) {}
-
-    Text & Text::operator=(const Text & src) {
-        this->_text = src._text;
-        this->_characters = src._characters;
-        this->_transformation = src._transformation;
-        return *this;
-    }
-
-    void Text::loadFont(const std::filesystem::path & file, bool smoothing) {
-        if(!std::filesystem::exists(file) || std::filesystem::is_directory(file)) {
-            throw std::runtime_error("Cannot load font file" + file.string() + ".");
-        }
-
-        TextureBuffer buffer(file);
-        this->_texture.store(buffer);
-    } 
-}
diff --git a/source/engine/graphics/front/object/Text.hpp b/source/engine/graphics/front/object/Text.hpp
deleted file mode 100644
index 7fd1df3..0000000
--- a/source/engine/graphics/front/object/Text.hpp
+++ /dev/null
@@ -1,60 +0,0 @@
-#pragma once
-
-#include <utility/Identifiable.hpp>
-
-#include <string>
-#include <filesystem>
-#include <map>
-
-#include <engine/graphics/back/geometry/Transformable.hpp>
-#include <engine/graphics/back/textures/Texture.hpp> 
-#include <engine/graphics/front/geometry/Quads.hpp>
-#include <engine/utility/type.hpp>
-
-namespace megu {
-    class Text : public Quads {
-        public:
-            using Frame = Vec4Int;
-            using CharacterMap = std::map<unsigned char, Frame>;
-
-            Text(const std::string & = "");
-            Text(const Text &);
-            Text & operator=(const Text &);
-           ~Text() = default;
-
-            inline Vec2  getPosition()  const {return Vec2(this->_transformation.x(), this->_transformation.y());}
-            inline Vec2  getOrigine()   const {return Vec2(this->_transformation.origine().x, this->_transformation.origine().y);}
-            inline Vec2  getSize()      const {return Vec2(this->_transformation.scaling().x, this->_transformation.scaling().y);}
-            inline float getRotation()  const {return this->_transformation.roll();}
-            inline float getLayer()     const {return this->_transformation.z();} 
-
-            inline const Texture        & texture()         const {return this->_texture;}
-            inline const Transformable  & transformation()  const {return this->_transformation;}   
-            inline const std::string    & text()            const {return this->_text;}
-            inline const CharacterMap   & characters()      const {return this->_characters;}
-           
-            inline void setPosition(const Vec2 & pos)   {this->_transformation.setPosition(pos.x, pos.y);}
-            inline void setOrigine(const Vec2 & pos)    {this->_transformation.setOrigine(pos.x, pos.y);}
-            inline void setSize(const Vec2 & size)      {this->_transformation.setScaling(size.x, size.y);}
-            inline void setRotation(float a)            {this->_transformation.setRotation(a, Transformable::Axis::Z);}
-            inline void setLayer(float l)               {this->_transformation.setZ(l);}
-
-            inline void move(const Vec2 & pos)          {this->_transformation.move({pos.x, pos.y, 0.f});}
-            inline void scale(const Vec2 & size)        {this->_transformation.scale({size.x, size.y, 0.f});}
-            inline void rotate(float a)                 {this->_transformation.rotate(a, Transformable::Axis::Z);}
-
-            inline void addGlyph(unsigned char c, Frame f) {this->_characters.insert(std::pair<unsigned char, Frame>(c, f));}
-            inline void removeGlyph(unsigned char c) {this->_characters.erase(c);}
-            inline void clearGlyph() {return this->_characters.clear();}
-
-            void loadFont(const std::filesystem::path &, bool = true);
-
-            inline const Frame & operator[](unsigned char c) const {return this->_characters.at(c);}
-
-        private:
-            std::string _text;
-            Texture _texture;
-            CharacterMap _characters;
-            Transformable _transformation;
-    };
-}
\ No newline at end of file
diff --git a/source/engine/graphics/front/object/TileArray.cpp b/source/engine/graphics/front/object/TileArray.cpp
index 78953d5..e54216a 100644
--- a/source/engine/graphics/front/object/TileArray.cpp
+++ b/source/engine/graphics/front/object/TileArray.cpp
@@ -3,17 +3,17 @@
 #include <iostream>
 
 namespace megu {
-    TileArray::TileArray(const std::filesystem::path & path, size_t width, size_t height, float tileSize, size_t lenght)
-    : _width(width), _height(height), _tileSize(tileSize) {
+    TileArray::TileArray(const std::filesystem::path & path, size_t row, size_t col, float tileSize, size_t lenght)
+    : _row(row), _col(col), _tileSize(tileSize) {
         megu::TextureBuffer buffer(path);
         this->_texture.store(buffer);
 
         float twidth = static_cast<float>(this->_texture.width());
         float theight = static_cast<float>(this->_texture.height());
 
-        for(size_t x = 0; x < width; ++x) {
+        for(size_t x = 0; x < row; ++x) {
             std::vector<glm::vec4> rows;
-            for(size_t y = 0; y < height; ++y) {
+            for(size_t y = 0; y < col; ++y) {
                 rows.push_back({0.f, this->_texture.height() - lenght, lenght, lenght});
             }
             this->_uvs.push_back(rows);
diff --git a/source/engine/graphics/front/object/TileArray.hpp b/source/engine/graphics/front/object/TileArray.hpp
index b8862f5..e90c922 100644
--- a/source/engine/graphics/front/object/TileArray.hpp
+++ b/source/engine/graphics/front/object/TileArray.hpp
@@ -13,35 +13,45 @@
 namespace megu {
     class TileArray : public Quads {
         public:
+            TileArray() = delete;
             TileArray(const std::filesystem::path &, size_t, size_t, float, size_t);
+   virtual ~TileArray() = default;
 
-            inline void setPosition(const Vec2 & pos)   {this->_transformation.setPosition(pos.x, pos.y);}
-            inline void setOrigine(const Vec2 & pos)    {this->_transformation.setOrigine(pos.x, pos.y);}
-            inline void setSize(const Vec2 & size)      {this->_transformation.setScaling(size.x, size.y);}
+            inline Vec2 getPosition()   const {return Vec2(this->_transformation.x(), this->_transformation.y());}
+            inline Vec2 getOrigine()    const {return Vec2(this->_transformation.origine().x, this->_transformation.origine().y);}
+            inline Vec2 getSize()       const {return Vec2(this->_transformation.scaling().x, this->_transformation.scaling().y);}
+            inline float getrotation()  const {return this->_transformation.rotation().z;}
+
+            inline void setPosition(float x, float y)   {this->_transformation.setPosition(x, y);}
+            inline void setOrigine(float x, float y)    {this->_transformation.setOrigine(x, y);}
+            inline void setSize(float w, float h)       {this->_transformation.setScaling(w, h);}
             inline void setRotation(float a)            {this->_transformation.setRotation(a, Transformable::Axis::Z);}
             inline void setLayer(float l)               {this->_transformation.setZ(l);}
 
-            inline void move(const Vec2 & pos)          {this->_transformation.move({pos.x, pos.y, 0.f});}
-            inline void scale(const Vec2 & size)        {this->_transformation.scale({size.x, size.y, 0.f});}
-            inline void rotate(float a)                 {this->_transformation.rotate(a, Transformable::Axis::Z);}
+            inline void move(float x, float y)  {this->_transformation.move(x, y);}
+            inline void scale(float w, float h) {this->_transformation.scale(w, h);}
+            inline void rotate(float a)         {this->_transformation.rotate(a, Transformable::Axis::Z);}
 
-            inline size_t width() const {return this->_width;}
-            inline size_t height() const {return this->_height;}
-            inline float getTileSize() const {return this->_tileSize;}
-            inline const Vec3 & getSize() const {return this->_transformation.scaling();}
+            inline size_t row() const {return this->_row;}
+            inline size_t collumn() const {return this->_col;}
+            inline float tileSize() const {return this->_tileSize;}
 
             inline void setUv(size_t x, size_t y, const glm::vec4 & uv) {this->_uvs[y][x] = uv;}
+            inline const glm::vec4 & getUv(size_t x, size_t y) const {return this->_uvs[y][x];}
 
             inline const Transformable & transformation()  const {return this->_transformation;}
             inline const Texture & texture() const {return this->_texture;}
 
+            inline GLint getTextureWidth() const {return this->_texture.width();}
+            inline GLint getTextureHeight() const {return this->_texture.height();}
+
             inline const std::vector<std::vector<glm::vec4>> & uvs() const {return this->_uvs;}
             std::vector<glm::vec4> & operator[](size_t index) {return this->_uvs[index];} 
 
         private:
             Transformable _transformation;
             Texture _texture;
-            size_t _width, _height;
+            size_t _row, _col;
             float _tileSize;
             std::vector<std::vector<glm::vec4>> _uvs;
     };
diff --git a/source/engine/physic/back/Position.cpp b/source/engine/physic/back/Position.cpp
index 5409292..a823329 100644
--- a/source/engine/physic/back/Position.cpp
+++ b/source/engine/physic/back/Position.cpp
@@ -18,10 +18,6 @@ namespace megu {
         return *this;
     }
 
-    void Position::setPosition(const glm::vec3 & position) {
-        this->_position = position;
-    }
-
     void Position::move(const glm::vec3 & direction) {
         this->_position.x += direction.x;
         this->_position.y += direction.y;
diff --git a/source/engine/physic/back/Position.hpp b/source/engine/physic/back/Position.hpp
index 334a968..fef03d3 100644
--- a/source/engine/physic/back/Position.hpp
+++ b/source/engine/physic/back/Position.hpp
@@ -10,15 +10,14 @@ namespace megu {
             Position(const glm::vec3 &);
             Position(const Position &);
             Position operator=(const Position &);
+   virtual ~Position() = default;
 
             inline float x() const {return this->_position.x;}
             inline float y() const {return this->_position.y;}
             inline float z() const {return this->_position.z;}
 
-            inline const glm::vec3 & position() const {return this->_position;}
-
-            void setPosition(const glm::vec3 &);
-            inline void setPosition(float x, float y, float z) {this->setPosition({x, y, z});}
+            inline void set(const glm::vec3 & position) {this->_position = position;}
+            inline void set(float x, float y, float z) {this->set({x, y, z});}
 
             void move(const glm::vec3 &);
             inline void move(float x, float y, float z) {this->move({x, y, z});}
diff --git a/source/engine/physic/back/SquareBox.cpp b/source/engine/physic/back/SquareBox.cpp
index 13927a5..58c8629 100644
--- a/source/engine/physic/back/SquareBox.cpp
+++ b/source/engine/physic/back/SquareBox.cpp
@@ -15,27 +15,13 @@ namespace megu {
         return *this;
     }
 
-    Cube SquareBox::asCube() const {
-        return {
-            this->_position,
-            this->_position + Position(this->_dimension.x, 0.f, 0.f),
-            this->_position + Position(0.f, 0.f, this->_dimension.z),
-            this->_position + Position(this->_dimension.x, 0.f, this->_dimension.z),
-
-            this->_position + Position(0.f, this->_dimension.y, 0.f),
-            this->_position + Position(this->_dimension.x, this->_dimension.y, 0.f),
-            this->_position + Position(0.f, this->_dimension.y, this->_dimension.z),
-            this->_position + Position(this->_dimension.x, this->_dimension.y, this->_dimension.z)
-        };
-    }
-
     void SquareBox::move(const Direction & direction) {
         this->_position.move(direction.x(), direction.y(), direction.z());
     }
 
     bool SquareBox::intersect(const SquareBox & squareBox) const {
-        const Position & a = squareBox.position();
-        const Dimension & as = squareBox.dimension();
+        const Position & a = squareBox._position;
+        const Dimension & as = squareBox._dimension;
         const Position & b = this->_position;
         const Dimension & bs = this->_dimension;
 
@@ -57,4 +43,8 @@ namespace megu {
     bool SquareBox::operator!=(const SquareBox & squareBox) const {
         return !(*this == squareBox);
     }
+
+    bool SquareBox::operator|(const SquareBox & squareBox) const {
+        return this->intersect(squareBox);
+    }
 }
\ No newline at end of file
diff --git a/source/engine/physic/back/SquareBox.hpp b/source/engine/physic/back/SquareBox.hpp
index 47afd29..5f16f4d 100644
--- a/source/engine/physic/back/SquareBox.hpp
+++ b/source/engine/physic/back/SquareBox.hpp
@@ -5,8 +5,7 @@
 #include "Position.hpp"
 
 namespace megu {
-    using Dimension = glm::vec3;
-    using Cube = std::array<Position, 8>; 
+    using Dimension = glm::vec3; 
 
     class SquareBox {
         public:
@@ -15,23 +14,31 @@ namespace megu {
             SquareBox(const SquareBox &);
             SquareBox operator=(const SquareBox &);
 
-            inline const Position & position() const {return this->_position;}
-            inline const Dimension & dimension() const {return this->_dimension;}
+            inline const Position & getPosition() const {return this->_position;}
+            inline const Dimension & getDimension() const {return this->_dimension;}
+
+            inline float x() const {return this->_position.x();}
+            inline float y() const {return this->_position.y();}
+            inline float z() const {return this->_position.z();}
 
             inline float width()  const {return this->_dimension.x;}
             inline float height() const {return this->_dimension.y;}
             inline float depth()  const {return this->_dimension.z;}
 
             inline void setPosition(const Position & position) {this->_position = position;}
-            inline void setDimension(const Dimension & dimension) {this->_dimension = dimension;}
+            inline void setPosition(float x, float y, float z = 0.f) {this->_position = Position(x, y, z);}
 
-            Cube asCube() const;
+            inline void setDimension(const Dimension & dimension) {this->_dimension = dimension;}
+            inline void setDimension(float x, float y, float z = 0.f) {this->_dimension = Dimension(x, y, z);}
 
             void move(const Direction &);
+            inline void move(float x, float y, float z = 0.f) {this->move(Direction(x, y, z));}
+
             bool intersect(const SquareBox &) const;
 
             bool operator==(const SquareBox &) const;
             bool operator!=(const SquareBox &) const;
+            bool operator|(const SquareBox &)  const;
 
         private:
             Position _position;
diff --git a/source/engine/physic/front/engine/Engine.cpp b/source/engine/physic/front/engine/Engine.cpp
index 2e39c9f..7458412 100644
--- a/source/engine/physic/front/engine/Engine.cpp
+++ b/source/engine/physic/front/engine/Engine.cpp
@@ -48,24 +48,24 @@ namespace megu {
 
     void PhysicEngine::step(double delta, Priority priority) {
         for(auto & source : this->_dynamic[priority]) {
-            source.get().update_physic(delta);
+            source.get().updatePhysic(delta);
                 
             for(auto & target : this->_statics[priority]) {
-                if(source.get().isColliding(target)) {
+                if(source.get() | target) {
                     this->_collisions.insert(Collision(source, target));
                     this->_collisions.insert(Collision(target, source));
                 }
             }
 
             for(auto & target : this->_dynamic[priority]) {
-                if(source.get().isColliding(target)) {
+                if(source.get() | target) {
                     this->_collisions.insert(Collision(source, target));
                 }
             }
         }
     }
 
-    std::optional<SquareBox> PhysicEngine::makeCollision(const SquareBox & box, Priority priority) const {
+    std::optional<SquareBox> PhysicEngine::checkCollision(const SquareBox & box, Priority priority) const {
         for(const auto & source : this->_statics.at(priority)) {
             auto obox = source.get().isColliding(box);
             if(obox.has_value()) {
diff --git a/source/engine/physic/front/engine/Engine.hpp b/source/engine/physic/front/engine/Engine.hpp
index 7c8304d..51d152f 100644
--- a/source/engine/physic/front/engine/Engine.hpp
+++ b/source/engine/physic/front/engine/Engine.hpp
@@ -28,7 +28,7 @@ namespace megu {
             void step(double);
             void step(double, Priority);
 
-            std::optional<SquareBox> makeCollision(const SquareBox &, Priority) const;
+            std::optional<SquareBox> checkCollision(const SquareBox &, Priority) const;
 
             std::optional<std::reference_wrapper<const Tangible>> get(const Identifiable &) const;
 
diff --git a/source/engine/physic/front/object/Tangible.cpp b/source/engine/physic/front/object/Tangible.cpp
index 58708a0..bb258d7 100644
--- a/source/engine/physic/front/object/Tangible.cpp
+++ b/source/engine/physic/front/object/Tangible.cpp
@@ -4,6 +4,9 @@
 #include <iostream>
 
 namespace megu {
+    Tangible::Tangible()
+    : _box({0, 0, 0}, {1, 1, 1}) {}
+
     Tangible::Tangible(const Position & position, const Dimension & dimension) 
     : _box(position, dimension) {}
 
@@ -25,7 +28,11 @@ namespace megu {
         return this->_box == entity._box;
     }
 
-    /*bool Tangible::operator!=(const Tangible & entity) const {
-        return !(*this == entity);
-    }*/
+    std::optional<SquareBox> Tangible::operator|(const Tangible & tangible) const {
+        return this->isColliding(tangible);
+    }
+
+    std::optional<SquareBox> Tangible::operator|(const SquareBox & box) const {
+        return this->isColliding(box);
+    }
 }
\ No newline at end of file
diff --git a/source/engine/physic/front/object/Tangible.hpp b/source/engine/physic/front/object/Tangible.hpp
index 9b98a61..a85b5ff 100644
--- a/source/engine/physic/front/object/Tangible.hpp
+++ b/source/engine/physic/front/object/Tangible.hpp
@@ -10,18 +10,20 @@
 namespace megu {
     class Tangible : virtual public Identifiable {
         public:
-            Tangible() = delete;
+            Tangible();
             Tangible(const Position &, const Dimension &);
    virtual ~Tangible() = default;
 
-            inline const Position & getPosition() const {return this->_box.position();}
+            inline const Position & getPosition() const {return this->_box.getPosition();}
             inline const SquareBox & getBox() const {return this->_box;}
 
-            inline float x() const {return this->_box.position().x();}
-            inline float y() const {return this->_box.position().y();}
-            inline float z() const {return this->_box.position().z();}
+            inline float x() const {return this->_box.getPosition().x();}
+            inline float y() const {return this->_box.getPosition().y();}
+            inline float z() const {return this->_box.getPosition().z();}
+
+            inline void setPosition(float x, float y, float z = 0.f) {this->_box.setPosition(x, y, z);}
+            inline void setDimension(float x, float y, float z = 0.f) {this->_box.setDimension(x, y, z);}
 
-            inline void setPosition(const Position & position) {this->_box.setPosition(position);}
             inline void move(const Direction & direction) {this->_box.move(direction);}
             inline void move(float x, float y, float z = 0.f) {return this->move(Direction(x, y, z));}
 
@@ -29,6 +31,8 @@ namespace megu {
             virtual std::optional<SquareBox> isColliding(const SquareBox &) const;
 
             bool operator==(const Tangible &) const;
+            std::optional<SquareBox> operator|(const Tangible &) const;
+            std::optional<SquareBox> operator|(const SquareBox &) const;
 
             using UpdateLambda = std::function<void(double)>;
 
diff --git a/source/engine/physic/front/object/TangibleMovable.cpp b/source/engine/physic/front/object/TangibleMovable.cpp
index e791729..186a684 100644
--- a/source/engine/physic/front/object/TangibleMovable.cpp
+++ b/source/engine/physic/front/object/TangibleMovable.cpp
@@ -5,6 +5,6 @@ namespace megu {
     : Tangible(position, dimension) {}
 
     void TangibleMovable::update(double delta) {
-        this->update_physic(delta);
+        this->updatePhysic(delta);
     }
 }
\ No newline at end of file
diff --git a/source/engine/physic/front/object/TangibleMovable.hpp b/source/engine/physic/front/object/TangibleMovable.hpp
index 2d44fad..6bf1655 100644
--- a/source/engine/physic/front/object/TangibleMovable.hpp
+++ b/source/engine/physic/front/object/TangibleMovable.hpp
@@ -9,7 +9,7 @@ namespace megu {
             TangibleMovable(const Position &, const Dimension &);
    virtual ~TangibleMovable() = default;
 
-            virtual void update_physic(double) = 0;
+            virtual void updatePhysic(double) = 0;
 
         protected:
             void update(double) override;
diff --git a/source/engine/physic/front/object/TangibleStatic.cpp b/source/engine/physic/front/object/TangibleStatic.cpp
index 244d16c..3c4de7e 100644
--- a/source/engine/physic/front/object/TangibleStatic.cpp
+++ b/source/engine/physic/front/object/TangibleStatic.cpp
@@ -5,6 +5,6 @@ namespace megu {
     : Tangible(position, dimension) {}
 
     void TangibleStatic::update(double delta) {
-        this->update_physic(delta);
+        this->updatePhysic(delta);
     }
 }
\ No newline at end of file
diff --git a/source/engine/physic/front/object/TangibleStatic.hpp b/source/engine/physic/front/object/TangibleStatic.hpp
index 2d4d335..711dec2 100644
--- a/source/engine/physic/front/object/TangibleStatic.hpp
+++ b/source/engine/physic/front/object/TangibleStatic.hpp
@@ -9,7 +9,7 @@ namespace megu {
             TangibleStatic(const Position &, const Dimension &);
    virtual ~TangibleStatic() = default;
 
-            virtual void update_physic(double) const = 0;
+            virtual void updatePhysic(double) const = 0;
 
         protected:
             void update(double) override;
diff --git a/source/game/Game.cpp b/source/game/Game.cpp
index e002268..5231a27 100644
--- a/source/game/Game.cpp
+++ b/source/game/Game.cpp
@@ -8,12 +8,9 @@
 #include <game/back/object/Level.hpp>
 #include <game/back/object/Terrain.hpp>
 #include <game/back/object/tile/TileSolide.hpp>
-#include <game/object/Test.hpp>
 
 #include <game/front/Layer.hpp>
-
 #include <game/front/object/Klinck.hpp>
-
 #include <game/utility/FrameCouter.hpp>
 
 namespace megu::game {
@@ -54,8 +51,8 @@ namespace megu::game {
             terrain.setTileEvent(2, new TileSolide(32.f, physic::TERRAIN));
 
             for(size_t i = 0; i < 11; ++i) {
-                terrain.graphic().addAnimation(i, 9, {18, 19, 20, 21});
-                terrain.graphic().addAnimation(i, 10, {24, 25, 26, 27});
+                terrain.graphic().pushAnimation(i, 9, {18, 19, 20, 21});
+                terrain.graphic().pushAnimation(i, 10, {24, 25, 26, 27});
             }
 
             for(size_t i = 0; i < 11; ++i) {
@@ -63,7 +60,7 @@ namespace megu::game {
                     terrain.setValue(j, i, layer0.at(i*11 + j));
                 }
             }
-
+            
             terrain.getGraphicComponent()->setLayerPriority(graphic::TERRAIN);
             terrain.getPhysicComponent()->setLayer(physic::TERRAIN);
 
diff --git a/source/game/back/GameObject.cpp b/source/game/back/GameObject.cpp
new file mode 100644
index 0000000..beea43f
--- /dev/null
+++ b/source/game/back/GameObject.cpp
@@ -0,0 +1,6 @@
+#include "GameObject.hpp"
+
+namespace megu::game {
+    GameProps::GameProps(kernel::Prop * props)
+    : _parent(props) {}
+}
\ No newline at end of file
diff --git a/source/game/back/GameObject.hpp b/source/game/back/GameObject.hpp
index 72aa6e9..dfa5954 100644
--- a/source/game/back/GameObject.hpp
+++ b/source/game/back/GameObject.hpp
@@ -21,13 +21,14 @@ namespace megu::game {
 
     class GameProps : public GameObject, public GameEvent {
         public: 
-            GameProps(kernel::Prop * prop)
-            : _props(prop) {}
+            GameProps() = delete;
+            GameProps(kernel::Prop *);
+   virtual ~GameProps() = default;
 
-            inline kernel::Prop * get() {return this->_props;}
+            inline kernel::Prop * parent() const {return this->_parent;}
 
         private:
-            kernel::Prop * _props;
+            kernel::Prop * _parent;
 
     };
 }
\ No newline at end of file
diff --git a/source/game/back/object/Damagable.cpp b/source/game/back/object/Damagable.cpp
new file mode 100644
index 0000000..cea8177
--- /dev/null
+++ b/source/game/back/object/Damagable.cpp
@@ -0,0 +1,18 @@
+#include "Damagable.hpp"
+
+namespace megu::game {
+    Damagable::Damagable(uint32_t life, bool dead)
+    : _life(life), _dead(dead) {}
+
+    void Damagable::damage(uint32_t damage) {
+        this->_life -= damage;
+        if(this->_life <= 0) {
+            this->_life = 0;
+            this->_dead = true;
+        }
+    }
+
+    void Damagable::heal(uint32_t heal) {
+        this->_life += heal;
+    }
+}
\ No newline at end of file
diff --git a/source/game/back/object/Damagable.hpp b/source/game/back/object/Damagable.hpp
new file mode 100644
index 0000000..3f0bead
--- /dev/null
+++ b/source/game/back/object/Damagable.hpp
@@ -0,0 +1,27 @@
+#pragma once
+
+#include <stdint.h>
+
+namespace megu::game {
+    class Damagable {
+        public:
+            Damagable(uint32_t = 0, bool = false);
+   virtual ~Damagable() = default;
+
+            inline uint32_t getLife() const {return this->_life;}
+            inline bool isAlive() const {return !this->_dead;}
+            inline bool isDead() const {return this->_dead;}
+
+            inline void setLife(uint32_t l) {this->_life = l;} 
+            inline void setDead(bool s) {this->_dead = s;}
+
+            inline void kill() {this->_dead = true;}
+
+            void damage(uint32_t);
+            void heal(uint32_t);
+
+        private:
+            uint32_t _life;
+            bool _dead;
+    };
+}
\ No newline at end of file
diff --git a/source/game/back/object/Enemy.cpp b/source/game/back/object/Enemy.cpp
index 5e93f2b..b684689 100644
--- a/source/game/back/object/Enemy.cpp
+++ b/source/game/back/object/Enemy.cpp
@@ -1,33 +1,35 @@
 #include "Enemy.hpp"
 
 #include <kernel/front/Kernel.hpp>
+#include <game/back/object/Level.hpp>
+
+#include <game/front/Stats.hpp>
 
 namespace megu::game {
     Enemy::Enemy(float x, float y, float w, float h, std::filesystem::path & path) 
     : kernel::PropsDynamic(this->_sprite, this->_movable), GameProps(this), _sprite(path), _movable(x, y, w, h) {
-        this->_sprite.setPosition({x, y});
-    }
-
-    void Enemy::move(float x, float y) {
-        this->_movable.move(x, y);
-        this->_movable.move(x, y);
+        this->_sprite.setPosition(x, y);
     }
 
     void Enemy::setup(kernel::Kernel & kernel, Level & level) {
-        this->_sprite.setFrame({0.f, 0.f, 51.f, 98.f});
-        this->_sprite.setSize({51.f, 98.f});
+        this->_sprite.setFrame(0.f, 0.f, 51.f, 98.f);
+        this->_sprite.setSize(51.f, 98.f);
 
         this->_movable.setCollideLambda([this, &level](kernel::Kernel &, kernel::PhysicEngine &, Identifiable & id, kernel::Physical<kernel::PhysicEngine> & comp, double) {
             auto object = level.get(id);
             if(object.has_value()) {
                 auto event = object->get().on();
                 if(event.has_value()) {
-                    this->on(*object->get().get(), event.value());
+                    this->on(*object->get().parent(), event.value());
                 }  
             }
         });
     }
 
+    void Enemy::destroy(kernel::Kernel & kernel, Level & level) {
+        
+    }
+
     void Enemy::on(const kernel::Prop &, const Event & event) {
         if(event & Event::Type::SOLID) {
             this->onSolide(event);
@@ -40,17 +42,13 @@ namespace megu::game {
 
     std::optional<Event> Enemy::on() const {
         Event b(Event::DAMAGE);
-        b.set(0, 10);
+        b.set(Stats::ATK, 10);
 
         return b;
     }
 
-    void Enemy::destroy(kernel::Kernel & kernel, Level & level) {
-        
-    }
-
     void Enemy::apply(kernel::Kernel & kernel) {
-        kernel.add(this);
+        kernel.push(*this);
     }
 
     void Enemy::onDamage(const Event &) {
diff --git a/source/game/back/object/Enemy.hpp b/source/game/back/object/Enemy.hpp
index 89bacf9..9dc862c 100644
--- a/source/game/back/object/Enemy.hpp
+++ b/source/game/back/object/Enemy.hpp
@@ -2,23 +2,22 @@
 
 #include <kernel/front/props/PropsDynamic.hpp>
 #include <game/back/GameObject.hpp>
-#include <game/back/object/Level.hpp>
 
 namespace megu::game {
     class Enemy : public kernel::PropsDynamic, public GameProps {
         public:
             Enemy(float, float, float, float, std::filesystem::path &);
 
-            void move(float, float);
-
             void setup(kernel::Kernel &, Level &) override;
             void destroy(kernel::Kernel &, Level &) override;
 
-            void apply(kernel::Kernel &) override;
+            
 
             void on(const kernel::Prop &, const Event &) override;
             std::optional<Event> on() const override;
 
+            void apply(kernel::Kernel &) override;
+
             void onDamage(const Event &);
             void onSolide(const Event &); 
 
diff --git a/source/game/back/object/Level.cpp b/source/game/back/object/Level.cpp
index 5fbbcfd..a36db16 100644
--- a/source/game/back/object/Level.cpp
+++ b/source/game/back/object/Level.cpp
@@ -14,12 +14,12 @@ namespace megu::game {
     }
 
     void Level::add(GameProps * prop) {
-        this->_objecs.insert({prop->get()->id(), prop});
+        this->_objecs.insert({prop->parent()->id(), prop});
     }
 
     void Level::apply(kernel::Kernel & kernel) {
         for(auto & [id, prop] : this->_objecs) {
-            kernel.add(prop->get());
+            kernel.push(*prop->parent());
         }
     }
 
@@ -29,7 +29,7 @@ namespace megu::game {
 
     void Level::destroy(kernel::Kernel & kernel, Level & level) {
         for(auto & [id, prop] : this->_objecs) {
-            kernel.remove(prop->get());
+            kernel.remove(*prop->parent());
         }
     }
 }
\ No newline at end of file
diff --git a/source/game/back/object/Player.cpp b/source/game/back/object/Player.cpp
index f78ddf3..464b931 100644
--- a/source/game/back/object/Player.cpp
+++ b/source/game/back/object/Player.cpp
@@ -6,13 +6,13 @@ namespace megu::game {
     : kernel::PropsPlayable(this->_sprite, this->_movable), GameProps(this), _sprite(path), _movable(x, y, w, h) {}
 
     void Player::move(float x, float y) {
-        this->_sprite.move({x, y});
+        this->_sprite.move(x, y);
         this->_movable.move(x, y);
     }
 
     void Player::setPosition(float x, float y) {
-        this->_sprite.setPosition({x, y});
-        this->_movable.setPosition({x, y});
+        this->_sprite.setPosition(x, y);
+        this->_movable.setPosition(x, y);
     }
 
     const Position & Player::getPosition() const {
@@ -26,7 +26,7 @@ namespace megu::game {
             if(object.has_value()) {
                 auto event = object.value().get().on();  
                 if(event.has_value()) {
-                    this->on(*object.value().get().get(), event.value());
+                    this->on(*object.value().get().parent(), event.value());
                 }
             }
         });
@@ -53,6 +53,6 @@ namespace megu::game {
     }
 
     void Player::apply(kernel::Kernel & kernel) {
-        kernel.add(this);
+        kernel.push(*this);
     }
 }
\ No newline at end of file
diff --git a/source/game/back/object/Player.hpp b/source/game/back/object/Player.hpp
index 9859acf..6823240 100644
--- a/source/game/back/object/Player.hpp
+++ b/source/game/back/object/Player.hpp
@@ -9,17 +9,16 @@ namespace megu::game {
         public:
             Player(float x, float y, float w, float h, std::filesystem::path);
 
-            void move(float, float);
-            void setPosition(float, float);
-
-            const Position & getPosition() const;
-
             void setup(kernel::Kernel &, Level &) override final;
             void destroy(kernel::Kernel &, Level &) override final;
+            
+            void setPosition(float, float);
+            void move(float, float);
 
-            void apply(kernel::Kernel &) override final;
-
+            const Position & getPosition() const;
+            
             void on(const kernel::Prop &, const Event &) override final;
+            void apply(kernel::Kernel &) override final;
             
             std::optional<Event> on() const = 0;
 
diff --git a/source/game/back/object/Terrain.cpp b/source/game/back/object/Terrain.cpp
index eea0a86..d0ea840 100644
--- a/source/game/back/object/Terrain.cpp
+++ b/source/game/back/object/Terrain.cpp
@@ -7,7 +7,7 @@ namespace megu::game {
     Terrain::Terrain(float x, float y, float w, float h, const std::filesystem::path & path, size_t r, size_t c , float size, size_t tileSize)
     : PropsTileMap(this->_graphic, this->_physic), GameProps(this), _graphic(path, r, c, size, tileSize), _physic(x, y, r * w, c * h) {
         //! Taille Pour 1 tile !
-        this->_graphic.setSize({w, h});
+        this->_graphic.setSize(w, h);
     }
 
     void Terrain::setValue(size_t x, size_t y, size_t value) {
@@ -16,7 +16,7 @@ namespace megu::game {
             this->_physic.push(
                 {
                     static_cast<float>(x) * this->_graphic.getSize().x, 
-                   (this->_graphic.getSize().y * (this->_graphic.height()- 1)) - static_cast<float>(y) * this->_graphic.getSize().y
+                   (this->_graphic.getSize().y * (this->_graphic.collumn()- 1)) - static_cast<float>(y) * this->_graphic.getSize().y
                 }, 
                 *this->_event[value]
             );
@@ -52,7 +52,7 @@ namespace megu::game {
     }
 
     void Terrain::apply(kernel::Kernel & kernel) {
-        kernel.add(this);
+        kernel.push(*this);
     }
 
     void Terrain::on(const kernel::Prop &, const Event & event) {
diff --git a/source/game/back/object/Terrain.hpp b/source/game/back/object/Terrain.hpp
index 44e9127..eedfe49 100644
--- a/source/game/back/object/Terrain.hpp
+++ b/source/game/back/object/Terrain.hpp
@@ -1,9 +1,6 @@
 #pragma once
 
 #include <kernel/front/props/PropsTileMap.hpp>
-#include <kernel/front/component/physic/TileArray.hpp>
-#include <kernel/front/component/graphic/TileMap.hpp>
-
 #include <game/back/GameObject.hpp>
 #include <game/back/object/tile/Tile.hpp>
 
@@ -12,14 +9,16 @@ namespace megu::game {
         public:
             Terrain() = delete;
             Terrain(float, float, float, float, const std::filesystem::path &, size_t, size_t, float, size_t);
-
-            void setValue(size_t, size_t, size_t);
-            void setTileEvent(size_t, Tile *);
+   virtual ~Terrain() = default;
 
             void setup(kernel::Kernel &, Level &) override;
             void destroy(kernel::Kernel &, Level &) override;
-            void apply(kernel::Kernel &) override;
 
+            void setValue(size_t, size_t, size_t);
+            void setTileEvent(size_t, Tile *);
+           
+            
+            void apply(kernel::Kernel &) override;
             void on(const kernel::Prop &, const Event &) override;
             std::optional<Event> on() const override;
 
diff --git a/source/game/front/object/Klinck.cpp b/source/game/front/object/Klinck.cpp
index b668e0b..5619d09 100644
--- a/source/game/front/object/Klinck.cpp
+++ b/source/game/front/object/Klinck.cpp
@@ -6,7 +6,7 @@
 
 namespace megu::game {
     Klinck::Klinck(kernel::Kernel & k, float x, float y)
-    : Player(0.f, 0.f, 32.f, 32.f, "assets/game/objects/klinck.png"), _kernel(k), _life(100), _atk(10), _def(25), _vx(0.f), _vy(0.f) {
+    : Player(0.f, 0.f, 32.f, 32.f, "assets/game/objects/klinck.png"), Damagable(100), _kernel(k), _atk(10), _def(25), _vx(0.f), _vy(0.f) {
         this->getGraphic().setLayerObject(graphic::Layer::ENTITY);
         this->getPhysic().setLayer(physic::Layer::ENTITY);
         this->move(x, y);
@@ -15,18 +15,18 @@ namespace megu::game {
     void Klinck::onSetup(kernel::Kernel & kernel, Level &) {
         auto & sprite = this->getGraphic();
 
-        sprite.push(Animation::IDL_BACK,     0,  32, 16, 16);
-        sprite.push(Animation::IDL_FRONT,    16, 32, 16, 16);
-        sprite.push(Animation::IDL_LEFT,     32, 32, 16, 16);
-        sprite.push(Animation::IDL_RIGHT,    48, 32, 16, 16);
+        sprite.pushAnimation(Animation::IDL_BACK,     0,  32, 16, 16);
+        sprite.pushAnimation(Animation::IDL_FRONT,    16, 32, 16, 16);
+        sprite.pushAnimation(Animation::IDL_LEFT,     32, 32, 16, 16);
+        sprite.pushAnimation(Animation::IDL_RIGHT,    48, 32, 16, 16);
 
-        sprite.push(Animation::WALK_BACK,    {{0,  16, 16, 16}, { 16, 16, 16, 16}});
-        sprite.push(Animation::WALK_FRONT,   {{32,  16, 16, 16}, { 48, 16, 16, 16}});
-        sprite.push(Animation::WALK_LEFT,    {{0, 0, 16, 16}, { 16, 0, 16, 16}});
-        sprite.push(Animation::WALK_RIGHT,   {{32, 0, 16, 16}, { 48, 0, 16, 16}});
+        sprite.pushAnimation(Animation::WALK_BACK,    {{0,  16, 16, 16}, { 16, 16, 16, 16}});
+        sprite.pushAnimation(Animation::WALK_FRONT,   {{32,  16, 16, 16}, { 48, 16, 16, 16}});
+        sprite.pushAnimation(Animation::WALK_LEFT,    {{0, 0, 16, 16}, { 16, 0, 16, 16}});
+        sprite.pushAnimation(Animation::WALK_RIGHT,   {{32, 0, 16, 16}, { 48, 0, 16, 16}});
 
-        sprite.setAnimation(Animation::IDL_BACK);
-        sprite.setSize({32.f, 32.f});
+        sprite.setCurrentAnimation(Animation::IDL_BACK);
+        sprite.setSize(32.f, 32.f);
 
         this->setControl(kernel.window(), new KlinckKeyProfile(*this, kernel));
 
@@ -34,15 +34,14 @@ namespace megu::game {
         this->_moving[DOWN] = false;
         this->_moving[LEFT] = false;
         this->_moving[RIGHT] = false;
-
     }
 
     void Klinck::onDestroy(kernel::Kernel &, Level &) {
 
     }
 
-    void Klinck::onDamage(const Event &) {
-
+    void Klinck::onDamage(const Event & event) {
+        this->damage(event.get(Stats::ATK).value_or(0));
     }
 
     void Klinck::onSolide(const kernel::Prop &) {
@@ -82,9 +81,9 @@ namespace megu::game {
             SquareBox box = this->getPhysic().getBox();
             box.move({0.f, this->_vy, 0.f});
 
-            std::optional<SquareBox> obox = this->_kernel.getPhysicEngine().get().makeCollision(box, physic::TERRAIN);
+            std::optional<SquareBox> obox = this->_kernel.getPhysicEngine().get().checkCollision(box, physic::TERRAIN);
             if(obox.has_value()) {
-                float pos_y = this->_vy > 0 ? obox.value().position().y() - obox.value().height() : obox.value().position().y() + obox.value().height();
+                float pos_y = this->_vy > 0 ? obox.value().y() - obox.value().height() : obox.value().y() + obox.value().height();
                 this->setPosition(this->getPosition().x(), pos_y);
                 this->_vy = 0.f;
             }
@@ -97,9 +96,9 @@ namespace megu::game {
             SquareBox box = this->getPhysic().getBox();
             box.move({this->_vx, 0.f, 0.f});
 
-            std::optional<SquareBox> obox = this->_kernel.getPhysicEngine().get().makeCollision(box, physic::TERRAIN);
+            std::optional<SquareBox> obox = this->_kernel.getPhysicEngine().get().checkCollision(box, physic::TERRAIN);
             if(obox.has_value()) {
-                float pos_x = this->_vx > 0 ? obox.value().position().x() - obox.value().width() : obox.value().position().x() + obox.value().width();
+                float pos_x = this->_vx > 0 ? obox.value().x() - obox.value().width() : obox.value().x() + obox.value().width();
                 this->setPosition(pos_x, this->getPosition().y());
                 this->_vx = 0.f;
             }
diff --git a/source/game/front/object/Klinck.hpp b/source/game/front/object/Klinck.hpp
index 1780469..51ca280 100644
--- a/source/game/front/object/Klinck.hpp
+++ b/source/game/front/object/Klinck.hpp
@@ -1,9 +1,10 @@
 #pragma once
 
 #include <game/back/object/Player.hpp>
+#include <game/back/object/Damagable.hpp>
 
 namespace megu::game {
-    class Klinck : public Player {
+    class Klinck : public Player, public Damagable {
         public:
             enum Animation {
                 IDL_FRONT = 1,
@@ -42,7 +43,6 @@ namespace megu::game {
 
         private:
             kernel::Kernel & _kernel;
-            unsigned int _life;
             unsigned int _atk;
             unsigned int _def;
             float _vx, _vy;
diff --git a/source/game/front/profile/KlinckKeys.cpp b/source/game/front/profile/KlinckKeys.cpp
index 2da47f3..25760f3 100644
--- a/source/game/front/profile/KlinckKeys.cpp
+++ b/source/game/front/profile/KlinckKeys.cpp
@@ -11,25 +11,25 @@ namespace megu::game {
         if(key == Keyboard::Key::ARROW_LEFT) {
             this->_player.setMovingDirection(Klinck::Direction::LEFT, action != Action::RELEASE);
             //this->_player.getGraphic().setAnimation(action == Action::RELEASE ? Klinck::Animation::IDL_LEFT : Klinck::Animation::WALK_LEFT);
-            this->_player.getGraphic().setAnimation(Klinck::Animation::IDL_LEFT);
+            this->_player.getGraphic().setCurrentAnimation(Klinck::Animation::IDL_LEFT);
         }
 
         if(key == Keyboard::Key::ARROW_RIGHT) {
             this->_player.setMovingDirection(Klinck::Direction::RIGHT, action != Action::RELEASE);
             //this->_player.getGraphic().setAnimation(action == Action::RELEASE ? Klinck::Animation::IDL_RIGHT : Klinck::Animation::WALK_RIGHT);
-            this->_player.getGraphic().setAnimation(Klinck::Animation::IDL_RIGHT);
+            this->_player.getGraphic().setCurrentAnimation(Klinck::Animation::IDL_RIGHT);
         }
 
         if(key == Keyboard::Key::ARROW_UP) {
             this->_player.setMovingDirection(Klinck::Direction::UP, action != Action::RELEASE);
             //this->_player.getGraphic().setAnimation(action == Action::RELEASE ? Klinck::Animation::IDL_FRONT : Klinck::Animation::WALK_FRONT);
-            this->_player.getGraphic().setAnimation(Klinck::Animation::IDL_FRONT);
+            this->_player.getGraphic().setCurrentAnimation(Klinck::Animation::IDL_FRONT);
         }
 
         if(key == Keyboard::Key::ARROW_DOWN) {
             this->_player.setMovingDirection(Klinck::Direction::DOWN, action != Action::RELEASE);
             //this->_player.getGraphic().setAnimation(action == Action::RELEASE ? Klinck::Animation::IDL_BACK : Klinck::Animation::WALK_BACK);
-            this->_player.getGraphic().setAnimation(Klinck::Animation::IDL_BACK);
+            this->_player.getGraphic().setCurrentAnimation(Klinck::Animation::IDL_BACK);
         }
     }
 }
\ No newline at end of file
diff --git a/source/game/object/Test.cpp b/source/game/object/Test.cpp
deleted file mode 100644
index 8433087..0000000
--- a/source/game/object/Test.cpp
+++ /dev/null
@@ -1,46 +0,0 @@
-#include "Test.hpp"
-
-namespace megu::game {
-    Object::Object(std::filesystem::path & path)
-    : _physic(0, 0, 64, 64), _graphic(path), _map("assets/tilemap.png", 8, 8, 8.f, 16, 0.125) {
-        this->_graphic.setFrame({0.f, 0.f, 51.f, 98.f});
-        this->_graphic.setSize({51.f, 98.f});
-
-        size_t tab[8][8] = {
-            {44,  45,  44,  47, 2, 1, 1, 1},
-            {45,  45,  44,  47, 1, 1, 1, 1},
-            {45,  44,  44,  47, 1, 1, 1, 1},
-            {22,  22,  22,  23, 1, 1, 2, 1},
-            {28,  28,  28,  29, 1, 1, 1, 1},
-            { 1,   2,   1,   1, 1, 1, 1, 1},
-            { 1,   2,   1,   1, 1, 1, 1, 1},
-            { 1,   1,   1,   2, 1, 1, 1, 1}
-        };
-
-        for(size_t i = 0; i < 8; ++i) {
-            for(size_t j = 0; j < 8; ++j) {
-                this->_map.setValue(j, i, tab[i][j]);
-            }
-        }
-
-        this->_map.addAnimation(0, 6, {18, 18, 20, 21});
-        this->_map.addAnimation(1, 6, {18, 18, 20, 21});
-        this->_map.addAnimation(2, 6, {18, 18, 20, 21});
-        this->_map.addAnimation(3, 6, {18, 18, 20, 21});
-        this->_map.addAnimation(4, 6, {18, 18, 20, 21});
-        this->_map.addAnimation(5, 6, {18, 18, 20, 21});
-        this->_map.addAnimation(6, 6, {18, 18, 20, 21});
-        this->_map.addAnimation(7, 6, {18, 18, 20, 21});
-
-        this->_map.addAnimation(0, 7, {24, 25, 26, 27});
-        this->_map.addAnimation(1, 7, {24, 25, 26, 27});
-        this->_map.addAnimation(2, 7, {24, 25, 26, 27});
-        this->_map.addAnimation(3, 7, {24, 25, 26, 27});
-        this->_map.addAnimation(4, 7, {24, 25, 26, 27});
-        this->_map.addAnimation(5, 7, {24, 25, 26, 27});
-        this->_map.addAnimation(6, 7, {24, 25, 26, 27});
-        this->_map.addAnimation(7, 7, {24, 25, 26, 27});
-
-        this->_map.setSize({360 / 8, 360 / 8});
-    }
-}
\ No newline at end of file
diff --git a/source/game/object/Test.hpp b/source/game/object/Test.hpp
deleted file mode 100644
index a7b123f..0000000
--- a/source/game/object/Test.hpp
+++ /dev/null
@@ -1,21 +0,0 @@
-#pragma once
-
-#include <kernel/front/props/Props.hpp>
-#include <kernel/front/component/physic/Fixed.hpp>
-#include <kernel/front/component/graphic/Sprite.hpp>
-#include <kernel/front/component/graphic/TileMap.hpp>
-
-namespace megu::game {
-    class Object : public kernel::Prop {
-        public:
-            Object(std::filesystem::path &);
-
-            inline kernel::Prop::Physical_Component * getPhysicComponent() override {return &this->_physic;}
-            inline kernel::Prop::Graphical_Component * getGraphicComponent() override {return &this->_map;}
-
-        private:
-            kernel::Fixed _physic;
-            kernel::Sprite _graphic;
-            kernel::Tilemap _map;
-    };
-}
\ No newline at end of file
diff --git a/source/kernel/back/component/Component.hpp b/source/kernel/back/component/Component.hpp
index b95d280..c36d0cf 100644
--- a/source/kernel/back/component/Component.hpp
+++ b/source/kernel/back/component/Component.hpp
@@ -9,7 +9,7 @@ namespace megu::kernel {
     template <class E>
     class Component : public virtual Identifiable {
         public: 
-            virtual void apply(Kernel & k, E &) = 0;
-            virtual void unapply(Kernel & k, E &) = 0;
+            virtual void apply(E &) = 0;
+            virtual void unapply(E &) = 0;
     };
 }
\ No newline at end of file
diff --git a/source/kernel/back/component/Graphical.hpp b/source/kernel/back/component/Graphical.hpp
index 0354e05..9f50729 100644
--- a/source/kernel/back/component/Graphical.hpp
+++ b/source/kernel/back/component/Graphical.hpp
@@ -4,11 +4,10 @@
 #include <engine/utility/Priority.hpp>
 
 namespace megu::kernel {
-    template <class Ge>
-    class Graphical : public Component<Ge> {
+    template <class E>
+    class Graphical : public Component<E> {
         public:
-            inline Graphical(Priority l = 0, Priority o = 0)
-            : _layer(l), _object(o) {}
+            inline Graphical(Priority = 0, Priority = 0);
 
             inline Priority getLayerPriority() const {return this->_layer;}
             inline Priority getObjectPriority() const {return this->_object;}
@@ -23,4 +22,6 @@ namespace megu::kernel {
             Priority _object;
             
     }; 
-}
\ No newline at end of file
+}
+
+#include "Graphical.tpp"
\ No newline at end of file
diff --git a/source/kernel/back/component/Graphical.tpp b/source/kernel/back/component/Graphical.tpp
new file mode 100644
index 0000000..4f9b6ac
--- /dev/null
+++ b/source/kernel/back/component/Graphical.tpp
@@ -0,0 +1,7 @@
+#include "Graphical.hpp"
+
+namespace megu::kernel {
+    template <class E>
+    Graphical<E>::Graphical(Priority layer, Priority object)
+    : _layer(layer), _object(object) {}
+}
\ No newline at end of file
diff --git a/source/kernel/back/component/Physical.hpp b/source/kernel/back/component/Physical.hpp
index 7701eb4..e427e6f 100644
--- a/source/kernel/back/component/Physical.hpp
+++ b/source/kernel/back/component/Physical.hpp
@@ -7,19 +7,22 @@
 #include <engine/utility/Priority.hpp>
 
 namespace megu::kernel {
-    template <class Pe>
-    class Physical : public Component<Pe> {
+    template <class E>
+    class Physical : public Component<E> {
         public:
-            inline Physical(Priority p = 0)
-            : _layer(p) {}
+            Physical(Priority p = 0);
+   virtual ~Physical() = default;
 
-            virtual void on_collide(Kernel &, Pe &, Identifiable &, Physical &, double) = 0;
-
-            using CollideLambda = std::function<void(Kernel &, Pe &, Identifiable &, Physical &, double)>;
             inline void setLayer(Priority p) {this->_layer = p;}
             inline Priority getLayer() const {return this->_layer;}
 
+            virtual void onCollide(Kernel &, E &, Identifiable &, Physical &, double) = 0;
+
+            using CollideLambda = std::function<void(Kernel &, E &, Identifiable &, Physical &, double)>;
+            
         private:
             Priority _layer;
     };  
-}
\ No newline at end of file
+}
+
+#include "Physical.tpp"
\ No newline at end of file
diff --git a/source/kernel/back/component/Physical.tpp b/source/kernel/back/component/Physical.tpp
new file mode 100644
index 0000000..c04e5c0
--- /dev/null
+++ b/source/kernel/back/component/Physical.tpp
@@ -0,0 +1,7 @@
+#include "Physical.hpp"
+
+namespace megu::kernel {
+    template <class E>
+    Physical<E>::Physical(Priority layer)
+    : _layer(layer) {}
+}
\ No newline at end of file
diff --git a/source/kernel/back/engine/Engine.hpp b/source/kernel/back/engine/Engine.hpp
index 8842381..33f2bdf 100644
--- a/source/kernel/back/engine/Engine.hpp
+++ b/source/kernel/back/engine/Engine.hpp
@@ -7,14 +7,14 @@ namespace megu::kernel {
     template <class T, class C, class O>
     class Engine {
         public:
-            virtual void boot(Kernel &) = 0;
-            virtual void stop(Kernel &) = 0;
-            virtual void step(Kernel &, double) = 0;  
+            virtual void boot() = 0;
+            virtual void stop() = 0;
+            virtual void step(double) = 0;  
 
             virtual T & get() = 0;
             virtual const O & get(const C &) const = 0;
 
-            virtual void add(Kernel &, C &) = 0;
-            virtual void remove(Kernel &, C &) = 0;
+            virtual void push(C &) = 0;
+            virtual void remove(C &) = 0;
     };
 }
\ No newline at end of file
diff --git a/source/kernel/back/engine/GraphicEngine.cpp b/source/kernel/back/engine/GraphicEngine.cpp
index 1aa1931..81beaa1 100644
--- a/source/kernel/back/engine/GraphicEngine.cpp
+++ b/source/kernel/back/engine/GraphicEngine.cpp
@@ -6,26 +6,26 @@ namespace megu::kernel {
     GraphicEngine::GraphicEngine(Window & window) 
     : _engine(window), _renderer(360, 360) {}
 
-    void GraphicEngine::boot(Kernel &) {
+    void GraphicEngine::boot() {
         this->_engine.push(0, this->_renderer);
         this->_engine.push(1, this->_renderer);
         this->_engine.push(2, this->_renderer);
     }
 
-    void GraphicEngine::stop(Kernel &) {
+    void GraphicEngine::stop() {
 
     }
 
-    void GraphicEngine::step(Kernel & kernel, double time) {
+    void GraphicEngine::step(double time) {
         this->_engine.step();
     }
 
-    void GraphicEngine::add(Kernel & kernel, Graphical<GraphicEngine> & graphical) {
-        graphical.apply(kernel, *this);
+    void GraphicEngine::push(Graphical<GraphicEngine> & graphical) {
+        graphical.apply(*this);
     }
 
-    void GraphicEngine::remove(Kernel & kernel, Graphical<GraphicEngine> & graphical) {
-        graphical.unapply(kernel, *this);
+    void GraphicEngine::remove(Graphical<GraphicEngine> & graphical) {
+        graphical.unapply(*this);
     }
 
     const Renderable & GraphicEngine::get(const Graphical<GraphicEngine> & graphical) const {
diff --git a/source/kernel/back/engine/GraphicEngine.hpp b/source/kernel/back/engine/GraphicEngine.hpp
index 77ce58f..0ad5196 100644
--- a/source/kernel/back/engine/GraphicEngine.hpp
+++ b/source/kernel/back/engine/GraphicEngine.hpp
@@ -19,12 +19,12 @@ namespace megu::kernel {
 
             inline megu::GraphicEngine & get() {return this->_engine;}
 
-            void boot(Kernel &) override;
-            void stop(Kernel &) override;
-            void step(Kernel &, double) override;
+            void boot() override;
+            void stop() override;
+            void step(double) override;
 
-            void add(Kernel &, Graphical<GraphicEngine> &) override;
-            void remove(Kernel &, Graphical<GraphicEngine> &) override;
+            void push(Graphical<GraphicEngine> &) override;
+            void remove(Graphical<GraphicEngine> &) override;
 
             const megu::Renderable & get(const Graphical<GraphicEngine> &) const override;
 
diff --git a/source/kernel/back/engine/PhysicEngine.cpp b/source/kernel/back/engine/PhysicEngine.cpp
index 26476f5..781977e 100644
--- a/source/kernel/back/engine/PhysicEngine.cpp
+++ b/source/kernel/back/engine/PhysicEngine.cpp
@@ -6,24 +6,24 @@ namespace megu::kernel {
     PhysicEngine::PhysicEngine()
     : _engine() {}
 
-    void PhysicEngine::boot(Kernel &) {
+    void PhysicEngine::boot() {
         
     }
 
-    void PhysicEngine::stop(Kernel &) {
+    void PhysicEngine::stop() {
 
     }
 
-    void PhysicEngine::step(Kernel &, double time) {
+    void PhysicEngine::step(double time) {
         this->_engine.step(time);
     }
 
-    void PhysicEngine::add(Kernel & kernel, Physical<PhysicEngine> & props) {
-        props.apply(kernel, *this);
+    void PhysicEngine::push(Physical<PhysicEngine> & props) {
+        props.apply(*this);
     }
 
-    void PhysicEngine::remove(Kernel & kernel, Physical<PhysicEngine> & props) {
-        props.unapply(kernel, *this);
+    void PhysicEngine::remove(Physical<PhysicEngine> & props) {
+        props.unapply(*this);
     }
 
     const megu::Tangible & PhysicEngine::get(const Physical<PhysicEngine> & props) const {
diff --git a/source/kernel/back/engine/PhysicEngine.hpp b/source/kernel/back/engine/PhysicEngine.hpp
index 5992197..c4379ca 100644
--- a/source/kernel/back/engine/PhysicEngine.hpp
+++ b/source/kernel/back/engine/PhysicEngine.hpp
@@ -12,12 +12,14 @@ namespace megu::kernel {
 
             inline megu::PhysicEngine & get() override {return this->_engine;}
 
-            void boot(Kernel &) override;
-            void stop(Kernel &) override;
-            void step(Kernel &, double) override;
+            void boot() override;
+            void stop() override;
+            void step(double) override;
 
-            void add(Kernel &, Physical<PhysicEngine> &) override;
-            void remove(Kernel &, Physical<PhysicEngine> &) override;
+            void push(Physical<PhysicEngine> &) override;
+            void remove(Physical<PhysicEngine> &) override;
+
+            inline std::optional<SquareBox> check(SquareBox box, Priority prio) const {return this->_engine.checkCollision(box, prio);}
 
             const megu::Tangible & get(const Physical<PhysicEngine> &) const override;
 
diff --git a/source/kernel/front/Kernel.cpp b/source/kernel/front/Kernel.cpp
index b69022e..f6cd84b 100644
--- a/source/kernel/front/Kernel.cpp
+++ b/source/kernel/front/Kernel.cpp
@@ -3,57 +3,57 @@
 namespace megu::kernel {
     Kernel::Kernel(Window & window) 
     : _window(window), _pEngine(), _gEngine(window) {
-        this->_pEngine.boot(*this);
-        this->_gEngine.boot(*this);
+        this->_pEngine.boot();
+        this->_gEngine.boot();
     }
 
     Kernel::~Kernel() {
-        this->_pEngine.stop(*this);
-        this->_pEngine.stop(*this);
+        this->_pEngine.stop();
+        this->_pEngine.stop();
     }
 
     void Kernel::step() {
         double time = Window::Time();
 
         if(this->_window.isOpen()) {
-            this->_gEngine.step(*this, time);
+            this->_gEngine.step(time);
             this->_gResolver.resolve(*this, this->_gEngine, time);
         }
 
-        this->_pEngine.step(*this, time);
+        this->_pEngine.step(time);
         this->_pResolver.resolve(*this, this->_pEngine, time);
     }
 
-    void Kernel::add(Prop * props) {
-        this->_props[props->id()] = props;
-        auto * pComponent = props->getPhysicComponent();
+    void Kernel::push(Prop & props) {
+        this->_props[props.id()] = &props;
+        auto * pComponent = props.getPhysicComponent();
 
         if(pComponent != nullptr) {
-            this->_pEngine.add(*this, *pComponent);
-            this->_pResolver.add(*pComponent);
+            this->_pEngine.push(*pComponent);
+            this->_pResolver.push(*pComponent);
         }
         
-        auto * gComponent = props->getGraphicComponent();
+        auto * gComponent = props.getGraphicComponent();
         if(gComponent != nullptr) {
-            this->_gEngine.add(*this, *gComponent);
-            this->_gResolver.add(*gComponent);
+            this->_gEngine.push(*gComponent);
+            this->_gResolver.push(*gComponent);
         }
     }
 
-    void Kernel::remove(Prop * props) {
-        auto * pComponent = props->getPhysicComponent();
+    void Kernel::remove(Prop & props) {
+        auto * pComponent = props.getPhysicComponent();
         if(pComponent != nullptr) {
-           this->_pEngine.remove(*this, *pComponent);
+           this->_pEngine.remove(*pComponent);
            this->_pResolver.remove(*pComponent);
         }
         
-        auto * gComponent = props->getGraphicComponent();
+        auto * gComponent = props.getGraphicComponent();
         if(gComponent != nullptr) {
-            this->_gEngine.remove(*this, *gComponent);
+            this->_gEngine.remove(*gComponent);
             this->_gResolver.remove(*gComponent);
         }
 
-        this->_props.erase(props->id());
+        this->_props.erase(props.id());
     }
 
     Prop * Kernel::get(const Prop::Physical_Component & pc) {
diff --git a/source/kernel/front/Kernel.hpp b/source/kernel/front/Kernel.hpp
index 0593c91..541b459 100644
--- a/source/kernel/front/Kernel.hpp
+++ b/source/kernel/front/Kernel.hpp
@@ -15,14 +15,13 @@ namespace megu::kernel {
 
     class Kernel {
         public:
+            Kernel() = delete;
             Kernel(Window &);
            ~Kernel();
 
             void step();
-            void add(Prop *);
-            void remove(Prop *);
-            
-            inline Identifiable_Map<Prop> & props() {return this->_props;}
+            void push(Prop &);
+            void remove(Prop &);
 
             inline PhysicEngine & getPhysicEngine() {return this->_pEngine;}
             inline GraphicEngine & getGraphicEngine() {return this->_gEngine;}
diff --git a/source/kernel/front/component/graphic/Sprite.cpp b/source/kernel/front/component/graphic/Sprite.cpp
index 4545186..ae6824b 100644
--- a/source/kernel/front/component/graphic/Sprite.cpp
+++ b/source/kernel/front/component/graphic/Sprite.cpp
@@ -1,13 +1,10 @@
 #include "Sprite.hpp"
 
-//this->_sprite.setFrame({0.f, 0.f, 51.f, 98.f});
-//this->_sprite.setSize({50, 100});
-
 namespace megu::kernel {
     GraphicLinker<megu::Sprite> Sprite::_Linker = GraphicLinker<megu::Sprite>();
 
-    Sprite::Sprite(const std::filesystem::path & path)
-    : Sprite(path, {0, 0, 0, 0}) {}
+    Sprite::Sprite()
+    : megu::Sprite() {}
 
     Sprite::Sprite(const std::filesystem::path & path, const Frame & frame)
     : megu::Sprite(path, frame), _animation(0), _index(0) {
@@ -16,52 +13,52 @@ namespace megu::kernel {
         }
     }
 
-    const Frame_List & Sprite::getAnimations(size_t name) const {
+    const Frame_List & Sprite::getCurrentAnimations(size_t name) const {
         if(this->_frames.contains(name)) {
             return this->_frames.at(name);
         }
-        throw std::runtime_error("Cannot get inexisting animation");
+        throw std::runtime_error("Missing animation : " + name);
     }
 
-    const Frame & Sprite::getFrame(size_t name, size_t index) const {
-        auto & frames = this->getAnimations(name);
+    const Frame & Sprite::getCurrentFrame(size_t name, size_t index) const {
+        auto & frames = this->getCurrentAnimations(name);
         if(frames.size() > index) {
             return frames.at(index);
         }
-        throw std::runtime_error("Cannot get inexisting frame");
+        throw std::runtime_error("Missing frame for animation : " + name);
     }
 
-    void Sprite::setAnimation(size_t name) {
+    void Sprite::setCurrentAnimation(size_t name) {
         if(this->_frames.contains(name)) {
             this->_animation = name;
             this->_previous = 0.0;
         }
         else {
-            throw std::runtime_error("Cannot set inexisting animation");
+            throw std::runtime_error("Cannot set inexisting animation : " + name);
         }
     }
 
-    void Sprite::push(size_t name, const Frame_List & frames) {
+    void Sprite::pushAnimation(size_t name, const Frame_List & frames) {
         for(auto & frame : frames) {
-            this->push(name, frame);
+            this->pushAnimation(name, frame);
         }
     }
 
-    void Sprite::push(size_t name, const Frame & frame) {
+    void Sprite::pushAnimation(size_t name, const Frame & frame) {
         this->_frames[name].push_back(frame);
     }
 
-    void Sprite::push(size_t name, float x, float y, float w, float h) {
+    void Sprite::pushAnimation(size_t name, float x, float y, float w, float h) {
         this->_frames[name].push_back({x, y, w, h});
     }
 
-    void Sprite::remove(size_t name) {
+    void Sprite::removeAnimation(size_t name) {
         if(this->_frames.contains(name)) {
             this->_frames.erase(name);
         }
     }
 
-    void Sprite::remove(size_t name, size_t index) {
+    void Sprite::removeAnimation(size_t name, size_t index) {
         if(this->_frames.contains(name) && this->_frames[name].size() > index) {
             this->_frames[name].erase(this->_frames[name].begin() + index);
         }
@@ -83,12 +80,12 @@ namespace megu::kernel {
         }
     }
 
-    void Sprite::apply(Kernel & kernel, GraphicEngine & engine) {
+    void Sprite::apply(GraphicEngine & engine) {
         Sprite::_Linker.link(*this, this->getLayerPriority(), this->getObjectPriority());
         Sprite::_Linker.link(engine);
     }
 
-    void Sprite::unapply(Kernel & kernel, GraphicEngine & engine) {
+    void Sprite::unapply(GraphicEngine & engine) {
         Sprite::_Linker.unlink(*this);
         Sprite::_Linker.link(engine);
     }
diff --git a/source/kernel/front/component/graphic/Sprite.hpp b/source/kernel/front/component/graphic/Sprite.hpp
index f3e5e57..6c0c148 100644
--- a/source/kernel/front/component/graphic/Sprite.hpp
+++ b/source/kernel/front/component/graphic/Sprite.hpp
@@ -18,27 +18,28 @@ namespace megu::kernel {
 
     class Sprite : public Graphical<GraphicEngine>, public megu::Sprite {
         public:
-            Sprite(const std::filesystem::path &);
-            Sprite(const std::filesystem::path &, const Frame &);
+            Sprite();
+            Sprite(const std::filesystem::path &, const Frame & = {0, 0, 0, 0});
+   virtual ~Sprite() = default;
 
-            inline size_t getCurrentFrameIndex() const {return this->_index;}
             inline double getDuration() const {return this->_duration;}
-            inline void setDuration(double d) {this->_duration = d;}
+            inline size_t getCurrentFrameIndex() const {return this->_index;}
+            const Frame & getCurrentFrame(size_t, size_t) const;
+            const Frame_List & getCurrentAnimations(size_t) const;
 
-            const Frame_List & getAnimations(size_t) const;
-            const Frame & getFrame(size_t, size_t) const;
+            inline void setDuration(double d) {this->_duration = d;}
+            void setCurrentAnimation(size_t);
             
-            void setAnimation(size_t);
-            void push(size_t, const Frame_List & = {});
-            void push(size_t, const Frame &);
-            void push(size_t, float, float, float, float);
+            void pushAnimation(size_t, const Frame_List & = {});
+            void pushAnimation(size_t, const Frame &);
+            void pushAnimation(size_t, float, float, float, float);
 
-            void remove(size_t);
-            void remove(size_t, size_t);
+            void removeAnimation(size_t);
+            void removeAnimation(size_t, size_t);
 
+            void apply(GraphicEngine &) override;
+            void unapply(GraphicEngine &) override;
             void update(double) override;
-            void apply(Kernel &, GraphicEngine &) override;
-            void unapply(Kernel &, GraphicEngine &) override;
 
             static const GraphicLinker<megu::Sprite> & linker() {return Sprite::_Linker;}
 
diff --git a/source/kernel/front/component/graphic/TileMap.cpp b/source/kernel/front/component/graphic/TileMap.cpp
index 4e4acd3..2f79759 100644
--- a/source/kernel/front/component/graphic/TileMap.cpp
+++ b/source/kernel/front/component/graphic/TileMap.cpp
@@ -8,34 +8,32 @@ namespace megu::kernel {
         /*if(lenght % width != 0 && lenght % height != 0) {
             throw std::runtime_error("Tilemap dimension not matching tiles size.");
         }*/
-
-        size_t tileWidth = this->texture().width() / this->_tileSize;
-        size_t tileHeight = this->texture().height() / this->_tileSize;
         
+        size_t tileWidth = this->getTextureWidth() / lenght;
+        size_t tileHeight = this->getTextureHeight() / lenght;
+
         for(size_t y = 0; y < tileHeight; ++y) {
             for(size_t x = 0; x < tileWidth; ++x) {
-                this->_tilesPosition.push_back({x * this->_tileSize, y * this->_tileSize});
+                this->_tilesPosition.push_back({x * lenght, y * lenght});
             }
         }
         
         size_t i = 0;
-        for(size_t x = 0; x < width * this->_tileSize; x += this->_tileSize) {
+        for(size_t x = 0; x < width * lenght; x += lenght) {
             this->_tilesValue.push_back({});
-            for(size_t y = 0; y < height * this->_tileSize; y += this->_tileSize) {
+            for(size_t y = 0; y < height * lenght; y += lenght) {
                 this->_tilesValue[i].push_back(0);
             }
             ++i;
         }
 
         if(!Tilemap::_Linker.haveModule()) {
-           Tilemap::_Linker.setModule(new TileArray_Module{});
+            Tilemap::_Linker.setModule(new TileArray_Module{});
         }
-
-        //this->setSize({width * size, height * size});
     }
 
     void Tilemap::setValue(size_t x, size_t y, size_t value) {
-        if(this->width() <= x || this->height() <= y) {
+        if(this->row() <= x || this->collumn() <= y) {
             throw std::runtime_error("Set Tilemap coords out of range.");
         }
 
@@ -46,11 +44,11 @@ namespace megu::kernel {
 
         TilePosition position = this->_tilesPosition[value];
         glm::vec4 uv = {position.x, 
-                        this->texture().height()  - position.y - this->_tileSize, 
+                        this->texture().height() - position.y - this->_tileSize, 
                         this->_tileSize, 
                         this->_tileSize};
 
-        this->setUv(this->height() - 1 - y, x, uv);
+        this->setUv(this->collumn() - 1 - y, x, uv);
         this->_tilesValue[x][y] = value;
     }
 
@@ -66,8 +64,8 @@ namespace megu::kernel {
         throw std::runtime_error("Tilemap coords out of bound");
     }
 
-    void Tilemap::addAnimation(size_t x, size_t y, const std::vector<size_t> & ids) {
-        if(x < this->width() && y < this->height()) {
+    void Tilemap::pushAnimation(size_t x, size_t y, const std::vector<size_t> & ids) {
+        if(x < this->row() && y < this->collumn()) {
             this->_animations[{x, y}] = std::pair<std::vector<size_t>, size_t>(ids, 0);
         }
     }
@@ -91,12 +89,12 @@ namespace megu::kernel {
         }
     }
 
-    void Tilemap::apply(Kernel & kernel, GraphicEngine & engine) {
+    void Tilemap::apply(GraphicEngine & engine) {
         Tilemap::_Linker.link(*this, this->getLayerPriority(), this->getObjectPriority());
         Tilemap::_Linker.link(engine);
     }
 
-    void Tilemap::unapply(Kernel & kernel, GraphicEngine & engine) {
+    void Tilemap::unapply(GraphicEngine & engine) {
         Tilemap::_Linker.unlink(*this);
         Tilemap::_Linker.link(engine);
     }
diff --git a/source/kernel/front/component/graphic/TileMap.hpp b/source/kernel/front/component/graphic/TileMap.hpp
index 648bedd..d4f72a6 100644
--- a/source/kernel/front/component/graphic/TileMap.hpp
+++ b/source/kernel/front/component/graphic/TileMap.hpp
@@ -16,28 +16,24 @@ namespace megu::kernel {
             struct TilePosition {
                 size_t x = 0;
                 size_t y = 0;
-
-                bool operator<(const TilePosition & p) const {
-                    if(this->x == p.x) {
-                        return this->y < p.y;
-                    }
-                    return this->y < p.y;
-                }
             };
 
+            Tilemap() = delete;
             Tilemap(const std::filesystem::path &, size_t, size_t, float, size_t, double = 0.1);
+   virtual ~Tilemap() = default;
 
+            inline void setDuration(double duration) {this->_duration = duration;} 
             void setValue(size_t, size_t, size_t);
+
+            inline double getDuration() const {return this->_duration;}
             size_t getValue(size_t, size_t) const;
 
-            void addAnimation(size_t, size_t, const std::vector<size_t> &);
+            void pushAnimation(size_t, size_t, const std::vector<size_t> &);
             void removeAnimation(size_t, size_t);
-
-            const std::map<TilePosition, std::pair<std::vector<size_t>, size_t>, reference_sorter<TilePosition>> & animation() const {return this->_animations;}
-
+            
+            void apply(GraphicEngine &) override;
+            void unapply(GraphicEngine &) override;
             void update(double) override;
-            void apply(Kernel &, GraphicEngine &) override;
-            void unapply(Kernel &, GraphicEngine &) override;
 
         private:
             std::vector<TilePosition> _tilesPosition;
diff --git a/source/kernel/front/component/physic/Fixed.cpp b/source/kernel/front/component/physic/Fixed.cpp
index fcaa667..df2bfe0 100644
--- a/source/kernel/front/component/physic/Fixed.cpp
+++ b/source/kernel/front/component/physic/Fixed.cpp
@@ -6,23 +6,23 @@ namespace megu::kernel {
     Fixed::Fixed(float x, float y, float w, float h, CollideLambda cl, UpdateLambda ul)
     : TangibleStatic(Position(x, y), Dimension(w, h, 0.f)), _collide(cl), _update(ul) {} 
 
-    void Fixed::update_physic(double time) const {
+    void Fixed::updatePhysic(double time) const {
         if(this->_update != nullptr) {
             this->_update(time);
         }
     }
 
-    void Fixed::on_collide(Kernel & kernel, PhysicEngine & engine, Identifiable & id, Physical & physical, double time) {
+    void Fixed::onCollide(Kernel & kernel, PhysicEngine & engine, Identifiable & id, Physical & physical, double time) {
         if(this->_collide != nullptr) {
             this->_collide(kernel, engine, id, physical, time);
         }
     }
 
-    void Fixed::apply(Kernel & kernel, PhysicEngine & engine) {
+    void Fixed::apply(PhysicEngine & engine) {
         engine.get().push(this->getLayer(), *this);
     }
 
-    void Fixed::unapply(Kernel & kernel, PhysicEngine & engine) {
+    void Fixed::unapply(PhysicEngine & engine) {
         engine.get().remove(*this);
     }
 
diff --git a/source/kernel/front/component/physic/Fixed.hpp b/source/kernel/front/component/physic/Fixed.hpp
index 22fe2dd..8edb22e 100644
--- a/source/kernel/front/component/physic/Fixed.hpp
+++ b/source/kernel/front/component/physic/Fixed.hpp
@@ -10,12 +10,14 @@
 namespace megu::kernel {
     class Fixed : public TangibleStatic, public Physical<PhysicEngine> {
         public:
+            Fixed() = delete;
             Fixed(float x, float y, float w, float h, CollideLambda = nullptr, UpdateLambda = nullptr);
+   virtual ~Fixed() = default;
 
-            void update_physic(double) const override;
-            void on_collide(Kernel &, PhysicEngine &, Identifiable &, Physical &, double) override;
-            void apply(Kernel & k, PhysicEngine &) override;
-            void unapply(Kernel & k, PhysicEngine &) override;
+            void updatePhysic(double) const override;
+            void onCollide(Kernel &, PhysicEngine &, Identifiable &, Physical &, double) override;
+            void apply(PhysicEngine &) override;
+            void unapply(PhysicEngine &) override;
 
             void setCollideLambda(CollideLambda);
             void setUpdateLambda(UpdateLambda);
diff --git a/source/kernel/front/component/physic/Movable.cpp b/source/kernel/front/component/physic/Movable.cpp
index c9aeaf2..49e05eb 100644
--- a/source/kernel/front/component/physic/Movable.cpp
+++ b/source/kernel/front/component/physic/Movable.cpp
@@ -4,23 +4,23 @@ namespace megu::kernel {
     Movable::Movable(float x, float y, float w, float h, CollideLambda cl, UpdateLambda ul)
     : TangibleMovable(Position(x, y), Dimension(w, h, 0.f)), _collide(cl), _update(ul) {}
 
-    void Movable::update_physic(double time) {
+    void Movable::updatePhysic(double time) {
         if(this->_update != nullptr) {
             this->_update(time);
         }
     }
 
-    void Movable::on_collide(Kernel & kernel, PhysicEngine & engine, Identifiable & id, Physical & physical, double time) {
+    void Movable::onCollide(Kernel & kernel, PhysicEngine & engine, Identifiable & id, Physical & physical, double time) {
         if(this->_collide != nullptr) {
             this->_collide(kernel, engine, id, physical, time);
         }
     }
 
-    void Movable::apply(Kernel & kernel, PhysicEngine & engine) {
+    void Movable::apply(PhysicEngine & engine) {
         engine.get().push(this->getLayer(), *this);
     }
 
-    void Movable::unapply(Kernel & kernel, PhysicEngine & engine) {
+    void Movable::unapply(PhysicEngine & engine) {
         engine.get().remove(*this);
     }
 
diff --git a/source/kernel/front/component/physic/Movable.hpp b/source/kernel/front/component/physic/Movable.hpp
index 45cd760..4ae79c0 100644
--- a/source/kernel/front/component/physic/Movable.hpp
+++ b/source/kernel/front/component/physic/Movable.hpp
@@ -10,12 +10,14 @@
 namespace megu::kernel {
     class Movable : public TangibleMovable, public Physical<PhysicEngine> {
         public:
+            Movable() = delete;
             Movable(float x, float y, float w, float h, CollideLambda = nullptr, UpdateLambda = nullptr);
+   virtual ~Movable() = default;
 
-            void update_physic(double) override;
-            void on_collide(Kernel &, PhysicEngine &, Identifiable &, Physical &, double) override;
-            void apply(Kernel & k, PhysicEngine &) override;
-            void unapply(Kernel & k, PhysicEngine &) override;
+            void updatePhysic(double) override;
+            void onCollide(Kernel &, PhysicEngine &, Identifiable &, Physical &, double) override;
+            void apply(PhysicEngine &) override;
+            void unapply(PhysicEngine &) override;
 
             void setCollideLambda(CollideLambda);
             void setUpdateLambda(UpdateLambda);
diff --git a/source/kernel/front/component/physic/Tile.cpp b/source/kernel/front/component/physic/Tile.cpp
index 47e0e34..1ef1b88 100644
--- a/source/kernel/front/component/physic/Tile.cpp
+++ b/source/kernel/front/component/physic/Tile.cpp
@@ -1,6 +1,9 @@
 #include "Tile.hpp"
 
 namespace megu::kernel {
+    Tile::Tile()
+    : Fixed(0, 0, 1, 1) {}
+
     Tile::Tile(float x, float y, float d, Priority p)
     : Fixed(x, y, d, d) {
         this->setLayer(p);
diff --git a/source/kernel/front/component/physic/Tile.hpp b/source/kernel/front/component/physic/Tile.hpp
index 3b914c4..ac13aea 100644
--- a/source/kernel/front/component/physic/Tile.hpp
+++ b/source/kernel/front/component/physic/Tile.hpp
@@ -5,7 +5,9 @@
 namespace megu::kernel {
     class Tile : public Fixed {
         public:
+            Tile();
             Tile(float x, float y, float d, Priority p);
+   virtual ~Tile() = default;
 
             bool operator==(const Tile &) const;
             bool operator>=(const Tile &) const;
diff --git a/source/kernel/front/component/physic/TileArray.cpp b/source/kernel/front/component/physic/TileArray.cpp
index 7a2e455..fddf358 100644
--- a/source/kernel/front/component/physic/TileArray.cpp
+++ b/source/kernel/front/component/physic/TileArray.cpp
@@ -20,7 +20,7 @@ namespace megu::kernel {
         this->_tiles.insert({position, tile});
     }
 
-    void TileArray::erase(const Tile & tile) {
+    void TileArray::remove(const Tile & tile) {
         for(auto it = this->_tiles.begin(); it != this->_tiles.end();) {
             if(it->second.get().id() == tile.id()) {
                 it = this->_tiles.erase(it);
@@ -31,14 +31,14 @@ namespace megu::kernel {
         }
     }
 
-    void TileArray::on_collide(Kernel & kernel, PhysicEngine & engine, Identifiable & id, Physical & physical, double time) {
+    void TileArray::onCollide(Kernel & kernel, PhysicEngine & engine, Identifiable & id, Physical & physical, double time) {
         if(this->_collide == nullptr) {
             return;
         }
         
         auto & tangible = engine.get(physical);
         for(auto & [positon, tile] : this->_tiles) {
-            SquareBox box = SquareBox(positon, tile.get().getBox().dimension());
+            SquareBox box = SquareBox(positon, tile.get().getBox().getDimension());
             if(tangible.isColliding(box)) {
                 this->_collide(kernel, engine, id, tile, time);
             }
@@ -47,7 +47,7 @@ namespace megu::kernel {
 
     std::optional<SquareBox> TileArray::isColliding(const SquareBox & box) const {
         for(auto & [positon, tile] : this->_tiles) {
-            SquareBox tbox = SquareBox(positon, tile.get().getBox().dimension());
+            SquareBox tbox = SquareBox(positon, tile.get().getBox().getDimension());
             if(box.intersect(tbox)) {
                 return tbox;
             }
@@ -55,17 +55,17 @@ namespace megu::kernel {
         return {};
     }
 
-    void TileArray::update_physic(double time) const {
+    void TileArray::updatePhysic(double time) const {
         if(this->_update != nullptr) {
             this->_update(time);
         }
     }
 
-    void TileArray::apply(Kernel & kernel, PhysicEngine & engine) {
+    void TileArray::apply(PhysicEngine & engine) {
         engine.get().push(this->getLayer(), *this);
     }
 
-    void TileArray::unapply(Kernel & kernel, PhysicEngine & engine) {
+    void TileArray::unapply(PhysicEngine & engine) {
         engine.get().remove(*this);
     }
 
diff --git a/source/kernel/front/component/physic/TileArray.hpp b/source/kernel/front/component/physic/TileArray.hpp
index 3bd4631..2578bd6 100644
--- a/source/kernel/front/component/physic/TileArray.hpp
+++ b/source/kernel/front/component/physic/TileArray.hpp
@@ -10,22 +10,24 @@
 namespace megu::kernel {
     class TileArray : public Physical<PhysicEngine>, public TangibleStatic {
         public:
+            TileArray() = delete;
             TileArray(float, float, float, float, CollideLambda = nullptr, UpdateLambda = nullptr);
+   virtual ~TileArray() = default;
 
             std::optional<std::reference_wrapper<const Tile>> at(const Position &) const;
 
             void push(const Position &, Tile &);
-            void erase(const Tile &);
+            void remove(const Tile &);
 
             using TileCollideLambda = std::function<void(Kernel &, PhysicEngine &, Identifiable &, Tile &, double)>;
         
             void setCollideLambda(TileCollideLambda);
             void setUpdateLambda(UpdateLambda);
 
-            void update_physic(double) const override;
-            void apply(Kernel & k, PhysicEngine &) override;
-            void unapply(Kernel & k, PhysicEngine &) override;
-            void on_collide(Kernel &, PhysicEngine &, Identifiable &, Physical &, double) override;
+            void updatePhysic(double) const override;
+            void apply(PhysicEngine &) override;
+            void unapply(PhysicEngine &) override;
+            void onCollide(Kernel &, PhysicEngine &, Identifiable &, Physical &, double) override;
 
             virtual std::optional<SquareBox> isColliding(const SquareBox &) const override;
 
diff --git a/source/kernel/front/props/Props.hpp b/source/kernel/front/props/Props.hpp
index d86d795..8ab0804 100644
--- a/source/kernel/front/props/Props.hpp
+++ b/source/kernel/front/props/Props.hpp
@@ -9,11 +9,11 @@
 #include <kernel/back/engine/GraphicEngine.hpp>
 
 namespace megu::kernel {
-    template <class Pe, class Ge>
+    template <class P, class G>
     class BaseProps : virtual public Identifiable {
         public:
-            using Graphical_Component = Graphical<Ge>;
-            using Physical_Component = Physical<Pe>;
+            using Graphical_Component = Graphical<G>;
+            using Physical_Component = Physical<P>;
             
             virtual Graphical_Component * getGraphicComponent() = 0;   
             virtual Physical_Component * getPhysicComponent() = 0;
diff --git a/source/kernel/front/props/PropsDynamic.hpp b/source/kernel/front/props/PropsDynamic.hpp
index b86d815..8eb0699 100644
--- a/source/kernel/front/props/PropsDynamic.hpp
+++ b/source/kernel/front/props/PropsDynamic.hpp
@@ -7,7 +7,9 @@
 namespace megu::kernel {
     class PropsDynamic : public Prop {
         public:
+            PropsDynamic() = delete;
             PropsDynamic(Sprite &, Movable &);
+   virtual ~PropsDynamic() = default;
 
             inline Prop::Graphical_Component * getGraphicComponent() {return &this->_graphic;}
             inline Prop::Physical_Component * getPhysicComponent() {return &this->_physic;}
diff --git a/source/kernel/front/props/PropsPlayable.hpp b/source/kernel/front/props/PropsPlayable.hpp
index 8857cd2..e0a811b 100644
--- a/source/kernel/front/props/PropsPlayable.hpp
+++ b/source/kernel/front/props/PropsPlayable.hpp
@@ -13,13 +13,15 @@ namespace megu {
 namespace megu::kernel {
     class PropsPlayable : public Prop {
         public:
+            PropsPlayable() = delete;
             PropsPlayable(Sprite &, Movable &);
+   virtual ~PropsPlayable() = default;
 
             void setControl(Window &, Keyboard *);
             void setControl(Window &, Mouse *);
 
-            virtual Graphical_Component * getGraphicComponent() {return &this->_graphic;}   
-            virtual Physical_Component * getPhysicComponent() {return &this->_physic;}
+            virtual Prop::Graphical_Component * getGraphicComponent() {return &this->_graphic;}   
+            virtual Prop::Physical_Component * getPhysicComponent() {return &this->_physic;}
 
         private:
             Sprite & _graphic;
diff --git a/source/kernel/front/props/PropsStatic.hpp b/source/kernel/front/props/PropsStatic.hpp
index 3210fcd..b65b8e8 100644
--- a/source/kernel/front/props/PropsStatic.hpp
+++ b/source/kernel/front/props/PropsStatic.hpp
@@ -7,7 +7,9 @@
 namespace megu::kernel {
     class PropsStatic : public Prop {
         public:
+            PropsStatic() = delete;
             PropsStatic(Sprite &, Fixed &);
+   virtual ~PropsStatic() = default;
 
             inline Prop::Graphical_Component * getGraphicComponent() override {return &this->_graphic;}
             inline Prop::Physical_Component * getPhysicComponent() override {return &this->_physic;}
diff --git a/source/kernel/front/props/PropsTileMap.hpp b/source/kernel/front/props/PropsTileMap.hpp
index 993e9b5..bc8408b 100644
--- a/source/kernel/front/props/PropsTileMap.hpp
+++ b/source/kernel/front/props/PropsTileMap.hpp
@@ -7,7 +7,9 @@
 namespace megu::kernel {
     class PropsTileMap : public Prop {
         public:
+            PropsTileMap() = delete;
             PropsTileMap(Tilemap &, TileArray &);
+   virtual ~PropsTileMap() = default;
 
             inline Prop::Graphical_Component * getGraphicComponent() override {return &this->_graphic;}
             inline Prop::Physical_Component * getPhysicComponent() override {return &this->_physic;}
diff --git a/source/kernel/front/resolver/PhysicResolver.cpp b/source/kernel/front/resolver/PhysicResolver.cpp
index 593ab0a..0eeb855 100644
--- a/source/kernel/front/resolver/PhysicResolver.cpp
+++ b/source/kernel/front/resolver/PhysicResolver.cpp
@@ -11,7 +11,7 @@ namespace megu::kernel {
             auto target_comp = this->get(collision.target());
 
             if(source_comp.has_value() && target_comp.has_value()) {
-                source_comp.value().get().on_collide(kernel, engine, *kernel.get(target_comp.value()), target_comp.value(), time);
+                source_comp.value().get().onCollide(kernel, engine, *kernel.get(target_comp.value()), target_comp.value(), time);
             }
         }
 
diff --git a/source/kernel/front/resolver/Resolver.hpp b/source/kernel/front/resolver/Resolver.hpp
index 40ac293..8b73424 100644
--- a/source/kernel/front/resolver/Resolver.hpp
+++ b/source/kernel/front/resolver/Resolver.hpp
@@ -11,7 +11,7 @@ namespace megu::kernel {
         public:
             inline ref_set<O> & components() {return this->_components;}
 
-            void add(O &);
+            void push(O &);
             void remove(const Identifiable &);
             std::optional<std::reference_wrapper<O>> get(const Identifiable &);
 
diff --git a/source/kernel/front/resolver/Resolver.tpp b/source/kernel/front/resolver/Resolver.tpp
index 89f265d..36e80da 100644
--- a/source/kernel/front/resolver/Resolver.tpp
+++ b/source/kernel/front/resolver/Resolver.tpp
@@ -2,7 +2,7 @@
 
 namespace megu::kernel {
     template <class E, class O>
-    void Resolver<E, O>::add(O & c) {
+    void Resolver<E, O>::push(O & c) {
         this->_components.insert(c);
     }
 
-- 
GitLab